yet another tooltip stuffs

This commit is contained in:
minjaesong
2024-10-12 11:26:29 +09:00
parent 66c2ffa598
commit dbb0c60976
24 changed files with 53 additions and 82 deletions

View File

@@ -24,7 +24,12 @@ abstract class TooltipListener {
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
}
@@ -39,6 +44,7 @@ abstract class TooltipListener {
}
fun clearTooltip() {
printStackTrace(this)
TooltipManager.tooltipShowing.clear()
INGAME.setTooltipMessage(null)
}

View File

@@ -1703,6 +1703,7 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
val fixtureItem = fixture.itemise()
printdbg(this, "Fixture pickup at F${WORLD_UPDATE_TIMER}: ${fixture.javaClass.canonicalName} -> $fixtureItem")
// 0. hide tooltips
TooltipManager.tooltipShowing.clear()
setTooltipMessage(null)
if (!fixture.flagDespawn) {
// 1. put the fixture to the inventory

View File

@@ -304,7 +304,7 @@ class AxeCopper(originalID: ItemID) : GameItem(originalID) {
if (AxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = AxeCore.endPrimaryUse(actor, this)
// override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = AxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
override fun effectOnUnequip(actor: ActorWithBody) { INGAME.setTooltipMessage(null) }
override fun effectOnUnequip(actor: ActorWithBody) { clearTooltip() }
}
/**
@@ -334,7 +334,7 @@ class AxeIron(originalID: ItemID) : GameItem(originalID) {
if (AxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = AxeCore.endPrimaryUse(actor, this)
// override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = AxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
override fun effectOnUnequip(actor: ActorWithBody) { INGAME.setTooltipMessage(null) }
override fun effectOnUnequip(actor: ActorWithBody) { clearTooltip() }
}
/**
@@ -364,7 +364,7 @@ class AxeSteel(originalID: ItemID) : GameItem(originalID) {
if (AxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = AxeCore.endPrimaryUse(actor, this)
// override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = AxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
override fun effectOnUnequip(actor: ActorWithBody) { INGAME.setTooltipMessage(null) }
override fun effectOnUnequip(actor: ActorWithBody) { clearTooltip() }
}
/**
@@ -394,7 +394,7 @@ class AxeWood(originalID: ItemID) : GameItem(originalID) {
if (AxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = AxeCore.endPrimaryUse(actor, this)
// override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = AxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
override fun effectOnUnequip(actor: ActorWithBody) { INGAME.setTooltipMessage(null) }
override fun effectOnUnequip(actor: ActorWithBody) { clearTooltip() }
}
/**
@@ -424,6 +424,6 @@ class AxeStone(originalID: ItemID) : GameItem(originalID) {
if (AxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = AxeCore.endPrimaryUse(actor, this)
// override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = AxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
override fun effectOnUnequip(actor: ActorWithBody) { INGAME.setTooltipMessage(null) }
override fun effectOnUnequip(actor: ActorWithBody) { clearTooltip() }
}

View File

@@ -307,7 +307,7 @@ class PickaxeCopper(originalID: ItemID) : GameItem(originalID) {
if (PickaxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = PickaxeCore.endPrimaryUse(actor, this)
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = PickaxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
override fun effectOnUnequip(actor: ActorWithBody) { INGAME.setTooltipMessage(null) }
override fun effectOnUnequip(actor: ActorWithBody) { clearTooltip() }
}
@@ -338,7 +338,7 @@ class PickaxeIron(originalID: ItemID) : GameItem(originalID) {
if (PickaxeCore.startPrimaryUse(actor , delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = PickaxeCore.endPrimaryUse(actor, this)
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = PickaxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
override fun effectOnUnequip(actor: ActorWithBody) { INGAME.setTooltipMessage(null) }
override fun effectOnUnequip(actor: ActorWithBody) { clearTooltip() }
}
@@ -369,7 +369,7 @@ class PickaxeSteel(originalID: ItemID) : GameItem(originalID) {
if (PickaxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = PickaxeCore.endPrimaryUse(actor, this)
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = PickaxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
override fun effectOnUnequip(actor: ActorWithBody) { INGAME.setTooltipMessage(null) }
override fun effectOnUnequip(actor: ActorWithBody) { clearTooltip() }
}
@@ -400,7 +400,7 @@ class PickaxeWood(originalID: ItemID) : GameItem(originalID) {
if (PickaxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = PickaxeCore.endPrimaryUse(actor, this)
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = PickaxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
override fun effectOnUnequip(actor: ActorWithBody) { INGAME.setTooltipMessage(null) }
override fun effectOnUnequip(actor: ActorWithBody) { clearTooltip() }
}
@@ -431,6 +431,6 @@ class PickaxeStone(originalID: ItemID) : GameItem(originalID) {
if (PickaxeCore.startPrimaryUse(actor, delta, this, Terrarum.mouseTileX, Terrarum.mouseTileY)) 0L else -1L
override fun endPrimaryUse(actor: ActorWithBody, delta: Float) = PickaxeCore.endPrimaryUse(actor, this)
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) = PickaxeCore.showOresTooltip(actor, this, Terrarum.mouseTileX, Terrarum.mouseTileY)
override fun effectOnUnequip(actor: ActorWithBody) { INGAME.setTooltipMessage(null) }
override fun effectOnUnequip(actor: ActorWithBody) { clearTooltip() }
}

View File

@@ -71,7 +71,6 @@ class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) {
override fun effectOnUnequip(actor: ActorWithBody) {
(Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = ""
(Terrarum.ingame!! as TerrarumIngame).setTooltipMessage(null)
blockMarker.hideMarker()
removeFromTooltipRecord()
}

View File

@@ -431,22 +431,13 @@ class UIAlloyingFurnace(val smelter: FixtureAlloyingFurnace) : UICanvas(
override fun doOpening(delta: Float) {
super.doOpening(delta)
INGAME.disablePlayerControl()
INGAME.setTooltipMessage(null)
}
override fun doClosing(delta: Float) {
super.doClosing(delta)
INGAME.resumePlayerControl()
INGAME.setTooltipMessage(null)
}
override fun endOpening(delta: Float) {
super.endOpening(delta)
}
override fun endClosing(delta: Float) {
super.endClosing(delta)
}
override fun dispose() {
}

View File

@@ -504,16 +504,12 @@ class UICraftingWorkbench(val inventoryUI: UIInventoryFull?, val parentContainer
override fun doOpening(delta: Float) {
super.doOpening(delta)
INGAME.setTooltipMessage(null)
clearTooltip()
}
override fun doClosing(delta: Float) {
super.doClosing(delta)
INGAME.setTooltipMessage(null)
}
override fun endOpening(delta: Float) {
super.endOpening(delta)
clearTooltip()
}
override fun endClosing(delta: Float) {

View File

@@ -271,13 +271,11 @@ class UIEngravingTextSign : UICanvas(
override fun doOpening(delta: Float) {
super.doOpening(delta)
INGAME.setTooltipMessage(null)
INGAME.pause()
}
override fun doClosing(delta: Float) {
super.doClosing(delta)
INGAME.setTooltipMessage(null)
INGAME.resume()
}

View File

@@ -155,6 +155,10 @@ internal class UIInventoryCells(
}
}
override fun endOpening(delta: Float) {
handler.opacity = 1f
}
override fun renderImpl(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
//itemList.posX = itemList.initialX + inventoryScrOffX.roundToInt()
itemList.render(frameDelta, batch, camera)

View File

@@ -357,15 +357,6 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
}
}
override fun doClosing(delta: Float) {
super.doClosing(delta)
}
override fun endOpening(delta: Float) {
super.endOpening(delta)
INGAME.setTooltipMessage(null)
}
override fun endClosing(delta: Float) {
super.endClosing(delta)
screen = 0

View File

@@ -312,14 +312,14 @@ class UIInventoryFull(
}
fun openGamemenu(it: UIHandler) {
INGAME.setTooltipMessage(null)
clearTooltip()
transitionPanel.forcePosition(2)
catBar.setSelectedPanel(2)
it.setAsOpen()
}
fun openCrafting(it: UIHandler) {
INGAME.setTooltipMessage(null)
clearTooltip()
transitionPanel.forcePosition(0)
catBar.setSelectedPanel(0)
transitionalCraftingUI.resetUI()
@@ -352,8 +352,6 @@ class UIInventoryFull(
// UI items
catBar.render(frameDelta, batch, camera)
transitionPanel.render(frameDelta, batch, camera)
// if (transitionPanel.currentPosition != 1f) INGAME.setTooltipMessage(null)
}
fun rebuildList() {
@@ -383,7 +381,6 @@ class UIInventoryFull(
super.doOpening(delta)
transitionPanel.allUIs.forEach { it.opacity = FastMath.pow(opacity, 0.5f) }
INGAME.pause()
INGAME.setTooltipMessage(null)
App.audioMixer.requestLowpassIn(0.25)
App.audioMixer.requestFadeOut(App.audioMixer.fadeBus, 0.25, decibelsToFullscale(-3.0))
@@ -395,7 +392,6 @@ class UIInventoryFull(
super.doClosing(delta)
transitionPanel.allUIs.forEach { it.opacity = FastMath.pow(opacity, 0.5f) }
INGAME.resume()
INGAME.setTooltipMessage(null)
if (shouldIFadeIn == null) {
shouldIFadeIn = (App.audioMixer.fadeBus.getFilter<Lowpass>().cutoff < SAMPLING_RATE / 2)
@@ -417,7 +413,6 @@ class UIInventoryFull(
override fun endClosing(delta: Float) {
super.endClosing(delta)
transitionPanel.allUIs.forEach { it.opacity = 0f }
INGAME.setTooltipMessage(null) // required!
// MinimapComposer.revalidateAll()
shouldIFadeIn = null

View File

@@ -247,7 +247,6 @@ class UIInventoryMinimap(val full: UIInventoryFull) : UICanvas() {
}
override fun show() {
INGAME.setTooltipMessage(null)
}
override fun doOpening(delta: Float) {}

View File

@@ -99,20 +99,14 @@ class UIJukebox : UICanvas(
private val yEnd = -UIInventoryFull.YPOS_CORRECTION + (App.scr.height + UIInventoryFull.internalHeight).div(2).toFloat()
override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
return super.touchDown(screenX, screenY, pointer, button)
}
override fun doOpening(delta: Float) {
super.doOpening(delta)
INGAME.disablePlayerControl()
INGAME.setTooltipMessage(null)
}
override fun doClosing(delta: Float) {
super.doClosing(delta)
INGAME.resumePlayerControl()
INGAME.setTooltipMessage(null)
}
override fun dispose() {

View File

@@ -417,22 +417,11 @@ class UISmelterBasic(val smelter: FixtureSmelterBasic) : UICanvas(
override fun doOpening(delta: Float) {
super.doOpening(delta)
INGAME.disablePlayerControl()
INGAME.setTooltipMessage(null)
}
override fun doClosing(delta: Float) {
super.doClosing(delta)
INGAME.resumePlayerControl()
INGAME.setTooltipMessage(null)
}
override fun endOpening(delta: Float) {
super.endOpening(delta)
}
override fun endClosing(delta: Float) {
super.endClosing(delta)
clearTooltip()
}
override fun dispose() {

View File

@@ -296,13 +296,11 @@ internal class UIStorageChest : 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 dispose() {

View File

@@ -104,6 +104,14 @@ class UITooltip : UICanvas() {
}
}
override fun doOpening(delta: Float) {
handler.opacity = handler.openCloseCounter / openCloseTime
}
override fun doClosing(delta: Float) {
handler.opacity = (openCloseTime - handler.openCloseCounter) / openCloseTime
}
override fun endOpening(delta: Float) {
handler.opacity = 1f
// Tooltip must not acquire control of itself

View File

@@ -155,7 +155,6 @@ class UIWorldPortal : UICanvas(
override fun show() {
transitionPanel.forcePosition(0)
super.show()
INGAME.setTooltipMessage(null)
// add current world to the player's worldportaldict
addWorldToPlayersDict(INGAME.world.worldIndex)
@@ -170,14 +169,12 @@ class UIWorldPortal : UICanvas(
super.doOpening(delta)
transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) }
INGAME.pause()
INGAME.setTooltipMessage(null)
}
override fun doClosing(delta: Float) {
super.doClosing(delta)
transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) }
INGAME.resume()
INGAME.setTooltipMessage(null)
}
override fun endOpening(delta: Float) {

View File

@@ -224,12 +224,12 @@ class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory {
override fun doOpening(delta: Float) {
INGAME.pause()
INGAME.setTooltipMessage(null)
clearTooltip()
}
override fun doClosing(delta: Float) {
INGAME.resume()
INGAME.setTooltipMessage(null)
clearTooltip()
}
override fun endOpening(delta: Float) {

View File

@@ -353,7 +353,10 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
if (::worldCells.isInitialized) worldCells.forEach { it.update(delta) }
if (currentWorldSelected) {
INGAME.setTooltipMessage(if (buttonTeleport.mouseUp || buttonDelete.mouseUp) Lang["CONTEXT_THIS_IS_A_WORLD_CURRENTLY_PLAYING"] else null)
if (buttonTeleport.mouseUp || buttonDelete.mouseUp)
acquireTooltip(Lang["CONTEXT_THIS_IS_A_WORLD_CURRENTLY_PLAYING"])
else
releaseTooltip()
}
if (showSpinner) {
@@ -511,13 +514,13 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
override fun doOpening(delta: Float) {
super.doOpening(delta)
INGAME.pause()
INGAME.setTooltipMessage(null)
clearTooltip()
}
override fun doClosing(delta: Float) {
super.doClosing(delta)
INGAME.resume()
INGAME.setTooltipMessage(null)
clearTooltip()
}
}

View File

@@ -81,7 +81,10 @@ class ConsoleWindow : UICanvas() {
lb.add("${it.referenceID} (${it.actorValue[AVKey.NAME] ?: "\u03AF-${it.javaClass.simpleName}"})")
}
it.setTooltipMessage(if (lb.size > 0) lb.joinToString("\n") else null)
if (lb.size > 0)
acquireTooltip(lb.joinToString("\n"))
else
releaseTooltip()
// click to enter the actor's reference ID
if (lb.size > 0 && !clickLatched && Gdx.input.isButtonPressed(App.getConfigInt("config_mouseprimary"))) {
@@ -90,7 +93,7 @@ class ConsoleWindow : UICanvas() {
}
}
else {
it.setTooltipMessage(null)
releaseTooltip()
}
}
@@ -266,6 +269,7 @@ class ConsoleWindow : UICanvas() {
drawOffY = MovementInterpolator.fastPullOut(openingTimeCounter.toFloat() / openCloseTime.toFloat(),
-height.toFloat(), 0f
)*/
clearTooltip()
}
override fun doClosing(delta: Float) {
@@ -275,6 +279,7 @@ class ConsoleWindow : UICanvas() {
)*/
textinput.isEnabled = false
textinput.mouseoverUpdateLatch = false
clearTooltip()
}
override fun endOpening(delta: Float) {
@@ -282,6 +287,7 @@ class ConsoleWindow : UICanvas() {
openingTimeCounter = 0f
textinput.isEnabled = true
textinput.mouseoverUpdateLatch = true
clearTooltip()
}
override fun endClosing(delta: Float) {
@@ -291,7 +297,7 @@ class ConsoleWindow : UICanvas() {
// printdbg(this, "Close -- resume game")
}
iMadeTheGameToPause = false
Terrarum.ingame?.setTooltipMessage(null)
clearTooltip()
drawOffY = -height.toFloat()
openingTimeCounter = 0f
}

View File

@@ -137,7 +137,6 @@ 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() }
}
@@ -170,7 +169,7 @@ abstract class UICanvas(
*/
open fun doOpening(delta: Float) {
handler.opacity = handler.openCloseCounter / openCloseTime
clearTooltip()
}
/**
@@ -178,6 +177,7 @@ abstract class UICanvas(
*/
open fun doClosing(delta: Float) {
handler.opacity = (openCloseTime - handler.openCloseCounter) / openCloseTime
clearTooltip()
}
/**

View File

@@ -91,7 +91,7 @@ class UIItemHorizontalFadeSlide(
it.posY = it.initialY
}
INGAME.setTooltipMessage(null)
releaseTooltip()
}
override fun show() {

View File

@@ -131,8 +131,6 @@ class UIItemInventoryElemSimple(
// set tooltip accordingly
if (!tooltipAcquired() && mouseUp) {
// printdbg(this, "calling INGAME.setTooltipMessage by $hash")
val grey = App.fontGame.toColorCode(11, 11, 11)
val itemIDstr = "\n$grey(${item?.originalID}${if (item?.isCurrentlyDynamic == true) "/${item?.dynamicID}" else ""})"
val nameStr0 = if (item?.nameSecondary?.isNotBlank() == true) "${item?.name}\n$grey${item?.nameSecondary}" else "${item?.name}"

View File

@@ -159,8 +159,6 @@ class UIItemInventoryElemWide(
// set tooltip accordingly
if (!tooltipAcquired() && item != null && mouseUp) {
// printdbg(this, "calling INGAME.setTooltipMessage by $hash")
val grey = App.fontGame.toColorCode(11, 11, 11)
val itemIDstr = "\n$grey(${item?.originalID}${if (item?.isCurrentlyDynamic == true) "/${item?.dynamicID}" else ""})"
val nameStr0 = if (item?.nameSecondary?.isNotBlank() == true) "${item?.name}\n$grey${item?.nameSecondary}" else "${item?.name}"