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 eda5729..6c84780 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 @@ -1,21 +1,43 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.ingame; +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.widgets.WidgetEnum; +import javafx.scene.Node; +import java.util.EnumMap; -public class InGameController extends ViewController { +public final class InGameController extends ViewController + implements EventSubscriber { + + private final EnumMap widgetMap = new EnumMap<>(WidgetEnum.class); /** * {@inheritDoc}. */ - protected InGameController(final InGameView viewElement, + public InGameController(final InGameView viewElement, final EventManager eventManager) throws IllegalArgumentException { super(viewElement, eventManager); + eventManager.addSubscriber(this, EventType.CHANGE_INGAME_CENTER); + } + + public void addwidget(final WidgetEnum widgetEnum, final Node widgetRoot) { + widgetMap.put(widgetEnum, widgetRoot); } @Override protected void initInteractions() { } + + @Override + public void handleEvent(final EventData data) { + if (!(data.data() instanceof WidgetEnum) || !widgetMap.containsKey(data.data())) { + throw new IllegalArgumentException("Invalid event thrown!"); + } + getViewElement().changeCenterView(widgetMap.get(data.data())); + } } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/WidgetEnum.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/WidgetEnum.java new file mode 100644 index 0000000..5efcbb0 --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/WidgetEnum.java @@ -0,0 +1,10 @@ +package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets; + +public enum WidgetEnum { + DASHBOARD, + MARKET, + MINIGAMES_OVERVIEW, + MINIGAMES_ENGINE, + STATS, + TRANSACTIONS +}