From 0c70a7eebcce16617c5eb71ae418d98dde6e2fca Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 21 Jan 2022 22:13:34 +0900 Subject: [PATCH] fixme: picking up a fixture clones it --- .../torvald/terrarum/TerrarumAppConfiguration.kt | 3 ++- .../terrarum/modulebasegame/TerrarumIngame.kt | 2 +- .../modulebasegame/gameactors/FixtureBase.kt | 13 +++++++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/net/torvald/terrarum/TerrarumAppConfiguration.kt b/src/net/torvald/terrarum/TerrarumAppConfiguration.kt index eae9ebb47..4e31d9d8b 100644 --- a/src/net/torvald/terrarum/TerrarumAppConfiguration.kt +++ b/src/net/torvald/terrarum/TerrarumAppConfiguration.kt @@ -48,7 +48,8 @@ along with this program. If not, see . * e.g. 0x02010034 will be translated as 2.1.52 * */ - const val VERSION_RAW = 0x000206D3 + const val VERSION_RAW = 0x00030001 + // Commit counts up to the Release 0.3: 2251 (plz update!) ////////////////////////////////////////////////////////// // CONFIGURATION FOR TILE MAKER // diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index 6734d4cb9..b16963ca6 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -1235,7 +1235,7 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) { if (fixturesUnderHand.size > 0 && fixturesUnderHand[0].canBeDespawned) { val fixture = fixturesUnderHand[0] val fixtureItem = ItemCodex.fixtureToItemID(fixture) - printdbg(this, "Fixture pickup: ${fixture.javaClass.canonicalName} -> $fixtureItem") + printdbg(this, "Fixture pickup at F${WORLD_UPDATE_TIMER}: ${fixture.javaClass.canonicalName} -> $fixtureItem") // 1. put the fixture to the inventory fixture.flagDespawn() // 2. register this item(fixture) to the quickslot diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt index 5a30bcad5..0092c0628 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt @@ -9,7 +9,6 @@ import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gameactors.PhysProperties import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.gameworld.fmod -import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase import net.torvald.terrarum.ui.UICanvas import org.dyn4j.geometry.Vector2 @@ -158,7 +157,7 @@ open class FixtureBase : ActorWithBody, CuedByTerrainChange { */ open fun despawn() { if (canBeDespawned) { - printdbg(this, "despawn ${nameFun()}") + printdbg(this, "despawn at T${INGAME.WORLD_UPDATE_TIMER}: ${nameFun()}") // remove filler block forEachBlockbox { x, y -> @@ -176,8 +175,10 @@ open class FixtureBase : ActorWithBody, CuedByTerrainChange { wireConsumption.clear() } - val drop = ItemCodex.fixtureToItemID(this) - INGAME.queueActorAddition(DroppedItem(drop, hitbox.startX, hitbox.startY - 1.0)) + if (flagDespawn) { + val drop = ItemCodex.fixtureToItemID(this) + INGAME.queueActorAddition(DroppedItem(drop, hitbox.startX, hitbox.startY - 1.0)) + } } else { printdbg(this, "cannot despawn a fixture with non-empty inventory") @@ -195,7 +196,7 @@ open class FixtureBase : ActorWithBody, CuedByTerrainChange { } if (!canBeDespawned) flagDespawn = false - else if (flagDespawn) despawn() + if (canBeDespawned && flagDespawn) despawn() // actual actor removal is performed by the TerrarumIngame.killOrKnockdownActors super.update(delta) } @@ -276,4 +277,4 @@ data class BlockBox( val NULL = BlockBox() } -} \ No newline at end of file +}