diff options
| author | Michael Lizzio <142752852+Michael-Lizzio@users.noreply.github.com> | 2025-11-11 08:17:00 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-11 08:17:00 -0500 |
| commit | f438bcc00e442ec18f6a0bc8715398b981b1b189 (patch) | |
| tree | df3e18485e9a4781236f3b6c5dd8fd79ecc564e3 /src/main/java/design/controller/userinput/menus/HolePlayMenu.java | |
| parent | 868e0b1e55763f2de686332b0887398839e1fe73 (diff) | |
| parent | b58b98704f6b2d2b4a5938f5a8b87eda268ad88b (diff) | |
| download | designproject-design-6-f438bcc00e442ec18f6a0bc8715398b981b1b189.tar.gz designproject-design-6-f438bcc00e442ec18f6a0bc8715398b981b1b189.tar.bz2 designproject-design-6-f438bcc00e442ec18f6a0bc8715398b981b1b189.zip | |
Merge pull request #15 from RIT-SWEN-262/lizzio-UndoRedoSubsystem
Lizzio undo redo subsystem
Diffstat (limited to '')
| -rw-r--r-- | src/main/java/design/controller/userinput/menus/HolePlayMenu.java | 46 |
1 files changed, 35 insertions, 11 deletions
diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java index e0d1572..6651500 100644 --- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -3,12 +3,15 @@ package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.Course; +import design.model.Golfer; import design.model.Hole; import design.runtime.Session; import design.model.Club; 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; @@ -18,10 +21,11 @@ public class HolePlayMenu extends Menu { private final Round round; private final HolePlayContext ctx; + private final Golfer golfer = Session.getCurrentGolfer(); public HolePlayMenu() { this.round = createRound(); - this.ctx = new HolePlayContext(Session.getCurrentGolfer(), round, PersonalDatabase.instance()); + this.ctx = new HolePlayContext(this.golfer, round, PersonalDatabase.instance()); } @Override @@ -34,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(); @@ -60,6 +84,8 @@ public class HolePlayMenu extends Menu { dist = Integer.parseInt(ds); } + UndoManager.instance().capture(ctx, "Shot with " + club.getNickname() + " for " + dist + " yds"); + // Records shot ctx.recordShot(club, dist); System.out.println("Shot recorded: " + dist + " yds with " + club.getNickname()); @@ -67,23 +93,19 @@ 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(); + + UndoManager.instance().capture(golfer, "Hole out on " + prev + " at " + round.getCourse().getName()); + ctx.holeOut(); System.out.println("Holed out on " + prev + ". Next: " + round.getCurrentHole().getNumber()); this.present(); })); } - // End round (always shown) - opts.add(new MenuOption("end round", () -> { - ctx.endRoundNow(); - System.out.println("Round ended."); - new MainMenu().present(); - })); - return opts; } @@ -118,6 +140,8 @@ public class HolePlayMenu extends Menu { // Starts round and sends user to HolePlayMenu Hole startHole = course.getHoles().get(startHoleNum - 1); Round r = new Round(course, Session.getDateTime(), startHole); + // Undo puts golfer back to before round existed. + UndoManager.instance().capture(golfer, "Start round on " + course.getName() + " (hole " + startHoleNum + ")"); golfer.addRound(r); return r; } |
