package cellsociety.Simulation; public class Simulation implements GridDataExport { public record SimulationInfo(String name, String description, String author, String grid) { public Simulation() public Simulation(String name, String author, String description, Rule rule, Grid grid) public void step() throws SimulationException public boolean getIsSteadyState() public double[] getCellColor(int x, int y) public int getGridHeight() public int getGridWidth() public boolean getHasBegun() public int getGeneration() public GridType getGridType() public HashMap getStateCounts() public Map getStateMap() public void pause() public void play() public Rule getRule() public String getName() public AdjustableRuleParameter[] getAdjustableParameters() public SimulationInfo getInfo() public boolean getIsPaused() public void setGridShape(GridType gridType) throws SimulationException } package cellsociety.Simulation; public class SimulationController { public SimulationController(ControllerView view, Simulation sim, Stage stage) public static Document extractDoc(File file) } package cellsociety.Cell; public class Cell { public Cell(int x, int y, String initialState) throws IllegalArgumentException public Cell(int x, int y, String initialState, double[] data) throws IllegalArgumentException public Cell(Cell cell) throws IllegalArgumentException public void timeStepState() public String getCurrentState() public int getX() public int getY() public double getNum(int idx) public double[] getCounters() public void setCurrentState(String currentState) public boolean equals(Object o) public void setX(int x) throws IllegalArgumentException public void setY(int y) throws IllegalArgumentException public void setNums(double[] nums) public void setNum(int idx, double num) public void decrementNum(int idx) public void incrementNum(int idx) public void addNum(int idx, double num) } package cellsociety; public class Main extends Application { public void start(Stage stage) } package cellsociety.Rules; public class PercolationRule extends Rule { public PercolationRule() public Neighbors getNeighbors(Grid grid, int x, int y, int radius) public String getNextState(Cell currentCell, Neighbors neighborCells) } package cellsociety.Rules; public class SegregationRule extends Rule { public SegregationRule() public void beginGeneration(Grid g) public void endGeneration(Grid g) public String getNextState(Cell currentCell, Neighbors neighborCells) public void addAgent() } package cellsociety.Rules; public class ForestFireRule extends Rule { public ForestFireRule() public String getNextState(Cell currentCell, Neighbors neighborCells) public void setProbTreeGrows(double probTreeGrows) public void setProbTreeIgnites(double probTreeIgnites) public AdjustableRuleParameter[] getAdjustableRuleParameters() } package cellsociety.Rules; public class WaTorWorldRule extends Rule { public WaTorWorldRule() public void beginGeneration(Grid g) public void endGeneration(Grid g) public Neighbors getNeighbors(Grid grid, int x, int y, int radius) public String getNextState(Cell currentCell, Neighbors neighborCells) public void setSharkEnergy(int sharkEnergy) public void setFishReproductionProbability(double fishReproductionProbability) public void setSharkReproductionProbability(double sharkReproductionProbability) public void setSharkEnergy(double sharkEnergy) public void setFishReproductionTime(double fishReproductionTime) public void setSharkReproductionTime(int sharkReproductionTime) public void setSharkEnergyGain(double sharkEnergyGain) public void setSharkReproductionTime ( double sharkReproductionTime) public AdjustableRuleParameter[] getAdjustableRuleParameters () } package cellsociety.Rules; public record AdjustableRuleParameter(double lowVal, double highVal, double defaultVal, String name) { } package cellsociety.Rules; public abstract class Rule { public Rule(int neighborRadius, boolean steadyStatePossible, HashMap stateMap) public abstract String getNextState(Cell currentCell, Neighbors neighborCells); public Neighbors getNeighbors(Grid grid, int x, int y, int radius) public AdjustableRuleParameter[] getAdjustableRuleParameters() public void beginGeneration(Grid g) public void endGeneration(Grid g) public int getNeighborRadius() public boolean isSteadyStatePossible() public Map getStateMap() public boolean isValidState(String state) public double[] getColor(String state) public final static Rule makeRuleFromString(String ruleString) public AdjustableRuleParameter getAdjustableRuleParameter(String name, double min, double max, } package cellsociety.Rules; public class GameOfLifeRule extends Rule { public GameOfLifeRule() public String getNextState(Cell currentCell, Neighbors neighborCells) } package cellsociety.Graphics; public class LineView extends View { public LineView(Map stateMap, int cellCount) public void display(String key, String extraText) public void setStates(int steps, Map stateCounts) public void update() } package cellsociety.Graphics; public class SimulationException extends Exception { public SimulationException() public synchronized Throwable fillInStackTrace() } package cellsociety.Graphics; public class HistogramView extends View { public HistogramView(Map stateMap, int cellCount) public void display(String key, String extraText) public void setStates(Map stateCounts) public void update() } package cellsociety.Graphics; public class ErrorView extends View { public ErrorView(String type, String message) public void display(String key, String extraText) } package cellsociety.Graphics; public class GridView extends View { public GridView(Simulation simulationData) public void display(String key, String extraText) public void setSimulation(Simulation simulationData) public void update() } package cellsociety.Graphics; public class FileDownloadView extends View { public FileDownloadView(File file, Simulation.SimulationInfo info) public void display(String key, String extraText) } package cellsociety.Graphics; public abstract class View { public static final Insets STANDARD_PADDING public View() public void display(String key, String extraText) public void update() public Stage getStage() public void close() protected TextFlow makeMixedBoldText(String bold, String nonBold) } package cellsociety.Graphics; public class ControllerView extends View { public ControllerView() public void display(String key, String extraText) public VBox initializeButtons() public Button getPlayButton() public Button getPauseButton() public Button getStepButton() public Button getUploadButton() public Button getDownloadButton() public Button getRestartButton() public Slider getMySlider() public Button getNewSimulationButton() public ToggleButton getHistogramButton() public ToggleButton getGridButton() public ToggleButton getParamButton() public ToggleButton getLineButton() public ToggleButton getAboutButton() public void showPauseButton() public void showPlayButton() } package cellsociety.Graphics; public class ParameterView extends View { public ParameterView(AdjustableRuleParameter[] params) public void display(String key, String extraText) public Slider[] getMySliders() public ComboBox getShapeBox() } package cellsociety.Graphics; public class AboutView extends View { public AboutView(Simulation.SimulationInfo info) public void display(String key, String extraText) } package cellsociety.Grid; public interface GridNeighbors { public Neighbors getNeighbors(int x, int y, int radius); public Neighbors getNeighborsWrapAround(int x, int y, int radius); public Neighbors getNeighborsDirect(int x, int y, int radius); } package cellsociety.Grid; public class HexagonGrid extends Grid implements GridNeighbors{ public HexagonGrid(Grid g) throws SimulationException public Neighbors getNeighbors(int x, int y, int radius) public Neighbors getNeighborsWrapAround(int x, int y, int radius) public Neighbors getNeighborsDirect(int x, int y, int radius) } package cellsociety.Grid; public record GridConfig(int width, int height, Rule rule, String layout) { } package cellsociety.Grid; public interface GridDataExport { public double[] getCellColor(int x, int y); public int getGridHeight(); public int getGridWidth(); public boolean getHasBegun(); public int getGeneration(); public GridType getGridType(); } package cellsociety.Grid; public class Grid implements GridNeighbors, Iterable{ public Grid(GridConfig config) throws SimulationException public Grid(Grid grid) throws SimulationException public String toString() public boolean getHasBegun() public boolean equals(Object o) public Cell getCell(int x, int y) public int getWidth() public int getHeight() public Rule getRule() public Neighbors getNeighbors(int x, int y, int radius) public Neighbors getNeighborsWrapAround(int x, int y, int radius) public Neighbors getNeighborsDirect(int x, int y, int radius) public void swapCells(Cell a, Cell b) public void setGridAsBegun() public Iterator iterator() public boolean hasNext() public Cell next() public void forEach(Consumer action) } package cellsociety.Grid; public record Neighbors(Cell[][] neighbors) implements Iterable{ public Iterator iterator() public boolean hasNext() public Cell next() public void forEach(Consumer action) public int getNumRows() public int getNumCols() public int size() public Cell getRandom() }