diff options
-rw-r--r-- | core/src/ch/asynk/tankontank/engine/Player.java | 90 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/game/Player.java | 105 |
2 files changed, 91 insertions, 104 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/Player.java b/core/src/ch/asynk/tankontank/engine/Player.java deleted file mode 100644 index 8bda179..0000000 --- a/core/src/ch/asynk/tankontank/engine/Player.java +++ /dev/null @@ -1,90 +0,0 @@ -package ch.asynk.tankontank.engine; - -import java.util.List; -import java.util.ArrayList; -import java.util.Random; -import java.util.Iterator; - -import ch.asynk.tankontank.engine.Pawn; - -public abstract class Player -{ - public Faction faction; - public ArrayList<Pawn> units; - public ArrayList<Pawn> casualties; - public ArrayList<Pawn> reinforcement; - - public abstract void turnEnd(); - public abstract void turnStart(); - - public Player(Faction faction, int n) - { - this.faction = faction; - this.units = new ArrayList<Pawn>(n); - this.casualties = new ArrayList<Pawn>(n); - this.reinforcement = new ArrayList<Pawn>(n); - } - - public String getName() - { - return faction.toString(); - } - - public boolean is(Faction faction) - { - return (this.faction == faction); - } - - public boolean isEnemy(Pawn pawn) - { - return pawn.isEnemy(faction); - } - - public boolean isEnemy(Faction other) - { - return faction.isEnemy(other); - } - - public int unitsLeft() - { - return (units.size() + reinforcement.size()); - } - - public int reinforcement() - { - return reinforcement.size(); - } - - public int casualties() - { - return casualties.size(); - } - - public void addUnit(Pawn pawn) - { - units.add(pawn); - } - - public void addReinforcement(Pawn pawn) - { - reinforcement.add(pawn); - } - - public void unitEntry(Pawn pawn) - { - reinforcement.remove(pawn); - units.add(pawn); - } - - public void revertUnitEntry(Pawn pawn) - { - units.remove(pawn); - reinforcement.add(pawn); - } - - public void casualty(Pawn pawn) - { - units.remove(pawn); - casualties.add(pawn); - } -} diff --git a/core/src/ch/asynk/tankontank/game/Player.java b/core/src/ch/asynk/tankontank/game/Player.java index ca0977b..636fdd5 100644 --- a/core/src/ch/asynk/tankontank/game/Player.java +++ b/core/src/ch/asynk/tankontank/game/Player.java @@ -1,11 +1,13 @@ package ch.asynk.tankontank.game; import java.util.Random; +import java.util.List; +import java.util.ArrayList; import ch.asynk.tankontank.TankOnTank; import ch.asynk.tankontank.engine.Pawn; -public class Player extends ch.asynk.tankontank.engine.Player +public class Player { private static final float MOVE_TIME = 0.4f; @@ -15,14 +17,22 @@ public class Player extends ch.asynk.tankontank.engine.Player private int apSpent; private int actionPoints; private boolean deploymentDone; - // stats + + public Army army; + public ArrayList<Unit> units; + public ArrayList<Unit> casualties; + public ArrayList<Unit> reinforcement; + public int actionCount; public int lostEngagementCount; public int wonEngagementCount; public Player(final TankOnTank game, Army army, int n) { - super(army, n); + this.army = army; + this.units = new ArrayList<Unit>(n); + this.casualties = new ArrayList<Unit>(n); + this.reinforcement = new ArrayList<Unit>(n); this.turn = 0; this.apSpent = 0; this.actionPoints = 0; @@ -32,9 +42,14 @@ public class Player extends ch.asynk.tankontank.engine.Player this.wonEngagementCount = 0; } + public String getName() + { + return army.toString(); + } + public String toString() { - return faction + " AP: " + actionPoints + + return army + " AP: " + actionPoints + " units:" + units.size() + " casualties:" + casualties.size(); } @@ -43,6 +58,70 @@ public class Player extends ch.asynk.tankontank.engine.Player return String.format("%s\n%4d\n%4d\n%4d\n%4d\n%4d", getName(), actionCount, unitsLeft(), casualties.size(), wonEngagementCount, lostEngagementCount); } + public boolean is(Army army) + { + return (this.army == army); + } + + public boolean isEnemy(Unit unit) + { + return unit.isEnemy(army); + } + + public boolean isEnemy(Army other) + { + return army.isEnemy(other); + } + + @SuppressWarnings("unchecked") + public List<Pawn> unitsAsPawns() + { + return (List) units; + } + + public int unitsLeft() + { + return (units.size() + reinforcement.size()); + } + + public int reinforcement() + { + return reinforcement.size(); + } + + public int casualties() + { + return casualties.size(); + } + + public void addUnit(Unit unit) + { + units.add(unit); + } + + public void addReinforcement(Unit unit) + { + reinforcement.add(unit); + } + + public void unitEntry(Unit unit) + { + reinforcement.remove(unit); + units.add(unit); + } + + public void revertUnitEntry(Unit unit) + { + units.remove(unit); + reinforcement.add(unit); + } + + public void casualty(Unit unit) + { + units.remove(unit); + casualties.add(unit); + } + public int getAp() { return ((apSpent < actionPoints) ? (apSpent + 1) : apSpent); @@ -75,19 +154,17 @@ public class Player extends ch.asynk.tankontank.engine.Player if (apSpent > actionPoints) TankOnTank.debug("ERROR: spent too much AP, please report"); } - @Override public void turnEnd() { } - @Override public void turnStart() { if (!deploymentDone) return; turn += 1; - for (Pawn pawn : units) - pawn.reset(); + for (Unit unit : units) + unit.reset(); computeActionPoints(); } @@ -107,23 +184,23 @@ public class Player extends ch.asynk.tankontank.engine.Player apSpent = 0; } - public boolean canPromote(Pawn pawn) + public boolean canPromote(Unit unit) { - if (pawn.isHq()) return false; - for (Pawn p: casualties) - if (p.isHqOf(pawn)) return true; + if (unit.isHq()) return false; + for (Unit p: casualties) + if (p.isHqOf(unit)) return true; return false; } public Unit promote(Unit unit) { - for (Pawn p: casualties) { + for (Unit p: casualties) { if (p.isHqOf(unit)) { units.remove(unit); casualties.add(unit); units.add(p); casualties.remove(p); - return (Unit) p; + return p; } } return null; |