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).