diff options
| author | Tyler Ferrari <69283684+Sowgro@users.noreply.github.com> | 2025-10-06 22:17:09 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-06 22:17:09 -0400 |
| commit | 7ceecf80509e3387e9aa57d2996c333e4bfe4966 (patch) | |
| tree | be6673c6d3259face6c4936bdbc3d4801b3ec4c5 /src/main/java/design/controller/userinput/menus/HolePlayMenu.java | |
| parent | 5b561d4743556a60cb4dc198489b48f8844a5c28 (diff) | |
| parent | 97561886cb2ebc3f71558edd8d2202aa3a0cb03d (diff) | |
| download | designproject-design-6-7ceecf80509e3387e9aa57d2996c333e4bfe4966.tar.gz designproject-design-6-7ceecf80509e3387e9aa57d2996c333e4bfe4966.tar.bz2 designproject-design-6-7ceecf80509e3387e9aa57d2996c333e4bfe4966.zip | |
Merge pull request #5 from RIT-SWEN-262/lizzio-holeplayUI
Lizzio holeplay UI
Diffstat (limited to '')
| -rw-r--r-- | src/main/java/design/controller/userinput/menus/HolePlayMenu.java | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java new file mode 100644 index 0000000..bcd7560 --- /dev/null +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -0,0 +1,89 @@ +package design.controller.userinput.menus; + +import design.controller.userinput.Menu; +import design.controller.userinput.MenuOption; +import design.runtime.Session; +import design.model.Club; +import design.model.Round; +import design.model.holeplay.HolePlayContext; +import design.persistence.PersonalDatabase; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class HolePlayMenu extends Menu { + + private final Round round; + private final HolePlayContext ctx; + + public HolePlayMenu(Round round) { + this.round = round; + this.ctx = new HolePlayContext(Session.getCurrentGolfer(), round, PersonalDatabase.INSTANCE); + } + + @Override + public String getTitle() { + return String.format("hole play - %s | hole %d", round.getCourse().getName(), + round.getCurrentHole().getNumber()); + } + + @Override + public List<MenuOption> getMenuOptions() { + List<MenuOption> opts = new ArrayList<>(); + + boolean inSetup = (ctx.getCurrentPlay() == null); + + if (inSetup) { + // 0) Start hole + opts.add(new MenuOption("start hole", (a) -> { + ctx.startHole(); + System.out.println("Started hole " + round.getCurrentHole().getNumber() + "."); + this.present(); + })); + } else { + // 0) Take a shot + opts.add(new MenuOption("take a shot", (a) -> { + // Gets club + 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("Generic", nick, Club.ClubType.DRIVER); + + // Get shot distance (defaults to 0 of not stated) + System.out.print("Distance (yds, blank=0): "); + String ds = sc.nextLine().trim(); + int dist = 0; + if (!ds.isEmpty()) { + dist = Integer.parseInt(ds); + } + + // Records shot + ctx.recordShot(club, dist); + System.out.println("Shot recorded: " + dist + " yds with " + club.getNickname()); + + this.present(); + })); + + // 1) Hole out + opts.add(new MenuOption("hole out", (a) -> { + // Precedes to next hole + int prev = round.getCurrentHole().getNumber(); + ctx.holeOut(); + System.out.println("Holed out on " + prev + ". Next: " + round.getCurrentHole().getNumber()); + this.present(); + })); + } + + // End round (always shown) + opts.add(new MenuOption("end round", (a) -> { + ctx.endRoundNow(); + System.out.println("Round ended."); + new MainMenu().present(); + })); + + return opts; + } +} |
