summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/tankontank/game/GameCtrl.java
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2014-10-02 20:33:34 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2014-10-02 20:33:34 +0200
commit3702f9b3c896fba0436521e1c6ab5b8367eae6b6 (patch)
tree826022b5f373da564c229f9994274a4ae0f5e987 /core/src/ch/asynk/tankontank/game/GameCtrl.java
parent6e6367cd4a20f104acff042905b60b0aced36c52 (diff)
downloadRustAndDust-3702f9b3c896fba0436521e1c6ab5b8367eae6b6.zip
RustAndDust-3702f9b3c896fba0436521e1c6ab5b8367eae6b6.tar.gz
add GameState* and GameCtrl
Diffstat (limited to 'core/src/ch/asynk/tankontank/game/GameCtrl.java')
-rw-r--r--core/src/ch/asynk/tankontank/game/GameCtrl.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/core/src/ch/asynk/tankontank/game/GameCtrl.java b/core/src/ch/asynk/tankontank/game/GameCtrl.java
new file mode 100644
index 0000000..356e4eb
--- /dev/null
+++ b/core/src/ch/asynk/tankontank/game/GameCtrl.java
@@ -0,0 +1,58 @@
+package ch.asynk.tankontank.game;
+
+import ch.asynk.tankontank.game.Map;
+
+public class GameCtrl
+{
+ private GameState noneState = new GameStateNone();
+ private GameState pathState = new GameStatePath();
+ private GameState directionState = new GameStateDirection();
+
+ private GameState state;
+
+ public GameCtrl(Map map)
+ {
+ this.noneState = new GameStateNone(this, map);
+ this.pathState = new GameStatePath();
+ this.directionState = new GameStateDirection();
+
+ this.state = noneState;
+ }
+
+ public void setState(GameState.State state, boolean forward)
+ {
+ switch(state) {
+ case NONE:
+ this.state = noneState;
+ break;
+ case PATH:
+ this.state = pathState;
+ break;
+ case DIRECTION:
+ this.state = directionState;
+ break;
+ default:
+ break;
+ }
+
+ if (forward)
+ this.state.touchDown();
+ }
+
+ public void touchDown(float x, float y)
+ {
+ if (GameStateCommon.down(x, y))
+ state.touchDown();
+ }
+
+ public void touchUp(float x, float y)
+ {
+ if (GameStateCommon.up(x, y))
+ state.touchUp();
+ }
+
+ public boolean drag(float dx, float dy)
+ {
+ return state.drag(dx, dy);
+ }
+}