import java.util.LinkedList;
import java.util.List;
class GODLModel {
private final LinkedList undoList;
private final LinkedList redoList;
GODLModel(int xSize, int ySize, RuleSet rules) {
this.undoList = new LinkedList();
this.redoList = new LinkedList();
}
public void setLifeform(int x, int y, int value) {
undoList.push((Object) playground.clone());
original(x, y, value);
}
public void setPlayground(int[][] pg) {
undoList.push((Object) playground.clone());
original(pg);
}
public void nextGeneration() {
undoList.push((Object) playground.clone());
original();
}
public void undo() {
redoList.push((Object) playground);
playground = (Playground) undoList.pop();
notifyObservers();
}
public void redo() {
undoList.push((Object) playground);
playground = (Playground) redoList.pop();
notifyObservers();
}
public boolean undoAvailable() {
return undoList != null && !undoList.isEmpty();
}
public boolean redoAvailable() {
return redoList != null && !redoList.isEmpty();
}
}