From d52e82bb5be17141fccd5cdf86c92d66f7482023 Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Fri, 19 Dec 2025 12:49:05 +0200 Subject: [PATCH] Improved KeyPreset.setDown logic --- .../java/noppes/npcs/client/key/KeyEvent.java | 1 + .../noppes/npcs/client/key/KeyPreset.java | 25 +++++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/java/noppes/npcs/client/key/KeyEvent.java b/src/main/java/noppes/npcs/client/key/KeyEvent.java index 7dc7cac33..53011f2e8 100644 --- a/src/main/java/noppes/npcs/client/key/KeyEvent.java +++ b/src/main/java/noppes/npcs/client/key/KeyEvent.java @@ -20,4 +20,5 @@ public class KeyEvent { public boolean isHold() { return is(KeyPreset.PressType.HOLD); } public boolean isRelease() { return is(KeyPreset.PressType.RELEASE); } public boolean isSinglePress() { return is(KeyPreset.PressType.SINGLE_PRESS); } + public boolean isPressRelease() { return is(KeyPreset.PressType.PRESS_RELEASE); } } diff --git a/src/main/java/noppes/npcs/client/key/KeyPreset.java b/src/main/java/noppes/npcs/client/key/KeyPreset.java index 12b135107..bc9dc720c 100644 --- a/src/main/java/noppes/npcs/client/key/KeyPreset.java +++ b/src/main/java/noppes/npcs/client/key/KeyPreset.java @@ -63,24 +63,27 @@ public class KeyPreset { setDown(isDown); } + private static final int SHORT_PRESS_TICKS = 5; + public void setDown(boolean down) { - if (down && !isDown) + if (down && !isDown) { // just pressed + pressTime = 0; onAction(PressType.PRESS, PressType.PRESS_RELEASE); - - if (!down && isDown) { - if (pressTime <= 5) + } + + if (!down && isDown) { // just released + if (pressTime <= SHORT_PRESS_TICKS) { onAction(PressType.SINGLE_PRESS); - - onAction(PressType.RELEASE, PressType.PRESS_RELEASE); + } + onAction(PressType.RELEASE); pressTime = 0; } - if (isDown || down) //to fire in both press & release - onAction(PressType.HOLD); - - if (isDown) + if (down) { // while held pressTime++; - + onAction(PressType.HOLD); + } + this.isDown = down; }