uis won't open or close when console is up

This commit is contained in:
minjaesong
2019-08-11 20:42:59 +09:00
parent 419773550a
commit b63bf88cd7
7 changed files with 58 additions and 31 deletions

View File

@@ -11,7 +11,6 @@ import net.torvald.terrarum.floorInt
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.toInt
import net.torvald.terrarum.worlddrawer.CreateTileAtlas
import net.torvald.terrarum.worlddrawer.WorldCamera
@@ -55,7 +54,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
// Use item: assuming the player has only one effective grip (EquipPosition.HAND_GRIP)
// don't separate Player from this! Physics will break, esp. airborne manoeuvre
if (terrarumIngame.canPlayerControl) {
if (!terrarumIngame.paused) {
// fire world click events; the event is defined as Ingame's (or any others') WorldClick event
if (terrarumIngame.uiContainer.map { if ((it.isOpening || it.isOpened) && it.mouseUp) 1 else 0 }.sum() == 0) { // no UI on the mouse, right?
@@ -81,8 +80,11 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
// KEYBOARD CONTROL //
//////////////////////
//KeyToggler.update(terrarumIngame.canPlayerControl)
//printdbg(this, terrarumIngame.canPlayerControl)
// FIXME temporarily make zoom work with 'Z' key
terrarumIngame.screenZoom = 1f + KeyToggler.isOn(AppLoader.getConfigInt("keyzoom")).toInt()
//terrarumIngame.screenZoom = 1f + KeyToggler.isOn(AppLoader.getConfigInt("keyzoom")).toInt()
}
@@ -90,7 +92,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
override fun keyDown(keycode: Int): Boolean {
if (terrarumIngame.canPlayerControl) {
if (!terrarumIngame.paused) {
terrarumIngame.actorNowPlaying?.keyDown(keycode)
// quickslot by number keys
@@ -155,7 +157,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
// don't separate Player from this! Physics will break, esp. airborne manoeuvre
if (terrarumIngame.canPlayerControl) {
if (!terrarumIngame.paused) {
// fire world click events; the event is defined as Ingame's (or any others') WorldClick event
if (terrarumIngame.uiContainer.map { if ((it.isOpening || it.isOpened) && it.mouseUp) 1 else 0 }.sum() == 0) { // no UI on the mouse, right?
@@ -177,7 +179,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
}
override fun scrolled(amount: Int): Boolean {
if (terrarumIngame.canPlayerControl) {
if (!terrarumIngame.paused) {
// quickslot by wheel
if (terrarumIngame.actorNowPlaying != null) {
terrarumIngame.actorNowPlaying!!.actorValue.set(

View File

@@ -1,7 +1,9 @@
package net.torvald.terrarum.gamecontroller
import com.badlogic.gdx.Gdx
import net.torvald.terrarum.Terrarum
import com.badlogic.gdx.Input
import net.torvald.terrarum.AppLoader.printdbg
import net.torvald.util.sortedArrayListOf
import java.util.*
object KeyToggler {
@@ -13,7 +15,13 @@ object KeyToggler {
/**
* Keys that won't be updated when console is opened
*/
private val gameKeys = (16..27) + (30..40) + (43..53)
private val gameKeys = sortedArrayListOf(
Input.Keys.NUM_1, Input.Keys.NUM_2, Input.Keys.NUM_3, Input.Keys.NUM_4, Input.Keys.NUM_5, Input.Keys.NUM_6, Input.Keys.NUM_7, Input.Keys.NUM_8, Input.Keys.NUM_9, Input.Keys.NUM_0, Input.Keys.MINUS, Input.Keys.EQUALS,
Input.Keys.Q, Input.Keys.W, Input.Keys.E, Input.Keys.R, Input.Keys.T, Input.Keys.Y, Input.Keys.U, Input.Keys.I, Input.Keys.O, Input.Keys.P, Input.Keys.LEFT_BRACKET, Input.Keys.RIGHT_BRACKET,
Input.Keys.A, Input.Keys.S, Input.Keys.D, Input.Keys.F, Input.Keys.G, Input.Keys.H, Input.Keys.J, Input.Keys.K, Input.Keys.L, Input.Keys.SEMICOLON, Input.Keys.APOSTROPHE,
Input.Keys.Z, Input.Keys.X, Input.Keys.C, Input.Keys.V, Input.Keys.B, Input.Keys.N, Input.Keys.M, Input.Keys.COMMA, Input.Keys.PERIOD, Input.Keys.SLASH,
Input.Keys.NUMPAD_0, Input.Keys.NUMPAD_1, Input.Keys.NUMPAD_2, Input.Keys.NUMPAD_3, Input.Keys.NUMPAD_4, Input.Keys.NUMPAD_5, Input.Keys.NUMPAD_6, Input.Keys.NUMPAD_7, Input.Keys.NUMPAD_8, Input.Keys.NUMPAD_9
)
fun isOn(key: Int): Boolean {
@@ -22,11 +30,15 @@ object KeyToggler {
/**
* Put this into the each scene's update/render method.
*
* Set ```toggleGameKeys = true``` to make toggling work for keys like Q, W, E, ...; otherwise only F1-F12 keys will be toggled
*/
fun update(gameMode: Boolean = true) {
fun update(toggleGameKeys: Boolean) {
for (it in 0..255) {
if (gameMode && it in gameKeys &&
(Terrarum.ingame!!.consoleHandler.isOpening || Terrarum.ingame!!.consoleHandler.isOpened)) {
if (!toggleGameKeys && gameKeys.contains(it)) {
if (Gdx.input.isKeyPressed(it))
printdbg(this, "Disallowed key: $it")
continue
}