tooltipmanager

This commit is contained in:
minjaesong
2024-10-11 15:02:11 +09:00
parent 048777a845
commit 60e54c2bc0
29 changed files with 118 additions and 238 deletions

View File

@@ -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<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 {
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
}

View File

@@ -6,6 +6,7 @@ import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.App.printdbgerr import net.torvald.terrarum.App.printdbgerr
import net.torvald.terrarum.INGAME import net.torvald.terrarum.INGAME
import net.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.TooltipListener
import net.torvald.terrarum.audio.AudioBank import net.torvald.terrarum.audio.AudioBank
import net.torvald.terrarum.audio.audiobank.MusicContainer import net.torvald.terrarum.audio.audiobank.MusicContainer
import net.torvald.terrarum.audio.TerrarumAudioMixerTrack import net.torvald.terrarum.audio.TerrarumAudioMixerTrack
@@ -27,7 +28,7 @@ typealias ActorID = Int
* *
* Created by minjaesong on 2015-12-31. * Created by minjaesong on 2015-12-31.
*/ */
abstract class Actor : Comparable<Actor>, Runnable { abstract class Actor(): TooltipListener(), Comparable<Actor>, Runnable {
/** /**
* Valid RefID is equal to or greater than 16777216. * Valid RefID is equal to or greater than 16777216.
@@ -42,7 +43,6 @@ abstract class Actor : Comparable<Actor>, Runnable {
*/ */
var renderOrder = RenderOrder.MIDDLE var renderOrder = RenderOrder.MIDDLE
protected constructor()
// needs zero-arg constructor for serialiser to work // needs zero-arg constructor for serialiser to work
constructor(renderOrder: RenderOrder, id: ActorID?) : this() { constructor(renderOrder: RenderOrder, id: ActorID?) : this() {

View File

@@ -23,7 +23,6 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
import net.torvald.terrarum.modulebasegame.gameactors.Pocketed 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.realestate.LandUtil
import net.torvald.terrarum.worlddrawer.CreateTileAtlas import net.torvald.terrarum.worlddrawer.CreateTileAtlas
import net.torvald.terrarum.worlddrawer.WorldCamera import net.torvald.terrarum.worlddrawer.WorldCamera
@@ -98,8 +97,6 @@ open class ActorWithBody : Actor {
val mouseUp: Boolean val mouseUp: Boolean
get() = hitbox.containsPoint((world?.width ?: 0) * TILE_SIZED, Terrarum.mouseX, Terrarum.mouseY) 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 var hitboxTranslateX: Int = 0// relative to spritePosX
protected set protected set
var hitboxTranslateY: Int = 0// relative to spritePosY var hitboxTranslateY: Int = 0// relative to spritePosY
@@ -702,14 +699,13 @@ open class ActorWithBody : Actor {
else submergedHeight / hitbox.height else submergedHeight / hitbox.height
if (mouseUp && tooltipText != null && tooltipShowing[tooltipHash] != true) { if (mouseUp && tooltipText != null && !tooltipAcquired()) {
INGAME.setTooltipMessage(tooltipText) acquireTooltip(tooltipText)
tooltipShowing[tooltipHash] = true
} }
} }
if (tooltipText == null || !mouseUp || flagDespawn) { if (tooltipText == null || !mouseUp || flagDespawn) {
tooltipShowing[tooltipHash] = false releaseTooltip()
} }
// isStationary = (hitbox - oldHitbox).magnitudeSquared < PHYS_EPSILON_VELO // isStationary = (hitbox - oldHitbox).magnitudeSquared < PHYS_EPSILON_VELO
@@ -1980,7 +1976,7 @@ open class ActorWithBody : Actor {
internal open fun flagDespawn() { internal open fun flagDespawn() {
flagDespawn = true flagDespawn = true
tooltipShowing.remove(tooltipHash) removeFromTooltipRecord()
} }
open fun getSpriteHead(): TextureRegion? { open fun getSpriteHead(): TextureRegion? {
@@ -2316,7 +2312,7 @@ open class ActorWithBody : Actor {
App.disposables.add(sprite) App.disposables.add(sprite)
App.disposables.add(spriteGlow) App.disposables.add(spriteGlow)
App.disposables.add(spriteEmissive) App.disposables.add(spriteEmissive)
tooltipShowing.remove(tooltipHash) removeFromTooltipRecord()
} }
} }

View File

@@ -27,7 +27,7 @@ typealias ItemID = String
* *
* Created by minjaesong on 2016-01-16. * Created by minjaesong on 2016-01-16.
*/ */
abstract class GameItem(val originalID: ItemID) : Comparable<GameItem>, Cloneable, TaggedProp { abstract class GameItem(val originalID: ItemID) : TooltipListener(), Comparable<GameItem>, Cloneable, TaggedProp {
constructor() : this("-uninitialised-") constructor() : this("-uninitialised-")

View File

@@ -1,23 +1,16 @@
package net.torvald.terrarum.modulebasegame.gameactors package net.torvald.terrarum.modulebasegame.gameactors
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.spriteanimation.SheetSpriteAnimation import net.torvald.spriteanimation.SheetSpriteAnimation
import net.torvald.terrarum.App
import net.torvald.terrarum.INGAME
import net.torvald.terrarum.Point2i import net.torvald.terrarum.Point2i
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInductionMotor.Companion.MASS import net.torvald.terrarum.modulebasegame.gameactors.FixtureInductionMotor.Companion.MASS
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase 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 net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import org.dyn4j.geometry.Vector2 import org.dyn4j.geometry.Vector2
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
import kotlin.math.roundToLong
/** /**
* Created by minjaesong on 2024-10-03. * 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 setWireEmissionAt(2, 0, Vector2(16.0, 1024.0)) // speed and torque
} }
override fun dispose() {
tooltipShowing.remove(tooltipHash)
}
companion object { companion object {
const val MASS = 20.0 const val MASS = 20.0
} }
@@ -187,10 +176,6 @@ class FixtureGearbox : Electric, Reorientable {
} }
} }
override fun dispose() {
tooltipShowing.remove(tooltipHash)
}
companion object { companion object {
@Transient val posVecsIn = listOf( @Transient val posVecsIn = listOf(
// Point2i(1, 0), // Point2i(1, 0),

View File

@@ -4,8 +4,6 @@ import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase 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 net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import org.dyn4j.geometry.Vector2 import org.dyn4j.geometry.Vector2
@@ -43,7 +41,7 @@ class FixtureLogicSignalEmitter : Electric {
} }
override fun dispose() { override fun dispose() {
tooltipShowing.remove(tooltipHash) removeFromTooltipRecord()
} }
companion object { companion object {

View File

@@ -17,7 +17,6 @@ import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.itemproperties.Item import net.torvald.terrarum.itemproperties.Item
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameitems.ItemTextSignCopper import net.torvald.terrarum.modulebasegame.gameitems.ItemTextSignCopper
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import net.torvald.unicode.TIMES import net.torvald.unicode.TIMES
import org.dyn4j.geometry.Vector2 import org.dyn4j.geometry.Vector2
@@ -253,7 +252,7 @@ class FixtureTextSignCopper : Electric {
} }
override fun dispose() { override fun dispose() {
tooltipShowing.remove(tooltipHash) removeFromTooltipRecord()
sprite?.dispose() sprite?.dispose()
spriteGlow?.dispose() spriteGlow?.dispose()
spriteEmissive?.dispose() spriteEmissive?.dispose()

View File

@@ -1,31 +1,26 @@
package net.torvald.terrarum.modulebasegame.gameitems package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.App import net.torvald.terrarum.App
import net.torvald.terrarum.CommonResourcePool import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.INGAME import net.torvald.terrarum.INGAME
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED
import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameactors.WireActor
import net.torvald.terrarum.gameitems.FixtureInteractionBlocked import net.torvald.terrarum.gameitems.FixtureInteractionBlocked
import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.gameitems.GameItem
import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.gameitems.mouseInInteractableRange import net.torvald.terrarum.gameitems.mouseInInteractableRange
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem
import net.torvald.terrarum.modulebasegame.gameactors.Reorientable import net.torvald.terrarum.modulebasegame.gameactors.Reorientable
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing
import net.torvald.unicode.getMouseButton import net.torvald.unicode.getMouseButton
/** /**
* Created by minjaesong on 2024-03-08. * Created by minjaesong on 2024-03-08.
*/ */
class ItemWrench(originalID: ItemID) : GameItem(originalID), FixtureInteractionBlocked { class ItemWrench(originalID: ItemID) : GameItem(originalID), FixtureInteractionBlocked {
override val tooltipHash = 10003L
companion object { companion object {
private val tooltipHash = 10003L
private val SP = "\u3000" private val SP = "\u3000"
private val ML = getMouseButton(App.getConfigInt("config_mouseprimary")) private val ML = getMouseButton(App.getConfigInt("config_mouseprimary"))
private val MR = getMouseButton(App.getConfigInt("config_mousesecondary")) 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 -> q = mouseInInteractableRange(actor) { mwx, mwy, mtx, mty ->
(INGAME as TerrarumIngame).world.getWireGraphOf(mtx, mty, "wire@basegame:256").let { cnx -> (INGAME as TerrarumIngame).world.getWireGraphOf(mtx, mty, "wire@basegame:256").let { cnx ->
if (cnx != null) { if (cnx != null) {
INGAME.setTooltipMessage("$ML ${Lang["GAME_ACTION_DISMANTLE"]}\n$MR ${Lang["MENU_CONTROLS_ROTATE"]}") acquireTooltip("$ML ${Lang["GAME_ACTION_DISMANTLE"]}\n$MR ${Lang["MENU_CONTROLS_ROTATE"]}")
tooltipShowing[tooltipHash] = true
} }
else { else {
tooltipShowing[tooltipHash] = false releaseTooltip()
} }
} }
0L 0L
} }
if (q == -1L) if (q == -1L)
tooltipShowing[tooltipHash] = false*/ releaseTooltip()
*/
} }
override fun startPrimaryUse(actor: ActorWithBody, delta: Float) = mouseInInteractableRange(actor) { mwx, mwy, mtx, mty -> override fun startPrimaryUse(actor: ActorWithBody, delta: Float) = mouseInInteractableRange(actor) { mwx, mwy, mtx, mty ->

View File

@@ -19,7 +19,6 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem 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.BASE_MASS_AND_SIZE
import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.TOOL_DURABILITY_BASE 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 net.torvald.terrarum.worlddrawer.CreateTileAtlas.RenderTag
import org.dyn4j.geometry.Vector2 import org.dyn4j.geometry.Vector2
import kotlin.math.roundToInt import kotlin.math.roundToInt
@@ -27,8 +26,8 @@ import kotlin.math.roundToInt
/** /**
* Created by minjaesong on 2019-03-10. * Created by minjaesong on 2019-03-10.
*/ */
object PickaxeCore { object PickaxeCore : TooltipListener() {
private val tooltipHash = 10002L override val tooltipHash = 10002L
private val soundPlayedForThisTick = HashMap<ActorWithBody, Long>() private val soundPlayedForThisTick = HashMap<ActorWithBody, Long>()
/** /**
@@ -237,7 +236,7 @@ object PickaxeCore {
val overlayUIopen = (INGAME as? TerrarumIngame)?.uiBlur?.isVisible ?: false val overlayUIopen = (INGAME as? TerrarumIngame)?.uiBlur?.isVisible ?: false
var tooltipSet = false var tooltipSet = false
val tooltipWasShown = tooltipShowing[tooltipHash] ?: false val tooltipWasShown = tooltipAcquired()
mouseInInteractableRangeTools(actor, tool) { mouseInInteractableRangeTools(actor, tool) {
val tileUnderCursor = INGAME.world.getTileFromOre(mx, my).item val tileUnderCursor = INGAME.world.getTileFromOre(mx, my).item
@@ -249,8 +248,7 @@ object PickaxeCore {
Lang[ItemCodex[itemForOre]!!.originalName] Lang[ItemCodex[itemForOre]!!.originalName]
else "???" else "???"
if (App.getConfigBoolean("basegame:showpickaxetooltip")) { if (App.getConfigBoolean("basegame:showpickaxetooltip")) {
INGAME.setTooltipMessage(tileName) acquireTooltip(tileName)
tooltipShowing[tooltipHash] = true
} }
tooltipSet = true tooltipSet = true
} }
@@ -269,7 +267,8 @@ object PickaxeCore {
true // just a placeholder true // just a placeholder
} }
if (App.getConfigBoolean("basegame:showpickaxetooltip") && !tooltipSet) tooltipShowing[tooltipHash] = false if (App.getConfigBoolean("basegame:showpickaxetooltip") && !tooltipSet)
releaseTooltip()
} }
private val soundCue = MusicContainer( private val soundCue = MusicContainer(

View File

@@ -13,9 +13,6 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes
class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) { class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) {
@Transient private val tooltipHash = System.nanoTime()
override var baseToolSize: Double? = PickaxeCore.BASE_MASS_AND_SIZE override var baseToolSize: Double? = PickaxeCore.BASE_MASS_AND_SIZE
override var inventoryCategory = Category.TOOL override var inventoryCategory = Category.TOOL
override val canBeDynamic = false override val canBeDynamic = false
@@ -65,12 +62,10 @@ class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) {
} }
if (sb.isNotEmpty()) { if (sb.isNotEmpty()) {
UIItemInventoryCellCommonRes.tooltipShowing[tooltipHash] = true acquireTooltip(sb.toString())
(Terrarum.ingame!! as TerrarumIngame).setTooltipMessage(sb.toString())
} }
else { else {
UIItemInventoryCellCommonRes.tooltipShowing[tooltipHash] = false releaseTooltip()
(Terrarum.ingame!! as TerrarumIngame).setTooltipMessage(null)
} }
} }
@@ -78,6 +73,6 @@ class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) {
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = "" (Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = ""
(Terrarum.ingame!! as TerrarumIngame).setTooltipMessage(null) (Terrarum.ingame!! as TerrarumIngame).setTooltipMessage(null)
blockMarker.hideMarker() blockMarker.hideMarker()
UIItemInventoryCellCommonRes.tooltipShowing.remove(tooltipHash) removeFromTooltipRecord()
} }
} }

View File

@@ -213,9 +213,6 @@ class UIAlloyingFurnace(val smelter: FixtureAlloyingFurnace) : UICanvas(
playerThings.setGetInventoryFun { INGAME.actorNowPlaying!!.inventory } playerThings.setGetInventoryFun { INGAME.actorNowPlaying!!.inventory }
itemListUpdate() itemListUpdate()
UIItemInventoryCellCommonRes.tooltipShowing.clear()
INGAME.setTooltipMessage(null)
} }
@@ -449,8 +446,6 @@ class UIAlloyingFurnace(val smelter: FixtureAlloyingFurnace) : UICanvas(
override fun endClosing(delta: Float) { override fun endClosing(delta: Float) {
super.endClosing(delta) super.endClosing(delta)
UIItemInventoryCellCommonRes.tooltipShowing.clear()
INGAME.setTooltipMessage(null) // required!
} }
override fun dispose() { override fun dispose() {

View File

@@ -15,7 +15,6 @@ import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
import net.torvald.terrarum.modulebasegame.gameactors.CraftingStation import net.torvald.terrarum.modulebasegame.gameactors.CraftingStation
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory
import net.torvald.terrarum.modulebasegame.gameactors.InventoryPair 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.UIItemInventoryItemGrid.Companion.listGap
import net.torvald.terrarum.modulebasegame.ui.UITemplateHalfInventory.Companion.INVENTORY_NAME_TEXT_GAP import net.torvald.terrarum.modulebasegame.ui.UITemplateHalfInventory.Companion.INVENTORY_NAME_TEXT_GAP
import net.torvald.terrarum.ui.* import net.torvald.terrarum.ui.*
@@ -455,9 +454,6 @@ class UICraftingWorkbench(val inventoryUI: UIInventoryFull?, val parentContainer
super.show() super.show()
tooltipShowing.clear()
INGAME.setTooltipMessage(null)
resetUI() resetUI()
} }
@@ -518,15 +514,11 @@ class UICraftingWorkbench(val inventoryUI: UIInventoryFull?, val parentContainer
override fun endOpening(delta: Float) { override fun endOpening(delta: Float) {
super.endOpening(delta) super.endOpening(delta)
tooltipShowing.clear()
INGAME.setTooltipMessage(null) // required!
} }
override fun endClosing(delta: Float) { override fun endClosing(delta: Float) {
super.endClosing(delta) super.endClosing(delta)
resetUI() resetUI()
tooltipShowing.clear()
INGAME.setTooltipMessage(null) // required!
} }

View File

@@ -16,7 +16,6 @@ import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory
import net.torvald.terrarum.modulebasegame.gameitems.ItemTextSignCopper import net.torvald.terrarum.modulebasegame.gameitems.ItemTextSignCopper
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing
import net.torvald.terrarum.ui.* import net.torvald.terrarum.ui.*
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import net.torvald.unicode.TIMES import net.torvald.unicode.TIMES
@@ -215,8 +214,6 @@ class UIEngravingTextSign : UICanvas(
override fun show() { override fun show() {
super.show() super.show()
tooltipShowing.clear()
INGAME.setTooltipMessage(null)
resetUI() resetUI()
} }
@@ -286,15 +283,11 @@ class UIEngravingTextSign : UICanvas(
override fun endOpening(delta: Float) { override fun endOpening(delta: Float) {
super.endOpening(delta) super.endOpening(delta)
tooltipShowing.clear()
INGAME.setTooltipMessage(null) // required!
} }
override fun endClosing(delta: Float) { override fun endClosing(delta: Float) {
super.endClosing(delta) super.endClosing(delta)
resetUI() resetUI()
tooltipShowing.clear()
INGAME.setTooltipMessage(null) // required!
} }
} }

View File

@@ -6,7 +6,6 @@ import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.* import net.torvald.terrarum.*
import net.torvald.terrarum.langpack.Lang 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.ActorInventory
import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory 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.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_X
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y 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.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.createInvCellGenericKeyDownFun
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryItemGrid.Companion.createInvCellGenericTouchDownFun import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryItemGrid.Companion.createInvCellGenericTouchDownFun
import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.Toolkit
@@ -77,10 +74,10 @@ internal class UIInventoryCells(
"${(actorInventory.capacity * 100L).toLong() / 100.0}" "${(actorInventory.capacity * 100L).toLong() / 100.0}"
INGAME.setTooltipMessage("$capaStr/${actorInventory.maxCapacityByActor}") INGAME.setTooltipMessage("$capaStr/${actorInventory.maxCapacityByActor}")
tooltipShowing[10001] = true TooltipManager.tooltipShowing[10001] = true
} }
else { else {
tooltipShowing[10001] = false TooltipManager.tooltipShowing[10001] = false
} }
} }
} }
@@ -179,19 +176,6 @@ internal class UIInventoryCells(
UIInventoryCells.drawEncumbranceBar(batch, encumbBarXPos, encumbBarYPos, encumbrancePerc, full.actor.inventory) 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() { override fun dispose() {
itemList.dispose() itemList.dispose()
equipped.dispose() equipped.dispose()

View File

@@ -1,23 +1,15 @@
package net.torvald.terrarum.modulebasegame.ui package net.torvald.terrarum.modulebasegame.ui
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.* 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.gamecontroller.TerrarumKeyboardEvent
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.TitleScreen 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_OFFSET_Y
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_UI_HEIGHT 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.serialise.WriteConfig
import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
@@ -305,8 +297,6 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
override fun show() { override fun show() {
super.show() super.show()
tooltipShowing.clear()
INGAME.setTooltipMessage(null)
toInitScreen() toInitScreen()
} }
@@ -379,8 +369,6 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
override fun endClosing(delta: Float) { override fun endClosing(delta: Float) {
super.endClosing(delta) super.endClosing(delta)
screen = 0 screen = 0
tooltipShowing.clear()
INGAME.setTooltipMessage(null)
} }
override fun hide() { override fun hide() {

View File

@@ -12,7 +12,6 @@ import net.torvald.terrarum.audio.dsp.Lowpass
import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.gameitems.GameItem
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing
import net.torvald.terrarum.ui.* import net.torvald.terrarum.ui.*
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import net.torvald.unicode.* import net.torvald.unicode.*
@@ -327,12 +326,6 @@ class UIInventoryFull(
it.setAsOpen() it.setAsOpen()
} }
override fun show() {
super.show()
tooltipShowing.clear()
INGAME.setTooltipMessage(null)
}
internal var offsetX = ((width - internalWidth) / 2).toFloat() internal var offsetX = ((width - internalWidth) / 2).toFloat()
private set private set
internal var offsetY = ((App.scr.height - internalHeight) / 2).toFloat() internal var offsetY = ((App.scr.height - internalHeight) / 2).toFloat()
@@ -427,10 +420,6 @@ class UIInventoryFull(
INGAME.setTooltipMessage(null) // required! INGAME.setTooltipMessage(null) // required!
// MinimapComposer.revalidateAll() // MinimapComposer.revalidateAll()
tooltipShowing.clear()
// printdbg(this, "Clearing out tooltipShowing")
shouldIFadeIn = null shouldIFadeIn = null
} }

View File

@@ -45,8 +45,6 @@ abstract class UIItemInventoryCellBase(
override var suppressHaptic = false override var suppressHaptic = false
protected val tooltipHash = System.nanoTime()
/** Custom highlight rule to highlight tihs button to primary accent colour (blue by default). /** Custom highlight rule to highlight tihs button to primary accent colour (blue by default).
* Set to `null` to use default rule: * Set to `null` to use default rule:
* *
@@ -128,13 +126,6 @@ object UIItemInventoryCellCommonRes {
Color.WHITE, Color.WHITE,
Toolkit.Theme.COL_CELL_FILL Toolkit.Theme.COL_CELL_FILL
) )
/**
* Special hash values:
* - 10001: Encumbrance bar
* - 10002: Pickaxe
*/
val tooltipShowing = HashMap<Long, Boolean>() // Long: `hash` field on UIItemInventoryItemGrid
} }
data class InventoryCellColourTheme( data class InventoryCellColourTheme(

View File

@@ -5,10 +5,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.* import net.torvald.terrarum.*
import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.langpack.Lang 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.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.terrarum.ui.*
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import net.torvald.unicode.getKeycapPC import net.torvald.unicode.getKeycapPC
@@ -77,8 +74,6 @@ class UIJukebox : UICanvas(
override fun show() { override fun show() {
super.show() super.show()
transitionPanel.show() transitionPanel.show()
tooltipShowing.clear()
INGAME.setTooltipMessage(null)
} }
override fun hide() { override fun hide() {
@@ -120,16 +115,6 @@ class UIJukebox : UICanvas(
INGAME.setTooltipMessage(null) 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() { override fun dispose() {
} }

View File

@@ -11,7 +11,6 @@ import net.torvald.terrarum.modulebasegame.gameactors.FixtureSmelterBasic
import net.torvald.terrarum.modulebasegame.gameactors.InventoryPair import net.torvald.terrarum.modulebasegame.gameactors.InventoryPair
import net.torvald.terrarum.modulebasegame.ui.SmelterGuiEventBuilder.PRODUCT_SLOT 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.SmelterGuiEventBuilder.SLOT_INDEX_STRIDE
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing
import net.torvald.terrarum.ui.* import net.torvald.terrarum.ui.*
import net.torvald.terrarum.ui.UIItemCatBar.Companion.FILTER_CAT_ALL import net.torvald.terrarum.ui.UIItemCatBar.Companion.FILTER_CAT_ALL
import net.torvald.terrarum.ui.UIItemInventoryElemWide.Companion.UNIQUE_ITEM_HAS_NO_AMOUNT 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 } playerThings.setGetInventoryFun { INGAME.actorNowPlaying!!.inventory }
itemListUpdate() itemListUpdate()
tooltipShowing.clear()
INGAME.setTooltipMessage(null)
} }
override fun updateImpl(delta: Float) { override fun updateImpl(delta: Float) {
@@ -436,8 +432,7 @@ class UISmelterBasic(val smelter: FixtureSmelterBasic) : UICanvas(
override fun endClosing(delta: Float) { override fun endClosing(delta: Float) {
super.endClosing(delta) super.endClosing(delta)
tooltipShowing.clear() clearTooltip()
INGAME.setTooltipMessage(null) // required!
} }
override fun dispose() { override fun dispose() {

View File

@@ -4,19 +4,14 @@ import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.* 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.gameitems.GameItem
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.getWidthOfCells 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.terrarum.ui.*
import net.torvald.unicode.getKeycapPC import net.torvald.unicode.getKeycapPC
import net.torvald.unicode.getMouseButton import net.torvald.unicode.getMouseButton
import kotlin.math.max
import kotlin.math.min
/** /**
* Created by minjaesong on 2019-07-08. * Created by minjaesong on 2019-07-08.
@@ -190,9 +185,6 @@ internal class UIStorageChest : UICanvas(
itemListPlayer.itemList.getInventory = { INGAME.actorNowPlaying!!.inventory } itemListPlayer.itemList.getInventory = { INGAME.actorNowPlaying!!.inventory }
itemListUpdate() itemListUpdate()
tooltipShowing.clear()
INGAME.setTooltipMessage(null)
} }
private fun itemListUpdate() { private fun itemListUpdate() {
@@ -313,17 +305,6 @@ internal class UIStorageChest : UICanvas(
INGAME.setTooltipMessage(null) 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() { override fun dispose() {
} }
} }

View File

@@ -1,15 +1,9 @@
package net.torvald.terrarum.modulebasegame.ui package net.torvald.terrarum.modulebasegame.ui
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.App import net.torvald.terrarum.*
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.Toolkit
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UINotControllable import net.torvald.terrarum.ui.UINotControllable
@@ -105,11 +99,34 @@ class UITooltip : UICanvas() {
override fun updateImpl(delta: Float) { override fun updateImpl(delta: Float) {
setPosition(Terrarum.mouseScreenX, Terrarum.mouseScreenY) setPosition(Terrarum.mouseScreenX, Terrarum.mouseScreenY)
if (isVisible && tooltipShowing.values.all { !it }) { if (isVisible && (TooltipManager.tooltipShowing.isEmpty() || TooltipManager.tooltipShowing.values.all { !it })) {
INGAME.setTooltipMessage(null) 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() { override fun dispose() {
} }

View File

@@ -1,6 +1,5 @@
package net.torvald.terrarum.modulebasegame.ui package net.torvald.terrarum.modulebasegame.ui
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch 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
import net.torvald.terrarum.gameworld.WorldTime.Companion.MONTH_LENGTH import net.torvald.terrarum.gameworld.WorldTime.Companion.MONTH_LENGTH
import net.torvald.terrarum.langpack.Lang 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.Toolkit
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.unicode.getKeycapPC import net.torvald.unicode.getKeycapPC
@@ -358,25 +356,11 @@ class UIWallCalendar : UICanvas(
override fun doOpening(delta: Float) { override fun doOpening(delta: Float) {
super.doOpening(delta) super.doOpening(delta)
INGAME.pause() INGAME.pause()
INGAME.setTooltipMessage(null)
} }
override fun doClosing(delta: Float) { override fun doClosing(delta: Float) {
super.doClosing(delta) super.doClosing(delta)
INGAME.resume() 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() { override fun dispose() {

View File

@@ -1,12 +1,10 @@
package net.torvald.terrarum.modulebasegame.ui package net.torvald.terrarum.modulebasegame.ui
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.jme3.math.FastMath import com.jme3.math.FastMath
import net.torvald.terrarum.* import net.torvald.terrarum.*
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.FixtureWorldPortal 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.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.drawBackground
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalHeight import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalHeight
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalWidth 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.serialise.toAscii85
import net.torvald.terrarum.ui.* import net.torvald.terrarum.ui.*
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import net.torvald.unicode.getKeycapPC import net.torvald.unicode.getKeycapPC
import java.util.UUID import java.util.*
/** /**
* Structure: * Structure:
@@ -186,15 +183,11 @@ class UIWorldPortal : UICanvas(
override fun endOpening(delta: Float) { override fun endOpening(delta: Float) {
super.endOpening(delta) super.endOpening(delta)
transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) } transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) }
tooltipShowing.clear()
INGAME.setTooltipMessage(null) // required!
} }
override fun endClosing(delta: Float) { override fun endClosing(delta: Float) {
super.endClosing(delta) super.endClosing(delta)
transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) } transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) }
tooltipShowing.clear()
INGAME.setTooltipMessage(null) // required!
} }
} }

View File

@@ -9,11 +9,8 @@ import net.torvald.terrarum.gameitems.GameItem
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing
import net.torvald.terrarum.ui.* import net.torvald.terrarum.ui.*
import net.torvald.unicode.getKeycapPC import net.torvald.unicode.getKeycapPC
import kotlin.math.max
import kotlin.math.min
class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory { class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory {
@@ -145,9 +142,6 @@ class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory {
itemListPlayer.getInventory = { INGAME.actorNowPlaying!!.inventory } itemListPlayer.getInventory = { INGAME.actorNowPlaying!!.inventory }
itemListUpdate() itemListUpdate()
tooltipShowing.clear()
INGAME.setTooltipMessage(null)
} }
private fun itemListUpdate() { private fun itemListUpdate() {
@@ -242,8 +236,6 @@ class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory {
} }
override fun endClosing(delta: Float) { override fun endClosing(delta: Float) {
tooltipShowing.clear()
INGAME.setTooltipMessage(null) // required!
} }

View File

@@ -13,7 +13,6 @@ import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.FixtureWorldPortal 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.INVENTORY_CELLS_OFFSET_Y
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.getCellCountVertically 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_H
import net.torvald.terrarum.realestate.LandUtil.CHUNK_W import net.torvald.terrarum.realestate.LandUtil.CHUNK_W
import net.torvald.terrarum.savegame.* import net.torvald.terrarum.savegame.*
@@ -521,16 +520,6 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
INGAME.setTooltipMessage(null) 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!
}
} }

View File

@@ -6,6 +6,7 @@ import com.badlogic.gdx.utils.Disposable
import net.torvald.terrarum.App import net.torvald.terrarum.App
import net.torvald.terrarum.Second import net.torvald.terrarum.Second
import net.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.TooltipListener
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
import kotlin.math.max import kotlin.math.max
import kotlin.math.roundToInt 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)) // UI positions itself? (you must g.flush() yourself after the g.translate(Int, Int))
customPositioning: Boolean = false, // mainly used by vital meter customPositioning: Boolean = false, // mainly used by vital meter
doNotWarnConstant: Boolean = false doNotWarnConstant: Boolean = false
): Disposable { ): TooltipListener(), Disposable {
internal var openingClickLatched = false 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 */ /** 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() { open fun show() {
openingClickLatched = true openingClickLatched = true
clearTooltip()
uiItems.forEach { it.show() } uiItems.forEach { it.show() }
handler.subUIs.forEach { it.show() } handler.subUIs.forEach { it.show() }
} }
@@ -183,6 +185,7 @@ abstract class UICanvas(
*/ */
open fun endOpening(delta: Float) { open fun endOpening(delta: Float) {
handler.opacity = 1f handler.opacity = 1f
clearTooltip()
} }
/** /**
@@ -190,6 +193,7 @@ abstract class UICanvas(
*/ */
open fun endClosing(delta: Float) { open fun endClosing(delta: Float) {
handler.opacity = 0f handler.opacity = 0f
clearTooltip()
} }
abstract override fun dispose() abstract override fun dispose()

View File

@@ -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
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.defaultInventoryCellTheme import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.defaultInventoryCellTheme
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.toItemCountText import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.toItemCountText
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing
import kotlin.math.roundToInt import kotlin.math.roundToInt
/** /**
@@ -131,7 +130,7 @@ class UIItemInventoryElemSimple(
// set tooltip accordingly // set tooltip accordingly
if (tooltipShowing[tooltipHash] != true && mouseUp) { if (!tooltipAcquired() && mouseUp) {
// printdbg(this, "calling INGAME.setTooltipMessage by $hash") // printdbg(this, "calling INGAME.setTooltipMessage by $hash")
val grey = App.fontGame.toColorCode(11, 11, 11) 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 val finalStr = if (descStr != null) "$nameStr\n$grey$descStr" else nameStr
INGAME.setTooltipMessage(finalStr) acquireTooltip(finalStr)
tooltipShowing[tooltipHash] = true
// printdbg(this, tooltipShowing.entries)
} }
} }
else { else {
@@ -159,7 +155,7 @@ class UIItemInventoryElemSimple(
} }
if (item == null || !mouseUp) { if (item == null || !mouseUp) {
tooltipShowing[tooltipHash] = false releaseTooltip()
} }
// see IFs above? // see IFs above?
@@ -168,10 +164,10 @@ class UIItemInventoryElemSimple(
} }
override fun dispose() { override fun dispose() {
tooltipShowing.remove(tooltipHash) removeFromTooltipRecord()
} }
override fun hide() { override fun hide() {
tooltipShowing.remove(tooltipHash) removeFromTooltipRecord()
} }
} }

View File

@@ -13,7 +13,6 @@ import net.torvald.terrarum.modulebasegame.ui.InventoryCellColourTheme
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellBase import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellBase
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.toItemCountText import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.toItemCountText
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing
import kotlin.math.roundToInt import kotlin.math.roundToInt
/*** /***
@@ -159,7 +158,7 @@ class UIItemInventoryElemWide(
// set tooltip accordingly // set tooltip accordingly
if (tooltipShowing[tooltipHash] != true && item != null && mouseUp) { if (!tooltipAcquired() && item != null && mouseUp) {
// printdbg(this, "calling INGAME.setTooltipMessage by $hash") // printdbg(this, "calling INGAME.setTooltipMessage by $hash")
val grey = App.fontGame.toColorCode(11, 11, 11) 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 val finalStr = if (descStr != null) "$nameStr\n$grey$descStr" else nameStr
INGAME.setTooltipMessage(finalStr) acquireTooltip(finalStr)
tooltipShowing[tooltipHash] = true
// printdbg(this, tooltipShowing.entries)
} }
} }
if (item == null || !mouseUp) { if (item == null || !mouseUp) {
tooltipShowing[tooltipHash] = false releaseTooltip()
} }
// see IFs above? // see IFs above?
@@ -186,10 +182,10 @@ class UIItemInventoryElemWide(
} }
override fun dispose() { override fun dispose() {
tooltipShowing.remove(tooltipHash) removeFromTooltipRecord()
} }
override fun hide() { override fun hide() {
tooltipShowing.remove(tooltipHash) removeFromTooltipRecord()
} }
} }

View File

@@ -3,6 +3,7 @@ package net.torvald.terrarum.ui
import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.utils.Disposable import com.badlogic.gdx.utils.Disposable
import net.torvald.terrarum.TooltipListener
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
/** /**
@@ -28,7 +29,7 @@ abstract class UITemplate(val parent: UICanvas) : UIItemisable() {
/** /**
* Created by minjaesong on 2024-01-29. * Created by minjaesong on 2024-01-29.
*/ */
abstract class UIItemisable : Disposable { abstract class UIItemisable : TooltipListener(), Disposable {
abstract fun update(delta: Float) abstract fun update(delta: Float)
abstract fun render(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) abstract fun render(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera)
open fun show() {} open fun show() {}