rendering: fix some bugs with double pressing keys

This commit is contained in:
Bixilon 2021-04-23 20:28:05 +02:00
parent 590f3051bf
commit a96d283997
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 17 additions and 6 deletions

View File

@ -19,5 +19,5 @@ data class KeyBindingCallbackPair(
val keyBinding: KeyBinding,
val callback: MutableSet<(keyDown: Boolean) -> Unit> = mutableSetOf(),
) {
var lastChangeDown = false
var lastChange = 0L
}

View File

@ -160,18 +160,27 @@ class RenderWindowInputHandler(
}
pair.keyBinding.action[KeyAction.DOUBLE_PRESS]?.let {
checksRun++
if (!keyDown) {
thisIsChange = false
return@let
}
if (!it.contains(keyCode)) {
thisIsChange = false
return
return@let
}
val lastDownTime = keysLastDownTime[keyCode]
if (lastDownTime == null) {
thisIsChange = false
return
return@let
}
if (currentTime - lastDownTime > RenderConstants.DOUBLE_PRESS_KEY_MAX_DELAY) {
if (currentTime - lastDownTime > RenderConstants.DOUBLE_PRESS_KEY_PRESS_MAX_DELAY) {
thisIsChange = false
return
return@let
}
if (currentTime - pair.lastChange <= RenderConstants.DOUBLE_PRESS_DELAY_BETWEEN_PRESSED) {
thisIsChange = false
return@let
}
thisKeyBindingDown = !isKeyBindingDown(resourceLocation)
}
@ -181,6 +190,7 @@ class RenderWindowInputHandler(
}
// Log.debug("Changing $resourceLocation because of $keyCode -> $thisKeyBindingDown")
pair.lastChange = System.currentTimeMillis()
for (callback in pair.callback) {
callback.invoke(thisKeyBindingDown)
}

View File

@ -71,5 +71,6 @@ object RenderConstants {
const val CAMPFIRE_ITEMS = 4
const val DOUBLE_PRESS_KEY_MAX_DELAY = 200
const val DOUBLE_PRESS_KEY_PRESS_MAX_DELAY = 200
const val DOUBLE_PRESS_DELAY_BETWEEN_PRESSED = 500
}