summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/tankontank
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/ch/asynk/tankontank')
-rw-r--r--core/src/ch/asynk/tankontank/game/Battle.java2
-rw-r--r--core/src/ch/asynk/tankontank/game/Ctrl.java5
-rw-r--r--core/src/ch/asynk/tankontank/game/battles/BattleHeadToHead.java39
3 files changed, 27 insertions, 19 deletions
diff --git a/core/src/ch/asynk/tankontank/game/Battle.java b/core/src/ch/asynk/tankontank/game/Battle.java
index ec60ffc..5112355 100644
--- a/core/src/ch/asynk/tankontank/game/Battle.java
+++ b/core/src/ch/asynk/tankontank/game/Battle.java
@@ -19,7 +19,7 @@ public interface Battle
public void setup(Map map, Player firstPlayer, Player secondPlayer);
- public boolean checkVictory(Ctrl ctrl);
+ public Player checkVictory(Ctrl ctrl);
public TileSet getEntryPoint(Unit unit);
diff --git a/core/src/ch/asynk/tankontank/game/Ctrl.java b/core/src/ch/asynk/tankontank/game/Ctrl.java
index 25e4e62..25a4f79 100644
--- a/core/src/ch/asynk/tankontank/game/Ctrl.java
+++ b/core/src/ch/asynk/tankontank/game/Ctrl.java
@@ -102,8 +102,9 @@ public class Ctrl implements Disposable
private void nextPlayer()
{
player.turnEnd();
- if (battle.checkVictory(this)) {
- TankOnTank.debug("TODO " + player + " has won !!!!!!!!!!!");
+ Player winner = battle.checkVictory(this);
+ if (winner != null) {
+ TankOnTank.debug("TODO " + winner + " has won !!!!!!!!!!!");
}
Player tmp = player;
player = opponent;
diff --git a/core/src/ch/asynk/tankontank/game/battles/BattleHeadToHead.java b/core/src/ch/asynk/tankontank/game/battles/BattleHeadToHead.java
index 42c01d2..167c53a 100644
--- a/core/src/ch/asynk/tankontank/game/battles/BattleHeadToHead.java
+++ b/core/src/ch/asynk/tankontank/game/battles/BattleHeadToHead.java
@@ -6,10 +6,12 @@ import com.badlogic.gdx.math.GridPoint2;
import ch.asynk.tankontank.game.Ctrl;
import ch.asynk.tankontank.game.Map;
+import ch.asynk.tankontank.game.Hex;
import ch.asynk.tankontank.game.Army;
import ch.asynk.tankontank.game.Player;
import ch.asynk.tankontank.game.Unit;
import ch.asynk.tankontank.game.Unit.UnitId;
+import ch.asynk.tankontank.engine.Tile;
import ch.asynk.tankontank.engine.TileSet;
import ch.asynk.tankontank.engine.Orientation;
@@ -21,28 +23,33 @@ public class BattleHeadToHead extends BattleCommon
randomizeArmies();
}
- public boolean checkVictory(Ctrl ctrl)
+ public Player checkVictory(Ctrl ctrl)
{
if (ctrl.opponent.unitsLeft() == 0)
- return true;
+ return null;
if ((ctrl.player.getTurn() < 10) || (ctrl.opponent.getTurn() < 10))
- return false;
+ return null;
Unit unit;
- int objectives = 0;
-
- unit = ctrl.map.getHex(7, 7).getUnit();
- if ((unit != null) && (!ctrl.player.isEnemy(unit)))
- objectives += 1;
- unit = ctrl.map.getHex(6, 4).getUnit();
- if ((unit != null) && (!ctrl.player.isEnemy(unit)))
- objectives += 1;
- unit = ctrl.map.getHex(6, 1).getUnit();
- if ((unit != null) && (!ctrl.player.isEnemy(unit)))
- objectives += 1;
-
- return (objectives > 1);
+ int player = 0;
+ int opponent = 0;
+
+ for (Tile tile : objectives) {
+ unit = ((Hex) tile).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;
+ return null;
}
@Override