From ac7a1ccae0ce038c6d92feaba622b72f1a339226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Tue, 14 Oct 2014 12:34:35 +0200 Subject: Pawn,Unit: add boolean isHqOf(Pawn), Player add boolean canPromote(Pawn) --- core/src/ch/asynk/tankontank/engine/Pawn.java | 1 + core/src/ch/asynk/tankontank/game/Player.java | 8 ++++++++ core/src/ch/asynk/tankontank/game/Unit.java | 9 +++++++++ core/test/ch/asynk/tankontank/Helpers.java | 1 + 4 files changed, 19 insertions(+) diff --git a/core/src/ch/asynk/tankontank/engine/Pawn.java b/core/src/ch/asynk/tankontank/engine/Pawn.java index ef91544..83cd642 100644 --- a/core/src/ch/asynk/tankontank/engine/Pawn.java +++ b/core/src/ch/asynk/tankontank/engine/Pawn.java @@ -46,6 +46,7 @@ public abstract class Pawn implements Drawable, Disposable public abstract int getAttackRangeFrom(Tile tile); public abstract boolean isHq(); + public abstract boolean isHqOf(Pawn other); public abstract boolean isUnit(); public abstract boolean isEnemy(Pawn other); diff --git a/core/src/ch/asynk/tankontank/game/Player.java b/core/src/ch/asynk/tankontank/game/Player.java index ca8716c..5646311 100644 --- a/core/src/ch/asynk/tankontank/game/Player.java +++ b/core/src/ch/asynk/tankontank/game/Player.java @@ -110,6 +110,14 @@ public class Player implements Drawable, Disposable return ((Unit) pawn).isEnemy(army); } + public boolean canPromote(Pawn pawn) + { + if (pawn.isHq()) return false; + for (Pawn p: casualties) + if (p.isHqOf(pawn)) return true; + return false; + } + public void setPosition(float x, float y) { flag.setPosition(x, y); diff --git a/core/src/ch/asynk/tankontank/game/Unit.java b/core/src/ch/asynk/tankontank/game/Unit.java index a20891b..bae5fd8 100644 --- a/core/src/ch/asynk/tankontank/game/Unit.java +++ b/core/src/ch/asynk/tankontank/game/Unit.java @@ -129,6 +129,15 @@ public class Unit extends HeadedPawn } @Override + public boolean isHqOf(Pawn other) + { + if ((id == UnitId.GE_PANZER_IV_HQ) && (((Unit)other).id == UnitId.GE_PANZER_IV)) return true; + if ((id == UnitId.US_PERSHING_HQ) && (((Unit)other).id == UnitId.US_PERSHING)) return true; + if ((id == UnitId.US_SHERMAN_HQ) && (((Unit)other).id == UnitId.US_SHERMAN)) return true; + return false; + } + + @Override public boolean isUnit() { return true; diff --git a/core/test/ch/asynk/tankontank/Helpers.java b/core/test/ch/asynk/tankontank/Helpers.java index 518ccaf..c0cf64c 100644 --- a/core/test/ch/asynk/tankontank/Helpers.java +++ b/core/test/ch/asynk/tankontank/Helpers.java @@ -29,6 +29,7 @@ public class Helpers public int getAttackRangeFrom(Tile tile) { return 3; } public boolean isHq() { return true; } + public boolean isHqOf(Pawn other) { return true; } public boolean isUnit() { return true; } public boolean isEnemy(Pawn other) { return true; } -- cgit v1.1-2-g2b99