From 0c20ed34186121502b05f5c3b61b2ebe1bf8e8cf Mon Sep 17 00:00:00 2001 From: Minjae Song Date: Sun, 9 Dec 2018 17:51:17 +0900 Subject: [PATCH] NSMenu WIP --- .../terrarum/modulebasegame/BuildingMaker.kt | 3 +++ src/net/torvald/terrarum/tests/UITestPad1.kt | 9 ++++++--- src/net/torvald/terrarum/ui/UINSMenu.kt | 16 ++++++++++------ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt index fbd5228e1..30f5ada5c 100644 --- a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt +++ b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt @@ -8,6 +8,7 @@ import net.torvald.terrarum.IngameInstance import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.gameactors.* +import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension import net.torvald.terrarum.modulebasegame.ui.Notification @@ -148,6 +149,8 @@ class BuildingMaker(batch: SpriteBatch) : IngameInstance(batch) { } private fun updateGame(delta: Float) { + KeyToggler.update(false) + blockPointingCursor.update(delta) actorNowPlaying?.update(delta) uiContainer.forEach { it.update(delta) } diff --git a/src/net/torvald/terrarum/tests/UITestPad1.kt b/src/net/torvald/terrarum/tests/UITestPad1.kt index abda25efc..73ef66515 100644 --- a/src/net/torvald/terrarum/tests/UITestPad1.kt +++ b/src/net/torvald/terrarum/tests/UITestPad1.kt @@ -62,7 +62,7 @@ class UITestPad1 : ScreenAdapter() { override fun show() { nsMenu = UINSMenu( "Menu", - 160, + 96, Yaml(treeStr) ) batch = SpriteBatch() @@ -74,13 +74,15 @@ class UITestPad1 : ScreenAdapter() { resize(AppLoader.appConfig.width, AppLoader.appConfig.height) - nsMenu.setPosition(10, 10) + nsMenu.setPosition(0, 0) nsMenu.setAsAlwaysVisible() } val bgCol = Color(.62f,.79f,1f,1f) + var _dct = 0f + override fun render(delta: Float) { batch.inUse { batch.color = bgCol @@ -89,7 +91,8 @@ class UITestPad1 : ScreenAdapter() { nsMenu.render(batch, camera) } - //nsMenu.setPosition(20, 20) // FIXME the prolonged bug, "the entire screen is shifted!" is caused by these kind of operations + _dct = (_dct + delta*2) % 10f + //nsMenu.setPosition(_dct.toInt(), _dct.toInt()) } override fun pause() { diff --git a/src/net/torvald/terrarum/ui/UINSMenu.kt b/src/net/torvald/terrarum/ui/UINSMenu.kt index 770f335d4..925e1279f 100644 --- a/src/net/torvald/terrarum/ui/UINSMenu.kt +++ b/src/net/torvald/terrarum/ui/UINSMenu.kt @@ -29,7 +29,7 @@ class UINSMenu( val tree = treeRepresentation.parse() - override var width = minOf(minimumWidth, tree.getLevelData(1).map { Terrarum.fontGame.getWidth(it ?: "") }.max() ?: 0) + override var width = maxOf(minimumWidth, tree.getLevelData(1).map { Terrarum.fontGame.getWidth(it ?: "") }.max() ?: 0) override var height = LINE_HEIGHT * (tree.children.size + 1) private val treeChildrenLabels = Array(tree.children.size) { tree.children[it].toString() + if (tree.children[it].children.isNotEmpty()) " $CHILD_ARROW" else "" @@ -38,11 +38,14 @@ class UINSMenu( private val theRealList = UIItemTextButtonList( this, treeChildrenLabels, - posX + TEXT_OFFSETX.toInt(), posY + LINE_HEIGHT, - width - (2 * TEXT_OFFSETX.toInt()), height - LINE_HEIGHT, - TEXT_OFFSETY.toInt(), + posX, posY + LINE_HEIGHT, + width, height - LINE_HEIGHT, textAreaWidth = width - (2 * TEXT_OFFSETX.toInt()), - alignment = UIItemTextButton.Companion.Alignment.LEFT + alignment = UIItemTextButton.Companion.Alignment.LEFT, + activeBackCol = Color(0x242424_80),//Color(1f,0f,.75f,1f), + inactiveCol = Color(.94f,.94f,.94f,1f), + itemHitboxSize = LINE_HEIGHT + ) val selectedIndex: Int? @@ -60,9 +63,10 @@ class UINSMenu( batch.color = titleTextCol blendNormal(batch) - Terrarum.fontGame.draw(batch, title, posX + TEXT_OFFSETX, TEXT_OFFSETY) + Terrarum.fontGame.draw(batch, title, posX + TEXT_OFFSETX, posY + TEXT_OFFSETY) // draw the list + batch.color = Color.WHITE theRealList.render(batch, camera) }