diff options
-rw-r--r-- | core/src/ch/asynk/tankontank/engine/Board.java | 27 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/engine/TileList.java | 25 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/game/Map.java | 15 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/game/states/StateMove.java | 2 |
4 files changed, 40 insertions, 29 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/Board.java b/core/src/ch/asynk/tankontank/engine/Board.java index 7b6a414..2e78ca0 100644 --- a/core/src/ch/asynk/tankontank/engine/Board.java +++ b/core/src/ch/asynk/tankontank/engine/Board.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashSet; +import java.util.Collection; import com.badlogic.gdx.Gdx; @@ -36,6 +37,16 @@ public abstract class Board implements Disposable public Tile getNewTile(float x, float y, int col, int row); } + public interface TileCollection extends Collection<Tile> + { + public Tile first(); + public void show(); + public void hide(); + public void enable(int i, boolean enable); + public void getPawns(Collection<Pawn> pawns); + public int fromNodes(Collection<SearchBoard.Node> nodes); + } + public static class Config { public int cols; @@ -239,21 +250,21 @@ public abstract class Board implements Disposable debugShapes.setTransformMatrix(prevTransform); } - protected int buildPossibleMoves(Pawn pawn, TileList moves) + protected int buildPossibleMoves(Pawn pawn, TileCollection moves) { Tile from = pawn.getTile(); Set<SearchBoard.Node> nodes = searchBoard.possibleMovesFrom(pawn, from.getCol(), from.getRow()); return moves.fromNodes(nodes); } - protected int buildPossibleTargets(Pawn pawn, TileList targets) + protected int buildPossibleTargets(Pawn pawn, TileCollection targets) { Tile from = pawn.getTile(); List<SearchBoard.Node> nodes = searchBoard.possibleTargetsFrom(pawn, from.getCol(), from.getRow()); return targets.fromNodes(nodes); } - protected int buildPossibleTargets(Pawn pawn, Iterator<Pawn> units, TileList targets) + protected int buildPossibleTargets(Pawn pawn, Iterator<Pawn> units, TileCollection targets) { Tile from = pawn.getTile(); targets.clear(); @@ -267,7 +278,7 @@ public abstract class Board implements Disposable return targets.size(); } - protected int buildMoveAssists(Pawn pawn, TileList assists) + protected int buildMoveAssists(Pawn pawn, TileCollection assists) { assists.clear(); setAdjacentTiles(pawn.getTile(), neighbours); @@ -283,7 +294,7 @@ public abstract class Board implements Disposable return assists.size(); } - protected int buildAttackAssists(Pawn pawn, Pawn target, Iterator<Pawn> units, TileList assists) + protected int buildAttackAssists(Pawn pawn, Pawn target, Iterator<Pawn> units, TileCollection assists) { assists.clear(); Tile to = target.getTile(); @@ -300,7 +311,7 @@ public abstract class Board implements Disposable return assists.size(); } - private int nodesToSet(List<ArrayList<SearchBoard.Node>> nodes, TileList tiles) + private int nodesToSet(List<ArrayList<SearchBoard.Node>> nodes, TileCollection tiles) { tiles.clear(); @@ -316,14 +327,14 @@ public abstract class Board implements Disposable return nodes.size(); } - protected int buildPossiblePaths(Pawn pawn, Tile to, TileList tiles) + protected int buildPossiblePaths(Pawn pawn, Tile to, TileCollection tiles) { Tile from = pawn.getTile(); paths = searchBoard.possiblePaths(pawn, from.getCol(), from.getRow(), to.getCol(), to.getRow()); return nodesToSet(paths, tiles); } - protected int possiblePathsFilterToggle(Tile tile, TileList tiles) + protected int possiblePathsFilterToggle(Tile tile, TileCollection tiles) { paths = searchBoard.possiblePathsFilterToggle(tile.getCol(), tile.getRow()); return nodesToSet(paths, tiles); diff --git a/core/src/ch/asynk/tankontank/engine/TileList.java b/core/src/ch/asynk/tankontank/engine/TileList.java index b26a5e8..0e56aac 100644 --- a/core/src/ch/asynk/tankontank/engine/TileList.java +++ b/core/src/ch/asynk/tankontank/engine/TileList.java @@ -4,7 +4,7 @@ import java.util.List; import java.util.ArrayList; import java.util.Collection; -public class TileList extends ArrayList<Tile> +public class TileList extends ArrayList<Tile> implements Board.TileCollection { private final Board board; private int overlay; @@ -16,15 +16,9 @@ public class TileList extends ArrayList<Tile> this.overlay = overlay; } - public int fromNodes(Collection<SearchBoard.Node> nodes) + public Tile first() { - clear(); - for (SearchBoard.Node node : nodes) { - Tile tile = board.getTile(node.col, node.row); - add(tile); - } - - return size(); + return get(0); } public void show() @@ -43,10 +37,21 @@ public class TileList extends ArrayList<Tile> board.enableOverlayOn(tile, i, enable); } - public void getPawns(List<Pawn> pawns) + public void getPawns(Collection<Pawn> pawns) { pawns.clear(); for (Tile tile : this) pawns.add(tile.getTopPawn()); } + + public int fromNodes(Collection<SearchBoard.Node> nodes) + { + clear(); + for (SearchBoard.Node node : nodes) { + Tile tile = board.getTile(node.col, node.row); + add(tile); + } + + return size(); + } } diff --git a/core/src/ch/asynk/tankontank/game/Map.java b/core/src/ch/asynk/tankontank/game/Map.java index 56b5db9..ab8e83c 100644 --- a/core/src/ch/asynk/tankontank/game/Map.java +++ b/core/src/ch/asynk/tankontank/game/Map.java @@ -21,11 +21,11 @@ public abstract class Map extends Board { private final Ctrl ctrl; - public final HexList possibleMoves; // HexSet - public final HexList possibleTargets; // PawnSet - public final HexList possiblePaths; // class Move - public final HexList moveAssists; // PawnSet - public final HexList attackAssists; // PawnSet + public final Board.TileCollection possibleMoves; + public final Board.TileCollection possibleTargets; + public final Board.TileCollection possiblePaths; + public final Board.TileCollection moveAssists; + public final Board.TileCollection attackAssists; public final ArrayList<Pawn> activablePawns = new ArrayList<Pawn>(7); // PawnSet public final ArrayList<Pawn> activatedPawns = new ArrayList<Pawn>(7); // PawnSet @@ -71,11 +71,6 @@ public abstract class Map extends Board return (Hex) getTile(col, row); } - public Hex getFirstMoveAssist() - { - return (Hex) moveAssists.get(0); - } - public void selectHex(Hex hex, boolean enable) { enableOverlayOn(hex, Hex.SELECT, enable); diff --git a/core/src/ch/asynk/tankontank/game/states/StateMove.java b/core/src/ch/asynk/tankontank/game/states/StateMove.java index 7762c92..eb462db 100644 --- a/core/src/ch/asynk/tankontank/game/states/StateMove.java +++ b/core/src/ch/asynk/tankontank/game/states/StateMove.java @@ -25,7 +25,7 @@ public class StateMove extends StateCommon } else { // back from rotation -> use the above and unmodified activePawn if ((activePawn == selectedPawn) || !selectedPawn.canMove()) { - upHex = map.getFirstMoveAssist(); + upHex = (Hex) map.moveAssists.first(); activePawn = upHex.getTopPawn(); } else { upHex = selectedHex; |