package cellsociety.config; public class ConfigLoader { public ConfigLoader(String fileName) } package cellsociety.config; public class SimulationSaver { public static void saveSimulationState(Simulation simulation, String filePath) public static void addSimulationType(Document doc, Element rootElement, String simulationType) } package cellsociety.controller; public class Controller { public Controller(Simulation simulation, SimulationWindow simulationView) public static void handleLoadConfigurationFileButtonPress(String configurationFileName) public Simulation getSimulation() public void removeSimulation() public void handleSaveConfigurationFileButtonPress(String saveFileName) public void handleStartSimulationButtonPress() public void handlePauseSimulationButtonPress() public void handleSpeedUpSimulationButtonPress() public void handleSlowDownSimulationButtonPress() public void switchToSimulationGridView() public void switchToSimulationHistogramView() public void enableToroidalEdgePolicy() public void disableToroidalEdgePolicy() } package cellsociety; public class Game extends Application { public static boolean loadNewSimulation(String configFileName) public static void removeSimulation(Simulation simulation) public static void saveSimulationToConfig(Simulation simulation, String configFileName) public void start(Stage stage) } package cellsociety.model; public class FallingSandWater extends RuleSet { public FallingSandWater() public void setUpdateFlag(Cell[][] neighbors, Cell c1) } package cellsociety.model; public class HexGrid extends GenericGrid { public HexGrid(RuleSet rules, Cell[][] grid) public Cell[][] makeHexGrid(Cell[][] grid) public void hexGridLogic(Cell[][] hexGrid, int i, int j) } package cellsociety.model; public class FishOrShark extends Cell { public FishOrShark(int currentState, int startEnergy) public int getChrononsSurvived() public void setChrononsSurvived(int chrononsSurvived) public int getEnergy() public void setEnergy(int energy) } package cellsociety.model; public class Simulation { public Simulation(RuleSet ruleSet, Cell[][] initialGrid) // public Simulation() public String getSimulationType() public void pause() public void unpause() public void update(double elapsedTime) public double getSimulationSpeed() public void setSimulationSpeed(double speed) public int getNumStates() public Grid getGrid() // public String getAuthor() // public void setAuthor(String author) // public String getDescription() // public void setDescription(String description) public Map getConfigInfo() public void setConfigInfo(Map configInfo) } package cellsociety.model; public class GameOfLife extends RuleSet { public GameOfLife() public GameOfLife(int neighborSize, boolean vonNeuman, boolean toroidalNeighbor) public void setUpdateFlag(Cell[][] neighbors, Cell c1) } package cellsociety.model; public class AntCell extends Cell { public AntCell(int currentState, int foodPheromones, int nestPheremones, List antList) public int getFoodPheromones() public void setFoodPheromones(int foodPheromones) public int getNestPheromones() public void setNestPheromones(int nestPheromones) public List getAntList() public void setAntList(List antList) public boolean isNest() public void setNest(boolean nest) public boolean isFoodSource() public void setFoodSource(boolean foodSource) public void employEvaporation() } package cellsociety.model; public class Ants { public Ants() public boolean isHasFoodItem() public void setHasFoodItem(boolean hasFoodItem) public int getDirectionFacing() public void setDirectionFacing(int directionFacing) } package cellsociety.model; public interface Rules { Cell[][] findNeighbors(int cordX, int cordY); void setUpdateFlag(Cell[][] neighbors, Cell c1); void applyRules(); void applyUpdate(Cell c1); void update(); int countLoop(Cell[][] neighbor, int state); void neighborLoop(Cell[][] neighbor, Cell c1); void nextLogic(Cell currentCell, Cell neighborCell); } package cellsociety.model; public class Percolation extends RuleSet { public Percolation() public Percolation(int neighborSize, boolean vonNeuman, boolean toroidalNeighbor) public void setUpdateFlag(Cell[][] neighbors, Cell c1) public void nextLogic(Cell currentCell, Cell neighborCell) } package cellsociety.model; public interface Grid { void update(); int getCellState(int row, int column); int getNumRows(); int getNumCols(); void setGrid(Cell[][] cells); int getNumStates(); void setVonNeuman(boolean vonNeuman); void setNeighborSize(int neighborSize); void setToroidalNeighbor(boolean toroidalNeighbor); } package cellsociety.model; public class InitializeGrid { public InitializeGrid(int rows, int columns) public Cell[][] getGrid() public void setCellState(int row, int column, int currentState) } package cellsociety.model; public class WaterWorld extends RuleSet { public WaterWorld() public WaterWorld(int reproductionMoves, int energyFromFish, int startEnergy) public WaterWorld(int reproductionMoves, int energyFromFish, int startEnergy, public void setGrid(Cell[][] grid) public Cell[][] makeFishOrShark(Cell[][] grids) public void applyRules() public void setUpdateFlag(Cell[][] neighbors, Cell c1) } package cellsociety.model; public class FiniteGrid extends GenericGrid { public FiniteGrid(RuleSet rules, Cell[][] grid) } package cellsociety.model; public class ForagingAnts extends RuleSet { public ForagingAnts() public Cell[][] makeAntCells(Cell[][] grids) public List findSpecificNeighbors(Cell[][] neighbors) public Cell[][] rightNeighbor(Cell[][] neighbors) public Cell[][] leftNeighbor(Cell[][] neighbors) public Cell[][] upNeighbors(Cell[][] neighbors) public Cell[][] downNeighbors(Cell[][] neighbors) public void setUpdateFlag(Cell[][] neighbors, Cell c1) public Cell[] findCorrectChange(Cell c1, List mostLeft, List mostRight, List public Cell[] updateDirection(Cell c1, List mostLeft, List mostRight, List public void directionalLogic(Cell c1, Cell c2, public void updatePheromones(int fpher, int npher, AntCell c1) public void updateNextState(Cell c1) public void evaporation(AntCell a1) public void updateAnts(Cell c1, Cell mostFood, Cell mostNest, int i) public List findMostFoodOrNest(Cell[][] neighbors) public List mostLogic(Cell mostFood, Cell mostNest, Cell check) public void setGrid(Cell[][] grid) public void update() } package cellsociety.model; public class GenericGrid implements Grid { public GenericGrid(RuleSet rules, Cell[][] grid) public void setGrid(Cell[][] grid) public void update() public void print(Cell[][] grid) public int getCellState(int row, int column) public int getNumRows() public int getNumCols() public int getNumStates() public void setVonNeuman(boolean vonNeuman) public void setNeighborSize(int neighborSize) public void setToroidalNeighbor(boolean toroidalNeighbor) } package cellsociety.model; public class SpreadingOfFire extends RuleSet { public SpreadingOfFire(Cell[][] grid) public SpreadingOfFire(double probabilityIgnite, double probabilityTree) public SpreadingOfFire(double public void setUpdateFlag(Cell[][] neighbors, Cell c1) public void nextLogic(Cell currentCell, Cell neighborCell) } package cellsociety.model; public class Segregation extends RuleSet { public Segregation() public Segregation(double segregationFactor) public Segregation(double segregationFactor, public void setUpdateFlag(Cell[][] neighbors, Cell c1) public void applyUpdate(Cell c1) public List findEmptyCells() public void setGrid(Cell[][] grid) } package cellsociety.model; public class Cell { public Cell(int currentState) public int getCurrentState() public void setCurrentState(int currentState) public int getNextState() public void setNextState(int nextState) } package cellsociety.model; public abstract class RuleSet implements Rules { public RuleSet(Cell[][] grid) public RuleSet() public Cell[][] getGrid() public void setGrid(Cell[][] grid) public void applyRules() public abstract void setUpdateFlag(Cell[][] neighbors, Cell c1); public void applyUpdate(Cell c1) public int countLoop(Cell[][] neighbors, int state) public void update() public Cell[][] findNeighbors(int cordX, int cordY) public void toroidalNeighbor(Cell[][] neighbors, int cordX, int cordY, int x, int y) public void normalNeighbor(Cell[][] neighbors, int cordX, int cordY, int x, int y) public Cell[][] vonNeumanNeighbors(Cell[][] neighbors) public void neighborLoop(Cell[][] neighbor, Cell c1) public void nextLogic(Cell currentCell, Cell neighborCell) public void setVonNeuman(boolean vonNeuman) public void setNeighborSize(int neighborSize) public void setToroidalNeighbor(boolean toroidalNeighbor) } package cellsociety.view; public class SimulationWindow { public SimulationWindow(Simulation simulation) public void update() public void switchSimulationView(SimulationViewType type) } package cellsociety.view; public class View { public View(Stage stage, String resourcesFileName) public static ResourceBundle getResources() public static void showError(String message) public void update() public void addSimulation(Simulation simulation) }