From 111833f5d3792bf8bced9f4346558d3e2be098c9 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 30 Jan 2024 02:57:18 +0900 Subject: [PATCH] fix: old tooltip managing code and revived the fading transition --- src/net/torvald/terrarum/IngameInstance.kt | 2 + .../terrarum/modulebasegame/ui/UICrafting.kt | 7 ++-- .../modulebasegame/ui/UIInventoryCells.kt | 5 ++- .../modulebasegame/ui/UIInventoryEscMenu.kt | 5 ++- .../modulebasegame/ui/UIInventoryFull.kt | 5 ++- .../ui/UIItemInventoryCellBase.kt | 7 +++- .../ui/UIItemInventoryItemGrid.kt | 40 ------------------- .../terrarum/modulebasegame/ui/UIJukebox.kt | 5 ++- .../modulebasegame/ui/UISmelterBasic.kt | 7 ++-- .../modulebasegame/ui/UIStorageChest.kt | 5 ++- .../terrarum/modulebasegame/ui/UITooltip.kt | 37 +++++++++++------ .../modulebasegame/ui/UIWallCalendar.kt | 5 ++- .../modulebasegame/ui/UIWorldPortal.kt | 5 ++- .../modulebasegame/ui/UIWorldPortalCargo.kt | 5 ++- .../modulebasegame/ui/UIWorldPortalListing.kt | 3 +- .../terrarum/ui/UIItemInventoryElemSimple.kt | 35 +++++++++++++--- .../terrarum/ui/UIItemInventoryElemWide.kt | 33 +++++++++++++-- 17 files changed, 126 insertions(+), 85 deletions(-) diff --git a/src/net/torvald/terrarum/IngameInstance.kt b/src/net/torvald/terrarum/IngameInstance.kt index ad47a9f54..906e1c38a 100644 --- a/src/net/torvald/terrarum/IngameInstance.kt +++ b/src/net/torvald/terrarum/IngameInstance.kt @@ -416,10 +416,12 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo open fun setTooltipMessage(message: String?) { if (message == null) { uiTooltip.setAsClose() +// printdbg(this, "Tooltip close!") } else { if (uiTooltip.isClosed || uiTooltip.isClosing) { uiTooltip.setAsOpen() +// printdbg(this, "Tooltip open!") } uiTooltip.message = message diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UICrafting.kt b/src/net/torvald/terrarum/modulebasegame/ui/UICrafting.kt index d0f497001..47143c4b9 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UICrafting.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UICrafting.kt @@ -14,6 +14,7 @@ import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.CraftingStation import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory import net.torvald.terrarum.modulebasegame.gameactors.InventoryPair +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryItemGrid.Companion.listGap import net.torvald.terrarum.modulebasegame.ui.UITemplateHalfInventory.Companion.INVENTORY_NAME_TEXT_GAP import net.torvald.terrarum.ui.* @@ -402,7 +403,7 @@ class UICrafting(val full: UIInventoryFull?) : UICanvas( openingClickLatched = Terrarum.mouseDown - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) resetUI() @@ -476,14 +477,14 @@ class UICrafting(val full: UIInventoryFull?) : UICanvas( override fun endOpening(delta: Float) { super.endOpening(delta) - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } override fun endClosing(delta: Float) { super.endClosing(delta) resetUI() - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryCells.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryCells.kt index 15b31fbd4..ed736d9ad 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryCells.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryCells.kt @@ -15,6 +15,7 @@ import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTOR import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.controlHelpHeight import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalWidth +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryItemGrid.Companion.createInvCellGenericKeyDownFun import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryItemGrid.Companion.createInvCellGenericTouchDownFun import net.torvald.terrarum.ui.Toolkit @@ -173,14 +174,14 @@ internal class UIInventoryCells( } override fun show() { - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) } override fun endClosing(delta: Float) { super.endClosing(delta) - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt index effde7281..e521a9768 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt @@ -18,6 +18,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_UI_HEIGHT import net.torvald.terrarum.modulebasegame.serialise.WriteSavegame +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.serialise.WriteConfig import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.UICanvas @@ -281,7 +282,7 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() { ) override fun show() { - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) toInitScreen() } @@ -355,7 +356,7 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() { override fun endClosing(delta: Float) { super.endClosing(delta) screen = 0 - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt index 08cd3d577..7a84a80a2 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt @@ -10,6 +10,7 @@ import net.torvald.terrarum.audio.decibelsToFullscale import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.ui.* import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.unicode.* @@ -321,7 +322,7 @@ class UIInventoryFull( override fun show() { transitionPanel.show() - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) } @@ -413,7 +414,7 @@ class UIInventoryFull( INGAME.setTooltipMessage(null) // required! // MinimapComposer.revalidateAll() - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() // printdbg(this, "Clearing out tooltipShowing") } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt index 7f9b6bb9d..aefed4933 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt @@ -32,11 +32,14 @@ abstract class UIItemInventoryCellBase( var touchDownFun: (GameItem?, Long, Int, Any?, UIItemInventoryCellBase) -> Unit, // Item, Amount, Button, extra info, self open var extraInfo: Any?, open protected val highlightEquippedItem: Boolean = true, // for some UIs that only cares about getting equipped slot number but not highlighting - var colourTheme: InventoryCellColourTheme = UIItemInventoryCellCommonRes.defaultInventoryCellTheme + var colourTheme: InventoryCellColourTheme = UIItemInventoryCellCommonRes.defaultInventoryCellTheme, + var showTooltip: Boolean = true, ) : UIItem(parentUI, initialX, initialY) { abstract override fun update(delta: Float) abstract override fun render(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) + protected val hash = System.nanoTime() + /** Custom highlight rule to highlight tihs button to primary accent colour (blue by default). * Set to `null` to use default rule: * @@ -110,6 +113,8 @@ object UIItemInventoryCellCommonRes { Color.WHITE, Toolkit.Theme.COL_CELL_FILL ) + + val tooltipShowing = HashMap() // Long: `hash` field on UIItemInventoryItemGrid } data class InventoryCellColourTheme( diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt index 0104dfa69..b9d3d93bc 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt @@ -56,8 +56,6 @@ open class UIItemInventoryItemGrid( var numberMultiplier = 1L - private val hash = System.nanoTime() - override val width = horizontalCells * UIItemInventoryElemSimple.height + (horizontalCells - 1) * listGap override val height = verticalCells * UIItemInventoryElemSimple.height + (verticalCells - 1) * listGap @@ -179,9 +177,6 @@ open class UIItemInventoryItemGrid( } } - // COMMON variables because more than one instance of this can be up on the screen - // This variable must be emptied out when the parent UI hides/closes - val tooltipShowing = HashMap() // Long: `hash` field on UIItemInventoryItemGrid } protected val itemGrid = Array(horizontalCells * verticalCells) { @@ -317,40 +312,10 @@ open class UIItemInventoryItemGrid( override fun update(delta: Float) { super.update(delta) - - tooltipShowing[hash] = false - -// printdbg(this, tooltipShowing.entries) - items.forEach { it.update(delta) - - - // set tooltip accordingly - if ((App.IS_DEVELOPMENT_BUILD || isCompactMode) && tooltipShowing[hash] != true && it.item != null && it.mouseUp) { -// printdbg(this, "calling INGAME.setTooltipMessage by $hash") - - val grey = App.fontGame.toColorCode(11, 11, 11) - val itemIDstr = "\n$grey(${it.item?.originalID}${if (it.item?.originalID == it.item?.dynamicID) "" else "/${it.item?.dynamicID}"})" - val nameStr = if (it.item?.nameSecondary?.isNotBlank() == true) "${it.item?.name}\n$grey${it.item?.nameSecondary}" else "${it.item?.name}" - - INGAME.setTooltipMessage( - if (App.IS_DEVELOPMENT_BUILD) - nameStr + itemIDstr - else - nameStr - ) - - tooltipShowing[hash] = true -// printdbg(this, tooltipShowing.entries) - } } - if (tooltipShowing.values.all { !it }) { - INGAME.setTooltipMessage(null) - } - - if (!hideSidebar) { navRemoCon.update(delta) } @@ -585,11 +550,6 @@ open class UIItemInventoryItemGrid( } override fun dispose() { - tooltipShowing.remove(hash) - } - - override fun hide() { - tooltipShowing.remove(hash) } override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIJukebox.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIJukebox.kt index eba23618f..d9c6bb255 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIJukebox.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIJukebox.kt @@ -8,6 +8,7 @@ import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory import net.torvald.terrarum.modulebasegame.gameactors.FixtureJukebox import net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.ui.* import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.unicode.getKeycapPC @@ -78,7 +79,7 @@ class UIJukebox : UICanvas( override fun show() { openingClickLatched = Terrarum.mouseDown transitionPanel.show() - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) } @@ -131,7 +132,7 @@ class UIJukebox : UICanvas( override fun endClosing(delta: Float) { super.endClosing(delta) - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt b/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt index bb7ca84a6..2e9ea90f9 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt @@ -11,6 +11,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory import net.torvald.terrarum.modulebasegame.gameactors.FixtureSmelterBasic import net.torvald.terrarum.modulebasegame.gameactors.InventoryPair import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.ui.* import net.torvald.terrarum.ui.UIItemCatBar.Companion.FILTER_CAT_ALL import net.torvald.terrarum.ui.UIItemInventoryElemWide.Companion.UNIQUE_ITEM_HAS_NO_AMOUNT @@ -98,7 +99,7 @@ class UISmelterBasic(val smelter: FixtureSmelterBasic) : UICanvas( private val productX = backdropX + 37 * backdropZoom + 3 private val productY = backdropY + 39 * backdropZoom + 3 - private val thermoX = (backdropX + 28 * backdropZoom + 1).toInt() + private val thermoX = (backdropX + 24 * backdropZoom + 1).toInt() private val thermoY = (backdropY + 39 * backdropZoom + 3).toInt() /* @@ -253,7 +254,7 @@ class UISmelterBasic(val smelter: FixtureSmelterBasic) : UICanvas( playerThings.setGetInventoryFun { INGAME.actorNowPlaying!!.inventory } itemListUpdate() - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) } @@ -390,7 +391,7 @@ class UISmelterBasic(val smelter: FixtureSmelterBasic) : UICanvas( override fun endClosing(delta: Float) { super.endClosing(delta) - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIStorageChest.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIStorageChest.kt index 92d40badf..7b360c53f 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIStorageChest.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIStorageChest.kt @@ -9,6 +9,7 @@ import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.getWidthOfCells +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.ui.* import net.torvald.unicode.getKeycapPC import kotlin.math.max @@ -155,7 +156,7 @@ internal class UIStorageChest : UICanvas( openingClickLatched = Terrarum.mouseDown - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) } @@ -254,7 +255,7 @@ internal class UIStorageChest : UICanvas( override fun endClosing(delta: Float) { super.endClosing(delta) - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt index d7fde7a34..c494f4a8d 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt @@ -5,8 +5,11 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.App +import net.torvald.terrarum.App.printdbg +import net.torvald.terrarum.INGAME import net.torvald.terrarum.Second import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UINotControllable @@ -21,7 +24,7 @@ class UITooltip : UICanvas() { handler.allowESCtoClose = false } - override var openCloseTime: Second = 0f + override var openCloseTime: Second = OPENCLOSE_GENERIC * 0.72f private val tooltipBackCol = Color.WHITE private val tooltipForeCol = Color(0xfafafaff.toInt()) @@ -48,6 +51,7 @@ class UITooltip : UICanvas() { get() = 36 * 2 + font.lineHeight.toInt() set(value) { throw Error("You are not supposed to set the height of the tooltip manually.") } + override fun renderUI(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) { val mouseXoff = 28f val mouseYoff = 0f @@ -80,20 +84,29 @@ class UITooltip : UICanvas() { } } +// private var lastOpenSignalTime = 0L +// private var debounceTime = 100*1000000L // miliseconds + + override fun setAsOpen() { + handler.setAsOpen() +// lastOpenSignalTime = System.nanoTime() +// printdbg(this, "start open") + } + + override fun setAsClose() { +// printdbg(this, "Close called, time since last open: ${System.nanoTime() - lastOpenSignalTime}") +// if (System.nanoTime() - lastOpenSignalTime >= debounceTime) { +// printdbg(this, "start close") + handler.setAsClose() +// } + } + override fun updateUI(delta: Float) { setPosition(Terrarum.mouseScreenX, Terrarum.mouseScreenY) - } - override fun doOpening(delta: Float) { - } - - override fun doClosing(delta: Float) { - } - - override fun endOpening(delta: Float) { - } - - override fun endClosing(delta: Float) { + if (tooltipShowing.values.all { !it }) { + INGAME.setTooltipMessage(null) + } } override fun dispose() { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt index 4f94c76c2..7dd28f50d 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt @@ -8,6 +8,7 @@ import net.torvald.terrarum.* import net.torvald.terrarum.gameworld.WorldTime import net.torvald.terrarum.gameworld.WorldTime.Companion.MONTH_LENGTH import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.UICanvas import net.torvald.unicode.getKeycapPC @@ -368,13 +369,13 @@ class UIWallCalendar : UICanvas( override fun endOpening(delta: Float) { super.endOpening(delta) - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } override fun endClosing(delta: Float) { super.endClosing(delta) - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt index 8aee3d097..226a4dc57 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt @@ -14,6 +14,7 @@ import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.YPOS_COR import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.drawBackground import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalHeight import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalWidth +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.serialise.toAscii85 import net.torvald.terrarum.ui.* import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack @@ -190,14 +191,14 @@ class UIWorldPortal : UICanvas( override fun endOpening(delta: Float) { super.endOpening(delta) transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) } - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } override fun endClosing(delta: Float) { super.endClosing(delta) transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) } - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalCargo.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalCargo.kt index 291094f7e..9cfeed0f1 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalCargo.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalCargo.kt @@ -8,6 +8,7 @@ import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.ui.* import net.torvald.unicode.getKeycapPC import kotlin.math.max @@ -144,7 +145,7 @@ class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory { openingClickLatched = Terrarum.mouseDown - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) } @@ -244,7 +245,7 @@ class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory { } override fun endClosing(delta: Float) { - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalListing.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalListing.kt index 9804b2517..db886895f 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalListing.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalListing.kt @@ -13,6 +13,7 @@ import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.FixtureWorldPortal import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.getCellCountVertically +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.realestate.LandUtil.CHUNK_H import net.torvald.terrarum.realestate.LandUtil.CHUNK_W import net.torvald.terrarum.savegame.* @@ -524,7 +525,7 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() { override fun endClosing(delta: Float) { super.endClosing(delta) - UIItemInventoryItemGrid.tooltipShowing.clear() + tooltipShowing.clear() INGAME.setTooltipMessage(null) // required! } diff --git a/src/net/torvald/terrarum/ui/UIItemInventoryElemSimple.kt b/src/net/torvald/terrarum/ui/UIItemInventoryElemSimple.kt index 71c29d233..9d447c8f9 100644 --- a/src/net/torvald/terrarum/ui/UIItemInventoryElemSimple.kt +++ b/src/net/torvald/terrarum/ui/UIItemInventoryElemSimple.kt @@ -4,16 +4,14 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion -import net.torvald.terrarum.App -import net.torvald.terrarum.CommonResourcePool -import net.torvald.terrarum.blendNormalStraightAlpha +import net.torvald.terrarum.* import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.modulebasegame.ui.InventoryCellColourTheme import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellBase import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.defaultInventoryCellTheme import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.toItemCountText -import net.torvald.terrarum.mul +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import kotlin.math.roundToInt /** @@ -59,7 +57,6 @@ class UIItemInventoryElemSimple( private val emptyCellIconOffsetY = (this.height - (emptyCellIcon?.regionHeight ?: 0)).div(2).toFloat() override fun update(delta: Float) { - } private var highlightToMainCol = false @@ -129,6 +126,29 @@ class UIItemInventoryElemSimple( ) } + + // set tooltip accordingly + if (tooltipShowing[hash] != true && item != null && mouseUp) { +// printdbg(this, "calling INGAME.setTooltipMessage by $hash") + + val grey = App.fontGame.toColorCode(11, 11, 11) + val itemIDstr = "\n$grey(${item?.originalID}${if (item?.originalID == item?.dynamicID) "" else "/${item?.dynamicID}"})" + val nameStr = if (item?.nameSecondary?.isNotBlank() == true) "${item?.name}\n$grey${item?.nameSecondary}" else "${item?.name}" + + INGAME.setTooltipMessage( + if (App.IS_DEVELOPMENT_BUILD) + nameStr + itemIDstr + else + nameStr + ) + + tooltipShowing[hash] = true +// printdbg(this, tooltipShowing.entries) + } + else if (item == null || !mouseUp) { + tooltipShowing[hash] = false + } + } else { @@ -146,5 +166,10 @@ class UIItemInventoryElemSimple( } override fun dispose() { + tooltipShowing.remove(hash) + } + + override fun hide() { + tooltipShowing.remove(hash) } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/ui/UIItemInventoryElemWide.kt b/src/net/torvald/terrarum/ui/UIItemInventoryElemWide.kt index fefb43d50..c49e4cf9d 100644 --- a/src/net/torvald/terrarum/ui/UIItemInventoryElemWide.kt +++ b/src/net/torvald/terrarum/ui/UIItemInventoryElemWide.kt @@ -5,12 +5,14 @@ import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.* +import net.torvald.terrarum.App.IS_DEVELOPMENT_BUILD import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.modulebasegame.ui.InventoryCellColourTheme import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellBase import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.toItemCountText +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import kotlin.math.roundToInt /*** @@ -64,9 +66,6 @@ class UIItemInventoryElemWide( override fun update(delta: Float) { - if (item != null) { - - } } private var highlightToMainCol = false @@ -159,13 +158,39 @@ class UIItemInventoryElemWide( App.fontGame.draw(batch, "$label", barOffset + barFullLen - labelW.toFloat(), posY + textOffsetY) } + + // set tooltip accordingly + if (IS_DEVELOPMENT_BUILD && tooltipShowing[hash] != true && item != null && mouseUp) { +// printdbg(this, "calling INGAME.setTooltipMessage by $hash") + + val grey = App.fontGame.toColorCode(11, 11, 11) + val itemIDstr = "\n$grey(${item?.originalID}${if (item?.originalID == item?.dynamicID) "" else "/${item?.dynamicID}"})" + val nameStr = if (item?.nameSecondary?.isNotBlank() == true) "${item?.name}\n$grey${item?.nameSecondary}" else "${item?.name}" + + INGAME.setTooltipMessage( + if (App.IS_DEVELOPMENT_BUILD) + nameStr + itemIDstr + else + nameStr + ) + + tooltipShowing[hash] = true +// printdbg(this, tooltipShowing.entries) + } + else if (item == null || !mouseUp) { + tooltipShowing[hash] = false + } } // see IFs above? batch.color = Color.WHITE - } override fun dispose() { + tooltipShowing.remove(hash) + } + + override fun hide() { + tooltipShowing.remove(hash) } }