summaryrefslogtreecommitdiff
path: root/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/design/controller/userinput/menus/HolePlayMenu.java58
1 files changed, 43 insertions, 15 deletions
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;
+ }
}