package cellsociety.configuration; public class SimulationColors { public static Map getColorsFor(String simulationType) } package cellsociety.configuration; public class XmlGenerator { public void saveFile(Simulation simulation, File file, } package cellsociety.configuration; public class XmlConfigurationException extends RuntimeException { public XmlConfigurationException(String message, Object... values) public XmlConfigurationException(Throwable cause, String message, Object... values) public XmlConfigurationException(Throwable cause) } package cellsociety.configuration; public class XmlConfigParser implements ConfigParser { public XmlConfigParser() public SimulationConfig parse(File file) public SimulationConfig parse(InputStream inputStream) } package cellsociety.configuration; public class SimulationConfig { public SimulationConfig(String type, Map metadata, int rows, int cols, public String getType() public Map getMetadata() public int getRows() public int getCols() public Map getParameters() public Map getInitialStates() } package cellsociety.configuration; public interface ConfigParser { SimulationConfig parse(File file) throws XmlConfigurationException; } package cellsociety.controller; public class GameController { public static final String DATA_FILE_FOLDER public GameController(Stage primaryStage) public GameController(Stage primaryStage, Simulation simulation) public void start() public void pause() public void stepOne() public void reset() } package cellsociety; public class Main extends Application { public static final String DATA_FILE_FOLDER public void start(Stage primaryStage) public double getVersion() } package cellsociety.model.neighbor; public class VonNeumannNeighborPolicy { public List getNeighbors(int row, int col, int maxRows, int maxCols) } package cellsociety.model.neighbor; public interface NeighborPolicy { List getNeighbors(int row, int col, int maxRows, int maxCols); } package cellsociety.model.neighbor; public class MooreNeighborPolicy implements NeighborPolicy { public List getNeighbors(int row, int col, int maxRows, int maxCols) } package cellsociety.model; public class Grid { public Grid(T[][] startingGrid, NeighborPolicy neighborPolicy) public List getNeighbors(int row, int col) public T getCell(int row, int col) public void setCellNextState(int row, int col, T state) public void setCellCurrentState(int row, int col, T state) public void commitGrid() public void resetGrid() public int getRows() public int getCols() } package cellsociety.model.simulation; public abstract class Simulation { protected Simulation(Grid grid) public void step() public Grid getGrid() public void reset() protected abstract T calculateNextState(int row, int col); protected int countNeighborsWithState(int row, int col, T state) protected boolean hasNeighborWithState(int row, int col, T state) } package cellsociety.model.simulation.rules; public class SpreadingOfFireSimulation extends Simulation { public SpreadingOfFireSimulation(Grid grid, double f, double p, int random_seed) public void reset() protected FireState calculateNextState(int row, int col) } package cellsociety.model.simulation.rules; public class WaTorAgent { public WaTorAgent(int energy, int age) public int getEnergy() public void setEnergy(int energy) public void decreaseEnergy() public void increaseEnergy(int amount) public int getAge() public void increaseAge() public void resetAge() public boolean hasMoved() public void setHasMoved(boolean hasMoved) } package cellsociety.model.simulation.rules; public class WaTorSimulation extends Simulation { public WaTorSimulation(Grid grid, int fishBreed, int sharkBreed, int sharkStarve, public void addAgent(int row, int col, WaTorAgent agent) public void reset() public void step() protected WaTorState calculateNextState(int row, int col) } package cellsociety.model.simulation.rules; public class GameOfLifeSimulation extends Simulation { public GameOfLifeSimulation(Grid grid) protected LifeState calculateNextState(int row, int col) } package cellsociety.model.simulation.rules; public class SegregationSimulation extends Simulation { public SegregationSimulation(Grid grid, double threshold) public void step() protected SegregationState calculateNextState(int row, int col) } package cellsociety.model.simulation.rules; public class PercolationSimulation extends Simulation { public PercolationSimulation(Grid grid) protected PercolationState calculateNextState(int row, int col) } package cellsociety.model; public interface GridSnapshot { } package cellsociety.model; public interface CellState { Map DISPLAY_COLORS = new HashMap<>(); static void register(CellState state, Color color) { DISPLAY_COLORS.put(state, color); default Color getDisplayColor() { return DISPLAY_COLORS.getOrDefault(this, Color.MAGENTA); } package cellsociety.model; public record GridPoint(int row, int col) { public record GridPoint(int row, int col) } package cellsociety.model; public class SimulationFactory { public Simulation createSimulation(SimulationConfig config) public static Simulation createDefaultGameOfLife() } package cellsociety.view; public class SimulationView { public SimulationView(Stage stage) public void updateSimulationInfo(java.util.Map metadata, int rows, int cols, public void setOnLoad(Runnable handler) public void setOnSave(Runnable handler) public void setOnPlay(Runnable handler) public void setOnPause(Runnable handler) public void setOnStep(Runnable handler) public void setOnReset(Runnable handler) public void setOnSpeedChange(java.util.function.Consumer handler) public void setGrid(Node gridView) public void update(Grid grid) public void reset(Grid grid) public void showErrorAlert(String title, String message) public void setTitle(String title) } package cellsociety.view; public class ControlPanel { } package cellsociety.view; public class Resources { public static String getString(String key) } package cellsociety.view; public class GridRenderer { public GridRenderer() public void render(Grid grid, Pane pane, } package cellsociety.view; public class SaveMetadataDialog extends Dialog> { public SaveMetadataDialog() }