diff --git a/assets/mods/basegame/sprites/fixtures/tiki_torch.tga b/assets/mods/basegame/sprites/fixtures/tiki_torch.tga index 9552e9934..db0adef87 100644 --- a/assets/mods/basegame/sprites/fixtures/tiki_torch.tga +++ b/assets/mods/basegame/sprites/fixtures/tiki_torch.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5adf5d107e3c8a334a80f716154cc472d439148a4cfa43610371bf5f5479c324 +oid sha256:0b40af875be736af7f102b833a82b415067fa60dbac481c3ab4885aae27e7ba8 size 4114 diff --git a/src/net/torvald/terrarum/gameparticles/ParticleBase.kt b/src/net/torvald/terrarum/gameparticles/ParticleBase.kt index 4eba6c631..3ec2d8ef7 100644 --- a/src/net/torvald/terrarum/gameparticles/ParticleBase.kt +++ b/src/net/torvald/terrarum/gameparticles/ParticleBase.kt @@ -15,7 +15,7 @@ import org.dyn4j.geometry.Vector2 * * Created by minjaesong on 2017-01-20. */ -open class ParticleBase(renderOrder: Actor.RenderOrder, val despawnUponCollision: Boolean, maxLifeTime: Second? = null) : Runnable { +open class ParticleBase(renderOrder: Actor.RenderOrder, val despawnUponCollision: Boolean, val noCollision: Boolean = true, maxLifeTime: Second? = null) : Runnable { /** Will NOT actually delete from the CircularArray */ @Volatile var flagDespawn = false @@ -44,15 +44,20 @@ open class ParticleBase(renderOrder: Actor.RenderOrder, val despawnUponCollision open fun update(delta: Float) { if (!flagDespawn) { lifetimeCounter += delta - if (despawnUponCollision) { - if (velocity.isZero || - // simple stuck check - BlockCodex[(Terrarum.ingame!!.world).getTileFromTerrain( - hitbox.canonicalX.div(TerrarumAppConfiguration.TILE_SIZE).floorInt(), - hitbox.canonicalY.div(TerrarumAppConfiguration.TILE_SIZE).floorInt() - ) ?: Block.STONE].isSolid) { - flagDespawn = true - } + if (velocity.isZero || + // simple stuck check + BlockCodex[(Terrarum.ingame!!.world).getTileFromTerrain( + hitbox.centeredX.div(TerrarumAppConfiguration.TILE_SIZE).floorInt(), + hitbox.startY.div(TerrarumAppConfiguration.TILE_SIZE).floorInt() + )].isSolid || + BlockCodex[(Terrarum.ingame!!.world).getTileFromTerrain( + hitbox.centeredX.div(TerrarumAppConfiguration.TILE_SIZE).floorInt(), + hitbox.endY.div(TerrarumAppConfiguration.TILE_SIZE).floorInt() + )].isSolid) { + + + if (despawnUponCollision) flagDespawn = true + if (!noCollision) velocity.y = 0.0 } if (lifetimeCounter >= lifetimeMax) { diff --git a/src/net/torvald/terrarum/gameparticles/ParticleVanishingTexture.kt b/src/net/torvald/terrarum/gameparticles/ParticleVanishingTexture.kt index 0bd66e070..3f763e96d 100644 --- a/src/net/torvald/terrarum/gameparticles/ParticleVanishingTexture.kt +++ b/src/net/torvald/terrarum/gameparticles/ParticleVanishingTexture.kt @@ -12,7 +12,7 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack * @param x x-coord of the particle's initial spawn position, bottom-centre * @param y y-coord of the particle's initial spawn position, bottom-centre */ -open class ParticleVanishingTexture(val tex: TextureRegion, x: Double, y: Double) : ParticleBase(Actor.RenderOrder.OVERLAY, false, 2f) { +open class ParticleVanishingTexture(val tex: TextureRegion, x: Double, y: Double, noCollision: Boolean = true) : ParticleBase(Actor.RenderOrder.OVERLAY, false, noCollision, 2f) { init { velocity.set(0.0, -1.0) @@ -36,7 +36,7 @@ open class ParticleVanishingTexture(val tex: TextureRegion, x: Double, y: Double * @param x x-coord of the particle's initial spawn position, bottom-centre * @param y y-coord of the particle's initial spawn position, bottom-centre */ -class ParticleVanishingText(val text: String, x: Double, y: Double) : ParticleBase(Actor.RenderOrder.OVERLAY, false, 2f) { +class ParticleVanishingText(val text: String, x: Double, y: Double, noCollision: Boolean = true) : ParticleBase(Actor.RenderOrder.OVERLAY, false, noCollision, 2f) { private val lines = text.split('\n') @@ -69,7 +69,7 @@ class ParticleVanishingText(val text: String, x: Double, y: Double) : ParticleBa * @param x x-coord of the particle's initial spawn position, bottom-centre * @param y y-coord of the particle's initial spawn position, bottom-centre */ -open class ParticleVanishingSprite(val sprite: TextureRegionPack, val delay: Float, x: Double, y: Double, val start: Int = 0) : ParticleBase(Actor.RenderOrder.OVERLAY, false, 2f) { +open class ParticleVanishingSprite(val sprite: TextureRegionPack, val delay: Float, x: Double, y: Double, val start: Int = 0, noCollision: Boolean = true) : ParticleBase(Actor.RenderOrder.OVERLAY, false, noCollision, 2f) { private var row = 0 private var frame = start % sprite.horizontalCount diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTikiTorch.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTikiTorch.kt index 523d99aa3..8c134a4d3 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTikiTorch.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTikiTorch.kt @@ -61,7 +61,7 @@ internal class FixtureTikiTorch(nameFun: () -> String) : FixtureBase(BlockBox(Bl } - private var nextDelay = 0.4f + private var nextDelay = 0.25f private var spawnTimer = 0f override fun update(delta: Float) { @@ -70,11 +70,11 @@ internal class FixtureTikiTorch(nameFun: () -> String) : FixtureBase(BlockBox(Bl if (spawnTimer >= nextDelay) { (Terrarum.ingame as TerrarumIngame).addParticle(ParticleVanishingSprite( CommonResourcePool.getAsTextureRegionPack("particles-tiki_smoke.tga"), - 0.25f, hitbox.centeredX, hitbox.startY + 5, rng.nextInt(256) + 0.25f, hitbox.centeredX, hitbox.startY + 5, rng.nextInt(256), false )) spawnTimer -= nextDelay - nextDelay = rng.nextFloat() * 0.4f + 0.4f + nextDelay = rng.nextFloat() * 0.25f + 0.25f sprite?.delays?.set(0, rng.nextFloat() * 0.4f + 0.1f) } diff --git a/src/net/torvald/terrarum/modulebasegame/gameparticles/ParticleMegaRain.kt b/src/net/torvald/terrarum/modulebasegame/gameparticles/ParticleMegaRain.kt index 494f1ab73..a29dc7fc9 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameparticles/ParticleMegaRain.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameparticles/ParticleMegaRain.kt @@ -12,7 +12,7 @@ import net.torvald.terrarum.gameparticles.ParticleBase /** * Created by minjaesong on 2017-12-18. */ -class ParticleMegaRain(posX: Double, posY: Double) : ParticleBase(Actor.RenderOrder.BEHIND, true, 3.2f) { +class ParticleMegaRain(posX: Double, posY: Double) : ParticleBase(Actor.RenderOrder.BEHIND, true, false, 3.2f) { init { body = MegaRainGovernor.get() diff --git a/src/net/torvald/terrarum/modulebasegame/gameparticles/ParticleTestRain.kt b/src/net/torvald/terrarum/modulebasegame/gameparticles/ParticleTestRain.kt index 6c70ae8a2..49c42a198 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameparticles/ParticleTestRain.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameparticles/ParticleTestRain.kt @@ -9,7 +9,7 @@ import net.torvald.terrarum.gameparticles.ParticleBase /** * Created by minjaesong on 2017-01-20. */ -class ParticleTestRain(posX: Double, posY: Double) : ParticleBase(Actor.RenderOrder.BEHIND, true, 6f) { +class ParticleTestRain(posX: Double, posY: Double) : ParticleBase(Actor.RenderOrder.BEHIND, true, false, 6f) { init { body = TextureRegion(Texture(ModMgr.getGdxFile("basegame", "weathers/raindrop.tga")))