package model; import javafx.beans.property.Property; import javafx.beans.property.SimpleObjectProperty; /** * {@link Cell} instances represent the cells of <i>The Game of Life</i>. */ public class Cell { private final Property<CellState> stateProperty = new SimpleObjectProperty<>(CellState.DEAD); /** * Determines whether this {@link Cell} is alive or not. * * @return {@code true} if this {@link Cell} is alive and {@code false} otherwise */ public boolean isAlive() { return getState().isAlive; } /** * Sets the state of this {@link Cell}. * * @param cellState the new state of this {@link Cell} */ public void setState(CellState cellState) { getStateProperty().setValue(cellState); } /** * Returns the current state of this {@link Cell}. * * @return the current state of this {@link Cell} */ public CellState getState(){ return getStateProperty().getValue(); } /** * Change the state of this {@link Cell} from ALIVE to DEAD or from DEAD to ALIVE. */ public void toggleState() { CellState[] possibleStates = CellState.values(); int stateOrdinal = getState().ordinal(); int numberOfPossibleStates = possibleStates.length; setState(possibleStates[(stateOrdinal+1)%numberOfPossibleStates]); } /** * Returns this {@link Cell}'s state property. * * @return this {@link Cell}'s state property. */ public Property<CellState> getStateProperty() { return stateProperty; } }