summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorJacob Shimp <jrs9538@g.rit.edu>2025-10-07 08:21:24 -0400
committerJacob Shimp <jrs9538@g.rit.edu>2025-10-07 08:21:24 -0400
commit35b085903c15f0b740cd2c61a23e9d66c1bd8ae9 (patch)
tree1eec84ad36882d9c230be74f49a86bee9c2c3670 /src/main/java
parent45c57a21b5f0bf3eba5bc2663df8e57c8d129a52 (diff)
parentff2e4efb6e4a2089caaf494438bd2b86bd05ae61 (diff)
downloaddesignproject-design-6-35b085903c15f0b740cd2c61a23e9d66c1bd8ae9.tar.gz
designproject-design-6-35b085903c15f0b740cd2c61a23e9d66c1bd8ae9.tar.bz2
designproject-design-6-35b085903c15f0b740cd2c61a23e9d66c1bd8ae9.zip
merged with main to get logging in functionality
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/design/ParPal.java5
-rw-r--r--src/main/java/design/controller/userinput/Action.java2
-rw-r--r--src/main/java/design/controller/userinput/Menu.java7
-rw-r--r--src/main/java/design/controller/userinput/MenuOption.java4
-rw-r--r--src/main/java/design/controller/userinput/menus/CourseSelectMenu.java4
-rw-r--r--src/main/java/design/controller/userinput/menus/HolePlayMenu.java8
-rw-r--r--src/main/java/design/controller/userinput/menus/MainMenu.java8
-rw-r--r--src/main/java/design/controller/userinput/menus/SelectUser.java28
-rw-r--r--src/main/java/design/controller/userinput/menus/StatisticsMenu.java4
-rw-r--r--src/main/java/design/controller/userinput/menus/UserSettings.java12
10 files changed, 49 insertions, 33 deletions
diff --git a/src/main/java/design/ParPal.java b/src/main/java/design/ParPal.java
index 4ed6949..6ea9872 100644
--- a/src/main/java/design/ParPal.java
+++ b/src/main/java/design/ParPal.java
@@ -1,9 +1,12 @@
package design;
+import design.controller.userinput.Action;
import design.controller.userinput.menus.MainMenu;
+import design.controller.userinput.menus.SelectUser;
public class ParPal {
public static void main(String[] args) {
- new MainMenu().present();
+ Action doAfter = () -> new MainMenu().present();
+ new SelectUser(doAfter).present();
}
}
diff --git a/src/main/java/design/controller/userinput/Action.java b/src/main/java/design/controller/userinput/Action.java
index 0b52bfc..bb16585 100644
--- a/src/main/java/design/controller/userinput/Action.java
+++ b/src/main/java/design/controller/userinput/Action.java
@@ -2,5 +2,5 @@ package design.controller.userinput;
@FunctionalInterface
public interface Action {
- void onCommand(String[] args);
+ void onCommand();
}
diff --git a/src/main/java/design/controller/userinput/Menu.java b/src/main/java/design/controller/userinput/Menu.java
index 605b640..8eac5dd 100644
--- a/src/main/java/design/controller/userinput/Menu.java
+++ b/src/main/java/design/controller/userinput/Menu.java
@@ -14,13 +14,14 @@ public abstract class Menu {
MenuOption menuOption = menuOptions.get(i);
System.out.printf("%s: %s\n", i, menuOption.getName());
}
+
+ System.out.print("Selection: ");
Scanner sc = new Scanner(System.in);
var line = sc.nextLine();
- var split = line.split(" ");
try {
- int i = Integer.parseInt(split[0]);
- menuOptions.get(i).onCommand(Arrays.copyOfRange(split, 1, split.length));
+ int i = Integer.parseInt(line);
+ menuOptions.get(i).onCommand();
} catch (ArrayIndexOutOfBoundsException ex) {
System.err.printf("Invalid option \"%s\"\n", line);
present();
diff --git a/src/main/java/design/controller/userinput/MenuOption.java b/src/main/java/design/controller/userinput/MenuOption.java
index 9635ebd..5ae9521 100644
--- a/src/main/java/design/controller/userinput/MenuOption.java
+++ b/src/main/java/design/controller/userinput/MenuOption.java
@@ -13,7 +13,7 @@ public class MenuOption {
return name;
}
- public void onCommand(String[] args) {
- action.onCommand(args);
+ public void onCommand() {
+ action.onCommand();
}
}
diff --git a/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java b/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java
index 881c393..8df9823 100644
--- a/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java
+++ b/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java
@@ -26,10 +26,10 @@ public class CourseSelectMenu extends Menu {
List<MenuOption> opts = new ArrayList<>();
// 0) back
- opts.add(new MenuOption("back to main menu", a -> new MainMenu().present()));
+ opts.add(new MenuOption("back to main menu", () -> new MainMenu().present()));
// 1) pick course by number TODO: add error checking
- opts.add(new MenuOption("pick course by number (1..1000)", a -> {
+ opts.add(new MenuOption("pick course by number (1..1000)", () -> {
Scanner sc = new Scanner(System.in);
System.out.print("Course number (1..1000): ");
diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
index bcd7560..e12bdfa 100644
--- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
+++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
@@ -36,14 +36,14 @@ public class HolePlayMenu extends Menu {
if (inSetup) {
// 0) Start hole
- opts.add(new MenuOption("start hole", (a) -> {
+ opts.add(new MenuOption("start hole", () -> {
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) -> {
+ opts.add(new MenuOption("take a shot", () -> {
// Gets club
Scanner sc = new Scanner(System.in);
System.out.print("Club nickname: ");
@@ -68,7 +68,7 @@ public class HolePlayMenu extends Menu {
}));
// 1) Hole out
- opts.add(new MenuOption("hole out", (a) -> {
+ opts.add(new MenuOption("hole out", () -> {
// Precedes to next hole
int prev = round.getCurrentHole().getNumber();
ctx.holeOut();
@@ -78,7 +78,7 @@ public class HolePlayMenu extends Menu {
}
// End round (always shown)
- opts.add(new MenuOption("end round", (a) -> {
+ opts.add(new MenuOption("end round", () -> {
ctx.endRoundNow();
System.out.println("Round ended.");
new MainMenu().present();
diff --git a/src/main/java/design/controller/userinput/menus/MainMenu.java b/src/main/java/design/controller/userinput/menus/MainMenu.java
index c76e61a..1d6b72d 100644
--- a/src/main/java/design/controller/userinput/menus/MainMenu.java
+++ b/src/main/java/design/controller/userinput/menus/MainMenu.java
@@ -14,9 +14,9 @@ public class MainMenu extends Menu {
@Override
public List<MenuOption> getMenuOptions() {
return List.of(
- new MenuOption("user settings...", (a) -> new UserSettings().present()),
- new MenuOption("statistics...", (a) -> new StatisticsMenu().present()),
- new MenuOption("log round...", (a) -> new CourseSelectMenu().present()),
- new MenuOption("quit", (a) -> {}));
+ new MenuOption("user settings...", () -> new UserSettings().present()),
+ new MenuOption("statistics...", () -> new StatisticsMenu().present()),
+ new MenuOption("log round...", () -> new CourseSelectMenu().present()),
+ new MenuOption("quit", () -> {}));
}
}
diff --git a/src/main/java/design/controller/userinput/menus/SelectUser.java b/src/main/java/design/controller/userinput/menus/SelectUser.java
index 2f1a867..82e2338 100644
--- a/src/main/java/design/controller/userinput/menus/SelectUser.java
+++ b/src/main/java/design/controller/userinput/menus/SelectUser.java
@@ -1,16 +1,22 @@
package design.controller.userinput.menus;
+import design.controller.userinput.Action;
import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
+import design.model.Golfer;
import design.runtime.Session;
import design.persistence.PersonalDatabase;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
public class SelectUser extends Menu {
- PersonalDatabase personalDB = PersonalDatabase.INSTANCE;
+ private final PersonalDatabase personalDB = PersonalDatabase.INSTANCE;
+ private final Action doAfter;
+
+ public SelectUser(Action doAfter) {
+ this.doAfter = doAfter;
+ }
@Override
public String getTitle() {
@@ -20,14 +26,16 @@ public class SelectUser extends Menu {
@Override
public List<MenuOption> getMenuOptions() {
var l = new ArrayList<MenuOption>();
- // Sets user in Session too
- l.addAll(Arrays.stream(personalDB.getGolfers()).map(i -> new MenuOption(i.getUsername(), (a) -> {
- Session.setCurrentGolfer(i);
- System.out.printf("Loaded user: %s%n", i.getUsername());
- new UserSettings().present();
- })).toList());
- l.add(new MenuOption("<create>", (a) -> {
- }));
+ for (Golfer i : personalDB.getGolfers()) {
+ MenuOption menuOption = new MenuOption(i.getUsername(), () -> {
+ // Sets user in Session too
+ Session.setCurrentGolfer(i);
+ System.out.printf("Loaded user: %s%n", i.getUsername());
+ doAfter.onCommand();
+ });
+ l.add(menuOption);
+ }
+ l.add(new MenuOption("<create>", () -> {}));
return l;
}
}
diff --git a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java
index 72a3284..ebd2e3f 100644
--- a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java
+++ b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java
@@ -19,8 +19,8 @@ public class StatisticsMenu extends Menu {
@Override
public List<MenuOption> getMenuOptions() {
return List.of(
- new MenuOption("return to main menu", (c) -> new MainMenu().present()),
- new MenuOption("view lifetime stats", (c) -> {
+ new MenuOption("return to main menu", () -> new MainMenu().present()),
+ new MenuOption("view lifetime stats", () -> {
Golfer golfer = Session.getCurrentGolfer();
Statistics stats = new LifetimeStats(golfer);
System.out.printf("Total swings: %d\n", stats.get_score());
diff --git a/src/main/java/design/controller/userinput/menus/UserSettings.java b/src/main/java/design/controller/userinput/menus/UserSettings.java
index a866889..ab260da 100644
--- a/src/main/java/design/controller/userinput/menus/UserSettings.java
+++ b/src/main/java/design/controller/userinput/menus/UserSettings.java
@@ -1,5 +1,6 @@
package design.controller.userinput.menus;
+import design.controller.userinput.Action;
import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
@@ -15,10 +16,13 @@ public class UserSettings extends Menu {
@Override
public List<MenuOption> getMenuOptions() {
return List.of(
- new MenuOption("return to main menu", (a) -> new MainMenu().present()),
- new MenuOption("switch user...", (a) -> new SelectUser().present()),
- new MenuOption("set username...", (a -> {})),
- new MenuOption("set password...", (a) -> {})
+ new MenuOption("return to main menu", () -> new MainMenu().present()),
+ new MenuOption("switch user...", () -> {
+ Action doAfter = this::present;
+ new SelectUser(doAfter).present();
+ }),
+ new MenuOption("set username...", () -> {}),
+ new MenuOption("set password...", () -> {})
);
}
}