From 8e6dfd452821c48301255fead01592a608c48040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Thu, 1 Apr 2021 21:48:49 +0200 Subject: [PATCH] Prevent DefaultContext from being unregistered from key event handlers --- .../bartlomiejpluta/base/api/input/KeyEventHandler.java | 8 ++++++++ .../base/engine/context/model/DefaultContext.java | 6 ++++++ .../bartlomiejpluta/base/engine/ui/model/GLFWInput.java | 2 ++ 3 files changed, 16 insertions(+) diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/input/KeyEventHandler.java b/api/src/main/java/com/bartlomiejpluta/base/api/input/KeyEventHandler.java index ba87b259..410b7b3a 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/input/KeyEventHandler.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/input/KeyEventHandler.java @@ -3,4 +3,12 @@ package com.bartlomiejpluta.base.api.input; @FunctionalInterface public interface KeyEventHandler { void handleKeyEvent(KeyEvent event); + + default void onKeyEventHandlerRegister() { + // do nothing + } + + default void onKeyEventHandlerUnregister() { + // do nothing + } } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java index 587c74d0..89fe488f 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java @@ -16,6 +16,7 @@ import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.engine.audio.manager.SoundManager; import com.bartlomiejpluta.base.engine.core.engine.GameEngine; import com.bartlomiejpluta.base.engine.database.service.DatabaseService; +import com.bartlomiejpluta.base.engine.error.AppException; import com.bartlomiejpluta.base.engine.gui.manager.FontManager; import com.bartlomiejpluta.base.engine.gui.manager.WidgetDefinitionManager; import com.bartlomiejpluta.base.engine.gui.render.NanoVGGUI; @@ -249,6 +250,11 @@ public class DefaultContext implements Context, KeyEventHandler { } } + @Override + public void onKeyEventHandlerUnregister() { + throw new AppException("Context cannot be unregistered"); + } + @Override public void update(float dt) { gameRunner.update(dt); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/ui/model/GLFWInput.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/ui/model/GLFWInput.java index 65346111..2e6439ff 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/ui/model/GLFWInput.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/ui/model/GLFWInput.java @@ -54,10 +54,12 @@ public class GLFWInput implements Input { @Override public void addKeyEventHandler(@NonNull KeyEventHandler handler) { keyEventHandlers.addLast(handler); + handler.onKeyEventHandlerRegister(); } @Override public void removeKeyEventHandler(@NonNull KeyEventHandler handler) { keyEventHandlers.remove(handler); + handler.onKeyEventHandlerUnregister(); } }