summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/tankontank/game/Map.java
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2014-10-15 15:07:07 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2014-10-15 15:07:07 +0200
commit68de02c5a844c260be3223541f19ba3c2e5c46d3 (patch)
treeb8a2e278a10ec78ca52458e40ef52b4b0913c79a /core/src/ch/asynk/tankontank/game/Map.java
parentba559a8a0d13483e0b5a3f0751ca58fe78dfc356 (diff)
downloadRustAndDust-68de02c5a844c260be3223541f19ba3c2e5c46d3.zip
RustAndDust-68de02c5a844c260be3223541f19ba3c2e5c46d3.tar.gz
add attack animation
Diffstat (limited to 'core/src/ch/asynk/tankontank/game/Map.java')
-rw-r--r--core/src/ch/asynk/tankontank/game/Map.java36
1 files changed, 32 insertions, 4 deletions
diff --git a/core/src/ch/asynk/tankontank/game/Map.java b/core/src/ch/asynk/tankontank/game/Map.java
index e36b143..4df7077 100644
--- a/core/src/ch/asynk/tankontank/game/Map.java
+++ b/core/src/ch/asynk/tankontank/game/Map.java
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
+import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.math.Vector2;
@@ -14,6 +15,8 @@ import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import ch.asynk.tankontank.engine.Pawn;
import ch.asynk.tankontank.engine.Board;
import ch.asynk.tankontank.engine.Orientation;
+import ch.asynk.tankontank.engine.gfx.animations.AnimationSequence;
+import ch.asynk.tankontank.engine.gfx.animations.SpriteAnimation;
import ch.asynk.tankontank.engine.gfx.animations.RunnableAnimation;
public abstract class Map extends Board
@@ -30,12 +33,17 @@ public abstract class Map extends Board
private final ArrayList<Pawn> activablePawns = new ArrayList<Pawn>(7);
private final ArrayList<Pawn> activatedPawns = new ArrayList<Pawn>(7);
+ private final SpriteAnimation explosion;
+ private final SpriteAnimation explosions;
+
protected abstract void setup();
- public Map(Ctrl ctrl, Factory factory, Board.Config cfg, Texture texture)
+ public Map(Ctrl ctrl, Factory factory, Board.Config cfg, AssetManager manager, String textureName)
{
- super(factory, cfg, texture);
+ super(factory, cfg, manager.get(textureName, Texture.class));
this.ctrl = ctrl;
+ this.explosion = new SpriteAnimation(manager.get("data/explosion.png", Texture.class), 10, 4, 40);
+ this.explosions = new SpriteAnimation(manager.get("data/explosions.png", Texture.class), 16, 8, 15);
setup();
}
@@ -275,13 +283,13 @@ public abstract class Map extends Board
clearPointVector(possibleTargets);
}
- public boolean attackPawn(Pawn pawn, Pawn target, GridPoint2 from, GridPoint2 to, int dice)
+ public boolean attackPawn(Pawn pawn, final Pawn target, GridPoint2 from, GridPoint2 to, int dice)
{
Hex hex = getHex(to.x, to.y);
int activatedUnits = activatedPawns.size();
- boolean success;
+ final boolean success;
if (dice == 2) {
success = false;
} else if (dice == 12) {
@@ -304,6 +312,26 @@ public abstract class Map extends Board
activablePawns.clear();
activatedPawns.clear();
+ AnimationSequence seq = AnimationSequence.get(2);
+ if (success) {
+ explosions.init(1, target.getCenter().x, target.getCenter().y);
+ seq.addAnimation(explosions);
+ } else {
+ explosion.init(1, target.getCenter().x, target.getCenter().y);
+ seq.addAnimation(explosion);
+ }
+ seq.addAnimation(RunnableAnimation.get(pawn, new Runnable() {
+ @Override
+ public void run() {
+ if (success) {
+ removePawn(target);
+ }
+ ctrl.animationDone();
+ }
+ }));
+
+ addAnimation(seq);
+
return success;
}