summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/src/ch/asynk/tankontank/game/Ctrl.java35
-rw-r--r--core/src/ch/asynk/tankontank/game/Hud.java2
-rw-r--r--core/src/ch/asynk/tankontank/game/states/StateAttack.java8
-rw-r--r--core/src/ch/asynk/tankontank/game/states/StateCommon.java2
4 files changed, 29 insertions, 18 deletions
diff --git a/core/src/ch/asynk/tankontank/game/Ctrl.java b/core/src/ch/asynk/tankontank/game/Ctrl.java
index 8fae035..dd92575 100644
--- a/core/src/ch/asynk/tankontank/game/Ctrl.java
+++ b/core/src/ch/asynk/tankontank/game/Ctrl.java
@@ -18,9 +18,8 @@ public class Ctrl implements Disposable
public Map map;
public Hud hud;
public Config cfg;
- public Player gePlayer;
- public Player usPlayer;
- public Player currentPlayer;
+ private int player;
+ private Player players[] = new Player[2];
private State selectState;
private State pathState;
@@ -40,8 +39,9 @@ public class Ctrl implements Disposable
this.factory = new Factory(game.manager);
this.map = factory.getMap(this, game.manager, Factory.MapType.MAP_A);
- this.usPlayer = factory.getPlayer(Army.US);
- this.gePlayer = factory.getPlayer(Army.GE);
+
+ this.players[0] = factory.getPlayer(Army.GE);
+ this.players[1] = factory.getPlayer(Army.US);
this.selectState = new StateSelect(this, map);
this.pathState = new StateMove();
@@ -50,11 +50,12 @@ public class Ctrl implements Disposable
this.animationState = new StateAnimation();
this.state = selectState;
- this.currentPlayer = factory.fakeSetup(map, gePlayer, usPlayer);
+ factory.fakeSetup(map, players[0], players[1]);
+ player = (new java.util.Random()).nextInt(2);
this.hud = new Hud(this, game);
- currentPlayer.turnStart();
+ currentPlayer().turnStart();
}
@Override
@@ -65,6 +66,16 @@ public class Ctrl implements Disposable
factory.dispose();
}
+ public Player currentPlayer()
+ {
+ return this.players[player];
+ }
+
+ public Player otherPlayer()
+ {
+ return this.players[((player + 1) % 2)];
+ }
+
public boolean mayProcessTouch()
{
return (state != animationState);
@@ -92,9 +103,9 @@ public class Ctrl implements Disposable
private void nextPlayer()
{
- currentPlayer.turnEnd();
- currentPlayer = ((currentPlayer == usPlayer) ? gePlayer : usPlayer);
- currentPlayer.turnStart();
+ currentPlayer().turnEnd();
+ player = ((player + 1) % 2);
+ currentPlayer().turnStart();
hud.updatePlayer();
}
@@ -136,9 +147,9 @@ public class Ctrl implements Disposable
private void checkTurnEnd()
{
if (map.activatedPawnsCount() > 0) {
- currentPlayer.burnDownOneAp();
+ currentPlayer().burnDownOneAp();
}
- if (currentPlayer.apExhausted())
+ if (currentPlayer().apExhausted())
nextPlayer();
}
diff --git a/core/src/ch/asynk/tankontank/game/Hud.java b/core/src/ch/asynk/tankontank/game/Hud.java
index 9a80143..91af8b3 100644
--- a/core/src/ch/asynk/tankontank/game/Hud.java
+++ b/core/src/ch/asynk/tankontank/game/Hud.java
@@ -89,7 +89,7 @@ public class Hud implements Disposable
public void updatePlayer()
{
- flag = ctrl.currentPlayer.getFlag();
+ flag = ctrl.currentPlayer().getFlag();
flag.setPosition(OFFSET, (Gdx.graphics.getHeight() - flag.getHeight() - OFFSET));
}
diff --git a/core/src/ch/asynk/tankontank/game/states/StateAttack.java b/core/src/ch/asynk/tankontank/game/states/StateAttack.java
index c8b104c..7c4d6b2 100644
--- a/core/src/ch/asynk/tankontank/game/states/StateAttack.java
+++ b/core/src/ch/asynk/tankontank/game/states/StateAttack.java
@@ -54,7 +54,7 @@ public class StateAttack extends StateCommon
to.set(upHex);
activePawn = map.getTopPawnAt(to);
map.showTarget(to, true);
- map.buildAttack(selectedPawn, activePawn, to, ctrl.currentPlayer.unitIterator());
+ map.buildAttackAssists(selectedPawn, activePawn, to, ctrl.currentPlayer().unitIterator());
map.showAttackAssists(true);
ctrl.hud.show(false, false, true, true, ctrl.cfg.canCancel);
}
@@ -79,12 +79,12 @@ public class StateAttack extends StateCommon
@Override
public void done()
{
- int d1 = ctrl.currentPlayer.d6();
- int d2 = ctrl.currentPlayer.d6();
+ int d1 = ctrl.currentPlayer().d6();
+ int d2 = ctrl.currentPlayer().d6();
System.err.print(" attack (" + from.x + ";" + from.y + ") -> (" + to.x + ";" + to.y + ") : 2D6 -> (" + d1 + " + " + d2 + ")");
if (map.attackPawn(selectedPawn, activePawn, from, to, d1 + d2)) {
map.removePawnFrom(activePawn, to);
- ctrl.currentPlayer.casualty(activePawn);
+ ctrl.currentPlayer().casualty(activePawn);
// TODO free move for infantry
}
diff --git a/core/src/ch/asynk/tankontank/game/states/StateCommon.java b/core/src/ch/asynk/tankontank/game/states/StateCommon.java
index 86b8838..df4dc56 100644
--- a/core/src/ch/asynk/tankontank/game/states/StateCommon.java
+++ b/core/src/ch/asynk/tankontank/game/states/StateCommon.java
@@ -110,7 +110,7 @@ public abstract class StateCommon implements State
selectedPawn = map.getTopPawnAt(selectedHex);
map.selectHex(selectedHex);
if (selectedPawn != null)
- isEnemy = ctrl.currentPlayer.isEnemy(selectedPawn);
+ isEnemy = ctrl.currentPlayer().isEnemy(selectedPawn);
else
isEnemy = false;
System.err.println(" select (" + selectedHex.x + ";" + selectedHex.y + ") " + selectedPawn + (isEnemy ? " enemy " : " friend "));