package cellsociety; public interface Observable { void addObserver(Observer observer); void removeObserver(Observer observer); void notifyObservers(); } package cellsociety.controller; public class StateHandlerLoader { public StateHandler getStateHandler(String simType, String paramter) } package cellsociety.controller; public class FileParser { protected void isFileTypeCorrect(File file, String expectedFileType) } package cellsociety.controller; public class InitialStateReader extends FileParser { public InitialStateReader(StateHandler stateHandler, File f) protected int getStateValue(Coordinate myCoord) public int getNumRows() public int getNumCols() } package cellsociety.controller; public class GridModelLoader { public GridModel getGridModel(String simType, NeighborhoodsLoader neighborhoodsLoader, } package cellsociety.controller; public class SimParser extends FileParser { public SimParser(File simFile) public GameDisplayInfo getGameDisplayInfo() public File getInitStateCsv() throws WrongFileTypeException public String getParams() } package cellsociety.controller; public class Controller { public Controller(DisplayView displayView) public void setupSimulation(File simFile) public void setGridPolicy(String policy) public void setRadius(int radius) public void changeCellState(Coordinate coord) } package cellsociety.controller; public class WrongFileTypeException extends RuntimeException { public WrongFileTypeException(String expectedFileType, String providedFileType) } package cellsociety.controller; public class InvalidSimulationException extends RuntimeException { public InvalidSimulationException(String simulationType) } package cellsociety.controller; public class CellSpawner implements Spawner { public CellSpawner(DisplayView displayView, InitialStateReader initialStateReader) public CellModel getCell(Coordinate coord) protected CellView getCellView(Coordinate coord) public int getNumRows() public int getNumCols() } package cellsociety.controller; public interface Spawner { CellModel getCell(Coordinate coord); int getNumRows(); int getNumCols(); } package cellsociety.controller; public class IncorrectInputException extends RuntimeException { public IncorrectInputException(String fileName, String infoName) public IncorrectInputException(String fileName, int actual) } package cellsociety; public class Main extends Application { public static final Dimension DEFAULT_SIZE public static final Dimension MIN_SIZE public static final Dimension START_SIZE public static final ResourceBundle SETTINGS public void start(Stage primaryStage) public double getVersion() } package cellsociety.model; public class Neighborhood { public Neighborhood(CellModel center, CellModel[] neighbors) public int count(Enum targetState) public int countNextState(Enum targetState) public boolean contains(Enum targetState) public boolean setNextStateOfRandomNeighborWithNextState(Enum targetNextStateEnum, State state) public boolean isState(Enum stateType) public boolean isNextState(Enum stateType) public void updateCellState() public void updateCellState(State state) public void updateCellNextState(State state) public Enum getStateEnum() public Enum getNextStateEnum() public State getState() public State getNextState() protected int getNumNeighbors() protected CellModel getNeighbor(int i) protected CellModel getCenterCell() } package cellsociety.model; public class DefaultGridModel implements GridModel { public DefaultGridModel(NeighborhoodsLoader neighborhoodsLoader, StateHandler stateHandler) public void changeCellState(Coordinate coordinate) protected void determineNextStates() } package cellsociety.model; public interface GridModel { void changeCellState(Coordinate coordinate); } package cellsociety.model; public class DefaultNeighborhoodsLoader implements NeighborhoodsLoader { public DefaultNeighborhoodsLoader(Spawner cellSpawner) public Neighborhood getNeighborhood(int flattenedIdx) public Neighborhood getNeighborhood(Coordinate coordinate) public int getNumNeighborhoods() public void setDistance(int distance) public void setEdgeRule(String rule) throws UnrecognizedEdgeRuleException } package cellsociety.model; public class UnrecognizedEdgeRuleException extends Exception { public UnrecognizedEdgeRuleException(String rule) } package cellsociety.model; public interface NeighborhoodsLoader { int getNumNeighborhoods(); Neighborhood getNeighborhood(Coordinate coordinate); Neighborhood getNeighborhood(int flattenedIdx); } package cellsociety.model; public class SegregationGridModel extends DefaultGridModel { public SegregationGridModel(NeighborhoodsLoader neighborhoodsLoader, StateHandler stateHandler) protected void determineNextStates() } package cellsociety.model; public interface GridIterator { T create(Coordinate coord); } package cellsociety.model; public class CellModel implements Observable { public CellModel(State startingState) public void addObserver(Observer observer) public void removeObserver(Observer observer) public State getCurrentState() public void setCurrentState(State state) public Enum getCurrentStateEnum() public State getNextState() public Enum getNextStateEnum() public void setNextState(State state) public void notifyObservers() public boolean equals(Object obj) } package cellsociety.model.statehandlers; public class MissingParameterException extends Exception { public MissingParameterException(String simType) } package cellsociety.model.statehandlers; public class InvalidParameterException extends Exception { public InvalidParameterException(String parameter, String simulation) } package cellsociety.model.statehandlers; public class WatorWorldStateHandler extends StateHandler { public WatorWorldStateHandler() throws RuntimeException public State figureOutNextState(Neighborhood currNeighborhood) } package cellsociety.model.statehandlers; public class PercolationStateHandler extends StateHandler { public PercolationStateHandler() public State figureOutNextState(Neighborhood currNeighborhood) } package cellsociety.model.statehandlers; public class RockPaperScissorStateHandler extends StateHandler { public RockPaperScissorStateHandler() public State figureOutNextState(Neighborhood currNeighborhood) } package cellsociety.model.statehandlers; public class GameOfLifeStateHandler extends StateHandler { public GameOfLifeStateHandler() public State figureOutNextState(Neighborhood currNeighborhood) } package cellsociety.model.statehandlers; public abstract class StateHandler { public abstract State figureOutNextState(Neighborhood currNeighborhood); public Enum getMapping(int stateValue) public State getToggledState(Neighborhood currNeighborhood) public State getStateInstance(Enum state) public void setParameter(double parameter) throws InvalidParameterException public void loadDefaults() throws IncorrectInputException, InvalidParameterException, protected double getParameter() protected void overwriteParameter(double parameter) } package cellsociety.model.statehandlers; public class SimulationStates { public SimulationStates(Class simulationStates) public Enum getNextEnum(Enum currState) public Enum getEnum(String enumCandidate) throws RuntimeException } package cellsociety.model.statehandlers; public class FireStateHandler extends StateHandler { public FireStateHandler() public State figureOutNextState(Neighborhood currNeighborhood) public void setParameter(double parameter) } package cellsociety.model.statehandlers; public class SegregationStateHandler extends StateHandler { public SegregationStateHandler() public State figureOutNextState(Neighborhood neighborhood) public void setParameter(double parameter) } package cellsociety.model; public class WatorWorldGridModel extends DefaultGridModel { public WatorWorldGridModel(NeighborhoodsLoader neighborhoodsLoader, StateHandler stateHandler) protected void determineNextStates() } package cellsociety.view; public class DisplayView { public DisplayView(String language, Stage stage) public void setController(Controller controller) public Scene makeScene(int width, int height) public void showMessage(Exception exception) public GridView getGridView() public void setInfoText(GameDisplayInfo info) public void setupSimulation(File f) public File getCurrentStateFile() public void openNewWindow() public void addCellView(CellView cell, int row, int col) public void setGridDimensions(int numRows, int numCols) } package cellsociety.view; public class InfoPopUp { public InfoPopUp(InfoText text, String title, String styleSheet, InputFactory utils, public InfoText call(ButtonType param) public void open() public void changeInfoText(InfoText text) public void changeStyleSheet(String stylesheet) public void setVals(int val) } package cellsociety.view; public class StartView { public StartView() public String getStartLanguage() } package cellsociety.view; public class BarView extends DataView { public BarView(double width, double height) public void addCell(CellView cellView, int rowIdx, int colIdx) public void clear() public void resize(double width, double height) public void makeHistogramBars() public void updateHistogram() public void updateColors() public Node getNode() } package cellsociety.view; public class InfoText { public InfoText() public void setText(String title, String author, String description, String param) public String getTitle() public String getAuthor() public String getDescription() public String getParam() } package cellsociety.view; public class ColorPopUp { public ColorPopUp(String title, String styleSheet, GridView grid, InputFactory factory, public void open() public void setStateColors(StateColors colors) public void changeStyleSheet(String stylesheet) } package cellsociety.view; public class StateColorsFormatException extends Exception { public StateColorsFormatException(String simTitle) } package cellsociety.view; public class SimFileWriter { public SimFileWriter(String simType, ResourceBundle states, StateColors colors) public void createSim(File f, InfoText infoText, GridView cellGrid) throws FileNotFoundException } package cellsociety.view; public class PlayButton { public PlayButton(InputFactory utils, Timeline animation, GridInputs inputs) public Button getButton() public void pause() } package cellsociety.view; public class GridView extends DataView { public GridView(double width, double height) public void resize(double width, double height) public void setDimensions(int rows, int cols) public void addCell(CellView cellView, int rowIdx, int colIdx) public void clear() public int getNumCols() public int getNumRows() public Node getNode() } package cellsociety.view; public class CellView implements Observer { public CellView(CellModel cellModel) public void update() public Pane getCellPane() public void attachOnClick(EventHandler handler) public void attachId(String id) public void setDimensions(double width, double height) public void setStateColors(StateColors colors) public String getStateName() public Coordinate getCoordinate() public void setCoordinate(Coordinate coord) } package cellsociety.view; public abstract class DataView implements Iterator { public DataView(double width, double height) public void clear() public StateColors getStateColors() public void setStateColors(StateColors colors) public void setController(Controller contr) public void resize(double width, double height) public boolean hasNext() public CellView next() public void resetIterator() public void addCell(CellView cellView, int rowIdx, int colIdx) public void updateCellColors() public double getWidth() public void setWidth(double width) public double getHeight() public void setHeight(double height) public Node getNode() } package cellsociety.view; public final class InputFactory { public InputFactory(ResourceBundle resources) public void changeButtonTypeLabel(String property, Node button) public TextField makeTextField(String property, String defaultValue) public TextArea makeTextArea(String property, String defaultValue) public Label makeLabel(String property) public void attachTooltip(String property, Node node) public void changeButtonGraphic(String newProperty, Button b) public FileChooser makeChooser(String extensionAccepted) public ComboBox makeDataViewComboBox(Map map, BorderPane borderPane) } package cellsociety.view; public class GridInputs { public GridInputs(InputFactory utils, Controller controller, ResourceBundle settings) public HBox getContainer() public void disableStepButtons(Boolean disable) public PlayButton getPlayButton() public void setHistogram(BarView barView) } package cellsociety.view; public class StateColors implements Iterator { public StateColors(ResourceBundle colors) public Color getColor(String state) public void changeStateColor(String state, Color color) public boolean hasNext() public String next() public void resetIterator() } package cellsociety; public record Coordinate(int x, int y) { public boolean equals(Object obj) } package cellsociety; public record GameDisplayInfo(String type, String title, String author, String description, } package cellsociety; public interface State { Enum getStateEnum(); } package cellsociety; public interface Observer { void update(); } package cellsociety.cellstates.segregationcellstates; public class Agent1State implements State { public Enum getStateEnum() } package cellsociety.cellstates.segregationcellstates; public class Agent2State implements State { public Enum getStateEnum() } package cellsociety.cellstates.segregationcellstates; public class EmptyState implements State { public Enum getStateEnum() } package cellsociety.cellstates.percolationcellstates; public class OpenState implements State { public Enum getStateEnum() } package cellsociety.cellstates.percolationcellstates; public class BlockedState implements State { public Enum getStateEnum() } package cellsociety.cellstates.percolationcellstates; public class PercolatedState implements State { public Enum getStateEnum() } package cellsociety.cellstates.watorworldcellstates; public class FishState extends Animal implements State { public Enum getStateEnum() } package cellsociety.cellstates.watorworldcellstates; public class SharkState extends Animal implements State { public Enum getStateEnum() public int getEnergyCounter() public void setEnergyCounter(int num) } package cellsociety.cellstates.watorworldcellstates; public class Animal { public int getReproductionCounter() public void setReproductionCounter(int num) } package cellsociety.cellstates.watorworldcellstates; public class EmptyState implements State { public Enum getStateEnum() } package cellsociety.cellstates.firecellstates; public class TreeState implements State { public Enum getStateEnum() } package cellsociety.cellstates.firecellstates; public class FireState implements State { public Enum getStateEnum() } package cellsociety.cellstates.firecellstates; public class EmptyState implements State { public Enum getStateEnum() } package cellsociety.cellstates.gameoflifecellstates; public class AliveState implements State { public Enum getStateEnum() } package cellsociety.cellstates.gameoflifecellstates; public class DeadState implements State { public Enum getStateEnum() } package cellsociety.cellstates.rockpaperscissorcellstates; public class ScissorState implements State { public Enum getStateEnum() } package cellsociety.cellstates.rockpaperscissorcellstates; public class RockState implements State { public Enum getStateEnum() } package cellsociety.cellstates.rockpaperscissorcellstates; public class PaperState implements State { public Enum getStateEnum() }