Skip to content

Commit

Permalink
Feat: Reduce coupling by using pub/sub
Browse files Browse the repository at this point in the history
  • Loading branch information
tommyah committed May 26, 2026
1 parent e50be52 commit 1aa1dcc
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 22 deletions.
4 changes: 2 additions & 2 deletions src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,8 @@ public void start(final Stage stage) throws Exception {
MiniGamesView miniGamesView = new MiniGamesView();
MiniGamesController miniGamesController =
new MiniGamesController(
miniGamesView, eventManager, stocksInFile.getFirst(), gameEngineView,
gameEngineController, clickerGame, inGameView, findStockGame, timeInputsGame
miniGamesView, eventManager, stocksInFile.getFirst(),
gameEngineController, clickerGame, findStockGame, timeInputsGame
);

// Adds a generic event subscriber to the event manager
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
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.ingame.InGameView;
import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.WidgetEnum;
import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.games.ClickerGame;
import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.games.FindStockGame;
import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.games.TimeInputsGame;
Expand All @@ -25,11 +25,6 @@ public final class MiniGamesController
* */
private Stock activeStock;

/**
* The game engine view to delegate games towards.
* */
private final GameEngineView gameEngineView;

/**
* The game engine controller.
* */
Expand All @@ -40,11 +35,6 @@ public final class MiniGamesController
* */
private final ClickerGame clickerGame;

/**
* The in game view.
* */
private final InGameView inGameView;

/**
* The find stock game instance.
* */
Expand All @@ -61,28 +51,22 @@ public final class MiniGamesController
* @param viewElement the associated {@link MiniGamesView}.
* @param eventManager the associated {@link EventManager}.
* @param initialStock the initial selected stock.
* @param gameEngineView the game engine view.
* @param gameEngineController the game engine controller.
* @param clickerGame the clicker game instance.
* @param inGameView the in game view instance.
* @param findStockGame the find stock game instance.
* @param timeInputsGame the timed inputs game.
* */
public MiniGamesController(final MiniGamesView viewElement,
final EventManager eventManager,
final Stock initialStock,
final GameEngineView gameEngineView,
final GameEngineController gameEngineController,
final ClickerGame clickerGame,
final InGameView inGameView,
final FindStockGame findStockGame,
final TimeInputsGame timeInputsGame
) {
this.activeStock = initialStock;
this.gameEngineView = gameEngineView;
this.gameEngineController = gameEngineController;
this.clickerGame = clickerGame;
this.inGameView = inGameView;
this.findStockGame = findStockGame;
this.timeInputsGame = timeInputsGame;
super(viewElement, eventManager);
Expand All @@ -97,17 +81,23 @@ protected void initInteractions() {
});

getViewElement().setOnAction(MiniGamesActions.CLICKER_GAME, () -> {
inGameView.changeCenterView(gameEngineView.getRootPane());
EventData<WidgetEnum> eventData =
new EventData<>(EventType.CHANGE_INGAME_CENTER, WidgetEnum.MINIGAMES_ENGINE);
invoke(eventData);
gameEngineController.launchGimmickSession(clickerGame);
});

getViewElement().setOnAction(MiniGamesActions.FIND_STOCK, () -> {
inGameView.changeCenterView(gameEngineView.getRootPane());
EventData<WidgetEnum> eventData =
new EventData<>(EventType.CHANGE_INGAME_CENTER, WidgetEnum.MINIGAMES_ENGINE);
invoke(eventData);
gameEngineController.launchGimmickSession(findStockGame);
});

getViewElement().setOnAction(MiniGamesActions.TIME_CLICKS, () -> {
inGameView.changeCenterView(gameEngineView.getRootPane());
EventData<WidgetEnum> eventData =
new EventData<>(EventType.CHANGE_INGAME_CENTER, WidgetEnum.MINIGAMES_ENGINE);
invoke(eventData);
gameEngineController.launchGimmickSession(timeInputsGame);
});
}
Expand Down

0 comments on commit 1aa1dcc

Please sign in to comment.