package squidpony.squidgrid.mapping.locks.constraints; import squidpony.squidgrid.mapping.locks.Room; import squidpony.squidgrid.mapping.locks.generators.ILayoutGenerator; import squidpony.squidmath.Coord; import squidpony.squidmath.OrderedSet; import java.util.*; /** * Controls which spaces are valid for an * {@link ILayoutGenerator} to create * {@link Room}s in. * <p> * Essentially just a Set<{@link Coord}> with some convenience methods. * * @see Coord * @see SpaceConstraints */ public class SpaceMap { protected OrderedSet<Coord> spaces = new OrderedSet<>(); public int numberSpaces() { return spaces.size(); } public boolean get(Coord c) { return spaces.contains(c); } public void set(Coord c, boolean val) { if (val) spaces.add(c); else spaces.remove(c); } private Coord getFirst() { return spaces.first(); } public ArrayList<Coord> getBottomSpaces() { ArrayList<Coord> bottomRow = new ArrayList<Coord>(); bottomRow.add(getFirst()); int bottomY = getFirst().y; for (Coord space: spaces) { if (space.y > bottomY) { bottomY = space.y; bottomRow.clear(); bottomRow.add(space); } else if (space.y == bottomY) { bottomRow.add(space); } } return bottomRow; } }