summaryrefslogtreecommitdiff
path: root/src/main/java/design/controller/userinput/menus
diff options
context:
space:
mode:
authorMichael Lizzio <mjl2396@rit.edu>2025-11-10 16:09:57 -0500
committerMichael Lizzio <mjl2396@rit.edu>2025-11-10 16:09:57 -0500
commitb58b98704f6b2d2b4a5938f5a8b87eda268ad88b (patch)
tree48f452e6dcb72b2d603af0e34ebcd6a83c44dcf4 /src/main/java/design/controller/userinput/menus
parent4e45988ddff84205d2c5c81466ae86f57b25de17 (diff)
downloaddesignproject-design-6-b58b98704f6b2d2b4a5938f5a8b87eda268ad88b.tar.gz
designproject-design-6-b58b98704f6b2d2b4a5938f5a8b87eda268ad88b.tar.bz2
designproject-design-6-b58b98704f6b2d2b4a5938f5a8b87eda268ad88b.zip
Fixed not updateing database on undo/redo
Diffstat (limited to '')
-rw-r--r--src/main/java/design/controller/userinput/menus/HolePlayMenu.java35
-rw-r--r--src/main/java/design/controller/userinput/menus/MainMenu.java19
-rw-r--r--src/main/java/design/controller/userinput/menus/SelectUser.java2
3 files changed, 29 insertions, 27 deletions
diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
index 2a7fc5d..6651500 100644
--- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
+++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
@@ -11,6 +11,7 @@ import design.model.Round;
import design.model.holeplay.HolePlayContext;
import design.persistence.PersonalDatabase;
import design.model.undo.UndoManager;
+import design.controller.userinput.UndoActions;
import java.util.ArrayList;
import java.util.List;
@@ -37,17 +38,37 @@ public class HolePlayMenu extends Menu {
public List<MenuOption> getMenuOptions() {
List<MenuOption> opts = new ArrayList<>();
+ // End round (always shown) 1
+ opts.add(new MenuOption("end round", () -> {
+ UndoManager.instance().capture(golfer, "End round on " + round.getCourse().getName());
+ ctx.endRoundNow();
+ System.out.println("Round ended.");
+ new MainMenu().present();
+ }));
+
+ // 2
+ opts.add(new MenuOption("undo", () -> {
+ UndoActions.undoWithSave();
+ this.present();
+ }));
+
+ // 3
+ opts.add(new MenuOption("redo", () -> {
+ UndoActions.redoWithSave();
+ this.present();
+ }));
+
boolean inSetup = (ctx.getCurrentPlay() == null);
if (inSetup) {
- // 0) Start hole
+ // 4) Start hole
opts.add(new MenuOption("start hole", () -> {
ctx.startHole();
System.out.println("Started hole " + round.getCurrentHole().getNumber() + ".");
this.present();
}));
} else {
- // 0) Take a shot
+ // 4) Take a shot
opts.add(new MenuOption("take a shot", () -> {
var selector = new SelectClub();
selector.present();
@@ -72,7 +93,7 @@ public class HolePlayMenu extends Menu {
this.present();
}));
- // 1) Hole out
+ // 5) Hole out
opts.add(new MenuOption("hole out", () -> {
// Precedes to next hole
int prev = round.getCurrentHole().getNumber();
@@ -85,14 +106,6 @@ public class HolePlayMenu extends Menu {
}));
}
- // End round (always shown)
- opts.add(new MenuOption("end round", () -> {
- UndoManager.instance().capture(golfer, "End round on " + round.getCourse().getName());
- ctx.endRoundNow();
- System.out.println("Round ended.");
- new MainMenu().present();
- }));
-
return opts;
}
diff --git a/src/main/java/design/controller/userinput/menus/MainMenu.java b/src/main/java/design/controller/userinput/menus/MainMenu.java
index 07caffa..4a221f0 100644
--- a/src/main/java/design/controller/userinput/menus/MainMenu.java
+++ b/src/main/java/design/controller/userinput/menus/MainMenu.java
@@ -2,7 +2,7 @@ package design.controller.userinput.menus;
import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
-import design.model.undo.UndoManager;
+import design.controller.userinput.UndoActions;
import java.util.List;
@@ -14,27 +14,14 @@ public class MainMenu extends Menu {
@Override
public List<MenuOption> getMenuOptions() {
-
- UndoManager um = UndoManager.instance();
-
return List.of(
new MenuOption("quit", () -> System.exit(0)),
new MenuOption("undo", () -> {
- if (!um.canUndo()) {
- System.out.println("Nothing to undo.");
- } else {
- System.out.println("Undo: " + um.peekUndoLabel());
- um.undo();
- }
+ UndoActions.undoWithSave();
this.present();
}),
new MenuOption("redo", () -> {
- if (!um.canRedo()) {
- System.out.println("Nothing to redo.");
- } else {
- System.out.println("Redo: " + um.peekRedoLabel());
- um.redo();
- }
+ UndoActions.redoWithSave();
this.present();
}),
new MenuOption("user settings...", () -> new UserSettings().present()),
diff --git a/src/main/java/design/controller/userinput/menus/SelectUser.java b/src/main/java/design/controller/userinput/menus/SelectUser.java
index 4b7928c..a2c7071 100644
--- a/src/main/java/design/controller/userinput/menus/SelectUser.java
+++ b/src/main/java/design/controller/userinput/menus/SelectUser.java
@@ -6,6 +6,7 @@ import design.controller.userinput.MenuOption;
import design.model.Golfer;
import design.runtime.Session;
import design.persistence.PersonalDatabase;
+import design.model.undo.UndoManager;
import java.io.IOException;
import java.util.ArrayList;
@@ -61,6 +62,7 @@ public class SelectUser extends Menu {
if (g.checkPassword(password)) {
// Sets user in Session too
Session.setCurrentGolfer(g);
+ UndoManager.instance().purge();
System.out.printf("Loaded user: %s%n", g);
doAfter.onAction();
} else {