summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/src/ch/asynk/tankontank/engine/Board.java11
-rw-r--r--core/src/ch/asynk/tankontank/engine/SelectedTile.java80
2 files changed, 89 insertions, 2 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/Board.java b/core/src/ch/asynk/tankontank/engine/Board.java
index c8c5459..40c1736 100644
--- a/core/src/ch/asynk/tankontank/engine/Board.java
+++ b/core/src/ch/asynk/tankontank/engine/Board.java
@@ -63,6 +63,8 @@ public abstract class Board implements Disposable, Animation
private final ArrayList<Animation> nextAnimations = new ArrayList<Animation>(2);
private final LinkedHashSet<Tile> tilesToDraw = new LinkedHashSet<Tile>();
+ protected SelectedTile selectedTile;
+
protected Board(int cols, int rows)
{
// add a frame of OFFMAP Tiles
@@ -71,9 +73,9 @@ public abstract class Board implements Disposable, Animation
searchBoard = new SearchBoard(this, cols, rows);
}
- public Board(TileBuilder tileBuilder, Config cfg, Texture texture)
+ public Board(TileBuilder tileBuilder, Config cfg, Texture boardTexture, SelectedTile selectedTile)
{
- image = new Image(texture);
+ image = new Image(boardTexture);
this.cfg = cfg;
// add a frame of OFFMAP Tiles
this.cols = (cfg.cols + 2);
@@ -104,6 +106,9 @@ public abstract class Board implements Disposable, Animation
sides[3] = Orientation.SOUTH;
sides[4] = Orientation.SOUTH_WEST;
sides[5] = Orientation.NORTH_WEST;
+
+ this.selectedTile = selectedTile;
+ animations.add(selectedTile);
}
@Override
@@ -119,6 +124,8 @@ public abstract class Board implements Disposable, Animation
for (int i = 0, n = animations.size(); i < n; i++)
animations.get(i).dispose();
animations.clear();
+ if (selectedTile != null)
+ selectedTile.dispose();
}
public float getWidth()
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);
+ }
+}