diff --git a/assets/mods/basegame/sprites/fixtures/signal_blocker.tga b/assets/mods/basegame/sprites/fixtures/signal_blocker.tga index e30ad94f4..8ddaf93aa 100644 --- a/assets/mods/basegame/sprites/fixtures/signal_blocker.tga +++ b/assets/mods/basegame/sprites/fixtures/signal_blocker.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb8884869a534612bf6689ece5f82caa59117a745b2aa48523de0998974c1554 -size 32786 +oid sha256:3c0dc17146be580e68938f22f7072e166e836500fc95026d471536a80ea72f3e +size 262162 diff --git a/assets/mods/basegame/sprites/fixtures/signal_blocker_emsv.tga b/assets/mods/basegame/sprites/fixtures/signal_blocker_emsv.tga new file mode 100644 index 000000000..a96ddc7b3 --- /dev/null +++ b/assets/mods/basegame/sprites/fixtures/signal_blocker_emsv.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62a14017b8622f02aba0a0ab6a3b4c58ba5003a1731fa84712569d9f7fc9e7dc +size 262162 diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureSignalBlocker.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureSignalBlocker.kt index ca94c889d..20e13e300 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureSignalBlocker.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureSignalBlocker.kt @@ -1,7 +1,6 @@ package net.torvald.terrarum.modulebasegame.gameactors -import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.App.printdbg +import net.torvald.spriteanimation.SheetSpriteAnimation import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase @@ -79,13 +78,18 @@ class FixtureSignalBlocker : Electric, Reorientable { init { val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/signal_blocker.tga") + val itemImage2 = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/signal_blocker_emsv.tga") density = 1400.0 setHitboxDimension(2*TILE_SIZE, 2*TILE_SIZE, 0, 1) makeNewSprite(TextureRegionPack(itemImage.texture, 2*TILE_SIZE, 2*TILE_SIZE)).let { - it.setRowsAndFrames(8,4) - it.delays = floatArrayOf(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY) + it.setRowsAndFrames(16,4) + it.delays = FloatArray(8) { Float.POSITIVE_INFINITY } + } + makeNewSpriteEmissive(TextureRegionPack(itemImage2.texture, 2*TILE_SIZE, 2*TILE_SIZE)).let { + it.setRowsAndFrames(16,4) + it.delays = FloatArray(8) { Float.POSITIVE_INFINITY } } setEmitterAndSink() @@ -124,6 +128,17 @@ class FixtureSignalBlocker : Electric, Reorientable { else -> throw IllegalStateException("Orientation not in range ($orientation)") } setWireEmissionAt(x, y, Vector2(I nimply J, 0.0)) + + // update sprite + val one = getWireStateAt(0, 0).x >= ELECTIC_THRESHOLD_HIGH + val two = getWireStateAt(1, 0).x >= ELECTIC_THRESHOLD_HIGH + val four = getWireStateAt(0, 1).x >= ELECTIC_THRESHOLD_HIGH + val eight = getWireStateAt(1, 1).x >= ELECTIC_THRESHOLD_HIGH + + val state = one.toInt(0) or two.toInt(1) or four.toInt(2) or eight.toInt(3) + + (sprite as SheetSpriteAnimation).currentRow = state + (spriteEmissive as SheetSpriteAnimation).currentRow = state } override fun onRisingEdge(readFrom: BlockBoxIndex) { @@ -144,7 +159,4 @@ class FixtureSignalBlocker : Electric, Reorientable { private infix fun Boolean.nimply(other: Boolean) = (this && !other).toInt().toDouble() - override fun drawBody(frameDelta: Float, batch: SpriteBatch) { - super.drawBody(frameDelta, batch) - } } \ No newline at end of file