package cellsociety.config; public class Config { public Config() public String getType() public void setType(String type) public String getTitle() public void setTitle(String title) public List getAuthors() public void setAuthors(List authors) public String getDescription() public void setDescription(String description) public int getWidth() public void setWidth(int width) public int getHeight() public void setHeight(int height) public List> getInitialStates() public void setInitialStates(List> initialStates) public Map getParameters() public void setParameters(Map parameters) } package cellsociety.config; public class ConfigRebuilder { public static void rebuildFile(Config config, String filepath) } package cellsociety.config; public class ConfigParser { public static Config parseFile(String filePath) throws Exception } package cellsociety; public class SimulationController { public SimulationController(Stage primaryStage, String configFileName) public void startApplication() public void startSimulation() public void pauseSimulation() public void resetSimulation() public void updateSpeed(double newSpeed) public double getSpeed() public void openSaveDialog() } package cellsociety.model; public class Simulator { public Simulator(String filename) public void step() public Grid getGrid() public String getFilePath() public Config getConfig() } package cellsociety.model; public class SimulationSaver { public static void saveSimulationState(Config config, String filename, String title, String description, Grid grid) } package cellsociety.model.rulesets; public class GameOfLife extends Ruleset{ public GameOfLife(Map parameters) public void applyRules(Grid grid) } package cellsociety.model.rulesets; public class FireSpread extends Ruleset { public FireSpread(Map parameters) public void applyRules(Grid grid) } package cellsociety.model.rulesets; public class Percolation extends Ruleset{ public Percolation(Map parameters) public void applyRules(Grid grid) } package cellsociety.model.rulesets; public class RulesetFactory { public static Ruleset createRuleset(Config config) } package cellsociety.model.rulesets; public class Segregation extends Ruleset{ public Segregation(Map parameters) public void applyRules(Grid grid) } package cellsociety.model.rulesets; public class WaTorWorld extends Ruleset{ public WaTorWorld(Map parameters) public void applyRules(Grid grid) public void applyWaTorRules(WaTorWorldGrid grid) } package cellsociety.model.rulesets; public abstract class Ruleset { public Ruleset(Map parameters) public Double getParameters(String parameterName) public abstract void applyRules(Grid grid); } package cellsociety.model.grid; public class WaTorWorldGrid extends Grid { public WaTorWorldGrid(int width, int height, List> initialStates) protected WaTorWorldCell createCell(int x, int y, String state) public List getNeighbors(Cell cell) } package cellsociety.model.grid; public class Grid { public Grid(int width, int height, List> initialStates) public T getCell(int row, int col) protected List> initializeGrid(int width, int height, List> initialStates) protected T createCell(int x, int y, String state) public List getNeighbors(Cell cell) public int getWidth() public int getHeight() } package cellsociety.model.grid.cell; public class WaTorWorldCell extends Cell { public WaTorWorldCell(int x, int y, String initialState) public boolean hasFish() public boolean hasShark() public Fish getFish() public Shark getShark() public void setFish(Fish fish) public void setShark(Shark shark) public void removeFish() public void removeShark() } package cellsociety.model.grid.cell; public class Cell { public Cell(int x, int y, String initialState) public void setNextState(String state) public String getCurrentState() public String getNextState() public int getX() public int getY() } package cellsociety.model.grid.entities; public class Shark { public Shark(double initialEnergy) public double getAge() public double getEnergy() public void incrementAge() public void decrementEnergy() public boolean isStarved() public boolean canReproduce(double reproductionTime) public void eatFish(double energyGain) public Shark reproduce() } package cellsociety.model.grid.entities; public class Fish { public Fish() public double getAge() public void incrementAge() public boolean canReproduce(double reproductionTime) public Fish reproduce() } package cellsociety.view; public class SetupScreen { public SetupScreen(ViewsHandler viewsHandler) public VBox getRoot() } package cellsociety.view; public class ControlPanel { public ControlPanel(SimulationController simulationController) public HBox getControlBox() } package cellsociety.view; public class ViewsHandler extends Application { public void start(Stage primaryStage) public void showSetupScreen() public void showSimulationScreen(String configFile) } package cellsociety.view; public class GridView { public GridView(Grid grid) public void updateView() public void setGrid(Grid grid) public GridPane getGridPane() } package cellsociety.view; public class SimulationDetailsView { public SimulationDetailsView(Config config) public VBox getDetailsBox() } package cellsociety.view; public class SaveDialog { public SaveDialog(String currentTitle, String currentDescription) public boolean isSaved() public String getTitle() public String getDescription() public String getFilename() }