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 { 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(); } }