From 43262e158a580717a34b034993d37e6132db9786 Mon Sep 17 00:00:00 2001 From: extio-de Date: Sun, 21 Dec 2025 23:59:25 +0100 Subject: [PATCH] Refactor event handling to use EventService; remove eventConsumer references and update related classes --- src/main/java/de/extio/game_engine/Main.java | 7 ------- .../renderer/RendererAutoConfiguration.java | 8 +++++--- .../game_engine/renderer/RendererData.java | 16 ++++++++-------- .../game_engine/renderer/g2d/G2DMainFrame.java | 18 +++++++++--------- .../game_engine/renderer/g2d/G2DRenderer.java | 2 +- .../G2DAbstractToggleButtonControlImpl.java | 2 +- .../g2d/control/impl/G2DButtonControlImpl.java | 2 +- .../g2d/control/impl/G2DLabelControlImpl.java | 2 +- .../g2d/control/impl/G2DSliderControlImpl.java | 2 +- .../g2d/control/impl/G2DTableControlImpl.java | 2 +- .../control/impl/G2DTextfieldControlImpl.java | 4 ++-- .../control/impl/G2DTextfieldControlImpl2.java | 4 ++-- .../renderer/model/event/KeyStrokeEvent.java | 4 +++- .../renderer/model/event/MouseEvent.java | 3 ++- .../model/event/TakeScreenshotEvent.java | 4 +++- .../renderer/model/event/UiControlEvent.java | 4 +++- 16 files changed, 43 insertions(+), 41 deletions(-) diff --git a/src/main/java/de/extio/game_engine/Main.java b/src/main/java/de/extio/game_engine/Main.java index f1fb1fd..f1214e5 100644 --- a/src/main/java/de/extio/game_engine/Main.java +++ b/src/main/java/de/extio/game_engine/Main.java @@ -40,13 +40,6 @@ public class Main { builder.run(args); } - @Bean(name = "gameEngineEventConsumer") - @Conditional(StandaloneEnvCondition.class) - public Consumer eventConsumer() { - return event -> { - }; - } - static class StandaloneEnvCondition implements Condition { public StandaloneEnvCondition() { diff --git a/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java b/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java index d3c0518..3916713 100644 --- a/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java +++ b/src/main/java/de/extio/game_engine/renderer/RendererAutoConfiguration.java @@ -11,6 +11,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; +import de.extio.game_engine.event.EventService; +import de.extio.game_engine.event.EventService; import de.extio.game_engine.keyboard.KeycodeRegistry; import de.extio.game_engine.renderer.model.RenderingBo; @@ -38,10 +40,10 @@ public class RendererAutoConfiguration { final Renderer renderer, final RendererControl rendererControl, final RenderingBoPool renderingBoPool, - @Qualifier("gameEngineEventConsumer") final Consumer eventConsumer, - final KeycodeRegistry keycodeRegistry) { + final KeycodeRegistry keycodeRegistry, + final EventService eventService) { - final var rendererData = new RendererData(applicationContext, renderer, rendererControl, renderingBoPool, eventConsumer, keycodeRegistry); + final var rendererData = new RendererData(applicationContext, renderer, rendererControl, renderingBoPool, keycodeRegistry, eventService); renderer.setRendererData(rendererData); rendererControl.setRendererData(rendererData); renderingBoPool.setRendererData(rendererData); diff --git a/src/main/java/de/extio/game_engine/renderer/RendererData.java b/src/main/java/de/extio/game_engine/renderer/RendererData.java index 63eae01..0912933 100644 --- a/src/main/java/de/extio/game_engine/renderer/RendererData.java +++ b/src/main/java/de/extio/game_engine/renderer/RendererData.java @@ -5,6 +5,7 @@ import java.util.function.Consumer; import org.springframework.context.ApplicationContext; +import de.extio.game_engine.event.EventService; import de.extio.game_engine.keyboard.KeycodeRegistry; import de.extio.game_engine.renderer.model.options.UiOptions; import de.extio.game_engine.renderer.model.options.VideoOptions; @@ -19,8 +20,6 @@ public class RendererData { private final RenderingBoPool renderingBoPool; - private final Consumer eventConsumer; - private final UiOptions uiOptions = new UiOptions(); private final VideoOptions videoOptions = new VideoOptions(); @@ -28,16 +27,18 @@ public class RendererData { private final AtomicLong frame = new AtomicLong(); private final KeycodeRegistry keycodeRegistry; + + private final EventService eventService; private RendererLoop rendererLoop; - public RendererData(final ApplicationContext applicationContext, final Renderer renderer, final RendererControl rendererControl, final RenderingBoPool renderingBoPool, final Consumer eventConsumer, final KeycodeRegistry keycodeRegistry) { + public RendererData(final ApplicationContext applicationContext, final Renderer renderer, final RendererControl rendererControl, final RenderingBoPool renderingBoPool, final KeycodeRegistry keycodeRegistry, final EventService eventService) { this.applicationContext = applicationContext; this.renderer = renderer; this.rendererControl = rendererControl; this.renderingBoPool = renderingBoPool; - this.eventConsumer = eventConsumer; this.keycodeRegistry = keycodeRegistry; + this.eventService = eventService; } public ApplicationContext getApplicationContext() { @@ -72,10 +73,6 @@ public class RendererData { return this.videoOptions; } - public Consumer getEventConsumer() { - return this.eventConsumer; - } - public void setRendererLoop(final RendererLoop rendererLoop) { this.rendererLoop = rendererLoop; } @@ -88,4 +85,7 @@ public class RendererData { return this.keycodeRegistry; } + public EventService getEventService() { + return this.eventService; + } } diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/G2DMainFrame.java b/src/main/java/de/extio/game_engine/renderer/g2d/G2DMainFrame.java index 719f3e9..a60e1db 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/G2DMainFrame.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/G2DMainFrame.java @@ -142,7 +142,7 @@ public class G2DMainFrame extends Frame { @Override public void mouseReleased(final MouseEvent e) { try { - G2DMainFrame.this.rendererData.getEventConsumer().accept(new MouseClickEvent(false, G2DMainFrame.getModifiers(e), e.getButton(), ImmutableCoordI2.create(e.getX(), e.getY()))); + G2DMainFrame.this.rendererData.getEventService().fire(new MouseClickEvent(false, G2DMainFrame.getModifiers(e), e.getButton(), ImmutableCoordI2.create(e.getX(), e.getY()))); } catch (final Exception exc) { LOGGER.warn(exc.getMessage()); @@ -153,7 +153,7 @@ public class G2DMainFrame extends Frame { public void mousePressed(final MouseEvent e) { try { G2DMainFrame.this.requestFocus(); - G2DMainFrame.this.rendererData.getEventConsumer().accept(new MouseClickEvent(true, G2DMainFrame.getModifiers(e), e.getButton(), ImmutableCoordI2.create(e.getX(), e.getY()))); + G2DMainFrame.this.rendererData.getEventService().fire(new MouseClickEvent(true, G2DMainFrame.getModifiers(e), e.getButton(), ImmutableCoordI2.create(e.getX(), e.getY()))); } catch (final Exception exc) { LOGGER.warn(exc.getMessage()); @@ -163,7 +163,7 @@ public class G2DMainFrame extends Frame { @Override public void mouseExited(final MouseEvent e) { try { - G2DMainFrame.this.rendererData.getEventConsumer().accept(new MouseMoveEvent(false, G2DMainFrame.getModifiers(e), null, 0)); + G2DMainFrame.this.rendererData.getEventService().fire(new MouseMoveEvent(false, G2DMainFrame.getModifiers(e), null, 0)); } catch (final Exception exc) { LOGGER.warn(exc.getMessage()); @@ -173,7 +173,7 @@ public class G2DMainFrame extends Frame { @Override public void mouseEntered(final MouseEvent e) { try { - G2DMainFrame.this.rendererData.getEventConsumer().accept(new MouseEnterEvent(G2DMainFrame.getModifiers(e), ImmutableCoordI2.create(e.getX(), e.getY()))); + G2DMainFrame.this.rendererData.getEventService().fire(new MouseEnterEvent(G2DMainFrame.getModifiers(e), ImmutableCoordI2.create(e.getX(), e.getY()))); } catch (final Exception exc) { LOGGER.warn(exc.getMessage()); @@ -193,7 +193,7 @@ public class G2DMainFrame extends Frame { final var button = this.getButton(e); try { - G2DMainFrame.this.rendererData.getEventConsumer().accept(new MouseMoveEvent(false, G2DMainFrame.getModifiers(e), ImmutableCoordI2.create(e.getX(), e.getY()), button)); + G2DMainFrame.this.rendererData.getEventService().fire(new MouseMoveEvent(false, G2DMainFrame.getModifiers(e), ImmutableCoordI2.create(e.getX(), e.getY()), button)); } catch (final Exception exc) { if ("Engine not started up yet".equals(exc.getMessage())) { @@ -208,7 +208,7 @@ public class G2DMainFrame extends Frame { final var button = this.getButton(e); try { - G2DMainFrame.this.rendererData.getEventConsumer().accept(new MouseMoveEvent(true, G2DMainFrame.getModifiers(e), ImmutableCoordI2.create(e.getX(), e.getY()), button)); + G2DMainFrame.this.rendererData.getEventService().fire(new MouseMoveEvent(true, G2DMainFrame.getModifiers(e), ImmutableCoordI2.create(e.getX(), e.getY()), button)); } catch (final Exception exc) { if ("Engine not started up yet".equals(exc.getMessage())) { @@ -238,7 +238,7 @@ public class G2DMainFrame extends Frame { @Override public void mouseWheelMoved(final MouseWheelEvent e) { try { - G2DMainFrame.this.rendererData.getEventConsumer().accept(new MouseClickEvent(true, G2DMainFrame.getModifiers(e), e.getWheelRotation() == -1 ? 4 : 5, ImmutableCoordI2.create(e.getX(), e.getY()))); + G2DMainFrame.this.rendererData.getEventService().fire(new MouseClickEvent(true, G2DMainFrame.getModifiers(e), e.getWheelRotation() == -1 ? 4 : 5, ImmutableCoordI2.create(e.getX(), e.getY()))); } catch (final Exception exc) { LOGGER.warn(exc.getMessage()); @@ -261,7 +261,7 @@ public class G2DMainFrame extends Frame { if (event.getID() == KeyEvent.KEY_PRESSED) { LOGGER.trace("Press {} {} {}", e.getKeyCode(), KeyEvent.getKeyText(e.getKeyCode()), G2DMainFrame.getModifiers(e)); final var keyPressMessage = new KeyStrokeEvent(false, e.getKeyCode(), KeyEvent.getKeyText(e.getKeyCode()), G2DMainFrame.getModifiers(e)); - G2DMainFrame.this.rendererData.getEventConsumer().accept(keyPressMessage); + G2DMainFrame.this.rendererData.getEventService().fire(keyPressMessage); } else if (event.getID() == KeyEvent.KEY_RELEASED) { LOGGER.trace("Release {} {} {}", e.getKeyCode(), KeyEvent.getKeyText(e.getKeyCode()), G2DMainFrame.getModifiers(e)); @@ -282,7 +282,7 @@ public class G2DMainFrame extends Frame { } else { final var keyPressMessage = new KeyStrokeEvent(true, e.getKeyCode(), KeyEvent.getKeyText(e.getKeyCode()), G2DMainFrame.getModifiers(e)); - G2DMainFrame.this.rendererData.getEventConsumer().accept(keyPressMessage); + G2DMainFrame.this.rendererData.getEventService().fire(keyPressMessage); } } } diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/G2DRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/G2DRenderer.java index ebb2285..0baa2bd 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/G2DRenderer.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/G2DRenderer.java @@ -293,7 +293,7 @@ public class G2DRenderer implements Renderer { LOGGER.debug("Took screenshot"); - this.rendererData.getEventConsumer().accept(new TakeScreenshotEvent(null, baos.toByteArray())); + this.rendererData.getEventService().fire(new TakeScreenshotEvent(null, baos.toByteArray())); } catch (final IOException e) { throw new RuntimeException(e); diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DAbstractToggleButtonControlImpl.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DAbstractToggleButtonControlImpl.java index 3ab619a..3854c8b 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DAbstractToggleButtonControlImpl.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DAbstractToggleButtonControlImpl.java @@ -14,7 +14,7 @@ public abstract class G2DAbstractToggleButtonControlImpl extends G2DButtonContro public void performAction() { if (this.enabled) { this.manageCtrlGroupToggleState(); - this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, this.control.isToggled())); + this.rendererData.getEventService().fire(new UiControlEvent(this.id, this.control.isToggled())); } } diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DButtonControlImpl.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DButtonControlImpl.java index 4c07fe9..031d4c0 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DButtonControlImpl.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DButtonControlImpl.java @@ -32,7 +32,7 @@ public class G2DButtonControlImpl extends G2DBaseControlImpl implements ButtonCo @Override public void performAction() { if (this.enabled) { - this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, null)); + this.rendererData.getEventService().fire(new UiControlEvent(this.id, null)); } } diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DLabelControlImpl.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DLabelControlImpl.java index 93e4c3c..65d61d4 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DLabelControlImpl.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DLabelControlImpl.java @@ -62,7 +62,7 @@ public class G2DLabelControlImpl extends G2DBaseControlImpl implements LabelCont @Override public void performAction() { if (this.enabled) { - this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, null)); + this.rendererData.getEventService().fire(new UiControlEvent(this.id, null)); } } diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DSliderControlImpl.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DSliderControlImpl.java index e4ccf55..f4587bf 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DSliderControlImpl.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DSliderControlImpl.java @@ -87,7 +87,7 @@ public class G2DSliderControlImpl extends G2DBaseControlImpl implements SliderCo public void performAction() { if (this.enabled) { if (this.actionConsumer == null) { - this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, this.lastValue)); + this.rendererData.getEventService().fire(new UiControlEvent(this.id, this.lastValue)); } else { this.actionConsumer.accept(this.lastValue); diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTableControlImpl.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTableControlImpl.java index 74702b7..4eb2a78 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTableControlImpl.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTableControlImpl.java @@ -113,7 +113,7 @@ public class G2DTableControlImpl extends G2DBaseControlImpl implements TableCont final var col = G2DTableControlImpl.this.control.columnAtPoint(e.getPoint()); if (row > -1 && col > -1) { if (G2DTableControlImpl.this.enabled) { - G2DTableControlImpl.this.rendererData.getEventConsumer().accept(new UiControlEvent(G2DTableControlImpl.this.id, ImmutableCoordI2.create(row, col))); + G2DTableControlImpl.this.rendererData.getEventService().fire(new UiControlEvent(G2DTableControlImpl.this.id, ImmutableCoordI2.create(row, col))); } } } diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl.java index 4e61f43..453bca6 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl.java @@ -60,7 +60,7 @@ public class G2DTextfieldControlImpl extends G2DBaseControlImpl implements Textf if (!this.multiLine) { ((TextField) this.textComponent).addActionListener(event -> { // Simulate pressing enter - this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, (this.lastText != null ? this.lastText : "") + "\n")); + this.rendererData.getEventService().fire(new UiControlEvent(this.id, (this.lastText != null ? this.lastText : "") + "\n")); }); } @@ -77,7 +77,7 @@ public class G2DTextfieldControlImpl extends G2DBaseControlImpl implements Textf final var curComponentText = this.textComponent.getText(); if (!Objects.equals(this.lastText, curComponentText) && !((this.lastText == null || this.lastText.isEmpty()) && (curComponentText == null || curComponentText.isEmpty()))) { this.lastText = curComponentText; - this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, this.lastText)); + this.rendererData.getEventService().fire(new UiControlEvent(this.id, this.lastText)); } boolean componentDirty; diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl2.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl2.java index ef31988..9a3e7f7 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl2.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl2.java @@ -130,7 +130,7 @@ public class G2DTextfieldControlImpl2 extends G2DBaseControlImpl implements Text this.textComponent = new CustomJTextField(); ((JTextField) this.textComponent).addActionListener(event -> { // Simulate pressing enter - this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, (this.lastText == null ? "" : this.lastText) + "\n")); + this.rendererData.getEventService().fire(new UiControlEvent(this.id, (this.lastText == null ? "" : this.lastText) + "\n")); }); } this.textComponent.setName(this.id); @@ -161,7 +161,7 @@ public class G2DTextfieldControlImpl2 extends G2DBaseControlImpl implements Text final var curComponentText = this.textComponent.getText(); if (!curComponentText.equals(this.lastText) && !(this.lastText == null || this.lastText.isEmpty() || curComponentText == null || curComponentText.isEmpty())) { this.lastText = curComponentText; - this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, this.lastText)); + this.rendererData.getEventService().fire(new UiControlEvent(this.id, this.lastText)); } boolean componentDirty; diff --git a/src/main/java/de/extio/game_engine/renderer/model/event/KeyStrokeEvent.java b/src/main/java/de/extio/game_engine/renderer/model/event/KeyStrokeEvent.java index 690543d..3353bd2 100644 --- a/src/main/java/de/extio/game_engine/renderer/model/event/KeyStrokeEvent.java +++ b/src/main/java/de/extio/game_engine/renderer/model/event/KeyStrokeEvent.java @@ -1,9 +1,11 @@ package de.extio.game_engine.renderer.model.event; +import de.extio.game_engine.event.Event; + /** * Message sent by game client engine on any key stroke. You may want to use the respective callback provided by ClientModule instead. */ -public final class KeyStrokeEvent { +public final class KeyStrokeEvent implements Event { private boolean released; diff --git a/src/main/java/de/extio/game_engine/renderer/model/event/MouseEvent.java b/src/main/java/de/extio/game_engine/renderer/model/event/MouseEvent.java index 2d3383c..870709c 100644 --- a/src/main/java/de/extio/game_engine/renderer/model/event/MouseEvent.java +++ b/src/main/java/de/extio/game_engine/renderer/model/event/MouseEvent.java @@ -1,8 +1,9 @@ package de.extio.game_engine.renderer.model.event; +import de.extio.game_engine.event.Event; import de.extio.game_engine.spatial2.model.CoordI2; -public abstract class MouseEvent { +public abstract class MouseEvent implements Event { private CoordI2 coord; diff --git a/src/main/java/de/extio/game_engine/renderer/model/event/TakeScreenshotEvent.java b/src/main/java/de/extio/game_engine/renderer/model/event/TakeScreenshotEvent.java index 84b3614..c90bfdb 100644 --- a/src/main/java/de/extio/game_engine/renderer/model/event/TakeScreenshotEvent.java +++ b/src/main/java/de/extio/game_engine/renderer/model/event/TakeScreenshotEvent.java @@ -1,9 +1,11 @@ package de.extio.game_engine.renderer.model.event; +import de.extio.game_engine.event.Event; + /** * This event contains a screenshot created by the renderer. Screenshot creation can be triggered via RendererControl */ -public final class TakeScreenshotEvent { +public final class TakeScreenshotEvent implements Event { private final String id; diff --git a/src/main/java/de/extio/game_engine/renderer/model/event/UiControlEvent.java b/src/main/java/de/extio/game_engine/renderer/model/event/UiControlEvent.java index cdd9004..e0c3052 100644 --- a/src/main/java/de/extio/game_engine/renderer/model/event/UiControlEvent.java +++ b/src/main/java/de/extio/game_engine/renderer/model/event/UiControlEvent.java @@ -1,9 +1,11 @@ package de.extio.game_engine.renderer.model.event; +import de.extio.game_engine.event.Event; + /** * This event is fired when a user interacted with a control in the UI, for example clicked on a button, entered text, ... */ -public final class UiControlEvent { +public final class UiControlEvent implements Event { private final String id;