mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-14 01:48:04 -04:00
rendering: fix some bugs with double pressing keys
This commit is contained in:
parent
590f3051bf
commit
a96d283997
@ -19,5 +19,5 @@ data class KeyBindingCallbackPair(
|
||||
val keyBinding: KeyBinding,
|
||||
val callback: MutableSet<(keyDown: Boolean) -> Unit> = mutableSetOf(),
|
||||
) {
|
||||
var lastChangeDown = false
|
||||
var lastChange = 0L
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user