diff --git a/src/main/java/inf112/fiasko/roborally/objects/Board.java b/src/main/java/inf112/fiasko/roborally/objects/Board.java index b068e24..ef6202b 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/Board.java +++ b/src/main/java/inf112/fiasko/roborally/objects/Board.java @@ -1,10 +1,9 @@ package inf112.fiasko.roborally.objects; -import inf112.fiasko.roborally.element_properties.Direction; -import inf112.fiasko.roborally.element_properties.Position; -import inf112.fiasko.roborally.element_properties.RobotID; -import inf112.fiasko.roborally.element_properties.TileType; +import inf112.fiasko.roborally.element_properties.*; +import inf112.fiasko.roborally.utility.TextureConverterUtil; +import java.lang.reflect.Array; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -310,4 +309,36 @@ public class Board { } return elements; } -} + + public List> getPositionsOfTileOnBoard(TileType tile) { + return makeTileList(tile, tiles); + } + + public List> getPositionsOfTileOnBoard(WallType tile) { + return makeTileList(tile, walls); + } + + private List> makeTileList(K type, IGrid grid) { + List> objList = new ArrayList<>(); + + for (int y = grid.getHeight() - 1; y >= 0; y--) { + for (int x = 0; x < grid.getWidth(); x++) { + T gridElement = grid.getElement(x, y); + if (gridElement.getClass().isAssignableFrom(Tile.class)) { + Tile tile = (Tile) gridElement; + if (tile.getTileType() == type) { + objList.add(new BoardElementContainer<>(gridElement, new Position(x,y))); + } + } else if (gridElement.getClass().isAssignableFrom(Wall.class)) { + Wall wall = (Wall) gridElement; + if (wall.getWallType() == type) { + objList.add(new BoardElementContainer<>(gridElement, new Position(x,y))); + } + } else { + throw new IllegalArgumentException("Grid has unknown type."); + } + } + } + return objList; + } +} \ No newline at end of file