Add long and short hold for keybinds

This commit is contained in:
Vortrex
2021-03-04 04:42:47 -06:00
parent 91dec25ca3
commit 21f886c4c7

View File

@@ -10,17 +10,40 @@
let lastKeyBindUse = 0;
let keyBindDelayTime = 500;
let keyBindShortHoldDuration = 500;
let keyBindLongHoldDuration = 1500;
// -------------------------------------------------------------------------
function bindAccountKey(key, keyState) {
bindKey(toInteger(key), keyState, function(event) {
if(hasKeyBindDelayElapsed()) {
lastKeyBindUse = sdl.ticks;
triggerNetworkEvent("ag.useKeyBind", key);
}
});
return false;
if(keyState == AG_KEYSTATE_UP) {
bindKey(toInteger(key), KEYSTATE_UP, function(event) {
if(hasKeyBindDelayElapsed()) {
lastKeyBindUse = sdl.ticks;
triggerNetworkEvent("ag.useKeyBind", key);
}
});
} else if(keyState == AG_KEYSTATE_DOWN) {
bindKey(toInteger(key), KEYSTATE_DOWN, function(event) {
if(hasKeyBindDelayElapsed()) {
lastKeyBindUse = sdl.ticks;
triggerNetworkEvent("ag.useKeyBind", key);
}
});
} else if(keyState == AG_KEYSTATE_HOLDSHORT || keyState == AG_KEYSTATE_HOLDLONG) {
bindKey(toInteger(key), KEYSTATE_DOWN, function(event) {
if(hasKeyBindDelayElapsed()) {
lastKeyBindUse = sdl.ticks;
keyBindHoldStart = sdl.ticks;
}
});
bindKey(toInteger(key), KEYSTATE_UP, function(event) {
if(hasKeyBindHoldElapsed(keyState)) {
keyBindHoldStart = 0;
triggerNetworkEvent("ag.useKeyBind", key);
}
});
}
}
addNetworkHandler("ag.addKeyBind", bindAccountKey);
@@ -42,4 +65,19 @@ function hasKeyBindDelayElapsed() {
return false;
}
// -------------------------------------------------------------------------
function hasKeyBindHoldElapsed(keyState) {
let holdDuration = AG_KEYSTATE_HOLDSHORT
if(keyState == AG_KEYSTATE_HOLDLONG) {
holdDuration = keyBindLongHoldDuration;
}
if(sdl.ticks-keyBindHoldStart >= holdDuration) {
return true;
}
return false;
}
// -------------------------------------------------------------------------