From d4672df20810595650219133c1f28fe1186591b4 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 22 Mar 2024 21:37:56 +0900 Subject: [PATCH] sign engraver ui --- .../terrarum-sans-bitmap/puae000-e0ff.tga | 2 +- .../modulebasegame/ui/UIEngravingTextSign.kt | 26 ++++++++++++++++--- src/net/torvald/unicode/UniTextShortcuts.kt | 5 +++- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/puae000-e0ff.tga b/assets/graphics/fonts/terrarum-sans-bitmap/puae000-e0ff.tga index 7fc7596c8..6ebc0701d 100755 --- a/assets/graphics/fonts/terrarum-sans-bitmap/puae000-e0ff.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/puae000-e0ff.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39615e004ad323ca83d4bc37ead7638acca32762e535c730ac31b85aa7deb53b +oid sha256:3a0f8decff30de5e236d2d2f4e40cdbc6753d73cfe1319754985320d5cb0f165 size 331794 diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIEngravingTextSign.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIEngravingTextSign.kt index 74c896a47..be7bc4657 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIEngravingTextSign.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIEngravingTextSign.kt @@ -1,5 +1,6 @@ package net.torvald.terrarum.modulebasegame.ui +import com.badlogic.gdx.Input.Keys import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.Pixmap @@ -7,16 +8,18 @@ import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.FrameBuffer import net.torvald.terrarum.* -import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZEF import net.torvald.terrarum.blockproperties.Block +import net.torvald.terrarum.itemproperties.Item import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory +import net.torvald.terrarum.modulebasegame.gameitems.ItemTextSignCopper import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.ui.* import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack +import net.torvald.unicode.TIMES import net.torvald.unicode.getKeycapPC import kotlin.math.roundToInt @@ -170,13 +173,29 @@ class UIEngravingTextSign : UICanvas( } - private val goButton = UIItemTextButton(this, - { Lang["GAME_ACTION_CRAFT"] }, (width - goButtonWidth) / 2, row3, goButtonWidth, alignment = UIItemTextButton.Companion.Alignment.CENTRE, hasBorder = true).also { + private val resetButton = UIItemTextButton(this, + { Lang["MENU_LABEL_RESET"] }, width / 2 - 24 - goButtonWidth, row3, goButtonWidth, alignment = UIItemTextButton.Companion.Alignment.CENTRE, hasBorder = true).also { it.clickOnceListener = { _, _ -> + resetUI() + } + } + private val goButton = UIItemTextButton(this, + { Lang["GAME_ACTION_CRAFT"] }, width / 2 + 24, row3, goButtonWidth, alignment = UIItemTextButton.Companion.Alignment.CENTRE, hasBorder = true).also { + it.clickOnceListener = { _, _ -> + val actorInventory = getPlayerInventory() + val text = textInput.getText() + val item = ItemTextSignCopper(Item.COPPER_SIGN).makeDynamic(actorInventory).also { + it.extra["signContent"] = text + it.extra["signPanelCount"] = panelCount + it.nameSecondary = "[$panelCount${TIMES}2] $text" + } + actorInventory.add(item) + + resetUI() } } @@ -199,6 +218,7 @@ class UIEngravingTextSign : UICanvas( addUIitem(panelCountSpinner) addUIitem(ingredientsPanel) addUIitem(goButton) + addUIitem(resetButton) } private var panelCount = panelCountSpinner.value.toInt() diff --git a/src/net/torvald/unicode/UniTextShortcuts.kt b/src/net/torvald/unicode/UniTextShortcuts.kt index 3706e773f..82b8ca846 100644 --- a/src/net/torvald/unicode/UniTextShortcuts.kt +++ b/src/net/torvald/unicode/UniTextShortcuts.kt @@ -70,7 +70,10 @@ fun getKeycapPC(c: Char) = when (c.uppercaseChar()) { in ' '..'_' -> (0xE000 + c.code - 32).toChar() else -> throw IllegalArgumentException("Not in range: ${c.code - 32}") } -fun getKeycapPC(keycode: Int) = getKeycapPC(com.badlogic.gdx.Input.Keys.toString(keycode)[0]) +fun getKeycapPC(keycode: Int) = + if (keycode == com.badlogic.gdx.Input.Keys.ESCAPE) + "\uE09E\uE09F" + else getKeycapPC(com.badlogic.gdx.Input.Keys.toString(keycode)[0]) fun getMouseButton(button: Int) = when (button) { 0 -> KEYCAP_LEFT_MOUSE 1 -> KEYCAP_RIGHT_MOUSE