From b856574d209770e7f1b5744f87fa050d8c4cfe9e Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 19 Mar 2024 04:55:37 +0900 Subject: [PATCH] fix: multimeter's block cursor would break fixture ghost --- assets/mods/basegame/crafting/wires.json | 7 +++++++ src/net/torvald/terrarum/IngameInstance.kt | 1 - .../terrarum/gameactors/BlockMarkerActor.kt | 16 ++++++++++++++-- .../modulebasegame/gameitems/FixtureItemBase.kt | 1 - .../gameitems/WireGraphDebugger.kt | 5 ++--- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/assets/mods/basegame/crafting/wires.json b/assets/mods/basegame/crafting/wires.json index fd48f181f..fbbfb48e5 100644 --- a/assets/mods/basegame/crafting/wires.json +++ b/assets/mods/basegame/crafting/wires.json @@ -66,6 +66,13 @@ ] }, + "item@basegame:7": { /* multimeter */ + "workbench": "soldering", + "ingredients": [ + [2, 5, "item@basegame:112", 5, "item@basegame:117", 5, "item@basegame:177", 5, "$SEMICONDUCTOR", 1, "item@basegame:50"] /* 5 copper, 5 gold, 5 brass, 5 iron, 5 tin, 1 soldering wire (temporary) */ + ] + }, + "item@basegame:35": { /* copper bulb */ "workbench": "soldering", "ingredients": [ diff --git a/src/net/torvald/terrarum/IngameInstance.kt b/src/net/torvald/terrarum/IngameInstance.kt index 92406c92d..4009b2c17 100644 --- a/src/net/torvald/terrarum/IngameInstance.kt +++ b/src/net/torvald/terrarum/IngameInstance.kt @@ -187,7 +187,6 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo blockMarkingActor.let { it.unsetGhost() - it.setGhostColourNone() } gameInitialised = true diff --git a/src/net/torvald/terrarum/gameactors/BlockMarkerActor.kt b/src/net/torvald/terrarum/gameactors/BlockMarkerActor.kt index e3ee23991..6ce912484 100644 --- a/src/net/torvald/terrarum/gameactors/BlockMarkerActor.kt +++ b/src/net/torvald/terrarum/gameactors/BlockMarkerActor.kt @@ -25,7 +25,7 @@ import kotlin.math.floor class BlockMarkerActor : ActorWithBody(Actor.RenderOrder.OVERLAY, physProp = PhysProperties.MOBILE_OBJECT()), NoSerialise { enum class MarkerMode { - FIXTURE_GHOST, BLOCK_MARKER + FIXTURE_GHOST, BLOCK_MARKER, HIDDEN } private val defaultSize = 16.0 @@ -45,12 +45,14 @@ class BlockMarkerActor : ActorWithBody(Actor.RenderOrder.OVERLAY, physProp = Phy init { - this.isVisible = false + this.isVisible = true renderOrder = Actor.RenderOrder.OVERLAY // for some reason the constructor didn't work } override fun drawBody(frameDelta: Float, batch: SpriteBatch) { + this.isVisible = true + if (isVisible) { if (markerMode == MarkerMode.FIXTURE_GHOST) { if (INGAME.actorNowPlaying != null) { @@ -114,6 +116,16 @@ class BlockMarkerActor : ActorWithBody(Actor.RenderOrder.OVERLAY, physProp = Phy ghost = null setGhostColourNone() hitbox.setDimension(TILE_SIZED, TILE_SIZED) + markerMode = MarkerMode.HIDDEN + } + + fun hideMarker() { + unsetGhost() + } + + fun showMarker(shape: Int) { + markerShape = shape + markerMode = MarkerMode.BLOCK_MARKER } fun setGhostColourNone() { ghostColour = Color.WHITE } diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt index 8660982db..207df0db9 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/FixtureItemBase.kt @@ -93,7 +93,6 @@ open class FixtureItemBase(originalID: ItemID, val fixtureClassName: String) : G (INGAME as TerrarumIngame).blockMarkingActor.let { it.unsetGhost() - it.setGhostColourNone() } } diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/WireGraphDebugger.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/WireGraphDebugger.kt index 2c8cd0d08..81a5b7119 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/WireGraphDebugger.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/WireGraphDebugger.kt @@ -37,9 +37,8 @@ class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) { override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) { (Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = "wire_render_all" - blockMarker.markerShape = 3 + blockMarker.showMarker(3) blockMarker.markerColour = Color.YELLOW - blockMarker.isVisible = true blockMarker.update(delta) val mx = Terrarum.mouseTileX @@ -77,7 +76,7 @@ class WireGraphDebugger(originalID: ItemID) : GameItem(originalID) { override fun effectOnUnequip(actor: ActorWithBody) { (Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass = "" (Terrarum.ingame!! as TerrarumIngame).setTooltipMessage(null) - blockMarker.isVisible = false + blockMarker.hideMarker() UIItemInventoryCellCommonRes.tooltipShowing.remove(tooltipHash) } } \ No newline at end of file