diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2014-10-04 11:07:15 +0200 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2014-10-04 11:07:15 +0200 | 
| commit | c5d03a7bc3ec6b23c23d7920485bb222f11903ab (patch) | |
| tree | cf4073950de195f1d7c78c05ce91aa5b1da888e8 /core/src/ch/asynk/tankontank | |
| parent | 819788ddd1842755253d723416affd47f1a236af (diff) | |
| download | RustAndDust-c5d03a7bc3ec6b23c23d7920485bb222f11903ab.zip RustAndDust-c5d03a7bc3ec6b23c23d7920485bb222f11903ab.tar.gz | |
Tile: cleanup, add boolean hasTargetsFor(Pawn pawn)
Diffstat (limited to 'core/src/ch/asynk/tankontank')
| -rw-r--r-- | core/src/ch/asynk/tankontank/engine/Pawn.java | 1 | ||||
| -rw-r--r-- | core/src/ch/asynk/tankontank/engine/Tile.java | 35 | 
2 files changed, 26 insertions, 10 deletions
| diff --git a/core/src/ch/asynk/tankontank/engine/Pawn.java b/core/src/ch/asynk/tankontank/engine/Pawn.java index 989c57f..446c3cd 100644 --- a/core/src/ch/asynk/tankontank/engine/Pawn.java +++ b/core/src/ch/asynk/tankontank/engine/Pawn.java @@ -32,6 +32,7 @@ public abstract class Pawn implements Drawable, Disposable      public abstract int getRoadMarchBonus();      public abstract boolean isUnit();      public abstract boolean isEnemy(Pawn other); +    public abstract boolean canAttack(Pawn other);      public abstract int getAngleOfAttack();      public abstract int getAttackRangeFrom(Tile tile); diff --git a/core/src/ch/asynk/tankontank/engine/Tile.java b/core/src/ch/asynk/tankontank/engine/Tile.java index 566f0cc..3495ada 100644 --- a/core/src/ch/asynk/tankontank/engine/Tile.java +++ b/core/src/ch/asynk/tankontank/engine/Tile.java @@ -1,6 +1,5 @@  package ch.asynk.tankontank.engine; -import java.util.List;  import java.util.Iterator;  import java.util.ArrayDeque; @@ -14,14 +13,13 @@ import ch.asynk.tankontank.engine.gfx.StackedImages;  public abstract class Tile implements Drawable  { -    private StackedImages overlays; -    protected ArrayDeque<Pawn> stack;      private Vector2 center; +    private StackedImages overlays; +    private ArrayDeque<Pawn> stack; +    public abstract int costFrom(Pawn pawn, Orientation side, boolean road);      public abstract boolean atLeastOneMove(Pawn pawn);      public abstract boolean road(Orientation side); -    public abstract int costFrom(Pawn pawn, Orientation side, boolean road); -    public abstract boolean hasTargetsFor(Pawn pawn);      public abstract boolean isOffMap();      public abstract boolean blockLineOfSightFrom(Tile tile); @@ -42,6 +40,17 @@ public abstract class Tile implements Drawable          return center;      } +    public boolean isEmpty() +    { +        if (stack == null) return true; +        return stack.isEmpty(); +    } + +    public Iterator<Pawn> getIterator() +    { +        return stack.iterator(); +    } +      public int push(Pawn pawn)      {          if (stack == null) stack = new ArrayDeque<Pawn>(); @@ -57,14 +66,14 @@ public abstract class Tile implements Drawable      public Pawn getTopPawn()      { -        if ((stack == null) || (stack.size() == 0)) return null; +        if (isEmpty()) return null;          return stack.getFirst();      }      public boolean hasUnits()      {          if (isEmpty()) return false; -        Iterator<Pawn> itr = stack.iterator(); +        Iterator<Pawn> itr = getIterator();          while(itr.hasNext()) {              if (itr.next().isUnit())                  return true; @@ -72,10 +81,16 @@ public abstract class Tile implements Drawable          return false;      } -    public boolean isEmpty() +    public boolean hasTargetsFor(Pawn pawn)      { -        if (stack == null) return true; -        return (stack.size() == 0); +        if (isEmpty()) return false; +        Iterator<Pawn> itr = getIterator(); +        while(itr.hasNext()) { +            Pawn target = itr.next(); +            if (pawn.canAttack(target)) return true; +        } + +        return false;      }      public boolean mustBeDrawn() | 
