diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/Domain/StateManager.java b/Hitori/src/main/java/PR2/HitoriSpiel/Domain/StateManager.java new file mode 100644 index 0000000..2705a93 --- /dev/null +++ b/Hitori/src/main/java/PR2/HitoriSpiel/Domain/StateManager.java @@ -0,0 +1,37 @@ +package PR2.HitoriSpiel.Domain; + +import java.util.Stack; + +public class StateManager { + private final Stack undoStack = new Stack<>(); + private final Stack redoStack = new Stack<>(); + + public void saveState(int[][] state) { + undoStack.push(copyArray(state)); + redoStack.clear(); // Redo-Stack leeren, da ein neuer Zustand hinzugefügt wurde + } + + public int[][] undo(int[][] currentState) { + if (!undoStack.isEmpty()) { + redoStack.push(copyArray(currentState)); // Aktuellen Zustand im Redo-Stack speichern + return undoStack.pop(); + } + return null; // Kein Zustand zum Zurücksetzen + } + + public int[][] redo(int[][] currentState) { + if (!redoStack.isEmpty()) { + undoStack.push(copyArray(currentState)); // Aktuellen Zustand im Undo-Stack speichern + return redoStack.pop(); + } + return null; // Kein Zustand zum Wiederherstellen + } + + private int[][] copyArray(int[][] original) { + int[][] copy = new int[original.length][]; + for (int i = 0; i < original.length; i++) { + copy[i] = original[i].clone(); + } + return copy; + } +}