package cellsociety; public class Sim { public static final String DATA_FILE_FOLDER public Sim() public Sim(XMLLoader xml) public void update() public void showHistogram() public void hideHistogram() public void step() public void setSpeed(double speed) public void playPause() public void loadFile() throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException public void saveFile() public boolean isPaused() public void setGrid(Grid grid) public void toggleInfo() public void newSim() public void close() } package cellsociety.UI; public interface Window { public void show(); public void hide(); public void toggle(); public void close(); } package cellsociety.UI; public interface UIElement { void addToRoot(Group root); void removeFromRoot(Group root); } package cellsociety.UI; public class Grid extends CellGrid implements Window { public record CellRep(int row, int col, int state){} public Grid(int rows, int cols, Class cellClass, XMLLoader xml) public ArrayList getCells() public void addElementToRoot(UIElement element) public void removeElementToRoot(UIElement element) public void show() public void hide() public void toggle() public void close() } package cellsociety.UI; public class InfoCard implements UIElement { public record configData(String author, String description, String title, String type, Color[] stateColors, int[] stateValues){} public InfoCard(configData config) public void show(Grid g) public void show(boolean willShow, Grid g) public void addToRoot(Group root) public void removeFromRoot(Group root) } package cellsociety.UI; public class ControlBar implements Window{ public ControlBar(Sim sim, InfoCard.configData configData) public void setNewConfig(InfoCard.configData configData) public void addToRoot() public void show() public void hide() public void toggle() public void close() } package cellsociety.UI; public class Histogram implements Window { public Histogram(String title) public void setTitle(String title) public void addCounts(CellGrid grid) throws NoSuchFieldException, IllegalAccessException public void clear() public void show() public void hide() public void toggle() public void close() } package cellsociety; public class CellGrid implements Iterable { public record GridCell(int row, int col, Cell cell){} public boolean hasNext() public GridCell next() public Iterator iterator() public CellGrid(int rows, int cols, Class cellClass, XMLLoader xml) public void populateGrid(Class cellClass, XMLLoader xml) throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException public String[] getCellParams(XMLLoader xml, Class cellClass) throws IllegalAccessException public void setCells(List cells) public void calcNextState() public void update() public int getNumCells() public Class getCellType() public String toString() } package cellsociety.cells; public class AntCell extends Cell{ public AntCell(double x, double y, double cellSize, Color[] colors, int[] states) public void calcNextState() public void update(Cell[][] cells) public void swapStates(AntCell other) public int getPheromone() public void followPheromone(Cell[][] cells) } package cellsociety.cells; public class FallingCell extends Cell { public FallingCell(double x, double y, double cellSize, Color[] colors, int[] states) public void calcNextState() public void update(Cell[][] cells) public void waterNextLoc(Cell[][] cells) } package cellsociety.cells; public class ConwayCell extends Cell { public ConwayCell(double x, double y, double cellSize) public void calcNextState() } package cellsociety.cells; public class SchellingCell extends Cell { public SchellingCell(double x, double y, double cellSize) public void calcNextState() public void update(Cell[][] cells) public boolean satisfied(int threshold) public void setParams(String[] params) } package cellsociety.cells; public class FireCell extends Cell { public FireCell(double x, double y, double cellSize) public void calcNextState() public void setParams(String[] params) } package cellsociety.cells; public class WatorCell extends Cell{ public WatorCell(double x, double y, double cellSize) public void swapStates(Cell other) public void calcNextState() public void update(Cell[][] cells) public void pickRandomEmptyNeighbor() public boolean containsFish() public void setParams(String[] params) } package cellsociety.cells; public class PercolateCell extends Cell { public PercolateCell(double x, double y, double cellSize) public void calcNextState() } package cellsociety.cells; public abstract class Cell { public Cell(double x, double y, double cellSize, Color[] colors, int[] states) public void swapStates(Cell other) public void setPosAndSize(double x, double y, double cellSize) abstract public void calcNextState(); public void setTaken() public void setTaken(boolean t) public boolean getTaken() public void update(Cell[][] cells) protected void setColor() public void setState(int state) public void setNeighbors(Neighbor neighbors) public Rectangle getShape() public int getState() public int[] getPos(Cell[][] cells) public int getRow() public int getCol() public void setParams(String[] params) public void pickRandomEmptyNeighbor(Cell[][] cells) } package cellsociety.XML; public class IllegalGridSizeException extends RuntimeException{ public IllegalGridSizeException(String s) } package cellsociety.XML; public class XMLSaver { public XMLSaver() public void formatXML(String path, KVList kvl, ArrayList cells) } package cellsociety.XML; public class XMLLoader { public XMLLoader(String path) public String getCellClass() public String getTitle() public String getAuthor() public String getDesc() public int getWidth() public int getHeight() public ArrayList getCellReps() public ArrayList getParamList() public String getParam(String s) public String toString() } package cellsociety.XML; public class KVList { public KVList(int size) public int getSize() public void insertKV(int i, String key, String value) public void addKV(String key, String value) public String[] getKV(int i) } package cellsociety; public class Main extends Application { public void start(Stage stage) public static void addSim() public static void removeSim(Sim sim) } package cellsociety.xmlgenerator; public class KeyValueList { public KeyValueList(int size) public int getSize() public void insertKV(int i, String key, String value) public String[] getKV(int i) } package cellsociety.xmlgenerator; public class MainGenerator extends Application { public void start (Stage stage) } package cellsociety.xmlgenerator; public class XMLGenerator { public XMLGenerator() public void formatXML(String path, KeyValueList kvl, ArrayList cells) } package cellsociety.xmlgenerator; public class GenerateGrid { public static ArrayList cells public GenerateGrid(int gridSize, int cellSize, Group g) public void loadGrid(Group g) public void loadCells(String cellType) } package cellsociety.xmlgenerator.celltemplates; public class BasicCell extends RootCell{ public BasicCell(int x, int y, int size) } package cellsociety.xmlgenerator.celltemplates; public class SegCell extends RootCell { public SegCell(int x, int y, int size) } package cellsociety.xmlgenerator.celltemplates; public abstract class RootCell { public RootCell(int x, int y, int size, Color[] colours) public Rectangle getShape() public int getState() public void setState(int state) public int getRow() public int getCol() } package cellsociety.xmlgenerator.celltemplates; public class FireCell extends RootCell{ public FireCell(int x, int y, int size) } package cellsociety.xmlgenerator.celltemplates; public class WaterCell extends RootCell { public WaterCell(int x, int y, int size) } package cellsociety.xmlgenerator; public class Controls { public Controls(GenerateGrid genGrid) public void initControlsUI() } package cellsociety.neighbors; public class SurroundNeighbors extends Neighbor { public SurroundNeighbors(Cell[][] cells, int x, int y, boolean wrap) protected int[][] getPoints(int row, int col) } package cellsociety.neighbors; abstract public class Neighbor implements Iterable{ public boolean hasNext() public Cell next() public Neighbor(Cell[][] cells, int row, int col, boolean wrap) abstract protected int[][] getPoints(int row, int col); public int size() public Cell get(int i) public Iterator iterator() } package cellsociety.neighbors; public class CrossNeighbors extends Neighbor{ public CrossNeighbors(Cell[][] cells, int x, int y, boolean wrap) protected int[][] getPoints(int row, int col) }