diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/Map.java | 27 | ||||
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/states/StatePromote.java | 11 | 
2 files changed, 31 insertions, 7 deletions
| diff --git a/core/src/ch/asynk/tankontank/game/Map.java b/core/src/ch/asynk/tankontank/game/Map.java index d0828ba..b059aab 100644 --- a/core/src/ch/asynk/tankontank/game/Map.java +++ b/core/src/ch/asynk/tankontank/game/Map.java @@ -17,9 +17,11 @@ import ch.asynk.tankontank.engine.PossiblePaths;  import ch.asynk.tankontank.engine.gfx.Animation;  import ch.asynk.tankontank.engine.gfx.animations.AnimationSequence;  import ch.asynk.tankontank.engine.gfx.animations.ShotAnimation; +import ch.asynk.tankontank.engine.gfx.animations.PromoteAnimation;  import ch.asynk.tankontank.engine.gfx.animations.SoundAnimation;  import ch.asynk.tankontank.engine.gfx.animations.RunnableAnimation; +import ch.asynk.tankontank.game.hud.Position;  public abstract class Map extends Board  { @@ -86,6 +88,7 @@ public abstract class Map extends Board          super(game.factory, cfg, game.manager.get(textureName, Texture.class));          this.ctrl = game.ctrl;          this.moveSound = game.manager.get("sounds/move.mp3", Sound.class); +        PromoteAnimation.init(game.manager.get("data/hud.atlas", TextureAtlas.class), game.manager.get("sounds/promote.mp3", Sound.class));          ShotAnimation.init(                  game.manager.get("data/shots.png", Texture.class), 1, 7,                  game.manager.get("data/explosions.png", Texture.class), 16, 8, @@ -118,6 +121,7 @@ public abstract class Map extends Board          super.dispose();          clearAll();          moveSound.dispose(); +        PromoteAnimation.free();          ShotAnimation.free();      } @@ -265,6 +269,29 @@ public abstract class Map extends Board          activatedUnits.add(unit);      } +    public void promoteUnit(final Player player, final Unit unit, Position position) +    { +        activatedUnits.add(unit); + +        // FIXME +        float x = 60f; +        float y = 60f; +        if (position == Position.TOP_RIGHT) +            x = getWidth() - 60f; + +        Hex hex = unit.getHex(); +        AnimationSequence seq = AnimationSequence.get(2); +        seq.addAnimation(PromoteAnimation.get(x, y, hex.getX(), hex.getY(), ctrl.cfg.fxVolume)); +        seq.addAnimation ( RunnableAnimation.get(unit, new Runnable() { +            @Override +            public void run() { +                player.promote(unit); +                animationDone(); +            } +        })); +        addAnimation(seq); +    } +      public int moveUnit(Unit unit, Orientation o)      {          possiblePaths.orientation = o; diff --git a/core/src/ch/asynk/tankontank/game/states/StatePromote.java b/core/src/ch/asynk/tankontank/game/states/StatePromote.java index c6302f4..8cf557a 100644 --- a/core/src/ch/asynk/tankontank/game/states/StatePromote.java +++ b/core/src/ch/asynk/tankontank/game/states/StatePromote.java @@ -7,13 +7,10 @@ public class StatePromote extends StateCommon      @Override      public void enter(StateType prevState)      { -        ctrl.hud.actionButtons.hide(); -        String str = selectedUnit.toString(); -        if (ctrl.player.promote(selectedUnit)) { -            map.activatedUnits.add(selectedUnit); -            // ctrl.hud.notify(str+ " has been promoted"); -        } -        ctrl.setState(StateType.DONE); +        map.promoteUnit(ctrl.player, selectedUnit, ctrl.battle.getHudPosition(ctrl.player)); +        ctrl.setAnimationCount(1); +        ctrl.setAfterAnimationState(StateType.SELECT); +        ctrl.setState(StateType.ANIMATION);      }      @Override | 
