diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/src/ch/asynk/gdx/boardgame/animations/BounceAnimation.java | 4 | ||||
-rw-r--r-- | core/src/ch/asynk/gdx/boardgame/animations/TimedAnimation.java | 36 |
2 files changed, 19 insertions, 21 deletions
diff --git a/core/src/ch/asynk/gdx/boardgame/animations/BounceAnimation.java b/core/src/ch/asynk/gdx/boardgame/animations/BounceAnimation.java index cd99fb0..22aa470 100644 --- a/core/src/ch/asynk/gdx/boardgame/animations/BounceAnimation.java +++ b/core/src/ch/asynk/gdx/boardgame/animations/BounceAnimation.java @@ -23,8 +23,8 @@ public class BounceAnimation extends TimedAnimation BounceAnimation a = bounceAnimationPool.obtain(); a.piece = piece; - a.duration = duration; a.bounceFactor = bounceFactor; + a.setDuration(duration); return a; } @@ -39,8 +39,8 @@ public class BounceAnimation extends TimedAnimation public BounceAnimation(Piece piece, float duration, float bounceFactor) { this.piece = piece; - this.duration = duration; this.bounceFactor = bounceFactor; + this.setDuration(duration); } @Override public void dispose() diff --git a/core/src/ch/asynk/gdx/boardgame/animations/TimedAnimation.java b/core/src/ch/asynk/gdx/boardgame/animations/TimedAnimation.java index f66cb98..9540507 100644 --- a/core/src/ch/asynk/gdx/boardgame/animations/TimedAnimation.java +++ b/core/src/ch/asynk/gdx/boardgame/animations/TimedAnimation.java @@ -4,46 +4,44 @@ import com.badlogic.gdx.utils.Pool; public abstract class TimedAnimation implements Animation, Pool.Poolable { - private float time; - private boolean started; - private boolean completed; - protected float duration; + private float dp; + private float percent; abstract protected void begin(); abstract protected void end(); abstract protected void update(float percent); + public void setDuration(float duration) + { + dp = 1f / duration; + } + @Override public void reset() { - time = 0f; - started = false; - completed = false; + percent = 0f; } @Override public boolean completed() { - return completed; + return (percent >= 1f); } @Override public boolean animate(float delta) { - if (completed) return true; - - if (!started) { + if (percent == 0) { begin(); - started = true; } - time += delta; + percent += (dp * delta); - if (time >= duration) { - completed = true; - update(1); + if (percent >= 1f) { + // percent = 1f; + // update(percent); end(); + return true; } else { - update(time / duration); + update(percent); + return false; } - - return completed; } } |