blob: 9c39ef8f1501cee312832fba1b3e43de1cad0726 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
package ch.asynk.tankontank.game;
import com.badlogic.gdx.utils.Disposable;
import ch.asynk.tankontank.TankOnTank;
import ch.asynk.tankontank.game.states.GameStateCommon;
import ch.asynk.tankontank.game.states.GameStateView;
import ch.asynk.tankontank.game.states.GameStateMove;
import ch.asynk.tankontank.game.states.GameStateDirection;
import ch.asynk.tankontank.game.states.GameStateRotate;
import ch.asynk.tankontank.game.states.GameStateAnimation;
public class GameCtrl implements Disposable
{
private final TankOnTank game;
private GameFactory factory;
public Map map;
public Hud hud;
private GameState viewState;
private GameState pathState;
private GameState directionState;
private GameState rotateState;
private GameState animationState;
private GameState state;
public GameCtrl(final TankOnTank game)
{
this.game = game;
this.factory = new GameFactory(game.manager);
this.hud = new Hud(this, game);
this.map = factory.getMap(this, game.manager, GameFactory.MapType.MAP_A);
this.viewState = new GameStateView(this, map);
this.pathState = new GameStateMove();
this.directionState = new GameStateDirection();
this.rotateState = new GameStateRotate();
this.animationState = new GameStateAnimation();
this.state = viewState;
factory.fakeSetup(map);
}
@Override
public void dispose()
{
hud.dispose();
map.dispose();
factory.dispose();
}
public boolean mayProcessTouch()
{
return (state != animationState);
}
public boolean isInAction()
{
return (state != viewState);
}
public void animationDone()
{
hud.reset();
setState(GameState.State.VIEW);
}
public void setState(GameState.State state)
{
switch(state) {
case VIEW:
this.state = viewState;
break;
case MOVE:
this.state = pathState;
break;
case DIRECTION:
this.state = directionState;
break;
case ROTATE:
this.state = rotateState;
break;
case ANIMATION:
this.state = animationState;
hud.disableCancel();
break;
default:
break;
}
this.state.enter();
}
public void abort()
{
state.abort();
}
public void touchDown(float x, float y)
{
if (state.downInMap(x, y))
state.touchDown();
}
public void touchUp(float x, float y)
{
if (state.upInMap(x, y))
state.touchUp();
}
}
|