Files
Terrarum/src/net/torvald/terrarum/TooltipManager.kt
2025-02-01 14:53:14 +09:00

53 lines
1.5 KiB
Kotlin

package net.torvald.terrarum
/**
* Created by minjaesong on 2024-10-11.
*/
object TooltipManager {
/**
* Special hash values:
* - 10001: Encumbrance bar
* - 10002: Pickaxe
*/
val tooltipShowing = HashMap<Long, Boolean>()
}
/**
* 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 {
@Transient open val tooltipHash = System.nanoTime()
/**
* Acquire a control over the "tooltip bus". If the message is null, `releaseTooltip()` will be invoked instead.
*/
fun acquireTooltip(message: String?) {
if (message == null) return releaseTooltip()
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() {
printStackTrace(this)
TooltipManager.tooltipShowing.clear()
INGAME.setTooltipMessage(null)
}
fun tooltipAcquired() = TooltipManager.tooltipShowing[tooltipHash] ?: false
}