From 1d30887a44b81b895241d7d7118d2b7476b4251d Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Fri, 10 Feb 2017 18:17:30 +0100 Subject: [PATCH] Add bonus particle system class --- .../lonamiwebs/klooni/game/BonusParticle.java | 39 +++++++++++++++++++ .../klooni/game/BonusParticleHandler.java | 34 ++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 core/src/io/github/lonamiwebs/klooni/game/BonusParticle.java create mode 100644 core/src/io/github/lonamiwebs/klooni/game/BonusParticleHandler.java diff --git a/core/src/io/github/lonamiwebs/klooni/game/BonusParticle.java b/core/src/io/github/lonamiwebs/klooni/game/BonusParticle.java new file mode 100644 index 0000000..5dded47 --- /dev/null +++ b/core/src/io/github/lonamiwebs/klooni/game/BonusParticle.java @@ -0,0 +1,39 @@ +package io.github.lonamiwebs.klooni.game; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.math.Interpolation; +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.scenes.scene2d.ui.Label; + +import io.github.lonamiwebs.klooni.Klooni; + +class BonusParticle { + + private Label label; + private float lifetime; + + private final static float SPEED = 1f; + + BonusParticle(final Vector2 pos, final int score, final Label.LabelStyle style) { + label = new Label("+"+score, style); + label.setBounds(pos.x, pos.y, 0, 0); + } + + void run(final Batch batch) { + // Update + lifetime += SPEED * Gdx.graphics.getDeltaTime(); + if (lifetime > 1f) + lifetime = 1f; + + // Render + label.setColor(Klooni.theme.highScore); + label.setFontScale(Interpolation.elasticOut.apply(0f, 1f, lifetime)); + float opacity = Interpolation.linear.apply(1f, 0f, lifetime); + label.draw(batch, opacity); + } + + boolean done() { + return lifetime >= 1f; + } +} diff --git a/core/src/io/github/lonamiwebs/klooni/game/BonusParticleHandler.java b/core/src/io/github/lonamiwebs/klooni/game/BonusParticleHandler.java new file mode 100644 index 0000000..4ec32c5 --- /dev/null +++ b/core/src/io/github/lonamiwebs/klooni/game/BonusParticleHandler.java @@ -0,0 +1,34 @@ +package io.github.lonamiwebs.klooni.game; + +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.scenes.scene2d.ui.Label; +import com.badlogic.gdx.utils.Array; + +import java.util.Iterator; + +class BonusParticleHandler { + + private final Array particles; + private final Label.LabelStyle labelStyle; + + BonusParticleHandler(final Label.LabelStyle style) { + labelStyle = style; + particles = new Array(); + } + + void addBonus(final Vector2 pos, final int score) { + particles.add(new BonusParticle(pos, score, labelStyle)); + } + + void run(final Batch batch) { + BonusParticle particle; + Iterator iterator = particles.iterator(); + while (iterator.hasNext()) { + particle = iterator.next(); + particle.run(batch); + if (particle.done()) + iterator.remove(); + } + } +}