mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-10 02:24:05 +09:00
fixed a bug where text buttons won't respond immediately/esc menu text button to unintentionally "click" the newly-appeared button (ESC -> Return to Main Menu -> Cancel -> Return to ... )
This commit is contained in:
@@ -71,6 +71,7 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
|
|||||||
)
|
)
|
||||||
private val savingUI = UIItemSaving(this, (width - UIItemSaving.WIDTH) / 2, (height - UIItemSaving.HEIGHT) / 2)
|
private val savingUI = UIItemSaving(this, (width - UIItemSaving.WIDTH) / 2, (height - UIItemSaving.HEIGHT) / 2)
|
||||||
|
|
||||||
|
private var oldScreen = 0
|
||||||
private var screen = 0
|
private var screen = 0
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@@ -120,20 +121,11 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val screenUpdates = arrayOf(
|
private val screens = arrayOf(
|
||||||
{ delta: Float ->
|
gameMenuButtons, areYouSureQuitButtons, areYouSureMainMenuButtons, savingUI
|
||||||
gameMenuButtons.update(delta)
|
|
||||||
},
|
|
||||||
{ delta: Float ->
|
|
||||||
areYouSureQuitButtons.update(delta)
|
|
||||||
},
|
|
||||||
{ delta: Float ->
|
|
||||||
areYouSureMainMenuButtons.update(delta)
|
|
||||||
},
|
|
||||||
{ delta: Float ->
|
|
||||||
savingUI.update(delta)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
private val screenRenders = arrayOf(
|
private val screenRenders = arrayOf(
|
||||||
{ batch: SpriteBatch, camera: Camera ->
|
{ batch: SpriteBatch, camera: Camera ->
|
||||||
// control hints
|
// control hints
|
||||||
@@ -161,7 +153,11 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
|
|||||||
|
|
||||||
|
|
||||||
override fun updateUI(delta: Float) {
|
override fun updateUI(delta: Float) {
|
||||||
screenUpdates[screen](delta)
|
if (oldScreen != screen) {
|
||||||
|
screens[screen].show()
|
||||||
|
oldScreen = screen
|
||||||
|
}
|
||||||
|
screens[screen].update(delta)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun renderUI(batch: SpriteBatch, camera: Camera) {
|
override fun renderUI(batch: SpriteBatch, camera: Camera) {
|
||||||
|
|||||||
@@ -106,6 +106,10 @@ abstract class UICanvas(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
open fun show() {}
|
||||||
|
open fun hide() {}
|
||||||
|
|
||||||
|
|
||||||
/** **DO NOT CALL THIS FUNCTION FOR THE ACTUAL UPDATING OF THE UI — USE update() INSTEAD**
|
/** **DO NOT CALL THIS FUNCTION FOR THE ACTUAL UPDATING OF THE UI — USE update() INSTEAD**
|
||||||
*
|
*
|
||||||
* Override this for the actual update. Note that you must update uiItems by yourself. */
|
* Override this for the actual update. Note that you must update uiItems by yourself. */
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
|
|||||||
abstract val width: Int
|
abstract val width: Int
|
||||||
abstract val height: Int
|
abstract val height: Int
|
||||||
|
|
||||||
private val mouseButton = App.getConfigInt("config_mouseprimary")
|
protected val mouseButton = App.getConfigInt("config_mouseprimary")
|
||||||
|
|
||||||
/** This variable is NOT updated on its own.
|
/** This variable is NOT updated on its own.
|
||||||
* ```
|
* ```
|
||||||
@@ -91,18 +91,9 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
|
|||||||
/** If mouse is hovering over it and mouse is down */
|
/** If mouse is hovering over it and mouse is down */
|
||||||
open val mousePushed: Boolean
|
open val mousePushed: Boolean
|
||||||
get() = mouseUp && Gdx.input.isButtonPressed(mouseButton)
|
get() = mouseUp && Gdx.input.isButtonPressed(mouseButton)
|
||||||
/** If mouse is just pushed */
|
|
||||||
open val mouseJustPushed: Boolean
|
|
||||||
get() {
|
|
||||||
if (mouseUp && !mouseLatched && Gdx.input.isButtonJustPressed(mouseButton)) {
|
|
||||||
mouseLatched = true
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private var mouseLatched = false
|
private var mouseLatched = Gdx.input.isButtonPressed(mouseButton)
|
||||||
|
|
||||||
/** UI to call (show up) while mouse is up */
|
/** UI to call (show up) while mouse is up */
|
||||||
open val mouseOverCall: UICanvas? = null
|
open val mouseOverCall: UICanvas? = null
|
||||||
@@ -132,6 +123,10 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
|
|||||||
open var controllerInFocus = false
|
open var controllerInFocus = false
|
||||||
|
|
||||||
|
|
||||||
|
open fun show() {}
|
||||||
|
open fun hide() {}
|
||||||
|
|
||||||
|
|
||||||
open fun update(delta: Float) {
|
open fun update(delta: Float) {
|
||||||
if (parentUI.isVisible) {
|
if (parentUI.isVisible) {
|
||||||
if (updateListener != null) {
|
if (updateListener != null) {
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package net.torvald.terrarum.ui
|
package net.torvald.terrarum.ui
|
||||||
|
|
||||||
|
import com.badlogic.gdx.Gdx
|
||||||
import com.badlogic.gdx.graphics.Camera
|
import com.badlogic.gdx.graphics.Camera
|
||||||
import com.badlogic.gdx.graphics.Color
|
import com.badlogic.gdx.graphics.Color
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||||
|
import net.torvald.terrarum.App.printdbg
|
||||||
import net.torvald.terrarum.BlendMode
|
import net.torvald.terrarum.BlendMode
|
||||||
import net.torvald.terrarum.Second
|
import net.torvald.terrarum.Second
|
||||||
import net.torvald.terrarum.fillRect
|
import net.torvald.terrarum.fillRect
|
||||||
@@ -156,6 +158,13 @@ class UIItemTextButtonList(
|
|||||||
private var highlighterYStart = highlightY
|
private var highlighterYStart = highlightY
|
||||||
private var highlighterYEnd = highlightY
|
private var highlighterYEnd = highlightY
|
||||||
|
|
||||||
|
private var clickLatched = false
|
||||||
|
|
||||||
|
override fun show() {
|
||||||
|
printdbg(this, "${this.javaClass.simpleName} show()")
|
||||||
|
clickLatched = true
|
||||||
|
}
|
||||||
|
|
||||||
/** (oldIndex: Int?, newIndex: Int) -> Unit */
|
/** (oldIndex: Int?, newIndex: Int) -> Unit */
|
||||||
var selectionChangeListener: ((Int?, Int) -> Unit)? = null
|
var selectionChangeListener: ((Int?, Int) -> Unit)? = null
|
||||||
|
|
||||||
@@ -188,7 +197,7 @@ class UIItemTextButtonList(
|
|||||||
btn.update(delta)
|
btn.update(delta)
|
||||||
|
|
||||||
|
|
||||||
if (btn.mouseJustPushed && index != selectedIndex) {
|
if (!clickLatched && btn.mousePushed && index != selectedIndex) {
|
||||||
val oldIndex = selectedIndex
|
val oldIndex = selectedIndex
|
||||||
|
|
||||||
if (kinematic) {
|
if (kinematic) {
|
||||||
@@ -208,6 +217,10 @@ class UIItemTextButtonList(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!Gdx.input.isButtonPressed(mouseButton)) {
|
||||||
|
clickLatched = false
|
||||||
|
}
|
||||||
|
|
||||||
oldPosX = posX
|
oldPosX = posX
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user