mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-10 10:34:06 +09:00
53 lines
1.5 KiB
Kotlin
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
|
|
} |