From da9852ec5ba86c7a1a428bcdf2ebd960515fd4fd Mon Sep 17 00:00:00 2001
From: =
Date: Tue, 26 May 2026 15:28:30 +0200
Subject: [PATCH] Feat: Fixed quit options
---
.../g40/mappe/service/event/EventType.java | 11 ++++-
.../mappe/view/ingame/InGameController.java | 14 +-----
.../ingame/quit/QuitDialogController.java | 12 ++++-
.../view/widgets/topbar/TopBarController.java | 44 -------------------
4 files changed, 23 insertions(+), 58 deletions(-)
diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/event/EventType.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/event/EventType.java
index ff2e13e..bc8b9b1 100644
--- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/event/EventType.java
+++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/event/EventType.java
@@ -99,5 +99,14 @@ public enum EventType implements EventChannel {
* {@link edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.market.MarketController}
* and handled by {@link edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.dashboard.DashBoardController}
* */
- SELECT_STOCK_FOR_DASHBOARD;
+ SELECT_STOCK_FOR_DASHBOARD,
+
+ /**
+ * Event for showing quit options.
+ *
+ * Published by the {@link edu.ntnu.idi.idatt2003.g40.mappe.view.ingame.InGameController}.
+ * Handled by the {@link edu.ntnu.idi.idatt2003.g40.mappe.view.ingame.quit.QuitDialogController}.
+ * */
+ SHOW_QUIT_OPTIONS;
+
}
diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameController.java
index f099411..2402aaf 100644
--- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameController.java
+++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameController.java
@@ -5,8 +5,6 @@
import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventSubscriber;
import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventType;
import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewController;
-import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewData;
-import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewEnum;
import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.WidgetEnum;
import java.util.EnumMap;
import javafx.scene.Node;
@@ -53,14 +51,6 @@ public void addwidget(final WidgetEnum widgetEnum, final Node widgetRoot) {
widgetMap.put(widgetEnum, widgetRoot);
}
- /**
- * Getter method for currently active widget.
- * */
- private WidgetEnum getActiveWidget() {
- return activeWidget;
- }
-
-
@Override
protected void initInteractions() {
@@ -75,8 +65,8 @@ public void handleEvent(final EventData data) {
if (data.data() == WidgetEnum.DASHBOARD) {
getViewElement().getTopBarView().setQuitText("Quit");
if (activeWidget == WidgetEnum.DASHBOARD) {
- ViewData viewData = new ViewData(ViewEnum.MAIN_MENU);
- EventData eventData = new EventData<>(EventType.SCENE_CHANGE, viewData);
+ EventData eventData =
+ new EventData<>(EventType.SHOW_QUIT_OPTIONS, true);
invoke(eventData);
}
} else {
diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/quit/QuitDialogController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/quit/QuitDialogController.java
index 52a4e90..0d12399 100644
--- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/quit/QuitDialogController.java
+++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/quit/QuitDialogController.java
@@ -3,7 +3,10 @@
import edu.ntnu.idi.idatt2003.g40.mappe.model.SaveGame;
import edu.ntnu.idi.idatt2003.g40.mappe.service.GameStateLoader;
import edu.ntnu.idi.idatt2003.g40.mappe.service.SaveGameService;
+import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventData;
import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventManager;
+import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventSubscriber;
+import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventType;
import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewController;
import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewEnum;
import edu.ntnu.idi.idatt2003.g40.mappe.view.ingame.InGameView;
@@ -30,7 +33,8 @@
* no-op rather than an error, since there's nothing meaningful to write.
* */
public final class QuitDialogController
- extends ViewController {
+ extends ViewController
+ implements EventSubscriber {
/** The in-game view hosting this overlay. */
private final InGameView inGameView;
@@ -67,6 +71,7 @@ public QuitDialogController(final QuitDialogView view,
this.gameStateLoader = gameStateLoader;
this.saveGameService = saveGameService;
super(view, eventManager);
+ eventManager.addSubscriber(this, EventType.SHOW_QUIT_OPTIONS);
if (inGameView == null
|| gameStateLoader == null
|| saveGameService == null) {
@@ -185,4 +190,9 @@ private boolean performSave() {
return false;
}
}
+
+ @Override
+ public void handleEvent(EventData data) {
+ show();
+ }
}
diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarController.java
index d79ccff..442c315 100644
--- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarController.java
+++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarController.java
@@ -4,11 +4,7 @@
import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventManager;
import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventType;
import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewController;
-import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewEnum;
-import javafx.scene.Node;
-import java.util.function.Consumer;
import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.WidgetEnum;
-import javafx.scene.Node;
/**
* Controller class for {@link TopBarView}.
@@ -17,46 +13,6 @@
* */
public class TopBarController extends ViewController {
- /**
- * Whether the market is currently the active center-view.
- *
- *
- * When true, the quit/back button returns to the dashboard instead
- * of exiting to the main menu.
- *
- */
- private boolean inMarketView = false;
-
- /**
- * Whether the stats screen is currently the active center-view.
- *
- *
- * When true, the quit/back button returns to the dashboard instead
- * of exiting to the main menu.
- *
- */
- private boolean inStatsView = false;
-
- /**
- * Whether the transactions screen is currently the active center-view.
- *
- *
- * When true, the quit/back button returns to the dashboard instead
- * of exiting to the main menu.
- *
- */
- private boolean inTransactionsView = false;
-
- /**
- * Whether the minigames screen is currently the active center-view.
- *
- *
- * When true, the quit/back button returns to the dashboard instead
- * of exiting to the main menu.
- *
- */
- private boolean inMinigamesView = false;
-
/**
* Optional hook invoked just before the in-game session is left
* (when the quit/back button returns to the main menu).