summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/tankontank/engine/SelectedTile.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/ch/asynk/tankontank/engine/SelectedTile.java')
-rw-r--r--core/src/ch/asynk/tankontank/engine/SelectedTile.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/SelectedTile.java b/core/src/ch/asynk/tankontank/engine/SelectedTile.java
new file mode 100644
index 0000000..2c44ac9
--- /dev/null
+++ b/core/src/ch/asynk/tankontank/engine/SelectedTile.java
@@ -0,0 +1,80 @@
+package ch.asynk.tankontank.engine;
+
+import com.badlogic.gdx.utils.Disposable;
+
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.Batch;
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
+
+import ch.asynk.tankontank.engine.gfx.Drawable;
+import ch.asynk.tankontank.engine.gfx.Animation;
+import ch.asynk.tankontank.engine.gfx.animations.Sprites;
+
+public class SelectedTile implements Disposable, Drawable, Animation
+{
+ private Sprites sprites;
+ public Tile tile;
+ public boolean visible;
+ public float x;
+ public float y;
+ private float elapsed;
+ private int frame;
+ private float[] seq;
+
+ public SelectedTile(Texture texture, float[] seq)
+ {
+ this.sprites = new Sprites(texture, seq.length, 1);
+ this.visible = false;
+ this.tile = null;
+ this.elapsed = 0f;
+ this.seq = seq;
+ }
+
+ public void hide()
+ {
+ tile = null;
+ visible = false;
+ }
+
+ public void set(Tile tile)
+ {
+ this.visible = true;
+ this.tile = tile;
+ this.frame = 0;
+ this.elapsed = 0f;
+ this.x = (tile.getX() - (sprites.width / 2f));
+ this.y = (tile.getY() - (sprites.height / 2f));
+ }
+
+ public void dispose()
+ {
+ sprites.dispose();
+ }
+
+ @Override
+ public boolean animate(float delta)
+ {
+ if (visible) {
+ elapsed += delta;
+ if (elapsed > seq[frame]) {
+ frame = ((frame + 1) % sprites.frames.length);
+ elapsed = 0f;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void draw(Batch batch)
+ {
+ if (visible)
+ batch.draw(sprites.frames[frame], x, y);
+ }
+
+ @Override
+ public void drawDebug(ShapeRenderer debugShapes)
+ {
+ if (visible)
+ debugShapes.rect(x, y, sprites.width, sprites.height);
+ }
+}