diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/src/ch/asynk/tankontank/game/Map.java | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/core/src/ch/asynk/tankontank/game/Map.java b/core/src/ch/asynk/tankontank/game/Map.java index 1ae313d..19d7c47 100644 --- a/core/src/ch/asynk/tankontank/game/Map.java +++ b/core/src/ch/asynk/tankontank/game/Map.java @@ -2,6 +2,7 @@ package ch.asynk.tankontank.game; import java.util.Iterator; +import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureAtlas; @@ -15,6 +16,7 @@ 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.SoundAnimation; import ch.asynk.tankontank.engine.gfx.animations.RunnableAnimation; @@ -32,6 +34,10 @@ public abstract class Map extends Board private final SpriteAnimation explosion; private final SpriteAnimation explosions; + private final Sound moveSound; + private final Sound attackSound; + private Sound sound; + private long soundId = -1; protected abstract void setup(); @@ -41,6 +47,9 @@ public abstract class Map extends Board this.ctrl = game.ctrl; this.explosion = new SpriteAnimation(game.manager.get("data/explosion.png", Texture.class), 10, 4, 40); this.explosions = new SpriteAnimation(game.manager.get("data/explosions.png", Texture.class), 16, 8, 15); + this.moveSound = game.manager.get("sounds/move.mp3", Sound.class); + this.attackSound = game.manager.get("sounds/attack.mp3", Sound.class); + setup(); possibleMoves = new TileSet(this, 40); @@ -192,6 +201,8 @@ public abstract class Map extends Board { moveablePawns.remove(pawn); activatedPawns.add(pawn); + sound = moveSound; + soundId = sound.play(1.0f); return moveablePawns.size(); } @@ -200,11 +211,20 @@ public abstract class Map extends Board return RunnableAnimation.get(pawn, new Runnable() { @Override public void run() { - ctrl.animationDone(); + animationDone(); } }); } + private void animationDone() + { + System.err.println("animation OVER"); + if (soundId >= 0) + addAnimation( SoundAnimation.get(SoundAnimation.Action.FADE_OUT, sound, soundId, 0.5f)); + soundId = -1; + ctrl.animationDone(); + } + public boolean attackPawn(Pawn pawn, final Pawn target, int dice) { int activatedUnits = activatedPawns.size(); @@ -244,8 +264,6 @@ public abstract class Map extends Board } })); - addAnimation(seq); - for (Pawn p : activatedPawns) { p.attack(target); System.err.println(pawn); @@ -253,6 +271,10 @@ public abstract class Map extends Board if ((activatedPawns.size() == 1) && pawn.isA(Unit.UnitType.AT_GUN) && target.isHardTarget()) activatedPawns.clear(); + addAnimation(seq); + sound = attackSound; + sound.play(1.0f); + return success; } |