From 3ab8e989a854d4798ada1c56049c68ee4272d4b6 Mon Sep 17 00:00:00 2001 From: = Date: Sun, 24 May 2026 17:06:12 +0200 Subject: [PATCH] Feat: Minigames integration Integrated minigames with the application. It is now possible to select a stock you want to boost in dashboard page. This will take you to the minigames section and select the stock for you. --- .../g40/mappe/service/event/EventType.java | 16 +++++++++++++++- .../view/widgets/dashboard/DashBoardActions.java | 7 ++++++- .../widgets/dashboard/DashBoardController.java | 8 ++++++++ .../view/widgets/dashboard/DashBoardView.java | 15 ++++++++++++++- 4 files changed, 43 insertions(+), 3 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 777602d..ace4933 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 @@ -36,7 +36,21 @@ public enum EventType implements EventChannel { * @see edu.ntnu.idi.idatt2003.g40.mappe.view.ingame.InGameController * */ - CHANGE_INGAME_CENTER; + CHANGE_INGAME_CENTER, + + /** + * Event type representing events that change the center view to + * {@link edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesView}, + * and selects a given stock for the minigames. + * + *

Primarily handled by the active + * {@link edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesController} + * object.

+ * + * @see edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.dashboard.DashBoardController + * + */ + SELECT_STOCK_FOR_MINIGAME; /** * {@inheritDoc} diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardActions.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardActions.java index 75b6639..1e92502 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardActions.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardActions.java @@ -32,5 +32,10 @@ public enum DashBoardActions { /** * Increasing quantity of shares to buy/sell by five. * */ - INCREASE_5; + INCREASE_5, + + /** + * Selecting viewed stock to boost by playing minigames. + * */ + MINIGAME; } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java index 64280dc..9d31d0d 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java @@ -2,9 +2,12 @@ import edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange; import edu.ntnu.idi.idatt2003.g40.mappe.model.*; +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.EventType; import edu.ntnu.idi.idatt2003.g40.mappe.utils.Validator; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewController; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.WidgetEnum; import javafx.scene.control.Button; import javafx.scene.control.TextFormatter; import java.math.BigDecimal; @@ -180,6 +183,11 @@ protected void initInteractions() { .add(new BigDecimal("5")).toString()); }); + getViewElement().setOnAction(DashBoardActions.MINIGAME, () -> { + invoke(new EventData<>(EventType.SELECT_STOCK_FOR_MINIGAME, getViewElement().getCurrentStock())); + invoke(new EventData<>(EventType.CHANGE_INGAME_CENTER, WidgetEnum.MINIGAMES_OVERVIEW)); + }); + exchange.weekProperty().addListener((observable,o,n) -> { getViewElement().updateGraph(selectedTimeRange); populateStockList(selectedFilter); diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardView.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardView.java index 6ba9bb8..d7edb2a 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardView.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardView.java @@ -173,6 +173,11 @@ public final class DashBoardView extends ViewElement { * */ private Button sellSharesBtn; + /** + * Button to boost this stock. + * */ + private Button boostStockBtn; + /** * The selected stock symbol label. * */ @@ -268,7 +273,13 @@ protected void initLayout() { stockFullNameLabel = new Label(); ownedQuantityLabel = new Label(); - stockIdentity.getChildren().addAll(selectedStockLabel, stockFullNameLabel, ownedQuantityLabel); + boostStockBtn = new Button("Boost"); + stockIdentity.getChildren().addAll( + selectedStockLabel, + stockFullNameLabel, + ownedQuantityLabel, + boostStockBtn + ); priceStats = new VBox(); selectedStockPriceLabel = new Label(); @@ -334,6 +345,7 @@ protected void initLayout() { registerButton(DashBoardActions.DECREASE_1, m1QtyBtn); registerButton(DashBoardActions.INCREASE_1, p1QtyBtn); registerButton(DashBoardActions.INCREASE_5, p5QtyBtn); + registerButton(DashBoardActions.MINIGAME, boostStockBtn); } private ColumnConstraints makeCol(final float w) { @@ -349,6 +361,7 @@ protected void initStyling() { completeSideBar.getStyleClass().add("dashboard-complete-sidebar"); sidebar.getStyleClass().add("dashboard-sidebar-content"); selectedStockLabel.getStyleClass().add("dashboard-selected-stock-pill"); + boostStockBtn.getStyleClass().add("dashboard-selected-stock-pill"); selectedStockPriceLabel.getStyleClass().add("dashboard-selected-stock-pill"); shareQuantityInputField.getStyleClass().add("dashboard-qtyTextField"); chart.getStyleClass().add("dashboard-chart");