package cellsociety.controller; public class Controller { public Controller(SimulationScreen view) public void parseCSV(File file) public void parseSIM(File file) public void startGame() public void goToNextState(GameID gameID) public void gotoAllNextState() public void gotoPreviousState() public void saveGame(SIMData simData, File simFile, GameID gameID) public void setColors(GameID gameID, CellColors encodedColor) public void setGridSize(GameID gameID, Dimension dimension) public void deleteGame() public SIMData sendAboutInfoToView() public void makeExceptionAlertBox(String title, String message, String traceMessage) public CellColors getCellStates() } package cellsociety; public class Main extends Application { public void start (Stage primaryStage) } package cellsociety.model.communicate; public record GameParametersWithID(int ID, GameParameters gameParameters) { } package cellsociety.model.communicate; public class FromController { public FromController(Controller controller) public CSVData readFileCSV(File file) public SIMData readFileSIM(File file) public void makeNewGame(GameParameters gameParameters) public void goToNextState(GameID gameID) public void changeOneCellState(GameID gameID, Coordinates coordinates, CellStateRecord state) public void saveGame(GameID gameID, File simFile, SIMData simData) public void deleteGame(GameID gameID) public CellColors getEncodedStates(GameID gameID) public GameParameters combineParameter(CSVData csvData, SIMData simData) public void goToPreviousState() } package cellsociety.model.communicate; public record GameParameters(String gameName, int nRows, int nCols, int[][] states, String threshold) { } package cellsociety.model.communicate; public class ToController { public ToController(Controller controller) public void sendInfoToFrontEnd(GameParametersWithID gameParametersWithID) public void updateViewCells(GameID gameID, CellColors states) public void passExceptionToController(BackendException e) } package cellsociety.model.fileHandler; public abstract class InputFileReader { public void readFile(File file) throws BackendException } package cellsociety.model.fileHandler; public class CSVSaver { public static void saveCSV(File SIMFile, GameParameters stateInfo, SIMData simData) } package cellsociety.model.fileHandler; public class SIMSaver { public static void saveSim(File simFile, SIMData simData) } package cellsociety.model.fileHandler; public class CSVReader extends InputFileReader { public void readFile(File file) throws BackendException public CSVData getCSVData() } package cellsociety.model.fileHandler; public class ParsingConstants { } package cellsociety.model.fileHandler; public class SimReader extends InputFileReader { public void readFile(File file) throws BackendException public SIMData getSIMData() } package cellsociety.model.fileHandler.data; public record SIMData(String gameType, String title, String description, String author, String initalStates, String parameters, String colors) { } package cellsociety.model.fileHandler.data; public record CSVData(int nRows, int nCols, int[][] states) { } package cellsociety.model.agents; public class Tree extends Agent { public boolean isTree() } package cellsociety.model.agents; public class Shark extends Agent { public Shark(CellStates state, int reproduce, int energy) } package cellsociety.model.agents; public class PopulationGroup extends Agent { } package cellsociety.model.agents; public abstract class Agent { public void changeState(CellStates state) public boolean isState(CellStates state) public CellStates getState() } package cellsociety.model.agents; public class DefaultAgent extends Agent { public DefaultAgent() } package cellsociety.model.exceptions.customExceptions; public class CannotAddCell extends BackendException { public CannotAddCell(String message, Exception e) public String getTitle() } package cellsociety.model.exceptions.customExceptions; public class FileNotFound extends BackendException { public FileNotFound(String message, Exception e) public String getTitle() } package cellsociety.model.exceptions.customExceptions; public class ParseIntError extends BackendException { public ParseIntError(String message, Exception e) public String getTitle() } package cellsociety.model.exceptions; public interface CustomException { String getTraceMessage(); } package cellsociety.model.exceptions; public abstract class BackendException extends Exception implements CustomException { public BackendException(String customMessage, Exception e) public String getTraceMessage() public abstract String getTitle(); } package cellsociety.model.exceptions; public class ExceptionMessages { } package cellsociety.model.cell; public class CellPredatorPrey extends Cell { public void findNextState() } package cellsociety.model.cell; public class CellSpreadOfFire extends Cell { public CellSpreadOfFire() public void findNextState() protected boolean isNextBurning() public boolean neighborIsBurning() } package cellsociety.model.cell; public class CellRockPaperScissor extends Cell{ public void findNextState() } package cellsociety.model.cell; public class CellSegregation extends Cell { public CellSegregation() public void findNextState() } package cellsociety.model.cell; public class CellGameOfLife extends Cell { public void findNextState() } package cellsociety.model.cell; public abstract class Cell { protected Agent nextState protected Agent currentState protected Agent previousState protected Agent EMPTY public Agent getNextStateAgent() public Agent getCurrentStateAgent() public void updateCurrentState() public void storeNeighbors(List neighbors) public void setLocation(int i, int j) public void setGrid(Grid g) public Coordinates getLocation() public void changeState(CellStates state) public void changeNextState(Agent newAgent) public CellStates getCurrentState() public abstract void findNextState(); public void changeThreshold(double newThreshold) public boolean hasState(CellStates state) public void goToPreviousState() } package cellsociety.model.cell; public class CellPercolation extends Cell { public void findNextState() } package cellsociety.model.cell.neighbors; public class PopulateNeighborPointers { public PopulateNeighborPointers(Cell[][] cells, GameTypes type) public void populate() public void populateCell(Cell cell, int i, int j) } package cellsociety.model.cell.neighbors; public record Cells (Cell[][] cells) { } package cellsociety.model.cell.neighbors; public class NeighborCell { } package cellsociety.model.auxillary; public interface BidirectionalMap { V get(K key); K getReverse(V value); void put(K key, V value); boolean containsKey(K key); boolean containsValue(V value); int size(); } package cellsociety.model.auxillary; public class BidirectionalHashMap implements BidirectionalMap { public V get(K key) public K getReverse(V value) public void put(K key, V value) public boolean containsKey(K key) public boolean containsValue(V value) public int size() } package cellsociety.model.games; public interface StateMapInterface { CellStates getState(int stateAlias); int getBitState(CellStates state); } package cellsociety.model.games; public abstract class StateMap implements StateMapInterface { protected final BidirectionalMap biMap public CellStates getState(int stateAlias) public int getBitState(CellStates state) } package cellsociety.model.games; public class GamesManager { public int addGame(GameParameters gameParameters) public void changeAllStates(CellColors states, GameID id) public CellColors getBitStates(GameID id) public void goToNextState(GameID id) public GameIDs goToNextStateAllGames() public GameIDs getIDs() public Dimension deleteGame(GameID id) public void changeOneCellState(GameID gameID, Coordinates coordinates, CellStateRecord state) public void goToPreviousState() } package cellsociety.model.games; public record CellColors(int[][] encodedColor) { } package cellsociety.model.games.percolation; public class Percolation extends Game { } package cellsociety.model.games.percolation; public class PCLStatesMap extends StateMap implements StateMapInterface { public PCLStatesMap() } package cellsociety.model.games; public class GameNames { public static final List NameGameOfLife public static final List NamePercolation public static final List NameSegregation public static final List NamePredatoryPrey public static final List NameSpreadOfFire public static final List NameRockPaperScissor } package cellsociety.model.games.spreadOfFire; public class SpreadOfFire extends Game{ } package cellsociety.model.games.spreadOfFire; public class FireStatesMap extends StateMap implements StateMapInterface { public FireStatesMap() } package cellsociety.model.games; public class GameSelector { } package cellsociety.model.games; public record GameIDs (int[] ids) { } package cellsociety.model.games; public class GameMap { public GameMap() public BiFunction findGameType(String gameName) } package cellsociety.model.games; public record Coordinates (int row, int col) { } package cellsociety.model.games; public record CellStateRecord (int state){ } package cellsociety.model.games; public abstract class Game { protected Grid grid protected void makeGrid() public void changeGameParameters(GameParameters gameParameters) public void goToNextState() public void setAllCells(CellColors newStatesAlias) public CellColors getBitStates() public CellStates parseState(int stateAlias) public GameID getID() public void changeOneCellState(Coordinates coordinates, CellStateRecord state) public void goToPreviousState() } package cellsociety.model.games; public record Dimension(int nRows, int nCols, int ID) { } package cellsociety.model.games.predatorPrey; public class PredatoryPrey extends Game { public void goToNextState() public void setAllCells(CellColors newStates) public CellColors getBitStates() } package cellsociety.model.games.predatorPrey; public class PPRStateMap extends StateMap { public PPRStateMap() } package cellsociety.model.games.gameOfLife; public class GOLStatesMap extends StateMap implements StateMapInterface { public GOLStatesMap() } package cellsociety.model.games.gameOfLife; public class GameOfLife extends Game { } package cellsociety.model.games.rockPaperScissor; public class RockPaperScissor extends Game { public void goToNextState() public void setAllCells(CellColors newStates) public CellColors getBitStates() } package cellsociety.model.games.gameOfLife; public class SegregationStatesMap extends StateMap implements StateMapInterface { public SegregationStatesMap() } package cellsociety.model.games.segregation; public class Segregation extends Game { public void setAllCells(CellColors newStatesAlias) public static Coordinates getEmptyCell() public static void addEmptyCell(Coordinates cell) } package cellsociety.model.games; public record GameID (int ID) { } package cellsociety.model.grid; public record GridParameters(int nRow, int nCol, GameTypes type){ } package cellsociety.model.grid; public class Grid { public Grid() public Grid(Dimension dimension, GameTypes type) public void changeCellThreshold(double threshold) public void changeCellLocation(Agent newAgent, Coordinates newLoc) public void calculateNextState() public void updateAllCells() public void changeOneCellState(Coordinates coordinates, CellStates state) public CellStates stateAt(int row, int col) public double generateSeededProb() public void goToPreviousState() } package cellsociety.model.grid; public class CellMap { public CellMap() public Callable getCell(GameTypes gameType) } package cellsociety.view; public class ReflectionGeneralizer { public Object createObject(String className, Class[] constructorRequirements, Object [] params) } package cellsociety.view; public class AboutGameWindow { public AboutGameWindow(SimulationScreen simScreen, ResourceBundle languageTexts) public Scene makeAboutGameWindow() public void addText(VBox box) public void handleEvent() } package cellsociety.view; public class StartScreen { public static final ResourceBundle images public static final ResourceBundle constants public static final Locale SPANISH public static final int DEFAULT_ROW_COLS public StartScreen(Stage passedStage) public Scene makeScene(SimulationScreen sim) public HBox makeButtons(ResourceBundle language) public void handleEvents(SimulationScreen sim) public void nextScreen(SimulationScreen sim) public void textCenterer(Label str) public void HBoxCenterer(HBox box) } package cellsociety.view; public class EditableTextPairing extends HBox { public EditableTextPairing(String title, String content) public String pullText() } package cellsociety.view; public class GridView extends GridPane { public GridView() public void makeGrid(Coordinates coord) public void setColors(CellColors cellColors) public void setColor(Coordinates coordinates, CellStateRecord cellState, GameTypes type) } package cellsociety.view; public class TextPairing extends HBox { public TextPairing(String title, String content) } package cellsociety.view; public class SimulationScreen { public SimulationScreen(Stage passedStage) public Scene makeScene(int nrows, int ncols, ResourceBundle lang, Controller cont) public void makeTextButtons() public BorderPane makePane(int nrows, int ncols) public void initializeGrid(Coordinates coord, BorderPane pane) public void initializeTools(BorderPane pane) public ChoiceBox setUpSelectCSS() public VBox setUpSlider() public void handleUpperToolbarEvents() public void handleEvents() public void handleAboutButton() public void handleCSS() public SIMData getSimData() public void updateSIMData(SIMData simData) public void setColors(GameID gameID, CellColors cellStates) public void showMessage (Alert.AlertType type, String message) public void setGridSizes(int nRows, int nCols) } package cellsociety.view; public class SaveGameWindow { public SaveGameWindow(ResourceBundle lang, Controller control) public Scene makeWindow() public void handleSave() } package cellsociety.view; public class CellView extends Rectangle { public CellView(int x, int y) public void update(Color newColor) }