summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/personaldb.json87
-rw-r--r--src/main/java/design/controller/userinput/menus/HolePlayMenu.java37
2 files changed, 117 insertions, 7 deletions
diff --git a/data/personaldb.json b/data/personaldb.json
index d4408b0..04ae74d 100644
--- a/data/personaldb.json
+++ b/data/personaldb.json
@@ -7,7 +7,92 @@
1,
2
],
- "rounds": [],
+ "rounds": [
+ {
+ "course": 1,
+ "dateTime": [
+ 2025,
+ 10,
+ 7,
+ 13,
+ 54,
+ 37,
+ 429963500
+ ],
+ "startingHole": {
+ "number": 1,
+ "par": 5
+ },
+ "plays": [
+ {
+ "holeNumber": 1,
+ "swings": [
+ {
+ "distance": 100,
+ "clubUsed": {
+ "id": 1,
+ "manufacture": "Bobby",
+ "nickname": "swen 261",
+ "clubType": "DRIVER"
+ }
+ },
+ {
+ "distance": 5,
+ "clubUsed": {
+ "id": 2,
+ "manufacture": "Bobby",
+ "nickname": "swen 262",
+ "clubType": "PUTTER"
+ }
+ },
+ {
+ "distance": 1,
+ "clubUsed": {
+ "id": 2,
+ "manufacture": "Bobby",
+ "nickname": "swen 262",
+ "clubType": "PUTTER"
+ }
+ }
+ ],
+ "swingCount": 3,
+ "distance": 106
+ },
+ {
+ "holeNumber": 2,
+ "swings": [
+ {
+ "distance": 1000,
+ "clubUsed": {
+ "id": 1,
+ "manufacture": "Bobby",
+ "nickname": "swen 261",
+ "clubType": "DRIVER"
+ }
+ },
+ {
+ "distance": 2,
+ "clubUsed": {
+ "id": 1,
+ "manufacture": "Bobby",
+ "nickname": "swen 261",
+ "clubType": "DRIVER"
+ }
+ }
+ ],
+ "swingCount": 2,
+ "distance": 1002
+ }
+ ],
+ "currentHoleIndex": 2,
+ "currentHole": {
+ "number": 3,
+ "par": 4
+ },
+ "totalSwings": 5,
+ "totalDistance": 1108.0
+ }
+ ],
"clubs": [
{
"id": 1,
diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
index 34e36f6..14e5345 100644
--- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
+++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
@@ -44,13 +44,38 @@ public class HolePlayMenu extends Menu {
} else {
// 0) Take a shot
opts.add(new MenuOption("take a shot", () -> {
- // Gets club
+ // loads golfers clubs
+ var golfer = Session.getCurrentGolfer();
+ Club[] clubs = (golfer == null) ? new Club[0] : golfer.getClubs();
+
+ if (clubs.length == 0) {
+ 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.printf("%d: #%d %s - %s (%s)%n",
+ i + 1, c.getId(), c.getNickname(), c.getManufacture(), c.getClubType());
+ }
+
+ // user selects one of their clubs
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(0, "Generic", nick, Club.ClubType.DRIVER);
+ 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): ");