You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.0 KiB

package de.edu.hsfulda.ccip.tdd.withdependencies;
import java.util.Collection;
import java.util.LinkedList;
import java.util.stream.Collectors;
public class GameOfLifeCell {
private GameOfLifeStatus status;
private final Collection<GameOfLifeCell> neighborStates = new LinkedList<>();
private GameOfLifeStatus nexState;
private GameOfLifeStateChangeListener stateChangeListener;
public GameOfLifeCell(//
GameOfLifeStatus status, //
GameOfLifeStateChangeListener stateChangeListener) {
this.status = status;
this.stateChangeListener = stateChangeListener;
}
public void addNeighbor(GameOfLifeCell neighbor) {
neighborStates.add(neighbor);
}
public void caclulateNextState() {
nexState = status
.calculateNextBy(neighborStates.stream().map(GameOfLifeCell::getState).collect(Collectors.toList()));
if (!nexState.equals(status))
stateChangeListener.stateChangedIn(this);
}
public GameOfLifeStatus getState() {
return status;
}
public void updateState() {
status = nexState;
}
}