diff --git a/src/net/torvald/terrarum/TooltipManager.kt b/src/net/torvald/terrarum/TooltipManager.kt new file mode 100644 index 000000000..a70cb4618 --- /dev/null +++ b/src/net/torvald/terrarum/TooltipManager.kt @@ -0,0 +1,47 @@ +package net.torvald.terrarum + +/** + * Created by minjaesong on 2024-10-11. + */ +object TooltipManager { + + /** + * Special hash values: + * - 10001: Encumbrance bar + * - 10002: Pickaxe + */ + val tooltipShowing = HashMap() +} + +/** + * Tooltip works like a "bus" principle: you acquire the control on the tooltip-bus to show a tooltip; you + * release the control to the bus to hide it. `unsetToolTip()` will release the bus and forcibly closes + * the tooltip UI. + * + * Created by minjaesong on 2024-10-11. + */ +abstract class TooltipListener { + + open val tooltipHash = System.nanoTime() + + fun acquireTooltip(message: String?) { + INGAME.setTooltipMessage(message) + TooltipManager.tooltipShowing[tooltipHash] = true + } + + fun releaseTooltip() { +// TooltipManager.tooltipShowing[tooltipHash] = false // I doubt this is not really necessary...? + TooltipManager.tooltipShowing.remove(tooltipHash) + } + + fun removeFromTooltipRecord() { + TooltipManager.tooltipShowing.remove(tooltipHash) + } + + fun clearTooltip() { + TooltipManager.tooltipShowing.clear() + INGAME.setTooltipMessage(null) + } + + fun tooltipAcquired() = TooltipManager.tooltipShowing[tooltipHash] ?: false +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/Actor.kt b/src/net/torvald/terrarum/gameactors/Actor.kt index b0de544b2..b01ebc715 100644 --- a/src/net/torvald/terrarum/gameactors/Actor.kt +++ b/src/net/torvald/terrarum/gameactors/Actor.kt @@ -6,6 +6,7 @@ import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.App.printdbgerr import net.torvald.terrarum.INGAME import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.TooltipListener import net.torvald.terrarum.audio.AudioBank import net.torvald.terrarum.audio.audiobank.MusicContainer import net.torvald.terrarum.audio.TerrarumAudioMixerTrack @@ -27,7 +28,7 @@ typealias ActorID = Int * * Created by minjaesong on 2015-12-31. */ -abstract class Actor : Comparable, Runnable { +abstract class Actor(): TooltipListener(), Comparable, Runnable { /** * Valid RefID is equal to or greater than 16777216. @@ -42,7 +43,6 @@ abstract class Actor : Comparable, Runnable { */ var renderOrder = RenderOrder.MIDDLE - protected constructor() // needs zero-arg constructor for serialiser to work constructor(renderOrder: RenderOrder, id: ActorID?) : this() { diff --git a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt index 5dba3b23c..53204f1c7 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt @@ -23,7 +23,6 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer import net.torvald.terrarum.modulebasegame.gameactors.Pocketed -import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarum.worlddrawer.CreateTileAtlas import net.torvald.terrarum.worlddrawer.WorldCamera @@ -98,8 +97,6 @@ open class ActorWithBody : Actor { val mouseUp: Boolean get() = hitbox.containsPoint((world?.width ?: 0) * TILE_SIZED, Terrarum.mouseX, Terrarum.mouseY) - @Transient protected val tooltipHash = System.nanoTime() - var hitboxTranslateX: Int = 0// relative to spritePosX protected set var hitboxTranslateY: Int = 0// relative to spritePosY @@ -702,14 +699,13 @@ open class ActorWithBody : Actor { else submergedHeight / hitbox.height - if (mouseUp && tooltipText != null && tooltipShowing[tooltipHash] != true) { - INGAME.setTooltipMessage(tooltipText) - tooltipShowing[tooltipHash] = true + if (mouseUp && tooltipText != null && !tooltipAcquired()) { + acquireTooltip(tooltipText) } } if (tooltipText == null || !mouseUp || flagDespawn) { - tooltipShowing[tooltipHash] = false + releaseTooltip() } // isStationary = (hitbox - oldHitbox).magnitudeSquared < PHYS_EPSILON_VELO @@ -1980,7 +1976,7 @@ open class ActorWithBody : Actor { internal open fun flagDespawn() { flagDespawn = true - tooltipShowing.remove(tooltipHash) + removeFromTooltipRecord() } open fun getSpriteHead(): TextureRegion? { @@ -2316,7 +2312,7 @@ open class ActorWithBody : Actor { App.disposables.add(sprite) App.disposables.add(spriteGlow) App.disposables.add(spriteEmissive) - tooltipShowing.remove(tooltipHash) + removeFromTooltipRecord() } } diff --git a/src/net/torvald/terrarum/gameitems/GameItem.kt b/src/net/torvald/terrarum/gameitems/GameItem.kt index f1665e8c8..9ccfd36b4 100644 --- a/src/net/torvald/terrarum/gameitems/GameItem.kt +++ b/src/net/torvald/terrarum/gameitems/GameItem.kt @@ -27,7 +27,7 @@ typealias ItemID = String * * Created by minjaesong on 2016-01-16. */ -abstract class GameItem(val originalID: ItemID) : Comparable, Cloneable, TaggedProp { +abstract class GameItem(val originalID: ItemID) : TooltipListener(), Comparable, Cloneable, TaggedProp { constructor() : this("-uninitialised-") diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureInductionMotor.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureInductionMotor.kt index 474b22d5f..b581980d8 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureInductionMotor.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureInductionMotor.kt @@ -1,23 +1,16 @@ package net.torvald.terrarum.modulebasegame.gameactors -import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.spriteanimation.SheetSpriteAnimation -import net.torvald.terrarum.App -import net.torvald.terrarum.INGAME import net.torvald.terrarum.Point2i import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED import net.torvald.terrarum.gameactors.AVKey -import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.FixtureInductionMotor.Companion.MASS import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase -import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing -import net.torvald.terrarum.toInt import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import org.dyn4j.geometry.Vector2 import kotlin.math.absoluteValue -import kotlin.math.roundToLong /** * Created by minjaesong on 2024-10-03. @@ -59,10 +52,6 @@ class FixtureInductionMotor : Electric { setWireEmissionAt(2, 0, Vector2(16.0, 1024.0)) // speed and torque } - override fun dispose() { - tooltipShowing.remove(tooltipHash) - } - companion object { const val MASS = 20.0 } @@ -187,10 +176,6 @@ class FixtureGearbox : Electric, Reorientable { } } - override fun dispose() { - tooltipShowing.remove(tooltipHash) - } - companion object { @Transient val posVecsIn = listOf( // Point2i(1, 0), diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureLogicSignalEmitter.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureLogicSignalEmitter.kt index 60c52a894..32832ff49 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureLogicSignalEmitter.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureLogicSignalEmitter.kt @@ -4,8 +4,6 @@ import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase -import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes -import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import org.dyn4j.geometry.Vector2 @@ -43,7 +41,7 @@ class FixtureLogicSignalEmitter : Electric { } override fun dispose() { - tooltipShowing.remove(tooltipHash) + removeFromTooltipRecord() } companion object { diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTextSignCopper.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTextSignCopper.kt index 7dc749103..37e11ab8d 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTextSignCopper.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTextSignCopper.kt @@ -17,7 +17,6 @@ import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.itemproperties.Item import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameitems.ItemTextSignCopper -import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.unicode.TIMES import org.dyn4j.geometry.Vector2 @@ -253,7 +252,7 @@ class FixtureTextSignCopper : Electric { } override fun dispose() { - tooltipShowing.remove(tooltipHash) + removeFromTooltipRecord() sprite?.dispose() spriteGlow?.dispose() spriteEmissive?.dispose() diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemWrench.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemWrench.kt index 64430a2c8..b8643ea84 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/ItemWrench.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/ItemWrench.kt @@ -1,31 +1,26 @@ package net.torvald.terrarum.modulebasegame.gameitems -import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.App import net.torvald.terrarum.CommonResourcePool import net.torvald.terrarum.INGAME -import net.torvald.terrarum.Terrarum import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED import net.torvald.terrarum.gameactors.ActorWithBody -import net.torvald.terrarum.gameactors.WireActor import net.torvald.terrarum.gameitems.FixtureInteractionBlocked import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.gameitems.mouseInInteractableRange -import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem import net.torvald.terrarum.modulebasegame.gameactors.Reorientable -import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.unicode.getMouseButton /** * Created by minjaesong on 2024-03-08. */ class ItemWrench(originalID: ItemID) : GameItem(originalID), FixtureInteractionBlocked { + override val tooltipHash = 10003L companion object { - private val tooltipHash = 10003L private val SP = "\u3000" private val ML = getMouseButton(App.getConfigInt("config_mouseprimary")) private val MR = getMouseButton(App.getConfigInt("config_mousesecondary")) @@ -55,17 +50,18 @@ class ItemWrench(originalID: ItemID) : GameItem(originalID), FixtureInteractionB q = mouseInInteractableRange(actor) { mwx, mwy, mtx, mty -> (INGAME as TerrarumIngame).world.getWireGraphOf(mtx, mty, "wire@basegame:256").let { cnx -> if (cnx != null) { - INGAME.setTooltipMessage("$ML ${Lang["GAME_ACTION_DISMANTLE"]}\n$MR ${Lang["MENU_CONTROLS_ROTATE"]}") - tooltipShowing[tooltipHash] = true + acquireTooltip("$ML ${Lang["GAME_ACTION_DISMANTLE"]}\n$MR ${Lang["MENU_CONTROLS_ROTATE"]}") + } else { - tooltipShowing[tooltipHash] = false + releaseTooltip() } } 0L } if (q == -1L) - tooltipShowing[tooltipHash] = false*/ + releaseTooltip() + */ } override fun startPrimaryUse(actor: ActorWithBody, delta: Float) = mouseInInteractableRange(actor) { mwx, mwy, mtx, mty -> diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt index 04dd934f1..39f3f310c 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt @@ -19,7 +19,6 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.BASE_MASS_AND_SIZE import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.TOOL_DURABILITY_BASE -import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.worlddrawer.CreateTileAtlas.RenderTag import org.dyn4j.geometry.Vector2 import kotlin.math.roundToInt @@ -27,8 +26,8 @@ import kotlin.math.roundToInt /** * Created by minjaesong on 2019-03-10. */ -object PickaxeCore { - private val tooltipHash = 10002L +object PickaxeCore : TooltipListener() { + override val tooltipHash = 10002L private val soundPlayedForThisTick = HashMap() /** @@ -237,7 +236,7 @@ object PickaxeCore { val overlayUIopen = (INGAME as? TerrarumIngame)?.uiBlur?.isVisible ?: false var tooltipSet = false - val tooltipWasShown = tooltipShowing[tooltipHash] ?: false + val tooltipWasShown = tooltipAcquired() mouseInInteractableRangeTools(actor, tool) { val tileUnderCursor = INGAME.world.getTileFromOre(mx, my).item @@ -249,8 +248,7 @@ object PickaxeCore { Lang[ItemCodex[itemForOre]!!.originalName] else "???" if (App.getConfigBoolean("basegame:showpickaxetooltip")) { - INGAME.setTooltipMessage(tileName) - tooltipShowing[tooltipHash] = true + acquireTooltip(tileName) } tooltipSet = true } @@ -269,7 +267,8 @@ object PickaxeCore { true // just a placeholder } - if (App.getConfigBoolean("basegame:showpickaxetooltip") && !tooltipSet) tooltipShowing[tooltipHash] = false + if (App.getConfigBoolean("basegame:showpickaxetooltip") && !tooltipSet) + releaseTooltip() } private val soundCue = MusicContainer( diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/WireGraphDebugger.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/WireGraphDebugger.kt index 2d2de3808..f69c91d8f 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/WireGraphDebugger.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/WireGraphDebugger.kt @@ -13,9 +13,6 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) { - - @Transient private val tooltipHash = System.nanoTime() - override var baseToolSize: Double? = PickaxeCore.BASE_MASS_AND_SIZE override var inventoryCategory = Category.TOOL override val canBeDynamic = false @@ -65,12 +62,10 @@ class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) { } if (sb.isNotEmpty()) { - UIItemInventoryCellCommonRes.tooltipShowing[tooltipHash] = true - (Terrarum.ingame!! as TerrarumIngame).setTooltipMessage(sb.toString()) + acquireTooltip(sb.toString()) } else { - UIItemInventoryCellCommonRes.tooltipShowing[tooltipHash] = false - (Terrarum.ingame!! as TerrarumIngame).setTooltipMessage(null) + releaseTooltip() } } @@ -78,6 +73,6 @@ class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) { (Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = "" (Terrarum.ingame!! as TerrarumIngame).setTooltipMessage(null) blockMarker.hideMarker() - UIItemInventoryCellCommonRes.tooltipShowing.remove(tooltipHash) + removeFromTooltipRecord() } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIAlloyingFurnace.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIAlloyingFurnace.kt index 7f92cd464..f2590db6f 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIAlloyingFurnace.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIAlloyingFurnace.kt @@ -213,9 +213,6 @@ class UIAlloyingFurnace(val smelter: FixtureAlloyingFurnace) : UICanvas( playerThings.setGetInventoryFun { INGAME.actorNowPlaying!!.inventory } itemListUpdate() - - UIItemInventoryCellCommonRes.tooltipShowing.clear() - INGAME.setTooltipMessage(null) } @@ -449,8 +446,6 @@ class UIAlloyingFurnace(val smelter: FixtureAlloyingFurnace) : UICanvas( override fun endClosing(delta: Float) { super.endClosing(delta) - UIItemInventoryCellCommonRes.tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! } override fun dispose() { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UICraftingWorkbench.kt b/src/net/torvald/terrarum/modulebasegame/ui/UICraftingWorkbench.kt index 0ebb997f6..a4bdb61b4 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UICraftingWorkbench.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UICraftingWorkbench.kt @@ -15,7 +15,6 @@ import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory 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.* @@ -455,9 +454,6 @@ class UICraftingWorkbench(val inventoryUI: UIInventoryFull?, val parentContainer super.show() - tooltipShowing.clear() - INGAME.setTooltipMessage(null) - resetUI() } @@ -518,15 +514,11 @@ class UICraftingWorkbench(val inventoryUI: UIInventoryFull?, val parentContainer override fun endOpening(delta: Float) { super.endOpening(delta) - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! } override fun endClosing(delta: Float) { super.endClosing(delta) resetUI() - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIEngravingTextSign.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIEngravingTextSign.kt index 331658960..59e9b1dac 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIEngravingTextSign.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIEngravingTextSign.kt @@ -16,7 +16,6 @@ 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 @@ -215,8 +214,6 @@ class UIEngravingTextSign : UICanvas( override fun show() { super.show() - tooltipShowing.clear() - INGAME.setTooltipMessage(null) resetUI() } @@ -286,15 +283,11 @@ class UIEngravingTextSign : UICanvas( override fun endOpening(delta: Float) { super.endOpening(delta) - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! } override fun endClosing(delta: Float) { super.endClosing(delta) resetUI() - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryCells.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryCells.kt index e3f3ec2e8..9c32d8b5b 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryCells.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryCells.kt @@ -6,7 +6,6 @@ import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.* import net.torvald.terrarum.langpack.Lang -import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory @@ -14,9 +13,7 @@ import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.CELLS_HO import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.CELLS_VRT import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_X 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 @@ -77,10 +74,10 @@ internal class UIInventoryCells( "${(actorInventory.capacity * 100L).toLong() / 100.0}" INGAME.setTooltipMessage("$capaStr/${actorInventory.maxCapacityByActor}") - tooltipShowing[10001] = true + TooltipManager.tooltipShowing[10001] = true } else { - tooltipShowing[10001] = false + TooltipManager.tooltipShowing[10001] = false } } } @@ -179,19 +176,6 @@ internal class UIInventoryCells( UIInventoryCells.drawEncumbranceBar(batch, encumbBarXPos, encumbBarYPos, encumbrancePerc, full.actor.inventory) } - override fun show() { - super.show() - tooltipShowing.clear() - INGAME.setTooltipMessage(null) - } - - - override fun endClosing(delta: Float) { - super.endClosing(delta) - tooltipShowing.clear() - INGAME.setTooltipMessage(null) - } - override fun dispose() { itemList.dispose() equipped.dispose() diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt index 8c2359c1c..6deb7043c 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt @@ -1,23 +1,15 @@ package net.torvald.terrarum.modulebasegame.ui -import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.* -import net.torvald.terrarum.App.printdbg -import net.torvald.terrarum.Terrarum.getPlayerSaveFiledesc -import net.torvald.terrarum.Terrarum.getWorldSaveFiledesc -import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TitleScreen -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 @@ -305,8 +297,6 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() { override fun show() { super.show() - tooltipShowing.clear() - INGAME.setTooltipMessage(null) toInitScreen() } @@ -379,8 +369,6 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() { override fun endClosing(delta: Float) { super.endClosing(delta) screen = 0 - tooltipShowing.clear() - INGAME.setTooltipMessage(null) } override fun hide() { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt index 851753963..0235f8c79 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt @@ -12,7 +12,6 @@ import net.torvald.terrarum.audio.dsp.Lowpass 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.* @@ -327,12 +326,6 @@ class UIInventoryFull( it.setAsOpen() } - override fun show() { - super.show() - tooltipShowing.clear() - INGAME.setTooltipMessage(null) - } - internal var offsetX = ((width - internalWidth) / 2).toFloat() private set internal var offsetY = ((App.scr.height - internalHeight) / 2).toFloat() @@ -427,10 +420,6 @@ class UIInventoryFull( INGAME.setTooltipMessage(null) // required! // MinimapComposer.revalidateAll() - tooltipShowing.clear() - -// printdbg(this, "Clearing out tooltipShowing") - shouldIFadeIn = null } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt index 7f8e4cd61..828860155 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt @@ -45,8 +45,6 @@ abstract class UIItemInventoryCellBase( override var suppressHaptic = false - protected val tooltipHash = System.nanoTime() - /** Custom highlight rule to highlight tihs button to primary accent colour (blue by default). * Set to `null` to use default rule: * @@ -128,13 +126,6 @@ object UIItemInventoryCellCommonRes { Color.WHITE, Toolkit.Theme.COL_CELL_FILL ) - - /** - * Special hash values: - * - 10001: Encumbrance bar - * - 10002: Pickaxe - */ - val tooltipShowing = HashMap() // Long: `hash` field on UIItemInventoryItemGrid } data class InventoryCellColourTheme( diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIJukebox.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIJukebox.kt index 710da968b..7fd9236e7 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIJukebox.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIJukebox.kt @@ -5,10 +5,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.* import net.torvald.terrarum.gameitems.ItemID 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 @@ -77,8 +74,6 @@ class UIJukebox : UICanvas( override fun show() { super.show() transitionPanel.show() - tooltipShowing.clear() - INGAME.setTooltipMessage(null) } override fun hide() { @@ -120,16 +115,6 @@ class UIJukebox : UICanvas( INGAME.setTooltipMessage(null) } - override fun endOpening(delta: Float) { - super.endOpening(delta) - } - - override fun endClosing(delta: Float) { - super.endClosing(delta) - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! - } - override fun dispose() { } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt b/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt index 7fbc8f27c..35e6806af 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt @@ -11,7 +11,6 @@ import net.torvald.terrarum.modulebasegame.gameactors.FixtureSmelterBasic import net.torvald.terrarum.modulebasegame.gameactors.InventoryPair import net.torvald.terrarum.modulebasegame.ui.SmelterGuiEventBuilder.PRODUCT_SLOT import net.torvald.terrarum.modulebasegame.ui.SmelterGuiEventBuilder.SLOT_INDEX_STRIDE -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 @@ -207,9 +206,6 @@ class UISmelterBasic(val smelter: FixtureSmelterBasic) : UICanvas( playerThings.setGetInventoryFun { INGAME.actorNowPlaying!!.inventory } itemListUpdate() - - tooltipShowing.clear() - INGAME.setTooltipMessage(null) } override fun updateImpl(delta: Float) { @@ -436,8 +432,7 @@ class UISmelterBasic(val smelter: FixtureSmelterBasic) : UICanvas( override fun endClosing(delta: Float) { super.endClosing(delta) - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! + clearTooltip() } override fun dispose() { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIStorageChest.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIStorageChest.kt index 3cada5921..73639edb5 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIStorageChest.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIStorageChest.kt @@ -4,19 +4,14 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.* -import net.torvald.terrarum.App.printdbg -import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameitems.GameItem 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.ui.UIInventoryFull.Companion.getWidthOfCells -import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.ui.* import net.torvald.unicode.getKeycapPC import net.torvald.unicode.getMouseButton -import kotlin.math.max -import kotlin.math.min /** * Created by minjaesong on 2019-07-08. @@ -190,9 +185,6 @@ internal class UIStorageChest : UICanvas( itemListPlayer.itemList.getInventory = { INGAME.actorNowPlaying!!.inventory } itemListUpdate() - - tooltipShowing.clear() - INGAME.setTooltipMessage(null) } private fun itemListUpdate() { @@ -313,17 +305,6 @@ internal class UIStorageChest : UICanvas( INGAME.setTooltipMessage(null) } - override fun endOpening(delta: Float) { - super.endOpening(delta) - } - - override fun endClosing(delta: Float) { - super.endClosing(delta) - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! - } - - override fun dispose() { } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt index aff532b5e..6e48d50aa 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt @@ -1,15 +1,9 @@ package net.torvald.terrarum.modulebasegame.ui -import com.badlogic.gdx.graphics.Camera 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.* import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UINotControllable @@ -105,11 +99,34 @@ class UITooltip : UICanvas() { override fun updateImpl(delta: Float) { setPosition(Terrarum.mouseScreenX, Terrarum.mouseScreenY) - if (isVisible && tooltipShowing.values.all { !it }) { + if (isVisible && (TooltipManager.tooltipShowing.isEmpty() || TooltipManager.tooltipShowing.values.all { !it })) { INGAME.setTooltipMessage(null) } } + override fun endOpening(delta: Float) { + handler.opacity = 1f + // Tooltip must not acquire control of itself + } + + override fun endClosing(delta: Float) { + handler.opacity = 0f + // Tooltip must not acquire control of itself + } + + override fun show() { + openingClickLatched = true + // Tooltip must not acquire control of itself + uiItems.forEach { it.show() } + handler.subUIs.forEach { it.show() } + } + + override fun hide() { + uiItems.forEach { it.hide() } + handler.subUIs.forEach { it.hide() } + openingClickLatched = true // just in case `justOpened` detection fails + } + override fun dispose() { } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt index 36192791a..19aed4773 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt @@ -1,6 +1,5 @@ package net.torvald.terrarum.modulebasegame.ui -import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch @@ -8,7 +7,6 @@ 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 @@ -358,25 +356,11 @@ class UIWallCalendar : UICanvas( override fun doOpening(delta: Float) { super.doOpening(delta) INGAME.pause() - INGAME.setTooltipMessage(null) } override fun doClosing(delta: Float) { super.doClosing(delta) INGAME.resume() - INGAME.setTooltipMessage(null) - } - - override fun endOpening(delta: Float) { - super.endOpening(delta) - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! - } - - override fun endClosing(delta: Float) { - super.endClosing(delta) - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! } override fun dispose() { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt index d37131a5a..312bfe3a5 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortal.kt @@ -1,12 +1,10 @@ package net.torvald.terrarum.modulebasegame.ui -import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.jme3.math.FastMath import net.torvald.terrarum.* import net.torvald.terrarum.gameactors.AVKey -import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent 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 @@ -14,12 +12,11 @@ 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 import net.torvald.unicode.getKeycapPC -import java.util.UUID +import java.util.* /** * Structure: @@ -186,15 +183,11 @@ class UIWorldPortal : UICanvas( override fun endOpening(delta: Float) { super.endOpening(delta) transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) } - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! } override fun endClosing(delta: Float) { super.endClosing(delta) transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) } - 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 0fac61ea2..f77f332cc 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalCargo.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalCargo.kt @@ -9,11 +9,8 @@ import net.torvald.terrarum.gameitems.GameItem 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.ui.UIItemInventoryCellCommonRes.tooltipShowing import net.torvald.terrarum.ui.* import net.torvald.unicode.getKeycapPC -import kotlin.math.max -import kotlin.math.min class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory { @@ -145,9 +142,6 @@ class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory { itemListPlayer.getInventory = { INGAME.actorNowPlaying!!.inventory } itemListUpdate() - - tooltipShowing.clear() - INGAME.setTooltipMessage(null) } private fun itemListUpdate() { @@ -242,8 +236,6 @@ class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory { } override fun endClosing(delta: Float) { - 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 3756f02e6..ece772b0f 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalListing.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWorldPortalListing.kt @@ -13,7 +13,6 @@ 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.* @@ -521,16 +520,6 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() { INGAME.setTooltipMessage(null) } - override fun endOpening(delta: Float) { - super.endOpening(delta) - } - - override fun endClosing(delta: Float) { - super.endClosing(delta) - tooltipShowing.clear() - INGAME.setTooltipMessage(null) // required! - } - } diff --git a/src/net/torvald/terrarum/ui/UICanvas.kt b/src/net/torvald/terrarum/ui/UICanvas.kt index 95b23d3e0..2a0efb14c 100644 --- a/src/net/torvald/terrarum/ui/UICanvas.kt +++ b/src/net/torvald/terrarum/ui/UICanvas.kt @@ -6,6 +6,7 @@ import com.badlogic.gdx.utils.Disposable import net.torvald.terrarum.App import net.torvald.terrarum.Second import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.TooltipListener import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent import kotlin.math.max import kotlin.math.roundToInt @@ -63,7 +64,7 @@ abstract class UICanvas( // UI positions itself? (you must g.flush() yourself after the g.translate(Int, Int)) customPositioning: Boolean = false, // mainly used by vital meter doNotWarnConstant: Boolean = false -): Disposable { +): TooltipListener(), Disposable { internal var openingClickLatched = false @@ -136,6 +137,7 @@ abstract class UICanvas( /** A function that is run ONCE when the UI is requested to be opened; will work identical to [endOpening] if [openCloseTime] is zero */ open fun show() { openingClickLatched = true + clearTooltip() uiItems.forEach { it.show() } handler.subUIs.forEach { it.show() } } @@ -183,6 +185,7 @@ abstract class UICanvas( */ open fun endOpening(delta: Float) { handler.opacity = 1f + clearTooltip() } /** @@ -190,6 +193,7 @@ abstract class UICanvas( */ open fun endClosing(delta: Float) { handler.opacity = 0f + clearTooltip() } abstract override fun dispose() diff --git a/src/net/torvald/terrarum/ui/UIItemInventoryElemSimple.kt b/src/net/torvald/terrarum/ui/UIItemInventoryElemSimple.kt index 1630b05b3..d4cecd289 100644 --- a/src/net/torvald/terrarum/ui/UIItemInventoryElemSimple.kt +++ b/src/net/torvald/terrarum/ui/UIItemInventoryElemSimple.kt @@ -14,7 +14,6 @@ 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.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing import kotlin.math.roundToInt /** @@ -131,7 +130,7 @@ class UIItemInventoryElemSimple( // set tooltip accordingly - if (tooltipShowing[tooltipHash] != true && mouseUp) { + if (!tooltipAcquired() && mouseUp) { // printdbg(this, "calling INGAME.setTooltipMessage by $hash") val grey = App.fontGame.toColorCode(11, 11, 11) @@ -142,10 +141,7 @@ class UIItemInventoryElemSimple( val finalStr = if (descStr != null) "$nameStr\n$grey$descStr" else nameStr - INGAME.setTooltipMessage(finalStr) - - tooltipShowing[tooltipHash] = true -// printdbg(this, tooltipShowing.entries) + acquireTooltip(finalStr) } } else { @@ -159,7 +155,7 @@ class UIItemInventoryElemSimple( } if (item == null || !mouseUp) { - tooltipShowing[tooltipHash] = false + releaseTooltip() } // see IFs above? @@ -168,10 +164,10 @@ class UIItemInventoryElemSimple( } override fun dispose() { - tooltipShowing.remove(tooltipHash) + removeFromTooltipRecord() } override fun hide() { - tooltipShowing.remove(tooltipHash) + removeFromTooltipRecord() } } \ 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 7f79fd185..8fa241e38 100644 --- a/src/net/torvald/terrarum/ui/UIItemInventoryElemWide.kt +++ b/src/net/torvald/terrarum/ui/UIItemInventoryElemWide.kt @@ -13,7 +13,6 @@ 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 /*** @@ -159,7 +158,7 @@ class UIItemInventoryElemWide( // set tooltip accordingly - if (tooltipShowing[tooltipHash] != true && item != null && mouseUp) { + if (!tooltipAcquired() && item != null && mouseUp) { // printdbg(this, "calling INGAME.setTooltipMessage by $hash") val grey = App.fontGame.toColorCode(11, 11, 11) @@ -170,15 +169,12 @@ class UIItemInventoryElemWide( val finalStr = if (descStr != null) "$nameStr\n$grey$descStr" else nameStr - INGAME.setTooltipMessage(finalStr) - - tooltipShowing[tooltipHash] = true -// printdbg(this, tooltipShowing.entries) + acquireTooltip(finalStr) } } if (item == null || !mouseUp) { - tooltipShowing[tooltipHash] = false + releaseTooltip() } // see IFs above? @@ -186,10 +182,10 @@ class UIItemInventoryElemWide( } override fun dispose() { - tooltipShowing.remove(tooltipHash) + removeFromTooltipRecord() } override fun hide() { - tooltipShowing.remove(tooltipHash) + removeFromTooltipRecord() } } diff --git a/src/net/torvald/terrarum/ui/UITemplate.kt b/src/net/torvald/terrarum/ui/UITemplate.kt index 5899698a8..7b868a1d0 100644 --- a/src/net/torvald/terrarum/ui/UITemplate.kt +++ b/src/net/torvald/terrarum/ui/UITemplate.kt @@ -3,6 +3,7 @@ package net.torvald.terrarum.ui import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.utils.Disposable +import net.torvald.terrarum.TooltipListener import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent /** @@ -28,7 +29,7 @@ abstract class UITemplate(val parent: UICanvas) : UIItemisable() { /** * Created by minjaesong on 2024-01-29. */ -abstract class UIItemisable : Disposable { +abstract class UIItemisable : TooltipListener(), Disposable { abstract fun update(delta: Float) abstract fun render(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) open fun show() {}