From 0c5683c043ad5a556c91a778db0b7f288bf4b3a6 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sun, 10 Sep 2017 11:38:12 +0200 Subject: [PATCH] Fix waterdrop and explode particles dying before time --- .../klooni/effects/ExplodeEffect.java | 24 +++++++------------ .../klooni/effects/WaterdropEffect.java | 7 +++++- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/core/src/io/github/lonamiwebs/klooni/effects/ExplodeEffect.java b/core/src/io/github/lonamiwebs/klooni/effects/ExplodeEffect.java index 63daeab..55578d1 100644 --- a/core/src/io/github/lonamiwebs/klooni/effects/ExplodeEffect.java +++ b/core/src/io/github/lonamiwebs/klooni/effects/ExplodeEffect.java @@ -3,18 +3,15 @@ package io.github.lonamiwebs.klooni.effects; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.Batch; -import com.badlogic.gdx.math.Interpolation; import com.badlogic.gdx.math.MathUtils; -import com.badlogic.gdx.math.Matrix4; import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.math.Vector3; import io.github.lonamiwebs.klooni.game.Cell; public class ExplodeEffect implements IEffect { - private float age; - private Vector2 pos; - private float size; private Color color; + boolean dead; private final static float EXPLOSION_X_RANGE = 0.25f; private final static float EXPLOSION_Y_RANGE = 0.30f; @@ -39,17 +36,12 @@ public class ExplodeEffect implements IEffect { pos.add(vel.x * dt, vel.y * dt); Cell.draw(color, batch, pos.x, pos.y, size); } - - public boolean isDead() { - return pos.y - size < 0; - } } private Shard[] shards; @Override public void setInfo(Cell deadCell, Vector2 culprit) { - age = 0; color = deadCell.getColorCopy(); shards = new Shard[MathUtils.random(4, 6)]; @@ -59,16 +51,16 @@ public class ExplodeEffect implements IEffect { @Override public void draw(Batch batch) { - for (int i = 0; i != shards.length; ++i) + dead = true; // assume we're death + final Vector3 translation = batch.getTransformMatrix().getTranslation(new Vector3()); + for (int i = shards.length; i-- != 0; ) { shards[i].draw(batch, Gdx.graphics.getDeltaTime()); + dead &= translation.y + shards[i].pos.y + shards[i].size < 0; // all must be dead + } } @Override public boolean isDone() { - for (int i = 0; i != shards.length; ++i) - if (!shards[i].isDead()) - return false; - - return true; + return dead; } } diff --git a/core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java b/core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java index 04b29fa..58f6f47 100644 --- a/core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java +++ b/core/src/io/github/lonamiwebs/klooni/effects/WaterdropEffect.java @@ -7,12 +7,14 @@ import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.math.Vector3; import io.github.lonamiwebs.klooni.SkinLoader; import io.github.lonamiwebs.klooni.game.Cell; public class WaterdropEffect implements IEffect { private Vector2 pos; + private boolean dead; private Color cellColor; private Color dropColor; @@ -60,10 +62,13 @@ public class WaterdropEffect implements IEffect { Cell.draw(cellColor, batch, pos.x, pos.y, cellSize); Cell.draw(dropTexture, dropColor, batch, pos.x, pos.y, cellSize); + + final Vector3 translation = batch.getTransformMatrix().getTranslation(new Vector3()); + dead = translation.y + pos.y + dropTexture.getHeight() < 0; } @Override public boolean isDone() { - return pos.y + dropTexture.getHeight() < 0; + return dead; } }