package cellsociety.config; public class ConfigFileChooser { public static final String DATA_FILE_FOLDER public static Optional chooseFile(Stage stage) } package cellsociety.config; public record Parameter(String xmlName, double min, double max, DoubleProperty valueProperty) { protected static void parseParameters(Element xmlDoc, Ruleset ruleset, SimulatorConfig config) public String displayName() public String shorthandName() } package cellsociety.config; public class XmlUtils { protected static String getTextValue(Element e, String tagName) throws SAXException protected static String getTextValue(Element e, String tagName, String defaultValue) } package cellsociety.config; public class Localizer { public static String getString(String parameter) } package cellsociety.config; public class SimulatorConfig { public SimulatorConfig(Element xmlDoc) throws SAXException public StringProperty authorProperty() public StringProperty titleProperty() public StringProperty descriptionProperty() public DoubleProperty speedProperty() public ReadOnlyProperty simulatorProperty() public ReadOnlyProperty gridProperty() public ReadOnlyProperty gridTypeProperty() public ReadOnlyProperty edgeProperty() public ReadOnlyMapProperty parameterProperty() public ReadOnlyMapProperty> colorsProperty() public Parameter getParameter(String paramName) public ObjectProperty getColor(int state) } package cellsociety.config; public class InitialState { public record ConfigCell(List cellParameters) {} public InitialState(List> state) protected static InitialState getInitialState(Element xmlDoc) public int width() public int height() public ConfigCell get(int x, int y) public String toString() } package cellsociety.utils; public class Util { public static void initializeAndListen(ReadOnlyProperty property, Runnable fn) } package cellsociety; public class Main extends Application { public void start(Stage stage) } package cellsociety.model.grids; public class HexagonalGrid implements Grid { public HexagonalGrid() public HexagonalGrid(String type) public List getNeighbors(int x, int y) } package cellsociety.model.grids; public class SquareGrid implements Grid { public SquareGrid() public SquareGrid(String type) public List getNeighbors(int x, int y) } package cellsociety.model.grids; public interface Grid { record Neighbor(int dx, int dy, double angle) {} List getNeighbors(int x, int y); } package cellsociety.model; public interface CellState { record CellParameter(List modifiers, int value) { public static CellParameter makeParameter(int value) public static CellParameter makeParameter(String modifiers, int value) public boolean hasModifier(char modifier) } static int primaryValue(CellState cell) static int primaryValue(List parameters) List parameters(); CellState increment(); CellState makeState(List parameters); } package cellsociety.model; public class Simulator { public Simulator(Ruleset ruleset, InitialState initialState, SimulatorConfig config) public void step() public Board getBoard() } package cellsociety.model; public class Board { public class MutableCell { public MutableCell(int x, int y) public CellState getState() public void setState(CellState state) public CellState getNextState() public int getX() public int getY() public ObjectProperty getProperty() public List getNeighbors() public List getNeighbors(Predicate filterPredicate) public List getNextNeighbors(Predicate filterPredicate) public int countNeighbors(Predicate filterPredicate) public Optional getNeighborByAngle(double angle) } public class NeighborCell extends MutableCell { public NeighborCell(int x, int y, double angle) public double getAngle() } public Board(InitialState initialState, CellState defaultState, SimulatorConfig config) public List allCells() public MutableCell getCell(int x, int y) public int width() public int height() protected void commitChanges() } package cellsociety.model.rulesets; public class GameOfLife extends Ruleset { public GameOfLife(SimulatorConfig config) public void step(Board board) public CellState defaultState() public List getParameters() public List parameters() public CellState increment() public CellState makeState(List parameters) } package cellsociety.model.rulesets; public class SchellingSegregation extends Ruleset { public SchellingSegregation(SimulatorConfig config) public void step(Board board) public CellState defaultState() public List getParameters() public List parameters() public CellState increment() public CellState makeState(List parameters) } package cellsociety.model.rulesets; public class Percolation extends Ruleset { public Percolation(SimulatorConfig config) public void step(Board board) public CellState defaultState() public List getParameters() public List parameters() public CellState increment() public CellState makeState(List parameters) } package cellsociety.model.rulesets; public class LangtonsLoop extends Ruleset { public LangtonsLoop(SimulatorConfig config) public void step(Board board) public CellState defaultState() public List getParameters() public List parameters() public CellState increment() public CellState makeState(List parameters) } package cellsociety.model.rulesets; public class ForestFire extends Ruleset { public ForestFire(SimulatorConfig config) public void step(Board board) public CellState defaultState() public List getParameters() public List parameters() public CellState increment() public CellState makeState(List parameters) } package cellsociety.model.rulesets; public class WaTorWorld extends Ruleset { public abstract class AnimalState implements CellState { public int value() public CellState increment() public CellState makeState(List parameters) public abstract StepResult step(); } public class Empty extends AnimalState { public StepResult step() public List parameters() } public WaTorWorld(SimulatorConfig config) public void step(Board board) public CellState defaultState() public List getParameters() } package cellsociety.model.rulesets; public abstract class Ruleset { protected static void applyNextStateFn(Board board, NextStateFunction stateChanger) protected double getParameter(String paramName) public abstract void step(Board board); public abstract CellState defaultState(); public abstract List getParameters(); } package cellsociety.model.edges; public class BlankEdge implements Edge { public Optional getWrappedPoint(Point point, int width, int height) } package cellsociety.model.edges; public class TorusEdge implements Edge { public Optional getWrappedPoint(Point point, int width, int height) } package cellsociety.model.edges; public interface Edge { Optional getWrappedPoint(Point point, int width, int height); } package cellsociety.view.cells; public class HexagonalCell extends CellView { public HexagonalCell(CellArgs args) } package cellsociety.view.cells; public class SquareCell extends CellView { public SquareCell(CellArgs args) } package cellsociety.view.cells; public abstract class CellView { protected CellView(CellArgs args, Shape shape) public int getX() public int getY() public Shape getShape() public DoubleProperty getRelativeSize() } package cellsociety.view; public class CellFactory { public record CellArgs(MutableCell cell, DoubleProperty relativeSize, SimulatorConfig config) {} public static CellView createCell(CellArgs args) } package cellsociety.view; public class ControlPanel { public ControlPanel(SimulatorConfig config) public Pane getPane() } package cellsociety.view; public class PropertyFields { public PropertyFields(ReadOnlyMapProperty propertyMap, public void addSpinners(List values, SimulatorConfig config) public Node getNode() } package cellsociety.view; public class SimulationWindow { public SimulationWindow(SimulatorConfig config) } package cellsociety.view; public class CellDisplay { public CellDisplay(SimulatorConfig config) public Pane getPane() } package cellsociety.view; public class DetailsPanel { public DetailsPanel(SimulatorConfig config) public Node getNode() }