package cellsociety; public class Main extends Application { public void start(Stage primaryStage) } package cellsociety.model.config; public record ParameterRecord(Map myDoubleParameters, Map myStringParameters) {} public record ParameterRecord(Map myDoubleParameters, Map myStringParameters) } package cellsociety.model.config; public record ConfigInfo( public record ConfigInfo( } package cellsociety.model.config; public class ConfigWriter { public ConfigWriter() public void saveCurrentConfig(ConfigInfo myNewConfigInfo, String path) public String getLastFileSaved() } package cellsociety.model.config; public class ConfigReader { public ConfigInfo readConfig(String fileName) public ConfigInfo getConfigInformation(File xmlFile, String fileName) public void createListOfConfigFiles() public List getFileNames() public double getVersion() } package cellsociety.model.config; public record CellRecord(int state, Map properties) {} public record CellRecord(int state, Map properties) } package cellsociety.model.logic; public class SugarLogic extends Logic { public SugarLogic(Grid grid, ParameterRecord parameters) public void update() protected void updateSingleCell(Cell cell) public double getVision() public void setVision(double vision) public double getSugarMetabolism() public void setSugarMetabolism(double sugarMetabolism) public double getSugarGrowBackRate() public void setSugarGrowBackRate(double sugarGrowBackRate) public int getSugarGrowBackInterval() public void setSugarGrowBackInterval(int sugarGrowBackInterval) } package cellsociety.model.logic; public abstract class Logic & State> { public Logic(Grid grid, ParameterRecord parameters) protected double getDoubleParamOrFallback(String paramRecordKey) throws IllegalArgumentException protected String getStringParamOrFallback(String paramRecordKey) throws IllegalArgumentException protected double loadDoubleProperty(String key) throws IllegalArgumentException protected String loadStringProperty(String key) throws IllegalArgumentException protected void checkBounds(double value, double min, double max) throws IllegalArgumentException public double getMinParam(String paramName) public double getMaxParam(String paramName) public void update() protected abstract void updateSingleCell(Cell cell); } package cellsociety.model.logic; public class LifeLogic extends Logic { public LifeLogic(Grid grid, ParameterRecord parameters) public void setRulestring(String rulestring) throws IllegalArgumentException public String getRulestring() protected void updateSingleCell(Cell cell) } package cellsociety.model.logic; public class FireLogic extends Logic { public FireLogic(Grid grid, ParameterRecord parameters) public void setProbCatch(double percentCatch) public void setProbIgnite(double percentIgnite) public void setProbTree(double percentTree) public double getProbCatch() public double getProbIgnite() public double getProbTree() protected void updateSingleCell(Cell cell) } package cellsociety.model.logic; public class SegregationLogic extends Logic { public SegregationLogic(Grid grid, ParameterRecord parameters) public void setSatisfiedThreshold(double threshold) throws IllegalArgumentException public double getSatisfiedThreshold() protected void updateSingleCell(Cell cell) } package cellsociety.model.logic; public class WatorLogic extends Logic { public WatorLogic(Grid grid, ParameterRecord parameters) public void setSharkBaseEnergy(double energy) throws IllegalArgumentException public void setFishEnergyGain(double energy) throws IllegalArgumentException public void setSharkReproductionTime(double time) throws IllegalArgumentException public void setFishReproductionTime(double time) throws IllegalArgumentException public double getSharkBaseEnergy() public double getFishEnergyGain() public double getSharkReproductionTime() public double getFishReproductionTime() public void update() protected void updateSingleCell(Cell cell) } package cellsociety.model.logic; public class FallingLogic extends Logic { public FallingLogic(Grid grid, ParameterRecord parameters) public void update() protected void updateSingleCell(Cell cell) } package cellsociety.model.logic; public class BacteriaLogic extends Logic { public BacteriaLogic(Grid grid, ParameterRecord parameters) public void setBeatingThreshold(double percThreshold) throws IllegalArgumentException public double getBeatingThreshold() public void setNumStates(double n) throws IllegalArgumentException public double getNumStates() protected void updateSingleCell(Cell cell) public void update() } package cellsociety.model.logic; public class AntLogic extends Logic { public record AntInfo(Direction orientation, boolean hasFood) { public record AntInfo(Direction orientation, boolean hasFood) public AntLogic(Grid grid, ParameterRecord parameters) throws IllegalArgumentException public void setMaxAnts(double maxAnts) throws IllegalArgumentException public double getMaxAnts() public void setEvaporationRate(double evaporationRate) throws IllegalArgumentException public double getEvaporationRate() public void setMaxHomePheromone(double maxHomePheromone) throws IllegalArgumentException public double getMaxHomePheromone() public void setMaxFoodPheromone(double maxFoodPheromone) throws IllegalArgumentException public double getMaxFoodPheromone() public void setBasePheromoneWeight(double basePheromoneWeight) throws IllegalArgumentException public double getBasePheromoneWeight() public void setPheromoneSensitivity(double pheromoneSensitivity) throws IllegalArgumentException public double getPheromoneSensitivity() public void setPheromoneDiffusionDecay(double pheromoneDiffusionDecay) public double getPheromoneDiffusionDecay() public void update() public void updateSingleCell(Cell cell) } package cellsociety.model.logic; public class PercolationLogic extends Logic { public PercolationLogic(Grid grid, ParameterRecord parameters) protected void updateSingleCell(Cell cell) } package cellsociety.model.API; public class CellModelApi { public List getFileNames() public void loadSimulation(String fileName) public void updateSimulation() public String saveSimulation(String FilePath) public void resetGrid() throws ClassNotFoundException public Map getSimulationStyles() public void setSimulationStyles(Map simulationStyles) public Map getSimulationInformation() public Set getAcceptedStates() public Map getDoubleParameters() public void setDoubleParameter(String paramName, Double value) public void setStringParameter(String paramName, String value) public Map getStringParameters() public int getGridWidth() public int getGridHeight() public double getConfigSpeed() public String getCellColor(int row, int col) public String getCellShape() public void setCellShape(String cellShape) public > void resetParameters(Class logicClass) public void resetModel() throws NoSuchMethodException } package cellsociety.model.data.cells; public class CellFactory & State> { public CellFactory(Class stateType) public Cell createCell(int initialState) } package cellsociety.model.data.cells; public class Cell & State> { public Cell(T state) public Map> getNeighbors() public T getCurrentState() public void setCurrentState(T state) public T getNextState() public void setNeighbors(Map> neighbors) public void setNextState(T nextState) public void update() public void setProperty(String property, double value) public double getProperty(String property) public void setAllProperties(Map props) public Map getAllProperties() public void copyAllPropertiesTo(Cell other) public void clearAllProperties() } package cellsociety.model.data; public class Grid & State> { public Grid(List> rawGrid, CellFactory factory, public void setGrid(List> rawGrid, CellFactory factory) public Cell getCell(int row, int col) public void updateGrid() public int getNumRows() public int getNumCols() public NeighborCalculator getNeighborCalculator() public void reassignNeighbors() } package cellsociety.model.data.states; public interface State { int getValue(); static & State> T fromInt(Class enumClass, int value) { for (T constant : enumClass.getEnumConstants()) { if (constant.getValue() == value) { T defaultConstant = enumClass.getEnumConstants()[0]; Log.error("Warning: Invalid %s value: %d. Defaulting to %s%n", enumClass.getSimpleName(), value, defaultConstant); } package cellsociety.model.data.neighbors; public class AntNeighborCalculator & State> extends NeighborCalculator { public AntNeighborCalculator() } package cellsociety.model.data.neighbors; public class FireNeighborCalculator & State> extends NeighborCalculator { public FireNeighborCalculator() } package cellsociety.model.data.neighbors; public class FallingNeighborCalculator & State> extends NeighborCalculator { public FallingNeighborCalculator() } package cellsociety.model.data.neighbors; public class WatorNeighborCalculator & State> extends NeighborCalculator { public WatorNeighborCalculator() public Map> getNeighbors(Grid grid, int row, int col) } package cellsociety.model.data.neighbors; public class SegregationNeighborCalculator & State> extends public SegregationNeighborCalculator() } package cellsociety.model.data.neighbors; public class BacteriaNeighborCalculator & State> extends NeighborCalculator { public BacteriaNeighborCalculator() public Map> getNeighbors(Grid grid, int row, int col) } package cellsociety.model.data.neighbors; public class PercolationNeighborCalculator & State> extends NeighborCalculator { public PercolationNeighborCalculator() } package cellsociety.model.data.neighbors; public abstract class NeighborCalculator & State> { public NeighborCalculator(int[][] directions) public List getDirections() public Map> getNeighbors(Grid grid, int row, int col) public Map> calculateTorusNeighbors(Grid grid, int row, int col) } package cellsociety.model.data.neighbors; public class SugarNeighborCalculator & State> extends NeighborCalculator { public SugarNeighborCalculator() public void setVision(int vision) public Map> getNeighbors(Grid grid, int row, int col) public Map> calculateSugarNeighbors(Grid grid, int row, int col) } package cellsociety.model.data.neighbors; public record Direction(int dy, int dx) {} public record Direction(int dy, int dx) } package cellsociety.model.data.neighbors; public class LifeNeighborCalculator & State> extends NeighborCalculator { public LifeNeighborCalculator() } package cellsociety.view.renderer.drawer; public class TriangleGridDrawer extends GridDrawer { protected void drawGridContents(Pane pane, int numOfRows, int numOfCols) protected void drawGridBound(Pane pane, int numOfRows, int numOfCols) } package cellsociety.view.renderer.drawer; public abstract class GridDrawer { protected void addBoundary(Pane pane, List points) protected abstract void drawGridContents(Pane pane, int numOfRows, int numOfCols); protected abstract void drawGridBound(Pane pane, int numOfRows, int numOfCols); public static void drawGrid(Pane pane, int numOfRows, int numOfCols, Class clazz) } package cellsociety.view.renderer.drawer; public class SquareGridDrawer extends GridDrawer { protected void drawGridContents(Pane pane, int numOfRows, int numOfCols) protected void drawGridBound(Pane pane, int numOfRows, int numOfCols) } package cellsociety.view.renderer; public class SceneRenderer { public static final Map DEFAULT_CELL_COLORS public static void drawGrid(Pane pane, int numOfRows, int numOfCols) public static void drawCell(Pane grid, int rowCount, int row, int col, Enum state) public static void drawParameters(Pane grid, int row, int col, Enum state, public static Color uniqueColorGenerator(int id) } package cellsociety.view.controller; public class ThemeController { public static String getThemeSheet(Theme theme, UIComponent component) } package cellsociety.view.controller; public class LanguageController { public static StringProperty getStringProperty(String key) public static void switchLanguage(Language lang) } package cellsociety.view.controller; public class SceneController { public SceneController(SimulationScene scene) public void update() public void loadConfig(String filename) public void saveConfig(String path) public List getAllConfigFileNames() public String getConfigInformation() public String getConfigTitle() public double getConfigSpeed() public void resetModel() public void resetGrid() public > void resetParameters(Class logicClass) throws Exception public void setStartPause(boolean isPaused) public boolean isLoaded() public boolean isPaused() } package cellsociety.view.docking; public class Docker { public DWindow createDWindow(StringProperty title, Node content, DockPosition dockPosition) public Stage getMainStage() public void addStyleSheet(String styleSheet) public void clearStyleSheets() public void reformat() public void accept(SplitPane splitPane) public void setWindowOpaqueOnDragging(boolean isOpaque) public void accept(SplitPane parentSplitPane) } package cellsociety.view.docking; public class DWindow { public double getWidth() public double getHeight() public void setWidth(double width) public void setHeight(double height) public double getX() public double getY() public void setX(double x) public void setY(double y) public Node getContent() public void setContent(Node content) public void setOnClose(EventHandler event) public void setDockOnClose(boolean isDockOnClose) public boolean isDockOnClose() } package cellsociety.view.docking; public class DIndicator { } package cellsociety.view.scene; public class SceneUIWidget { public static HBox createRangeUI(double min, double max, double defaultValue, StringProperty label, StringProperty tooltip, Consumer callback) public static HBox createRangeUI(String defaultValue, StringProperty label, StringProperty tooltip, Consumer callback) public static Pane dragZoomViewUI(Node content) public static ScrollPane createContainerUI(Node content, StringProperty title) public static BorderPane createSectionUI(StringProperty title, Node... rows) public static void createErrorDialog(String title, String message, Exception e) public static void createSuccessSaveDialog(String title, String message, String fileName) public static void createSplashScreen(Language defaultLanguage, Theme defaultTheme, StringProperty title, StringProperty buttonText, StringProperty languageText, StringProperty themeText, Consumer languageConsumer, Consumer themeConsumer, Runnable startCallback) public static HBox createThemeLanguageSelectorUI(StringProperty languageText, StringProperty themeText, Consumer languageConsumer, Consumer themeConsumer, String defaultLanguage, String defaultTheme) public static void setWidgetStyleSheet(String styleSheet) } package cellsociety.view.scene; public class SimulationScene { public SimulationScene(Stage primaryStage) public void start(int framesPerSecond, boolean showSplashScreen) public void setGrid(int numOfRows, int numOfCols) public void setCell(int rowCount, int row, int col, Enum state) public void setParameters(int row, int col, Enum state, Map allProperties) public void setParameter(double min, double max, double defaultValue, String labelKey, String tooltipKey, Consumer callback) public void setParameter(String defaultValue, String labelKey, String tooltipKey, Consumer callback) public int getTickSpeed() } package cellsociety.logging; public class Log { public static void trace(String msg) public static void trace(String format, Object... args) public static void info(String msg) public static void info(String format, Object... args) public static void warn(String msg) public static void warn(String format, Object... args) public static void error(String msg) public static void error(String format, Object... args) public static void trace(Throwable e, String msg) public static void info(Throwable e, String msg) public static void warn(Throwable e, String msg) public static void error(Throwable e, String msg) public static void trace(Throwable e, String format, Object... args) public static void info(Throwable e, String format, Object... args) public static void warn(Throwable e, String format, Object... args) public static void error(Throwable e, String format, Object... args) public static void addLogListener(Consumer consumer) public static void removeLogListener(Consumer consumer) public static void clearLogListeners() public static List getLogMessages() }