diff options
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); |