From 042c456a542a60262e71f694fa21e0dfcfc25f3a Mon Sep 17 00:00:00 2001 From: Michael Lizzio Date: Sun, 5 Oct 2025 16:42:54 -0400 Subject: Completed HolePlayMenu and basic CourseSelectionMenu, minal updates to other classes --- .../controller/userinput/menus/HolePlayMenu.java | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/main/java/design/controller/userinput/menus/HolePlayMenu.java (limited to 'src/main/java/design/controller/userinput/menus/HolePlayMenu.java') 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 getMenuOptions() { + List 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; + } +} -- cgit v1.2.3 From c9992d357a0df160c8b577c12bd70338627ef2ce Mon Sep 17 00:00:00 2001 From: Michael Lizzio Date: Mon, 6 Oct 2025 16:48:53 -0400 Subject: Updated code basied on feed back --- src/main/java/design/controller/userinput/menus/HolePlayMenu.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/main/java/design/controller/userinput/menus/HolePlayMenu.java') diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java index 63447e2..782b662 100644 --- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -6,6 +6,7 @@ import design.controller.userinput.Session; import design.model.Club; import design.model.Round; import design.model.holeplay.HolePlayContext; +import design.persistence.PersonalDatabase; import java.util.ArrayList; import java.util.List; @@ -18,7 +19,7 @@ public class HolePlayMenu extends Menu { public HolePlayMenu(Round round) { this.round = round; - this.ctx = new HolePlayContext(Session.getCurrentGolfer(), round, Session.PDB); + this.ctx = new HolePlayContext(Session.getCurrentGolfer(), round, PersonalDatabase.INSTANCE); } @Override -- cgit v1.2.3 From f142eaeda48822dd595d4c3e07329f462a681aed Mon Sep 17 00:00:00 2001 From: sowgro Date: Mon, 6 Oct 2025 21:56:28 -0400 Subject: update imports --- src/main/java/design/controller/userinput/menus/HolePlayMenu.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/design/controller/userinput/menus/HolePlayMenu.java') diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java index 782b662..bcd7560 100644 --- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -2,7 +2,7 @@ package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; -import design.controller.userinput.Session; +import design.runtime.Session; import design.model.Club; import design.model.Round; import design.model.holeplay.HolePlayContext; -- cgit v1.2.3