summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/ch/asynk')
-rw-r--r--core/src/ch/asynk/tankontank/game/Map.java13
-rw-r--r--core/src/ch/asynk/tankontank/game/battles/BattleCommon.java1
-rw-r--r--core/src/ch/asynk/tankontank/game/battles/BattleFrontalAssault.java17
-rw-r--r--core/src/ch/asynk/tankontank/game/battles/BattleHeadToHead.java30
-rw-r--r--core/src/ch/asynk/tankontank/game/battles/BattleLastStand.java16
-rw-r--r--core/src/ch/asynk/tankontank/game/battles/BattleStabToTheFlank.java13
6 files changed, 33 insertions, 57 deletions
diff --git a/core/src/ch/asynk/tankontank/game/Map.java b/core/src/ch/asynk/tankontank/game/Map.java
index 15f73c8..bd04a70 100644
--- a/core/src/ch/asynk/tankontank/game/Map.java
+++ b/core/src/ch/asynk/tankontank/game/Map.java
@@ -34,6 +34,7 @@ public abstract class Map extends Board
public final UnitList engagementAssists;
public final UnitList activatedUnits;
public final UnitList breakUnits;
+ public final ObjectiveSet objectives;
public final Meteorology meteorology;
@@ -71,6 +72,8 @@ public abstract class Map extends Board
activatedUnits = new UnitList(7);
breakUnits = new UnitList(4);
+ objectives = new ObjectiveSet(this, 4);
+
meteorology = new Meteorology();
}
@@ -106,6 +109,16 @@ public abstract class Map extends Board
return (Hex) getTile(col, row);
}
+ public void addObjective(int col, int row, Army army)
+ {
+ objectives.add(getHex(col, row), army, true);
+ }
+
+ public void addHoldObjective(int col, int row, Army army)
+ {
+ objectives.add(getHex(col, row), army, false);
+ }
+
public int collectPossibleMoves(Unit unit)
{
if (!unit.canMove()) {
diff --git a/core/src/ch/asynk/tankontank/game/battles/BattleCommon.java b/core/src/ch/asynk/tankontank/game/battles/BattleCommon.java
index a816799..cf60324 100644
--- a/core/src/ch/asynk/tankontank/game/battles/BattleCommon.java
+++ b/core/src/ch/asynk/tankontank/game/battles/BattleCommon.java
@@ -28,7 +28,6 @@ public abstract class BattleCommon implements Battle
protected ArrayList<Zone> exitZone = new ArrayList<Zone>();
protected HashMap<Unit, Zone> unitEntry = new HashMap<Unit, Zone>();
protected HashMap<Unit, Zone> unitExit = new HashMap<Unit, Zone>();
- protected HexSet objectives;
public BattleCommon(Factory factory)
{
diff --git a/core/src/ch/asynk/tankontank/game/battles/BattleFrontalAssault.java b/core/src/ch/asynk/tankontank/game/battles/BattleFrontalAssault.java
index 173e719..653052b 100644
--- a/core/src/ch/asynk/tankontank/game/battles/BattleFrontalAssault.java
+++ b/core/src/ch/asynk/tankontank/game/battles/BattleFrontalAssault.java
@@ -68,14 +68,7 @@ public class BattleFrontalAssault extends BattleCommon
if ((ctrl.player.getTurnDone() < 10) || (ctrl.opponent.getTurnDone() < 10))
return null;
- int count = 0;
- for (Hex hex : objectives) {
- Unit unit = hex.getUnit();
- if ((unit != null) && unit.is(Army.US))
- count =+ 1;
- }
-
- if (count > 1)
+ if (ctrl.map.objectives.count(Army.US) >= 2)
return usPlayer;
else
return gePlayer;
@@ -85,11 +78,9 @@ public class BattleFrontalAssault extends BattleCommon
public void setup(Ctrl ctrl, Map map)
{
// G9, E6, H4
- objectives = new HexSet(map, 3);
- objectives.add(map.getHex(2, 2));
- objectives.add(map.getHex(6, 4));
- objectives.add(map.getHex(6, 1));
- objectives.enable(Hex.OBJECTIVE, true);
+ map.addObjective(2, 2, Army.NONE);
+ map.addObjective(6, 4, Army.NONE);
+ map.addObjective(6, 1, Army.NONE);
// hex rows E-H
Zone geEntry = new Zone(map, 38);
diff --git a/core/src/ch/asynk/tankontank/game/battles/BattleHeadToHead.java b/core/src/ch/asynk/tankontank/game/battles/BattleHeadToHead.java
index e3e9c80..52868a2 100644
--- a/core/src/ch/asynk/tankontank/game/battles/BattleHeadToHead.java
+++ b/core/src/ch/asynk/tankontank/game/battles/BattleHeadToHead.java
@@ -53,23 +53,11 @@ public class BattleHeadToHead extends BattleCommon
if ((ctrl.player.getTurnDone() < 10) || (ctrl.opponent.getTurnDone() < 10))
return null;
- int player = 0;
- int opponent = 0;
-
- for (Hex hex : objectives) {
- Unit unit = hex.getUnit();
- if (unit != null) {
- if (ctrl.player.isEnemy(unit))
- opponent += 1;
- else
- player += 1;
- }
- }
-
- if (player > 1)
- return ctrl.player;
- else if (opponent > 1)
- return ctrl.opponent;
+ if (ctrl.map.objectives.count(Army.US) >= 2)
+ return usPlayer;
+ if (ctrl.map.objectives.count(Army.GE) >= 2)
+ return gePlayer;
+
return null;
}
@@ -81,11 +69,9 @@ public class BattleHeadToHead extends BattleCommon
gePlayer.turnEnd();
// B6, E6, H4
- objectives = new HexSet(map, 3);
- objectives.add(map.getHex(7, 7));
- objectives.add(map.getHex(6, 4));
- objectives.add(map.getHex(6, 1));
- objectives.enable(Hex.OBJECTIVE, true);
+ map.addObjective(7, 7, Army.NONE);
+ map.addObjective(6, 4, Army.NONE);
+ map.addObjective(6, 1, Army.NONE);
// southern hex row
Zone geEntry = new Zone(map, 9);
diff --git a/core/src/ch/asynk/tankontank/game/battles/BattleLastStand.java b/core/src/ch/asynk/tankontank/game/battles/BattleLastStand.java
index 3430d88..234ceed 100644
--- a/core/src/ch/asynk/tankontank/game/battles/BattleLastStand.java
+++ b/core/src/ch/asynk/tankontank/game/battles/BattleLastStand.java
@@ -54,15 +54,11 @@ public class BattleLastStand extends BattleCommon
int gePoints = usPlayer.casualties();
int usPoints = gePlayer.casualties();
+ usPoints += ctrl.map.objectives.count(Army.US);
for (Unit unit : gePlayer.casualties) {
if (unit.isAce())
usPoints += 1;
}
- for (Hex hex: objectives) {
- Unit unit = hex.getUnit();
- if ((unit != null) && unit.is(Army.US))
- usPoints += 1;
- }
if (usPoints > gePoints)
return usPlayer;
@@ -74,12 +70,10 @@ public class BattleLastStand extends BattleCommon
public void setup(Ctrl ctrl, Map map)
{
// A7, E6, F6, G10
- objectives = new HexSet(map, 4);
- objectives.add(map.getHex(7, 8));
- objectives.add(map.getHex(6, 4));
- objectives.add(map.getHex(5, 3));
- objectives.add(map.getHex(1, 2));
- objectives.enable(Hex.OBJECTIVE, true);
+ map.addObjective(7, 8, Army.NONE);
+ map.addObjective(6, 4, Army.NONE);
+ map.addObjective(5, 3, Army.NONE);
+ map.addObjective(1, 2, Army.NONE);
// 1 hex of E7
Zone geEntry = new Zone(map, 7);
diff --git a/core/src/ch/asynk/tankontank/game/battles/BattleStabToTheFlank.java b/core/src/ch/asynk/tankontank/game/battles/BattleStabToTheFlank.java
index 9e8a61e..f529d4b 100644
--- a/core/src/ch/asynk/tankontank/game/battles/BattleStabToTheFlank.java
+++ b/core/src/ch/asynk/tankontank/game/battles/BattleStabToTheFlank.java
@@ -52,6 +52,7 @@ public class BattleStabToTheFlank extends BattleCommon
int gePoints = usPlayer.casualties();
int usPoints = gePlayer.casualties();
+ usPoints += ctrl.map.objectives.count(Army.US);
int escaped = usPlayer.escaped();
if (escaped == 0)
@@ -59,12 +60,6 @@ public class BattleStabToTheFlank extends BattleCommon
else
usPoints += escaped;
- for (Hex hex : objectives) {
- Unit unit = hex.getUnit();
- if ((unit != null) && unit.is(Army.US))
- usPoints += 1;
- }
-
if (usPoints > gePoints)
return usPlayer;
else
@@ -95,10 +90,8 @@ public class BattleStabToTheFlank extends BattleCommon
public void setup(Ctrl ctrl, Map map)
{
// F6, E6
- objectives = new HexSet(map, 2);
- objectives.add(map.getHex(5, 3));
- objectives.add(map.getHex(6, 4));
- objectives.enable(Hex.OBJECTIVE, true);
+ map.addHoldObjective(5, 3, Army.NONE);
+ map.addObjective(6, 4, Army.NONE);
// hex rows D-I
Zone geEntry = new Zone(map, 57);