confirmation added for exit game and return to main menu

This commit is contained in:
minjaesong
2021-09-13 00:14:48 +09:00
parent 39714153cf
commit 921d47c465
3 changed files with 108 additions and 12 deletions

View File

@@ -19,7 +19,14 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
override var height: Int = App.scr.height
override var openCloseTime = 0.0f
private val gameMenu = arrayOf("MENU_LABEL_MAINMENU", "MENU_LABEL_DESKTOP", "MENU_OPTIONS_CONTROLS", "MENU_OPTIONS_SOUND", "MENU_LABEL_GRAPHICS")
private val gameMenu = arrayOf(
"MENU_IO_SAVE_GAME",
"MENU_LABEL_GRAPHICS",
"MENU_OPTIONS_CONTROLS",
"MENU_OPTIONS_SOUND",
"MENU_LABEL_RETURN_MAIN",
"MENU_LABEL_DESKTOP",
)
private val gameMenuListHeight = DEFAULT_LINE_HEIGHT * gameMenu.size
private val gameMenuListWidth = 400
private val gameMenuButtons = UIItemTextButtonList(
@@ -35,42 +42,114 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
inactiveCol = Color.WHITE,
defaultSelection = null
)
private val areYouSureMainMenuButtons = UIItemTextButtonList(
this, DEFAULT_LINE_HEIGHT, arrayOf("MENU_LABEL_RETURN_MAIN_QUESTION", "MENU_LABEL_RETURN_MAIN", "MENU_LABEL_CANCEL"),
(App.scr.width - gameMenuListWidth) / 2,
INVENTORY_CELLS_OFFSET_Y + (INVENTORY_CELLS_UI_HEIGHT - (DEFAULT_LINE_HEIGHT * 3)) / 2,
gameMenuListWidth, DEFAULT_LINE_HEIGHT * 3,
readFromLang = true,
textAreaWidth = gameMenuListWidth,
activeBackCol = Color(0),
highlightBackCol = Color(0),
backgroundCol = Color(0),
inactiveCol = Color.WHITE,
defaultSelection = null
)
private val areYouSureQuitButtons = UIItemTextButtonList(
this, DEFAULT_LINE_HEIGHT, arrayOf("MENU_LABEL_DESKTOP_QUESTION", "MENU_LABEL_DESKTOP", "MENU_LABEL_CANCEL"),
(App.scr.width - gameMenuListWidth) / 2,
INVENTORY_CELLS_OFFSET_Y + (INVENTORY_CELLS_UI_HEIGHT - (DEFAULT_LINE_HEIGHT * 3)) / 2,
gameMenuListWidth, DEFAULT_LINE_HEIGHT * 3,
readFromLang = true,
textAreaWidth = gameMenuListWidth,
activeBackCol = Color(0),
highlightBackCol = Color(0),
backgroundCol = Color(0),
inactiveCol = Color.WHITE,
defaultSelection = null
)
private var screen = 0
init {
uiItems.add(gameMenuButtons)
gameMenuButtons.selectionChangeListener = { _, new ->
when (new) {
0 -> App.setScreen(TitleScreen(App.batch))
4 -> screen = 2
5 -> screen = 1
}
}
areYouSureMainMenuButtons.selectionChangeListener = { _, new ->
when (new) {
1 -> App.setScreen(TitleScreen(App.batch))
2 -> screen = 0
}
}
areYouSureQuitButtons.selectionChangeListener = { _, new ->
when (new) {
1 -> Gdx.app.exit()
2 -> screen = 0
}
}
}
private val screenUpdates = arrayOf(
{ delta: Float ->
gameMenuButtons.update(delta)
},
{ delta: Float ->
areYouSureQuitButtons.update(delta)
},
{ delta: Float ->
areYouSureMainMenuButtons.update(delta)
}
)
private val screenRenders = arrayOf(
{ batch: SpriteBatch, camera: Camera ->
// control hints
App.fontGame.draw(batch, full.gameMenuControlHelp, full.offsetX, full.yEnd - 20)
// text buttons
gameMenuButtons.render(batch, camera)
},
{ batch: SpriteBatch, camera: Camera ->
// control hints
App.fontGame.draw(batch, full.gameMenuControlHelp, full.offsetX, full.yEnd - 20)
areYouSureQuitButtons.render(batch, camera)
},
{ batch: SpriteBatch, camera: Camera ->
// control hints
App.fontGame.draw(batch, full.gameMenuControlHelp, full.offsetX, full.yEnd - 20)
areYouSureMainMenuButtons.render(batch, camera)
}
)
override fun updateUI(delta: Float) {
gameMenuButtons.update(delta)
screenUpdates[screen](delta)
}
override fun renderUI(batch: SpriteBatch, camera: Camera) {
// control hints
blendNormal(batch)
batch.color = Color.WHITE
App.fontGame.draw(batch, full.gameMenuControlHelp, full.offsetX, full.yEnd - 20)
// text buttons
gameMenuButtons.render(batch, camera)
screenRenders[screen](batch, camera)
}
override fun doOpening(delta: Float) {
}
override fun doClosing(delta: Float) {
screen = 0
}
override fun endOpening(delta: Float) {
}
override fun endClosing(delta: Float) {
screen = 0
}
override fun dispose() {

View File

@@ -57,6 +57,8 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
abstract val width: Int
abstract val height: Int
private val mouseButton = App.getConfigInt("config_mouseprimary")
/** This variable is NOT updated on its own.
* ```
* val posXDelta = posX - oldPosX
@@ -88,9 +90,20 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
get() = relativeMouseX in 0..width - 1 && relativeMouseY in 0..height - 1
/** If mouse is hovering over it and mouse is down */
open val mousePushed: Boolean
get() = mouseUp && Gdx.input.isButtonPressed(App.getConfigInt("config_mouseprimary"))
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
/** UI to call (show up) while mouse is up */
open val mouseOverCall: UICanvas? = null
@@ -139,6 +152,8 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
if (mouseOverCall?.isVisible ?: false) {
mouseOverCall?.setAsClose()
}
mouseLatched = false
}
}
}

View File

@@ -3,9 +3,11 @@ package net.torvald.terrarum.ui
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.*
import net.torvald.terrarum.BlendMode
import net.torvald.terrarum.Second
import net.torvald.terrarum.fillRect
import net.torvald.terrarum.toInt
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import kotlin.math.roundToInt
/**
* Created by minjaesong on 2017-03-13.
@@ -186,7 +188,7 @@ class UIItemTextButtonList(
btn.update(delta)
if (btn.mousePushed && index != selectedIndex) {
if (btn.mouseJustPushed && index != selectedIndex) {
val oldIndex = selectedIndex
if (kinematic) {