From 5f1ea0ee335a73edf53939b87218a34e93fe4de9 Mon Sep 17 00:00:00 2001 From: sowgro Date: Thu, 9 Oct 2025 21:03:25 -0400 Subject: Menu cleanup - pass 1 --- .../userinput/menus/CourseSelectMenu.java | 96 ++++++++-------------- 1 file changed, 32 insertions(+), 64 deletions(-) (limited to 'src/main/java/design/controller/userinput/menus/CourseSelectMenu.java') diff --git a/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java b/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java index af825e0..581b0b9 100644 --- a/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java +++ b/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java @@ -3,18 +3,19 @@ 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.model.Round; import java.time.LocalDateTime; -import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Scanner; -import design.persistence.MasterDatabase; import design.runtime.Session; public class CourseSelectMenu extends Menu { + Golfer golfer = Session.getCurrentGolfer(); @Override public String getTitle() { @@ -23,78 +24,45 @@ public class CourseSelectMenu extends Menu { @Override public List getMenuOptions() { - List opts = new ArrayList<>(); - - // 0) back - opts.add(new MenuOption("back to main menu", () -> new MainMenu().present())); - - // 1) go to CourseSearchMenu to search for a course and add it profile - opts.add(new MenuOption("Add Course to Profile", () -> new MainMenu().present())); - - // 2) pick course from MY PROFILE only - opts.add(new MenuOption("pick course from my profile", () -> { - var golfer = Session.getCurrentGolfer(); - Course[] mine = (golfer == null) ? new Course[0] : golfer.getCourses(); - - // Checks user has courses of not informs them to add one to there profile - if (mine == null || mine.length == 0) { - System.out.println("You don't have any courses saved to your profile yet."); - System.out.println("Use the 'Add Course to Profile' menu first."); - this.present(); - return; - } - // Select a course - Scanner sc = new Scanner(System.in); + return Arrays.stream(golfer.getCourses()) + .map(i -> new MenuOption(i.toString(), () -> promptHole(i))) + .toList(); + } - // Prints all courses - System.out.println("-- MY COURSES --"); - for (int i = 0; i < mine.length; i++) { - Course c = mine[i]; - System.out.printf("%d: %s (%s) | Holes: %d | Total Par: %d | Difficulty: %.1f%n", - i + 1, c.getName(), c.getLocation(), c.getHoleCount(), c.getTotalPar(), - c.getDifficultyRating()); - } - // Select course by number - Course selected = null; - while (selected == null) { - System.out.print("Select course # (1.." + mine.length + "): "); - String line = sc.nextLine().trim(); - int idx = Integer.parseInt(line); - if (idx < 1 || idx > mine.length) { - System.out.println("Out of range. Try again."); - continue; - } - selected = mine[idx - 1]; - } - // Gets starting hole on course - int startHoleNum = readStartingHole(sc, selected.getHoleCount()); - // Starts round and sends user to HolePlayMenu - startRound(selected, startHoleNum); - })); + @Override + public void present() { + // Checks user has courses of not informs them to add one to there profile + if (golfer.getCourses().length == 0) { + System.out.println("You don't have any courses saved to your profile yet."); + System.out.println("Use the 'Add Course to Profile' menu first."); + new MainMenu().present(); + return; + } - return opts; + super.present(); } - private int readStartingHole(Scanner sc, int holeCount) { + private void promptHole(Course selected) { + Scanner sc = new Scanner(System.in); + // Gets starting hole on course + int startHoleNum = 1; + int holeCount = selected.getHoleCount(); // Asks for a hole number until a valid number is selected - while (true) { - System.out.print("Starting hole (1.." + holeCount + ", blank=1): "); - String s = sc.nextLine().trim(); - if (s.isEmpty()) - return 1; + System.out.print("Starting hole (1.." + holeCount + ", blank=1): "); + String s = sc.nextLine().trim(); + if (!s.isEmpty()) { int start = Integer.parseInt(s); if (start < 1 || start > holeCount) { System.out.println("Starting hole must be between 1 and " + holeCount + "."); - continue; + return; } - return start; + startHoleNum = start; } - } - - private void startRound(Course c, int startHoleNum) { - Hole startHole = c.getHoles().get(startHoleNum - 1); - Round r = new Round(c, LocalDateTime.now(), startHole); - Session.getCurrentGolfer().addRound(r); + // Starts round and sends user to HolePlayMenu + Hole startHole = selected.getHoles().get(startHoleNum - 1); + Round r = new Round(selected, LocalDateTime.now(), startHole); + golfer.addRound(r); new HolePlayMenu(r).present(); } + } -- cgit v1.2.3 From fac7fb71260b901a893b5b90aae23e86d6c23550 Mon Sep 17 00:00:00 2001 From: sowgro Date: Sat, 11 Oct 2025 22:24:54 -0400 Subject: Menu cleanup - pass 2 --- src/main/java/design/controller/userinput/menus/CourseSelectMenu.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/design/controller/userinput/menus/CourseSelectMenu.java') diff --git a/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java b/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java index 581b0b9..4b53adb 100644 --- a/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java +++ b/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java @@ -15,7 +15,7 @@ import java.util.Scanner; import design.runtime.Session; public class CourseSelectMenu extends Menu { - Golfer golfer = Session.getCurrentGolfer(); + private final Golfer golfer = Session.getCurrentGolfer(); @Override public String getTitle() { -- cgit v1.2.3 From df8adcc59fad860445527c8a4da820a73036b542 Mon Sep 17 00:00:00 2001 From: sowgro Date: Sat, 11 Oct 2025 23:49:49 -0400 Subject: Menu cleanup - pass 3 --- .../userinput/menus/CourseSelectMenu.java | 68 ---------------------- 1 file changed, 68 deletions(-) delete mode 100644 src/main/java/design/controller/userinput/menus/CourseSelectMenu.java (limited to 'src/main/java/design/controller/userinput/menus/CourseSelectMenu.java') diff --git a/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java b/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java deleted file mode 100644 index 4b53adb..0000000 --- a/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java +++ /dev/null @@ -1,68 +0,0 @@ -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.model.Round; - -import java.time.LocalDateTime; -import java.util.Arrays; -import java.util.List; -import java.util.Scanner; - -import design.runtime.Session; - -public class CourseSelectMenu extends Menu { - private final Golfer golfer = Session.getCurrentGolfer(); - - @Override - public String getTitle() { - return "course select"; - } - - @Override - public List getMenuOptions() { - return Arrays.stream(golfer.getCourses()) - .map(i -> new MenuOption(i.toString(), () -> promptHole(i))) - .toList(); - } - - @Override - public void present() { - // Checks user has courses of not informs them to add one to there profile - if (golfer.getCourses().length == 0) { - System.out.println("You don't have any courses saved to your profile yet."); - System.out.println("Use the 'Add Course to Profile' menu first."); - new MainMenu().present(); - return; - } - - super.present(); - } - - private void promptHole(Course selected) { - Scanner sc = new Scanner(System.in); - // Gets starting hole on course - int startHoleNum = 1; - int holeCount = selected.getHoleCount(); - // Asks for a hole number until a valid number is selected - System.out.print("Starting hole (1.." + holeCount + ", blank=1): "); - String s = sc.nextLine().trim(); - if (!s.isEmpty()) { - int start = Integer.parseInt(s); - if (start < 1 || start > holeCount) { - System.out.println("Starting hole must be between 1 and " + holeCount + "."); - return; - } - startHoleNum = start; - } - // Starts round and sends user to HolePlayMenu - Hole startHole = selected.getHoles().get(startHoleNum - 1); - Round r = new Round(selected, LocalDateTime.now(), startHole); - golfer.addRound(r); - new HolePlayMenu(r).present(); - } - -} -- cgit v1.2.3