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 --- src/main/java/design/controller/userinput/menus/HolePlayMenu.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (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 14e5345..33450c9 100644 --- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -50,7 +50,7 @@ public class HolePlayMenu extends Menu { if (clubs.length == 0) { System.out.println("You don't have any clubs yet. Add one first."); - new AddClubMenu().present(); +// new AddClubMenu().present(); this.present(); return; } @@ -59,8 +59,7 @@ public class HolePlayMenu extends Menu { System.out.println("-- YOUR CLUBS --"); for (int i = 0; i < clubs.length; i++) { Club c = clubs[i]; - System.out.printf("%d: #%d %s - %s (%s)%n", - i + 1, c.getId(), c.getNickname(), c.getManufacture(), c.getClubType()); + System.out.println(c); } // user selects one of their clubs -- 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 --- .../controller/userinput/menus/HolePlayMenu.java | 24 ++++------------------ 1 file changed, 4 insertions(+), 20 deletions(-) (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 33450c9..48fff4e 100644 --- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -46,35 +46,19 @@ public class HolePlayMenu extends Menu { opts.add(new MenuOption("take a shot", () -> { // loads golfers clubs var golfer = Session.getCurrentGolfer(); - Club[] clubs = (golfer == null) ? new Club[0] : golfer.getClubs(); - if (clubs.length == 0) { + if (!golfer.hasClubs()) { System.out.println("You don't have any clubs yet. Add one first."); // new AddClubMenu().present(); this.present(); return; } - // list clubs - System.out.println("-- YOUR CLUBS --"); - for (int i = 0; i < clubs.length; i++) { - Club c = clubs[i]; - System.out.println(c); - } + var selectClub = new SelectClub(golfer); + selectClub.present(); + Club club = selectClub.getResult(); - // user selects one of their clubs Scanner sc = new Scanner(System.in); - Club club = null; - while (club == null) { - System.out.print("Select club # (1.." + clubs.length + "): "); - String line = sc.nextLine().trim(); - int idx = Integer.parseInt(line); - if (idx < 1 || idx > clubs.length) { - System.out.println("Out of range. Try again."); - continue; - } - club = clubs[idx - 1]; - } // Get shot distance (defaults to 0 of not stated) System.out.print("Distance (yds, blank=0): "); -- 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 --- .../controller/userinput/menus/HolePlayMenu.java | 58 ++++++++++++++++------ 1 file changed, 43 insertions(+), 15 deletions(-) (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 48fff4e..aee6dd7 100644 --- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -2,12 +2,15 @@ package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; +import design.model.Course; +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 java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Scanner; @@ -17,8 +20,8 @@ public class HolePlayMenu extends Menu { private final Round round; private final HolePlayContext ctx; - public HolePlayMenu(Round round) { - this.round = round; + public HolePlayMenu() { + this.round = createRound(); this.ctx = new HolePlayContext(Session.getCurrentGolfer(), round, PersonalDatabase.INSTANCE); } @@ -44,19 +47,9 @@ public class HolePlayMenu extends Menu { } else { // 0) Take a shot opts.add(new MenuOption("take a shot", () -> { - // loads golfers clubs - var golfer = Session.getCurrentGolfer(); - - if (!golfer.hasClubs()) { - System.out.println("You don't have any clubs yet. Add one first."); -// new AddClubMenu().present(); - this.present(); - return; - } - - var selectClub = new SelectClub(golfer); - selectClub.present(); - Club club = selectClub.getResult(); + var selector = new SelectClub(); + selector.present(); + Club club = selector.getResult(); Scanner sc = new Scanner(System.in); @@ -94,4 +87,39 @@ public class HolePlayMenu extends Menu { return opts; } + + private static Round createRound() { + var golfer = Session.getCurrentGolfer(); + + var selector = new SelectCourse(); + selector.present(); + Course course = selector.getResult(); + + Scanner sc = new Scanner(System.in); + // Gets starting hole on course + int startHoleNum = 1; + int holeCount = course.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; + try { + start = Integer.parseInt(s); + } catch (NumberFormatException ex) { + System.out.println("Input must be a number"); + return createRound(); + } + if (start < 1 || start > holeCount) { + System.out.println("Starting hole must be between 1 and " + holeCount + "."); + return createRound(); + } + startHoleNum = start; + } + // Starts round and sends user to HolePlayMenu + Hole startHole = course.getHoles().get(startHoleNum - 1); + Round r = new Round(course, LocalDateTime.now(), startHole); + golfer.addRound(r); + return r; + } } -- cgit v1.2.3 From ab8fc9a51e594d19a0fa020bc7ae60efe5824c42 Mon Sep 17 00:00:00 2001 From: sowgro Date: Sun, 12 Oct 2025 00:19:02 -0400 Subject: add datetime override --- src/main/java/design/controller/userinput/menus/HolePlayMenu.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (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 aee6dd7..c824341 100644 --- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -10,7 +10,6 @@ import design.model.Round; import design.model.holeplay.HolePlayContext; import design.persistence.PersonalDatabase; -import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Scanner; @@ -118,7 +117,7 @@ public class HolePlayMenu extends Menu { } // Starts round and sends user to HolePlayMenu Hole startHole = course.getHoles().get(startHoleNum - 1); - Round r = new Round(course, LocalDateTime.now(), startHole); + Round r = new Round(course, Session.getDateTime(), startHole); golfer.addRound(r); return r; } -- cgit v1.2.3