diff options
| author | Michael Lizzio <mjl2396@rit.edu> | 2025-10-05 16:42:54 -0400 |
|---|---|---|
| committer | Michael Lizzio <mjl2396@rit.edu> | 2025-10-05 16:42:54 -0400 |
| commit | 042c456a542a60262e71f694fa21e0dfcfc25f3a (patch) | |
| tree | 9a9fc9b17db70a280f32949e423c7138bd0a69fd /src/main/java/design/controller/userinput/menus/HolePlayMenu.java | |
| parent | 204654ad4a69677e9f38308344760ddb33316758 (diff) | |
| download | designproject-design-6-042c456a542a60262e71f694fa21e0dfcfc25f3a.tar.gz designproject-design-6-042c456a542a60262e71f694fa21e0dfcfc25f3a.tar.bz2 designproject-design-6-042c456a542a60262e71f694fa21e0dfcfc25f3a.zip | |
Completed HolePlayMenu and basic CourseSelectionMenu, minal updates to other classes
Diffstat (limited to '')
| -rw-r--r-- | src/main/java/design/controller/userinput/menus/HolePlayMenu.java | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java new file mode 100644 index 0000000..63447e2 --- /dev/null +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -0,0 +1,88 @@ +package design.controller.userinput.menus; + +import design.controller.userinput.Menu; +import design.controller.userinput.MenuOption; +import design.controller.userinput.Session; +import design.model.Club; +import design.model.Round; +import design.model.holeplay.HolePlayContext; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class HolePlayMenu extends Menu { + + private final Round round; + private final HolePlayContext ctx; + + public HolePlayMenu(Round round) { + this.round = round; + this.ctx = new HolePlayContext(Session.getCurrentGolfer(), round, Session.PDB); + } + + @Override + public String getTitle() { + return String.format("hole play - %s | hole %d", round.getCourse().getName(), + round.getCurrentHole().getNumber()); + } + + @Override + public List<MenuOption> getMenuOptions() { + List<MenuOption> opts = new ArrayList<>(); + + boolean inSetup = (ctx.getCurrentPlay() == null); + + if (inSetup) { + // 0) Start hole + opts.add(new MenuOption("start hole", (a) -> { + ctx.startHole(); + System.out.println("Started hole " + round.getCurrentHole().getNumber() + "."); + this.present(); + })); + } else { + // 0) Take a shot + opts.add(new MenuOption("take a shot", (a) -> { + // Gets club + Scanner sc = new Scanner(System.in); + System.out.print("Club nickname: "); + String nick = sc.nextLine().trim(); + // Defaulted to Driver for now + // TODO update logic + Club club = new Club("Generic", nick, Club.ClubType.DRIVER); + + // Get shot distance (defaults to 0 of not stated) + System.out.print("Distance (yds, blank=0): "); + String ds = sc.nextLine().trim(); + int dist = 0; + if (!ds.isEmpty()) { + dist = Integer.parseInt(ds); + } + + // Records shot + ctx.recordShot(club, dist); + System.out.println("Shot recorded: " + dist + " yds with " + club.getNickname()); + + this.present(); + })); + + // 1) Hole out + opts.add(new MenuOption("hole out", (a) -> { + // Precedes to next hole + int prev = round.getCurrentHole().getNumber(); + 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", (a) -> { + ctx.endRoundNow(); + System.out.println("Round ended."); + new MainMenu().present(); + })); + + return opts; + } +} |
