From 26d573c9718350141fa544428b8ef61eb3b98a44 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 19 Aug 2019 03:44:15 +0900 Subject: [PATCH] inventory ui will get taller if screen is taller --- .../terrarum/modulebasegame/TerrarumIngame.kt | 23 +++-------- .../modulebasegame/ui/UIInventoryFull.kt | 38 ++++++++++++------- .../ui/UIItemInventoryDynamicList.kt | 2 +- 3 files changed, 30 insertions(+), 33 deletions(-) diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index 11b51385e..73b1c31c4 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -137,14 +137,6 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) { lateinit var uiCheatMotherfuckerNootNoot: UICheatDetected - // UI aliases - lateinit var uiAliases: ArrayList - private set - lateinit var uiAliasesPausing: ArrayList - private set - - //var paused: Boolean = false - //get() = uiAliasesPausing.map { if (it.isOpened) return true else 0 }.isEmpty() // isEmpty is always false, which we want var particlesActive = 0 private set @@ -361,7 +353,8 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) { // batch-process uiAliases - uiAliases = arrayListOf( + // NOTE: UIs that should pause the game (e.g. Inventory) must have relevant codes ON THEIR SIDE + arrayListOf( // drawn first //uiVitalPrimary, //uiVitalSecondary, @@ -372,19 +365,13 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) { uiBasicInfo, uiWatchTierOne, UIScreenZoom(), - uiTooltip - // drawn last - ) - uiAliasesPausing = arrayListOf( uiInventoryPlayer, //uiInventoryContainer, + uiTooltip, consoleHandler, uiCheatMotherfuckerNootNoot - ) - // UIFixture is handled "dirtily" (calling directly from the render/update code) because it's dynamic - // Therefore, console window will be drawn behind of the thing - uiAliases.forEach { addUI(it) } // put them all to the UIContainer - uiAliasesPausing.forEach { addUI(it) } // put them all to the UIContainer + // drawn last + ).forEach { addUI(it) } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt index 72986ce61..9d0f9430f 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt @@ -41,13 +41,16 @@ class UIInventoryFull( override var width: Int = AppLoader.screenW override var height: Int = AppLoader.screenH + private val REQUIRED_MARGIN = 166 // hard-coded value. Don't know the details + private val CELLS_HOR = 10 - private val CELLS_VRT = 8 + private val CELLS_VRT = (AppLoader.screenH - REQUIRED_MARGIN - 134 + UIItemInventoryDynamicList.listGap) / // 134 is another magic number + (UIItemInventoryElemSimple.height + UIItemInventoryDynamicList.listGap) private val itemListToEquipViewGap = UIItemInventoryDynamicList.listGap // used to be 24; figured out that the extra gap does nothig val internalWidth: Int = UIItemInventoryDynamicList.getEstimatedW(CELLS_HOR) + UIItemInventoryEquippedView.WIDTH + itemListToEquipViewGap - val internalHeight: Int = 166 + UIItemInventoryDynamicList.getEstimatedH(CELLS_VRT) // grad_begin..grad_end..contents..grad_begin..grad_end + val internalHeight: Int = REQUIRED_MARGIN + UIItemInventoryDynamicList.getEstimatedH(CELLS_VRT) // grad_begin..grad_end..contents..grad_begin..grad_end init { handler.allowESCtoClose = true @@ -243,7 +246,7 @@ class UIInventoryFull( private val shapeRenderer = ShapeRenderer() private val gradHeight = 48f - private val weightBarWidth = 64f + private val weightBarWidth = UIItemInventoryElemSimple.height * 2f + UIItemInventoryDynamicList.listGap private var xEnd = (AppLoader.screenW + internalWidth).div(2).toFloat() private var yEnd = (AppLoader.screenH + internalHeight).div(2).toFloat() @@ -485,18 +488,28 @@ class UIInventoryFull( // control hints + val controlHintXPos = offsetX + inventoryScrOffX blendNormal(batch) batch.color = Color.WHITE - AppLoader.fontGame.draw(batch, listControlHelp, offsetX + inventoryScrOffX, yEnd - 20) + AppLoader.fontGame.draw(batch, listControlHelp, controlHintXPos, yEnd - 20) // encumbrance meter val encumbranceText = Lang["GAME_INVENTORY_ENCUMBRANCE"] + // encumbrance bar will go one row down if control help message is too long + val encumbBarXPos = xEnd - weightBarWidth + inventoryScrOffX + val encumbBarTextXPos = encumbBarXPos - 6 - AppLoader.fontGame.getWidth(encumbranceText) + val encumbBarYPos = yEnd-20 + 3f + + if (AppLoader.fontGame.getWidth(listControlHelp) + 2 + controlHintXPos >= encumbBarTextXPos) + AppLoader.fontGame.lineHeight + else 0f + + printdbg(this, "${AppLoader.fontGame.getWidth(listControlHelp) + 2 + controlHintXPos}; ${encumbBarTextXPos}") AppLoader.fontGame.draw(batch, encumbranceText, - xEnd - 6 - AppLoader.fontGame.getWidth(encumbranceText) - weightBarWidth + inventoryScrOffX, - yEnd-20 + encumbBarTextXPos, + encumbBarYPos - 3f ) // encumbrance bar background @@ -505,16 +518,13 @@ class UIInventoryFull( val encumbBack = encumbCol mul UIItemInventoryCellCommonRes.meterBackDarkening batch.color = encumbBack batch.fillRect( - xEnd - weightBarWidth + inventoryScrOffX, - yEnd-20 + 3f, - weightBarWidth, - controlHelpHeight - 6f + encumbBarXPos, encumbBarYPos, + weightBarWidth, controlHelpHeight - 6f ) // encumbrance bar batch.color = encumbCol batch.fillRect( - xEnd - weightBarWidth + inventoryScrOffX, - yEnd-20 + 3f, + encumbBarXPos, encumbBarYPos, if (actor.inventory.capacityMode == CAPACITY_MODE_NO_ENCUMBER) 1f else // make sure 1px is always be seen @@ -526,8 +536,8 @@ class UIInventoryFull( if (IS_DEVELOPMENT_BUILD) { AppLoader.fontSmallNumbers.draw(batch, "${actor.inventory.capacity}/${actor.inventory.maxCapacity}", - xEnd - 6 - AppLoader.fontGame.getWidth(encumbranceText) - weightBarWidth + inventoryScrOffX, - yEnd-20 + 3f + controlHelpHeight - 4f + encumbBarTextXPos, + encumbBarYPos + controlHelpHeight - 4f ) } } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt index 84756e3e8..d7e570fcf 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt @@ -307,7 +307,7 @@ class UIItemInventoryDynamicList( // set tooltip accordingly - if (isCompactMode && it.mouseUp && !tooltipSet) { + if (isCompactMode && it.item != null && it.mouseUp && !tooltipSet) { (Terrarum.ingame as? TerrarumIngame)?.setTooltipMessage( if (AppLoader.IS_DEVELOPMENT_BUILD) { it.item?.name + "/Mat: ${it.item?.material?.identifier}"