Files
Terrarum/src/net/torvald/terrarum/gamecontroller/KeyToggler.kt
2017-07-08 20:38:05 +09:00

53 lines
1.3 KiB
Kotlin

package net.torvald.terrarum.gamecontroller
import com.badlogic.gdx.Gdx
import net.torvald.terrarum.Terrarum
import java.util.*
object KeyToggler {
private val currentState = BitSet(256)
private val isPressed = BitSet(256)
private val isToggled = BitSet(256)
/**
* Keys that won't be updated when console is opened
*/
private val gameKeys = (16..27) + (30..40) + (43..53)
fun isOn(key: Int): Boolean {
return currentState[key]
}
fun update(gameMode: Boolean = true) {
for (it in 0..255) {
if (gameMode && it in gameKeys &&
(Terrarum.ingame!!.consoleHandler.isOpening || Terrarum.ingame!!.consoleHandler.isOpened)) {
continue
}
isPressed[it] = Gdx.input.isKeyPressed(it)
if (isPressed[it] && !currentState[it] && !isToggled[it]) {
currentState[it] = true
isToggled[it] = true
}
else if (isPressed[it] && currentState[it] && !isToggled[it]) {
currentState[it] = false
isToggled[it] = true
}
if (!isPressed[it] && isToggled[it]) {
isToggled[it] = false
}
}
}
fun forceSet(key: Int, b: Boolean) {
currentState[key] = b
isToggled[key] = true
}
}