diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/src/ch/asynk/tankontank/engine/Board.java | 63 | 
1 files changed, 63 insertions, 0 deletions
| diff --git a/core/src/ch/asynk/tankontank/engine/Board.java b/core/src/ch/asynk/tankontank/engine/Board.java index d4271ef..28e5c6a 100644 --- a/core/src/ch/asynk/tankontank/engine/Board.java +++ b/core/src/ch/asynk/tankontank/engine/Board.java @@ -187,6 +187,32 @@ public abstract class Board implements Disposable          tiles[5] = getTile((tile.col - 1), (tile.row - 1));      } +    public Tile getAdjTileAt(Tile tile, Orientation o) +    { +        Tile t = null; +        switch(o) { +            case NORTH: +                t = getTile((tile.col + 1), tile.row); +                break; +            case NORTH_EAST: +                t = getTile(tile.col, (tile.row - 1)); +                break; +            case SOUTH_EAST: +                t = getTile((tile.col - 1), (tile.row - 1)); +                break; +            case SOUTH: +                t = getTile((tile.col - 1), tile.row); +                break; +            case SOUTH_WEST: +                t = getTile(tile.col, (tile.row + 1)); +                break; +            case NORTH_WEST: +                t = getTile((tile.col + 1), (tile.row + 1)); +                break; +        } +        return t; +    } +      protected void addAnimation(Animation a)      {          nextAnimations.add(a); @@ -318,6 +344,43 @@ public abstract class Board implements Disposable          return assists.size();      } +    public Tile findBestEntry(Pawn pawn, Tile to, Orientation from) +    { +        // FIXME board corners +        Tile entry = null; +        int cost = Integer.MAX_VALUE; +        boolean road = false; + +        Orientation o = from.opposite().left(); +        boolean r = to.road(o); +        int c = to.costFrom(pawn, o); +        if ((c < cost) || (r && (c == cost))) { +            entry = getAdjTileAt(to, o); +            cost = c; +            road = r; +        } + +        o = from.opposite(); +        r = to.road(o); +        c = to.costFrom(pawn, o); +        if ((c < cost) || (r && (c == cost))) { +            entry = getAdjTileAt(to, o); +            cost = c; +            road = r; +        } + +        o = from.opposite().right(); +        r = to.road(o); +        c = to.costFrom(pawn, o); +        if ((c < cost) || (r && (c == cost))) { +            entry = getAdjTileAt(to, o); +            cost = c; +            road = r; +        } + +        return entry; +    } +      public void enableOverlayOn(Tile tile, int i, boolean enable)      {          if(tile.enableOverlay(i, enable)) | 
