diff options
Diffstat (limited to 'src/main')
4 files changed, 78 insertions, 44 deletions
diff --git a/src/main/java/design/controller/userinput/menus/MainMenu.java b/src/main/java/design/controller/userinput/menus/MainMenu.java index 4a221f0..8a30258 100644 --- a/src/main/java/design/controller/userinput/menus/MainMenu.java +++ b/src/main/java/design/controller/userinput/menus/MainMenu.java @@ -3,6 +3,7 @@ package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.controller.userinput.UndoActions; +import design.runtime.Session; import java.util.List; @@ -14,20 +15,32 @@ public class MainMenu extends Menu { @Override public List<MenuOption> getMenuOptions() { - return List.of( - new MenuOption("quit", () -> System.exit(0)), - new MenuOption("undo", () -> { - UndoActions.undoWithSave(); - this.present(); - }), - new MenuOption("redo", () -> { - UndoActions.redoWithSave(); - this.present(); - }), - new MenuOption("user settings...", () -> new UserSettings().present()), - new MenuOption("manage courses...", () -> new ManageCourses().present()), - new MenuOption("manage clubs...", () -> new ManageClubs().present()), - new MenuOption("statistics...", () -> new StatisticsMenu().present()), - new MenuOption("log round...", () -> new HolePlayMenu().present())); + boolean guest = Session.isGuest(); + if (guest) { + return List.of( + new MenuOption("quit", () -> System.exit(0)), + new MenuOption("guest settings...", () -> new UserSettings().present()), + new MenuOption("browse courses...", () -> new SearchMenu().present()) + + ); + } else { + return List.of( + new MenuOption("quit", () -> System.exit(0)), + new MenuOption("undo", () -> { + UndoActions.undoWithSave(); + this.present(); + }), + new MenuOption("redo", () -> { + UndoActions.redoWithSave(); + this.present(); + }), + new MenuOption("user settings...", () -> new UserSettings().present()), + new MenuOption("manage courses...", () -> new ManageCourses().present()), + new MenuOption("manage clubs...", () -> new ManageClubs().present()), + new MenuOption("statistics...", () -> new StatisticsMenu().present()), + new MenuOption("log round...", () -> new HolePlayMenu().present()) + + ); + } } } diff --git a/src/main/java/design/controller/userinput/menus/SelectUser.java b/src/main/java/design/controller/userinput/menus/SelectUser.java index a2c7071..6931a4b 100644 --- a/src/main/java/design/controller/userinput/menus/SelectUser.java +++ b/src/main/java/design/controller/userinput/menus/SelectUser.java @@ -53,6 +53,12 @@ public class SelectUser extends Menu { this.present(); })); + opts.add(new MenuOption("<guest login>", () -> { + Session.setCurrentGolfer(null); + Session.setGuest(true); + doAfter.onAction(); + })); + return opts; } diff --git a/src/main/java/design/controller/userinput/menus/UserSettings.java b/src/main/java/design/controller/userinput/menus/UserSettings.java index 36d8d70..1b2082d 100644 --- a/src/main/java/design/controller/userinput/menus/UserSettings.java +++ b/src/main/java/design/controller/userinput/menus/UserSettings.java @@ -27,6 +27,8 @@ public class UserSettings extends Menu { @Override public List<MenuOption> getMenuOptions() { + boolean guest = Session.isGuest(); + var opts = new ArrayList<MenuOption>(); opts.add(new MenuOption("return to main menu", () -> new MainMenu().present())); @@ -36,35 +38,37 @@ public class UserSettings extends Menu { new SelectUser(doAfter).present(); })); - opts.add(new MenuOption("set password...", () -> { - UndoManager.instance().capture(golfer, "Change password for @" + golfer.getUsername()); - - System.out.print("Enter password: "); - var password = scanner.nextLine(); - - golfer.setPassword(password); - try { - personalDatabase.updateGolfer(golfer); - } catch (IOException ex) { - throw new RuntimeException(ex); - } - this.present(); - })); - - opts.add(new MenuOption("set full name...", () -> { - UndoManager.instance().capture(golfer, "Change full name for @" + golfer.getUsername()); - - System.out.print("Enter full name: "); - var fullName = scanner.nextLine(); - - golfer.setFullName(fullName); - try { - personalDatabase.updateGolfer(golfer); - } catch (IOException ex) { - throw new RuntimeException(ex); - } - this.present(); - })); + if (!guest) { + opts.add(new MenuOption("set password...", () -> { + UndoManager.instance().capture(golfer, "Change password for @" + golfer.getUsername()); + + System.out.print("Enter password: "); + var password = scanner.nextLine(); + + golfer.setPassword(password); + try { + personalDatabase.updateGolfer(golfer); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + this.present(); + })); + + opts.add(new MenuOption("set full name...", () -> { + UndoManager.instance().capture(golfer, "Change full name for @" + golfer.getUsername()); + + System.out.print("Enter full name: "); + var fullName = scanner.nextLine(); + + golfer.setFullName(fullName); + try { + personalDatabase.updateGolfer(golfer); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + this.present(); + })); + } return opts; } diff --git a/src/main/java/design/runtime/Session.java b/src/main/java/design/runtime/Session.java index 59d31d8..5b00e67 100644 --- a/src/main/java/design/runtime/Session.java +++ b/src/main/java/design/runtime/Session.java @@ -7,12 +7,14 @@ import java.time.LocalDateTime; public final class Session { private static Golfer currentGolfer; private static LocalDateTime timeOverride; + private static boolean isGuest = false; public static Golfer getCurrentGolfer() { return currentGolfer; } public static void setCurrentGolfer(Golfer currentGolfer) { + Session.setGuest(false); Session.currentGolfer = currentGolfer; } @@ -23,4 +25,13 @@ public final class Session { public static void setTimeOverride(LocalDateTime timeOverride) { Session.timeOverride = timeOverride; } + + public static boolean isGuest() { + return isGuest; + } + + public static void setGuest(boolean g) { + isGuest = g; + } + } |
