diff options
Diffstat (limited to 'core/src/ch/asynk')
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/states/StateEntry.java | 62 | 
1 files changed, 37 insertions, 25 deletions
| diff --git a/core/src/ch/asynk/tankontank/game/states/StateEntry.java b/core/src/ch/asynk/tankontank/game/states/StateEntry.java index f836b53..cfdc24c 100644 --- a/core/src/ch/asynk/tankontank/game/states/StateEntry.java +++ b/core/src/ch/asynk/tankontank/game/states/StateEntry.java @@ -5,13 +5,11 @@ import com.badlogic.gdx.math.Vector3;  import ch.asynk.tankontank.engine.TileSet;  import ch.asynk.tankontank.engine.Orientation;  import ch.asynk.tankontank.game.Hex; +import ch.asynk.tankontank.game.Unit;  import ch.asynk.tankontank.game.hud.ActionButtons.Buttons;  public class StateEntry extends StateCommon  { -    private float x; -    private float y; -    private float z;      private TileSet entryPoint;      @Override @@ -19,20 +17,17 @@ public class StateEntry extends StateCommon      {          if (selectedHex != null)              map.unselectHex(selectedHex); -        activeUnit = ctrl.hud.playerInfo.getDockUnit(); -        entryPoint = ctrl.battle.getEntryPoint(activeUnit); -        entryPoint.enable(Hex.AREA, true); -        ctrl.hud.actionButtons.show(((ctrl.cfg.canCancel) ? Buttons.ABORT.b : 0)); -        x = activeUnit.getPosition().x; -        y = activeUnit.getPosition().x; -        z = activeUnit.getPosition().y; +        entryPoint = null; +        selectedHex = null; +        ctrl.hud.playerInfo.unitDock.show();      }      @Override      public void leave(StateType nextState)      { -        entryPoint.enable(Hex.AREA, false); -        ctrl.hud.playerInfo.hideUnitDock(); +        if (entryPoint != null) +            entryPoint.enable(Hex.AREA, false); +        ctrl.hud.playerInfo.unitDock.hide();      }      @Override @@ -43,24 +38,18 @@ public class StateEntry extends StateCommon      @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); -        } +        Unit unit = ctrl.hud.playerInfo.getDockUnit(); +        if ((unit != null) && (unit != activeUnit)) +            changeUnit(unit); +        else if ((entryPoint != null) && upHex.isEmpty() && entryPoint.contains(upHex)) +            unitEnter(activeUnit); +        else +            ctrl.setState(StateType.SELECT);      }      @Override      public void abort()      { -        activeUnit.setPosition(x, y, z);          super.abort();      } @@ -69,4 +58,27 @@ public class StateEntry extends StateCommon      {          super.done();      } + +    private void changeUnit(Unit unit) +    { +        activeUnit = unit; +        if (entryPoint != null) entryPoint.enable(Hex.AREA, false); +        entryPoint = ctrl.battle.getEntryPoint(activeUnit); +        entryPoint.enable(Hex.AREA, true); +        ctrl.hud.actionButtons.show(((ctrl.cfg.canCancel) ? Buttons.ABORT.b : 0)); +    } + +    private void unitEnter(Unit unit) +    { +        selectedUnit = unit; +        selectedHex = upHex; +        map.selectHex(selectedHex); +        entryPoint.enable(Hex.AREA, false); +        ctrl.player.unitEntry(unit); +        map.enterBoard(unit, upHex, ctrl.battle.getEntryOrientation(ctrl.player)); +        if (unit.getMovementPoints() > 0) +            ctrl.setState(StateType.MOVE, true); +        else +            ctrl.setState(StateType.ROTATE, true); +    }  } | 
