From 21d24520bdcf67a7f81e134e9fca7f115d5574e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Tue, 28 Oct 2014 23:14:48 +0100 Subject: Board: add PawnSet, remove TileList --- core/src/ch/asynk/tankontank/engine/Board.java | 12 ++++- core/src/ch/asynk/tankontank/engine/PawnSet.java | 60 ++++++++++++++++++++++ core/src/ch/asynk/tankontank/engine/TileList.java | 61 ----------------------- core/src/ch/asynk/tankontank/engine/TileSet.java | 2 +- 4 files changed, 72 insertions(+), 63 deletions(-) create mode 100644 core/src/ch/asynk/tankontank/engine/PawnSet.java delete mode 100644 core/src/ch/asynk/tankontank/engine/TileList.java diff --git a/core/src/ch/asynk/tankontank/engine/Board.java b/core/src/ch/asynk/tankontank/engine/Board.java index 2e78ca0..09cfc7d 100644 --- a/core/src/ch/asynk/tankontank/engine/Board.java +++ b/core/src/ch/asynk/tankontank/engine/Board.java @@ -43,7 +43,17 @@ public abstract class Board implements Disposable public void show(); public void hide(); public void enable(int i, boolean enable); - public void getPawns(Collection pawns); + public void collectPawns(PawnCollection pawns); + public int fromNodes(Collection nodes); + } + + public interface PawnCollection extends Collection + { + public Pawn first(); + public void show(); + public void hide(); + public void enable(int i, boolean enable); + public void collectTiles(TileCollection tiles); public int fromNodes(Collection nodes); } diff --git a/core/src/ch/asynk/tankontank/engine/PawnSet.java b/core/src/ch/asynk/tankontank/engine/PawnSet.java new file mode 100644 index 0000000..f4e1c27 --- /dev/null +++ b/core/src/ch/asynk/tankontank/engine/PawnSet.java @@ -0,0 +1,60 @@ +package ch.asynk.tankontank.engine; + +import java.util.Iterator; +import java.util.Collection; +import java.util.LinkedHashSet; + +public class PawnSet extends LinkedHashSet implements Board.PawnCollection +{ + private final Board board; + private int overlay; + + public PawnSet(Board board, int overlay, int n) + { + super(n); + this.board = board; + this.overlay = overlay; + } + + public Pawn first() + { + if (isEmpty()) return null; + return iterator().next(); + } + + public void show() + { + enable(overlay, true); + } + + public void hide() + { + enable(overlay, false); + } + + public void enable(int i, boolean enable) + { + for (Pawn pawn : this) + pawn.enableOverlay(i, enable); + } + + public void collectTiles(Board.TileCollection tiles) + { + tiles.clear(); + for (Pawn pawn : this) + tiles.add(pawn.getTile()); + } + + public int fromNodes(Collection nodes) + { + clear(); + for (SearchBoard.Node node : nodes) { + Tile tile = board.getTile(node.col, node.row); + Iterator pawns = tile.iterator(); + while(pawns.hasNext()) + add(pawns.next()); + } + + return size(); + } +} diff --git a/core/src/ch/asynk/tankontank/engine/TileList.java b/core/src/ch/asynk/tankontank/engine/TileList.java deleted file mode 100644 index 6c5b2e5..0000000 --- a/core/src/ch/asynk/tankontank/engine/TileList.java +++ /dev/null @@ -1,61 +0,0 @@ -package ch.asynk.tankontank.engine; - -import java.util.Iterator; -import java.util.Collection; -import java.util.List; -import java.util.ArrayList; - -public class TileList extends ArrayList implements Board.TileCollection -{ - private final Board board; - private int overlay; - - public TileList(Board board, int overlay, int n) - { - super(n); - this.board = board; - this.overlay = overlay; - } - - public Tile first() - { - return get(0); - } - - public void show() - { - enable(overlay, true); - } - - public void hide() - { - enable(overlay, false); - } - - public void enable(int i, boolean enable) - { - for (Tile tile : this) - board.enableOverlayOn(tile, i, enable); - } - - public void getPawns(Collection pawns) - { - pawns.clear(); - for (Tile tile : this) { - Iterator itr = tile.iterator(); - while(itr.hasNext()) - pawns.add(itr.next()); - } - } - - public int fromNodes(Collection 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/engine/TileSet.java b/core/src/ch/asynk/tankontank/engine/TileSet.java index 5a75b5d..04f726b 100644 --- a/core/src/ch/asynk/tankontank/engine/TileSet.java +++ b/core/src/ch/asynk/tankontank/engine/TileSet.java @@ -38,7 +38,7 @@ public class TileSet extends LinkedHashSet implements Board.TileCollection board.enableOverlayOn(tile, i, enable); } - public void getPawns(Collection pawns) + public void collectPawns(Board.PawnCollection pawns) { pawns.clear(); for (Tile tile : this) { -- cgit v1.1-2-g2b99