summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/tankontank/game
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/ch/asynk/tankontank/game')
-rw-r--r--core/src/ch/asynk/tankontank/game/GameCtrl.java29
-rw-r--r--core/src/ch/asynk/tankontank/game/GameFactory.java43
-rw-r--r--core/src/ch/asynk/tankontank/game/Hud.java22
3 files changed, 62 insertions, 32 deletions
diff --git a/core/src/ch/asynk/tankontank/game/GameCtrl.java b/core/src/ch/asynk/tankontank/game/GameCtrl.java
index e18b99d..af0f788 100644
--- a/core/src/ch/asynk/tankontank/game/GameCtrl.java
+++ b/core/src/ch/asynk/tankontank/game/GameCtrl.java
@@ -38,6 +38,9 @@ public class GameCtrl implements Disposable
public Map map;
public Hud hud;
public Config cfg;
+ public Player gePlayer;
+ public Player usPlayer;
+ public Player currentPlayer;
private GameState selectState;
private GameState pathState;
@@ -55,8 +58,9 @@ public class GameCtrl implements Disposable
this.cfg = new Config();
this.factory = new GameFactory(game.manager);
- this.hud = new Hud(this, game);
this.map = factory.getMap(this, game.manager, GameFactory.MapType.MAP_A);
+ this.usPlayer = factory.getPlayer(Army.US);
+ this.gePlayer = factory.getPlayer(Army.GE);
this.selectState = new GameStateSelect(this, map);
this.pathState = new GameStateMove();
@@ -64,8 +68,9 @@ public class GameCtrl implements Disposable
this.animationState = new GameStateAnimation();
this.state = selectState;
+ this.currentPlayer = factory.fakeSetup(map, gePlayer, usPlayer);
- factory.fakeSetup(map);
+ this.hud = new Hud(this, game);
}
@Override
@@ -101,6 +106,15 @@ public class GameCtrl implements Disposable
}
}
+ private void nextPlayer()
+ {
+ currentPlayer.turnEnd();
+ currentPlayer = ((currentPlayer == usPlayer) ? gePlayer : usPlayer);
+ currentPlayer.turnStart();
+ hud.updatePlayer();
+
+ }
+
public void setState(GameState.State state)
{
setState(state, true);
@@ -113,6 +127,7 @@ public class GameCtrl implements Disposable
switch(state) {
case SELECT:
this.state = selectState;
+ checkTurnEnd();
break;
case MOVE:
this.state = pathState;
@@ -130,6 +145,16 @@ public class GameCtrl implements Disposable
this.state.enter(normal);
}
+ private void checkTurnEnd()
+ {
+ System.err.println(" current player : " + currentPlayer.toString());
+ if (map.activatedPawnsCount() > 0) {
+ currentPlayer.burnDownOneAp();
+ }
+ if (currentPlayer.apExhausted())
+ nextPlayer();
+ }
+
public void abort()
{
state.abort();
diff --git a/core/src/ch/asynk/tankontank/game/GameFactory.java b/core/src/ch/asynk/tankontank/game/GameFactory.java
index bd4294a..b84715d 100644
--- a/core/src/ch/asynk/tankontank/game/GameFactory.java
+++ b/core/src/ch/asynk/tankontank/game/GameFactory.java
@@ -140,31 +140,42 @@ public class GameFactory implements Board.TileBuilder, Disposable
return m;
}
+ public Player getPlayer(Army army)
+ {
+ if (army == Army.US)
+ return new Player(Army.US, pawnAtlas, "us-flag", 10);
+ else
+ return new Player(Army.GE, pawnAtlas, "ge-flag", 10);
+ }
+
public Hex getNewTile(float cx, float cy)
{
return new Hex(cx, cy, pawnAtlas);
}
- public void fakeSetup(Map map)
+ public Player fakeSetup(Map map, Player gePlayer, Player usPlayer)
{
Orientation o = Orientation.NORTH;
GridPoint2 p = new GridPoint2();
- map.setPawnAt(getUnit(UnitType.GE_AT_GUN), p.set(4, 7), o);
- map.setPawnAt(getUnit(UnitType.GE_INFANTRY), p.set(3, 6), o);
- map.setPawnAt(getUnit(UnitType.GE_KINGTIGER), p.set(3, 5), o);
- map.setPawnAt(getUnit(UnitType.GE_PANZER_IV), p.set(2, 4), o);
- map.setPawnAt(getUnit(UnitType.GE_PANZER_IV_HQ), p.set(2, 3), o);
- map.setPawnAt(getUnit(UnitType.GE_TIGER), p.set(1, 2), o);
- map.setPawnAt(getUnit(UnitType.GE_WESPE), p.set(1, 1), o);
+
+ gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_AT_GUN), p.set(4, 7), o));
+ gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_INFANTRY), p.set(3, 6), o));
+ gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_KINGTIGER), p.set(3, 5), o));
+ gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_PANZER_IV), p.set(2, 4), o));
+ gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_PANZER_IV_HQ), p.set(2, 3), o));
+ gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_TIGER), p.set(1, 2), o));
+ gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_WESPE), p.set(1, 1), o));
o = Orientation.SOUTH;
- map.setPawnAt(getUnit(UnitType.US_AT_GUN), p.set(12, 7), o);
- map.setPawnAt(getUnit(UnitType.US_INFANTRY), p.set(11, 6), o);
- map.setPawnAt(getUnit(UnitType.US_PERSHING), p.set(11, 5), o);
- map.setPawnAt(getUnit(UnitType.US_PERSHING_HQ), p.set(10, 4), o);
- map.setPawnAt(getUnit(UnitType.US_PRIEST), p.set(10, 3), o);
- map.setPawnAt(getUnit(UnitType.US_SHERMAN), p.set(9, 2), o);
- map.setPawnAt(getUnit(UnitType.US_SHERMAN_HQ), p.set(9, 1), o);
- map.setPawnAt(getUnit(UnitType.US_WOLVERINE), p.set(8, 0), o);
+ usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_AT_GUN), p.set(12, 7), o));
+ usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_INFANTRY), p.set(11, 6), o));
+ usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_PERSHING), p.set(11, 5), o));
+ usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_PERSHING_HQ), p.set(10, 4), o));
+ usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_PRIEST), p.set(10, 3), o));
+ usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_SHERMAN), p.set(9, 2), o));
+ usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_SHERMAN_HQ), p.set(9, 1), o));
+ usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_WOLVERINE), p.set(8, 0), o));
+
+ return usPlayer;
}
}
diff --git a/core/src/ch/asynk/tankontank/game/Hud.java b/core/src/ch/asynk/tankontank/game/Hud.java
index 2273724..ee01a18 100644
--- a/core/src/ch/asynk/tankontank/game/Hud.java
+++ b/core/src/ch/asynk/tankontank/game/Hud.java
@@ -21,8 +21,6 @@ public class Hud implements Disposable
private final TankOnTank game;
private final GameCtrl ctrl;
- private Image usFlag;
- private Image geFlag;
private Image flag;
public Button moveBtn;
@@ -46,18 +44,15 @@ public class Hud implements Disposable
TextureAtlas atlas = game.manager.get("data/assets.atlas", TextureAtlas.class);
- usFlag = new Image(atlas.findRegion("us-flag"));
- geFlag = new Image(atlas.findRegion("ge-flag"));
moveBtn = new Button(atlas, "btn-move");
rotateBtn = new Button(atlas, "btn-rotate");
attackBtn = new Button(atlas, "btn-attack");
checkBtn = new Button(atlas, "btn-check");
cancelBtn = new Button(atlas, "btn-cancel");
- flag = usFlag;
+ updatePlayer();
- usFlag.setPosition(OFFSET, (Gdx.graphics.getHeight() - flag.getHeight() - OFFSET));
- geFlag.setPosition(flag.getX(), flag.getY());
+ flag.setPosition(OFFSET, (Gdx.graphics.getHeight() - flag.getHeight() - OFFSET));
// TODO add counters for
// - Action Points
// - Turn
@@ -71,8 +66,6 @@ public class Hud implements Disposable
@Override
public void dispose()
{
- usFlag.dispose();
- geFlag.dispose();
moveBtn.dispose();
rotateBtn.dispose();
attackBtn.dispose();
@@ -82,11 +75,6 @@ public class Hud implements Disposable
public void animate(float delta)
{
- elapsed += delta;
- if (elapsed > 5f) {
- elapsed = 0f;
- flag = ((flag == usFlag) ? geFlag : usFlag);
- }
}
public void draw(Batch batch)
@@ -99,6 +87,12 @@ public class Hud implements Disposable
if (cancelBtn.visible) cancelBtn.getImage().draw(batch);
}
+ public void updatePlayer()
+ {
+ flag = ctrl.currentPlayer.getFlag();
+ flag.setPosition(OFFSET, (Gdx.graphics.getHeight() - flag.getHeight() - OFFSET));
+ }
+
private float setButton(Button btn, float x, float y)
{
// btn.setOff();