diff --git a/src/net/torvald/terrarum/IngameInstance.kt b/src/net/torvald/terrarum/IngameInstance.kt index 7944866aa..ff1be3e7a 100644 --- a/src/net/torvald/terrarum/IngameInstance.kt +++ b/src/net/torvald/terrarum/IngameInstance.kt @@ -71,7 +71,7 @@ open class IngameInstance(val batch: SpriteBatch) : Screen { protected val terrainChangeQueue = Queue() protected val wallChangeQueue = Queue() - protected val wireChangeQueue = Queue() + protected val wireChangeQueue = Queue() // if 'old' is set and 'new' is blank, it's a wire cutter override fun hide() { } @@ -161,9 +161,9 @@ open class IngameInstance(val batch: SpriteBatch) : Screen { * @param old previous settings of conduits in bit set format. * @param new current settings of conduits in bit set format. */ - open fun queueWireChangedEvent(new: ItemID, position: Long) { + open fun queueWireChangedEvent(wire: ItemID, isRemoval: Boolean, position: Long) { val (x, y) = LandUtil.resolveBlockAddr(world, position) - wireChangeQueue.addLast(BlockChangeQueueItem("", new, x, y)) + wireChangeQueue.addLast(BlockChangeQueueItem(if (isRemoval) wire else "", if (isRemoval) "" else wire, x, y)) } diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index c73fafa02..fba8b0dd6 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -582,8 +582,9 @@ inline fun printStackTrace(obj: Any) = printStackTrace(obj, System.out) // becau fun printStackTrace(obj: Any, out: PrintStream = System.out) { if (AppLoader.IS_DEVELOPMENT_BUILD) { - Thread.currentThread().stackTrace.forEach { - out.println("[${obj.javaClass.simpleName}] ... $it") + Thread.currentThread().stackTrace.forEachIndexed { index, it -> + if (index >= 3) + out.println("[${obj.javaClass.simpleName}] ... $it") } } } @@ -631,4 +632,9 @@ class UIContainer { interface Id_UICanvasNullable { fun get(): UICanvas? -} \ No newline at end of file +} + +// haskell-inspired array selectors +// head and last use first() and last() +fun Array.tail() = this.sliceArray(1 until this.size) +fun Array.init() = this.sliceArray(0 until this.lastIndex) \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameworld/GameWorld.kt b/src/net/torvald/terrarum/gameworld/GameWorld.kt index c0c7a74a8..5f674aad9 100644 --- a/src/net/torvald/terrarum/gameworld/GameWorld.kt +++ b/src/net/torvald/terrarum/gameworld/GameWorld.kt @@ -324,7 +324,7 @@ open class GameWorld : Disposable { wirings[blockAddr]!!.wires.add(tile) if (!bypassEvent) - Terrarum.ingame?.queueWireChangedEvent(tile, LandUtil.getBlockAddr(this, x, y)) + Terrarum.ingame?.queueWireChangedEvent(tile, false, LandUtil.getBlockAddr(this, x, y)) } fun getAllWiresFrom(x: Int, y: Int): SortedArrayList? {