summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/tankontank
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/ch/asynk/tankontank')
-rw-r--r--core/src/ch/asynk/tankontank/game/GameCtrl.java13
-rw-r--r--core/src/ch/asynk/tankontank/game/GameState.java8
-rw-r--r--core/src/ch/asynk/tankontank/game/states/GameStateAnimation.java2
-rw-r--r--core/src/ch/asynk/tankontank/game/states/GameStateCommon.java16
-rw-r--r--core/src/ch/asynk/tankontank/game/states/GameStateDirection.java2
-rw-r--r--core/src/ch/asynk/tankontank/game/states/GameStateMove.java2
-rw-r--r--core/src/ch/asynk/tankontank/game/states/GameStateRotate.java2
-rw-r--r--core/src/ch/asynk/tankontank/game/states/GameStateSelect.java2
8 files changed, 36 insertions, 11 deletions
diff --git a/core/src/ch/asynk/tankontank/game/GameCtrl.java b/core/src/ch/asynk/tankontank/game/GameCtrl.java
index 76f79ab..6202ef4 100644
--- a/core/src/ch/asynk/tankontank/game/GameCtrl.java
+++ b/core/src/ch/asynk/tankontank/game/GameCtrl.java
@@ -87,15 +87,22 @@ public class GameCtrl implements Disposable
public void animationDone()
{
- setState(GameState.State.VIEW);
+ GameState.State next = state.getNextState();
+ state.setNextState(GameState.State.SELECT);
+ setState(next, (next == GameState.State.SELECT));
}
public void setState(GameState.State state)
{
+ setState(state, true);
+ }
+
+ public void setState(GameState.State state, boolean reset)
+ {
this.state.leave();
switch(state) {
- case VIEW:
+ case SELECT:
this.state = selectState;
break;
case MOVE:
@@ -114,7 +121,7 @@ public class GameCtrl implements Disposable
break;
}
- this.state.enter();
+ this.state.enter(reset);
}
public void abort()
diff --git a/core/src/ch/asynk/tankontank/game/GameState.java b/core/src/ch/asynk/tankontank/game/GameState.java
index c64c51e..e8802bf 100644
--- a/core/src/ch/asynk/tankontank/game/GameState.java
+++ b/core/src/ch/asynk/tankontank/game/GameState.java
@@ -3,14 +3,14 @@ package ch.asynk.tankontank.game;
public interface GameState
{
enum State {
- VIEW,
+ SELECT,
MOVE,
DIRECTION,
ROTATE,
ANIMATION
};
- public void enter();
+ public void enter(boolean reset);
public void leave();
@@ -23,4 +23,8 @@ public interface GameState
public boolean downInMap(float x, float y);
public boolean upInMap(float x, float y);
+
+ public GameState.State getNextState();
+
+ public void setNextState(GameState.State next);
}
diff --git a/core/src/ch/asynk/tankontank/game/states/GameStateAnimation.java b/core/src/ch/asynk/tankontank/game/states/GameStateAnimation.java
index a7e69a3..5bb63fa 100644
--- a/core/src/ch/asynk/tankontank/game/states/GameStateAnimation.java
+++ b/core/src/ch/asynk/tankontank/game/states/GameStateAnimation.java
@@ -3,7 +3,7 @@ package ch.asynk.tankontank.game.states;
public class GameStateAnimation extends GameStateCommon
{
@Override
- public void enter()
+ public void enter(boolean reset)
{
}
diff --git a/core/src/ch/asynk/tankontank/game/states/GameStateCommon.java b/core/src/ch/asynk/tankontank/game/states/GameStateCommon.java
index d7e17d4..4288ba0 100644
--- a/core/src/ch/asynk/tankontank/game/states/GameStateCommon.java
+++ b/core/src/ch/asynk/tankontank/game/states/GameStateCommon.java
@@ -21,6 +21,8 @@ public abstract class GameStateCommon implements GameState
protected static GridPoint2 from = new GridPoint2(-1, -1);
protected static GridPoint2 to = new GridPoint2(-1, -1);
+ protected static GameState.State nextState = GameState.State.SELECT;
+
protected GameStateCommon()
{
}
@@ -32,13 +34,25 @@ public abstract class GameStateCommon implements GameState
}
@Override
+ public GameState.State getNextState()
+ {
+ return nextState;
+ }
+
+ @Override
+ public void setNextState(GameState.State state)
+ {
+ nextState = state;
+ }
+
+ @Override
public void abort()
{
unselectHex(hex);
hex.set(0, 0);
pawn = null;
ctrl.hud.hide();
- ctrl.setState(State.VIEW);
+ ctrl.setState(State.SELECT);
}
protected static boolean hexInMap(GridPoint2 hex)
diff --git a/core/src/ch/asynk/tankontank/game/states/GameStateDirection.java b/core/src/ch/asynk/tankontank/game/states/GameStateDirection.java
index eb6f22c..f1b2bb5 100644
--- a/core/src/ch/asynk/tankontank/game/states/GameStateDirection.java
+++ b/core/src/ch/asynk/tankontank/game/states/GameStateDirection.java
@@ -5,7 +5,7 @@ import ch.asynk.tankontank.engine.Orientation;
public class GameStateDirection extends GameStateCommon
{
@Override
- public void enter()
+ public void enter(boolean reset)
{
map.showFinalPath(to, true);
}
diff --git a/core/src/ch/asynk/tankontank/game/states/GameStateMove.java b/core/src/ch/asynk/tankontank/game/states/GameStateMove.java
index 1331adc..8238cd8 100644
--- a/core/src/ch/asynk/tankontank/game/states/GameStateMove.java
+++ b/core/src/ch/asynk/tankontank/game/states/GameStateMove.java
@@ -3,7 +3,7 @@ package ch.asynk.tankontank.game.states;
public class GameStateMove extends GameStateCommon
{
@Override
- public void enter()
+ public void enter(boolean reset)
{
map.clearPossiblePaths();
buildAndShowMoves();
diff --git a/core/src/ch/asynk/tankontank/game/states/GameStateRotate.java b/core/src/ch/asynk/tankontank/game/states/GameStateRotate.java
index 75167ad..d3848b0 100644
--- a/core/src/ch/asynk/tankontank/game/states/GameStateRotate.java
+++ b/core/src/ch/asynk/tankontank/game/states/GameStateRotate.java
@@ -5,7 +5,7 @@ import ch.asynk.tankontank.engine.Orientation;
public class GameStateRotate extends GameStateCommon
{
@Override
- public void enter()
+ public void enter(boolean reset)
{
map.showDirections(hex, true);
ctrl.hud.show(true, false, false, ctrl.cfg.mustValidate, ctrl.cfg.canCancel);
diff --git a/core/src/ch/asynk/tankontank/game/states/GameStateSelect.java b/core/src/ch/asynk/tankontank/game/states/GameStateSelect.java
index 49c15fc..bb15acc 100644
--- a/core/src/ch/asynk/tankontank/game/states/GameStateSelect.java
+++ b/core/src/ch/asynk/tankontank/game/states/GameStateSelect.java
@@ -11,7 +11,7 @@ public class GameStateSelect extends GameStateCommon
}
@Override
- public void enter()
+ public void enter(boolean reset)
{
}