diff --git a/src/main/java/de/extio/game_engine/menu/OptionsModule.java b/src/main/java/de/extio/game_engine/menu/OptionsModule.java index a98dd05..a2cc7e7 100644 --- a/src/main/java/de/extio/game_engine/menu/OptionsModule.java +++ b/src/main/java/de/extio/game_engine/menu/OptionsModule.java @@ -80,6 +80,7 @@ public class OptionsModule extends AbstractClientModule implements OptionsModule @Override public void onActivate() { + this.activeTab().onTabOpen(this); this.setupOptionsWindow(); this.getModuleService().changeActiveState(this.optionsWindow.getId(), true); this.getModuleService().hideExcept(this.getId(), this.optionsWindow.getId()); @@ -249,8 +250,11 @@ public class OptionsModule extends AbstractClientModule implements OptionsModule final var selectedTab = this.tabsByControlId.get(controlId); if (selectedTab != null) { - this.activeTabId = selectedTab.tabId(); - this.setupOptionsWindow(); + this.activeTab().onTabClose(this, () -> { + this.activeTabId = selectedTab.tabId(); + this.activeTab().onTabOpen(this); + this.setupOptionsWindow(); + }); return; } @@ -267,8 +271,10 @@ public class OptionsModule extends AbstractClientModule implements OptionsModule } private void closeOptions() { - this.getModuleService().changeActiveState(this.getId(), false); - this.getModuleService().changeDisplayState(this.getId(), false); + this.activeTab().onTabClose(this, () -> { + this.getModuleService().changeActiveState(this.getId(), false); + this.getModuleService().changeDisplayState(this.getId(), false); + }); } private static ImmutableCoordI2 centeredPosition(final CoordI2 dimension) { diff --git a/src/main/java/de/extio/game_engine/menu/OptionsTab.java b/src/main/java/de/extio/game_engine/menu/OptionsTab.java index c3e13a6..70d7fcc 100644 --- a/src/main/java/de/extio/game_engine/menu/OptionsTab.java +++ b/src/main/java/de/extio/game_engine/menu/OptionsTab.java @@ -23,4 +23,12 @@ public interface OptionsTab { default void onContentCleared(final OptionsModuleContext context) { } + + default void onTabOpen(final OptionsModuleContext context) { + + } + + default void onTabClose(final OptionsModuleContext context, final Runnable closeTab) { + closeTab.run(); + } } \ No newline at end of file