From d2942941457d52f439592f4ba18f4d6e9fa14d94 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 19 Oct 2021 11:20:19 +0900 Subject: [PATCH] wire cutter drops cut wire --- src/net/torvald/terrarum/gameactors/ActorWithBody.kt | 2 ++ .../terrarum/modulebasegame/gameactors/ActorHumanoid.kt | 4 +++- .../terrarum/modulebasegame/gameitems/WireCutterAll.kt | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt index c06e0a4e7..6f76f803e 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt @@ -277,6 +277,8 @@ open class ActorWithBody : Actor { */ var forceDormant = false + var isPickedUp = false + /** * Gravitational Constant G. Load from gameworld. * [m / s^2] diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt index 19cd897f0..3fbae4e45 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt @@ -188,7 +188,9 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L // don't put this into keyPressed; execution order is important! updateGamerControlBox() - processInput(delta) + if (!isPickedUp) { + processInput(delta) + } updateSprite(delta) diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/WireCutterAll.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/WireCutterAll.kt index 164ac913d..57b432414 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/WireCutterAll.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/WireCutterAll.kt @@ -4,12 +4,15 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.CommonResourcePool import net.torvald.terrarum.Point2i import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE +import net.torvald.terrarum.WireCodex import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.inInteractableRange import net.torvald.terrarum.itemproperties.Material import net.torvald.terrarum.modulebasegame.TerrarumIngame +import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem /** * TEST ITEM; this item cuts every wire on a cell, and has no durability drop @@ -41,6 +44,7 @@ class WireCutterAll(originalID: ItemID) : GameItem(originalID) { wires?.forEach { ingame.world.removeTileWire(mouseTile.x, mouseTile.y, it, false) + ingame.addNewActor(DroppedItem(it, mouseTile.x * TILE_SIZE, mouseTile.y * TILE_SIZE)) } ?: return@inInteractableRange false true