diff options
Diffstat (limited to 'core/src/ch')
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/Ctrl.java | 8 | ||||
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/Hud.java | 12 | ||||
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/State.java | 3 | ||||
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/states/StateEntry.java | 69 | 
4 files changed, 89 insertions, 3 deletions
| diff --git a/core/src/ch/asynk/tankontank/game/Ctrl.java b/core/src/ch/asynk/tankontank/game/Ctrl.java index c9941f2..cc724fb 100644 --- a/core/src/ch/asynk/tankontank/game/Ctrl.java +++ b/core/src/ch/asynk/tankontank/game/Ctrl.java @@ -11,11 +11,12 @@ import ch.asynk.tankontank.game.states.StatePromote;  import ch.asynk.tankontank.game.states.StateAttack;  import ch.asynk.tankontank.game.states.StateBreak;  import ch.asynk.tankontank.game.states.StateAnimation; +import ch.asynk.tankontank.game.states.StateEntry;  public class Ctrl implements Disposable  {      private final TankOnTank game; -    private final Battle battle; +    public final Battle battle;      public Map map;      public Hud hud; @@ -30,6 +31,7 @@ public class Ctrl implements Disposable      private State attackState;      private State breakState;      private State animationState; +    private State entryState;      private int animationCount = 0; @@ -55,6 +57,7 @@ public class Ctrl implements Disposable          this.attackState = new StateAttack();          this.breakState = new StateBreak();          this.animationState = new StateAnimation(); +        this.entryState = new StateEntry();          this.state = selectState;          this.stateType = State.StateType.SELECT; @@ -161,6 +164,9 @@ public class Ctrl implements Disposable              case ANIMATION:                  this.state = animationState;                  break; +            case ENTRY: +                this.state = entryState; +                break;              default:                  break;          } diff --git a/core/src/ch/asynk/tankontank/game/Hud.java b/core/src/ch/asynk/tankontank/game/Hud.java index a84d361..329505c 100644 --- a/core/src/ch/asynk/tankontank/game/Hud.java +++ b/core/src/ch/asynk/tankontank/game/Hud.java @@ -152,6 +152,11 @@ public class Hud implements Disposable          msg.draw(batch);      } +    public Unit getDockUnit() +    { +        return (Unit) unitDock.selectedPawn; +    } +      public void pushNotify(String s)      {          notify(s, 1, Position.MIDDLE_CENTER, true); @@ -208,6 +213,11 @@ public class Hud implements Disposable          actionsBg.set(0, 0, 0, 0);      } +    public void hideUnitDock() +    { +        unitDock.hide(); +    } +      public boolean touchDown(float x, float y)      {          btn = null; @@ -269,7 +279,7 @@ public class Hud implements Disposable              else if ((hit == reinforcement) && reinforcement.hit(x, y))                  unitDock.toggle();              else if ((hit == unitDock) && unitDock.hit(x, y)) -                System.err.println("TODO : unitDock hit"); +                ctrl.setState(StateType.ENTRY);              hit = null;          } else              return false; diff --git a/core/src/ch/asynk/tankontank/game/State.java b/core/src/ch/asynk/tankontank/game/State.java index d1d64ef..329e721 100644 --- a/core/src/ch/asynk/tankontank/game/State.java +++ b/core/src/ch/asynk/tankontank/game/State.java @@ -9,7 +9,8 @@ public interface State          ATTACK,          BREAK,          PROMOTE, -        ANIMATION +        ANIMATION, +        ENTRY      };      public void enter(boolean flag); diff --git a/core/src/ch/asynk/tankontank/game/states/StateEntry.java b/core/src/ch/asynk/tankontank/game/states/StateEntry.java new file mode 100644 index 0000000..dc4acc9 --- /dev/null +++ b/core/src/ch/asynk/tankontank/game/states/StateEntry.java @@ -0,0 +1,69 @@ +package ch.asynk.tankontank.game.states; + +import com.badlogic.gdx.math.Vector3; + +import ch.asynk.tankontank.engine.TileSet; +import ch.asynk.tankontank.engine.Orientation; +import ch.asynk.tankontank.game.Hex; + +public class StateEntry extends StateCommon +{ +    private float x; +    private float y; +    private float z; +    private TileSet entryPoint; + +    @Override +    public void enter(boolean fromSelect) +    { +        activeUnit = ctrl.hud.getDockUnit(); +        entryPoint = ctrl.battle.getEntryPoint(activeUnit); +        entryPoint.enable(Hex.AREA, true); +        ctrl.hud.show(false, false, false, false, false, ctrl.cfg.canCancel); +        x = activeUnit.getPosition().x; +        y = activeUnit.getPosition().x; +        z = activeUnit.getPosition().y; +    } + +    @Override +    public void leave(StateType nextState) +    { +        entryPoint.enable(Hex.AREA, false); +        ctrl.hud.hideUnitDock(); +    } + +    @Override +    public void touchDown() +    { +    } + +    @Override +    public void touchUp() +    { +        if (upHex.isEmpty() && entryPoint.contains(upHex)) { +            selectedUnit = activeUnit; +            selectedHex = upHex; +            map.selectHex(selectedHex); +            entryPoint.enable(Hex.AREA, false); +            ctrl.player.unitEntry(activeUnit); +            map.enterBoard(activeUnit, upHex, ctrl.battle.getEntryOrientation(ctrl.player)); +            if (activeUnit.getMovementPoints() > 0) +                ctrl.setState(StateType.MOVE, true); +            else +                ctrl.setState(StateType.ROTATE, true); +        } +    } + +    @Override +    public void abort() +    { +        activeUnit.setPosition(x, y, z); +        super.abort(); +    } + +    @Override +    public void done() +    { +        super.done(); +    } +} | 
