mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-14 18:05:51 -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 keyBinding: KeyBinding,
|
||||||
val callback: MutableSet<(keyDown: Boolean) -> Unit> = mutableSetOf(),
|
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 {
|
pair.keyBinding.action[KeyAction.DOUBLE_PRESS]?.let {
|
||||||
|
checksRun++
|
||||||
|
if (!keyDown) {
|
||||||
|
thisIsChange = false
|
||||||
|
return@let
|
||||||
|
}
|
||||||
if (!it.contains(keyCode)) {
|
if (!it.contains(keyCode)) {
|
||||||
thisIsChange = false
|
thisIsChange = false
|
||||||
return
|
return@let
|
||||||
}
|
}
|
||||||
val lastDownTime = keysLastDownTime[keyCode]
|
val lastDownTime = keysLastDownTime[keyCode]
|
||||||
if (lastDownTime == null) {
|
if (lastDownTime == null) {
|
||||||
thisIsChange = false
|
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
|
thisIsChange = false
|
||||||
return
|
return@let
|
||||||
|
}
|
||||||
|
if (currentTime - pair.lastChange <= RenderConstants.DOUBLE_PRESS_DELAY_BETWEEN_PRESSED) {
|
||||||
|
thisIsChange = false
|
||||||
|
return@let
|
||||||
}
|
}
|
||||||
thisKeyBindingDown = !isKeyBindingDown(resourceLocation)
|
thisKeyBindingDown = !isKeyBindingDown(resourceLocation)
|
||||||
}
|
}
|
||||||
@ -181,6 +190,7 @@ class RenderWindowInputHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Log.debug("Changing $resourceLocation because of $keyCode -> $thisKeyBindingDown")
|
// Log.debug("Changing $resourceLocation because of $keyCode -> $thisKeyBindingDown")
|
||||||
|
pair.lastChange = System.currentTimeMillis()
|
||||||
for (callback in pair.callback) {
|
for (callback in pair.callback) {
|
||||||
callback.invoke(thisKeyBindingDown)
|
callback.invoke(thisKeyBindingDown)
|
||||||
}
|
}
|
||||||
|
@ -71,5 +71,6 @@ object RenderConstants {
|
|||||||
|
|
||||||
const val CAMPFIRE_ITEMS = 4
|
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