Refactor event handling to use EventService; remove eventConsumer references and update related classes

This commit is contained in:
extio-de
2025-12-21 23:59:25 +01:00
parent eb6d5729b6
commit 43262e158a
16 changed files with 43 additions and 41 deletions

View File

@@ -40,13 +40,6 @@ public class Main {
builder.run(args); builder.run(args);
} }
@Bean(name = "gameEngineEventConsumer")
@Conditional(StandaloneEnvCondition.class)
public Consumer<Object> eventConsumer() {
return event -> {
};
}
static class StandaloneEnvCondition implements Condition { static class StandaloneEnvCondition implements Condition {
public StandaloneEnvCondition() { public StandaloneEnvCondition() {

View File

@@ -11,6 +11,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean; 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.keyboard.KeycodeRegistry;
import de.extio.game_engine.renderer.model.RenderingBo; import de.extio.game_engine.renderer.model.RenderingBo;
@@ -38,10 +40,10 @@ public class RendererAutoConfiguration {
final Renderer renderer, final Renderer renderer,
final RendererControl rendererControl, final RendererControl rendererControl,
final RenderingBoPool renderingBoPool, final RenderingBoPool renderingBoPool,
@Qualifier("gameEngineEventConsumer") final Consumer<Object> 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); renderer.setRendererData(rendererData);
rendererControl.setRendererData(rendererData); rendererControl.setRendererData(rendererData);
renderingBoPool.setRendererData(rendererData); renderingBoPool.setRendererData(rendererData);

View File

@@ -5,6 +5,7 @@ import java.util.function.Consumer;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import de.extio.game_engine.event.EventService;
import de.extio.game_engine.keyboard.KeycodeRegistry; import de.extio.game_engine.keyboard.KeycodeRegistry;
import de.extio.game_engine.renderer.model.options.UiOptions; import de.extio.game_engine.renderer.model.options.UiOptions;
import de.extio.game_engine.renderer.model.options.VideoOptions; import de.extio.game_engine.renderer.model.options.VideoOptions;
@@ -19,8 +20,6 @@ public class RendererData {
private final RenderingBoPool renderingBoPool; private final RenderingBoPool renderingBoPool;
private final Consumer<Object> eventConsumer;
private final UiOptions uiOptions = new UiOptions(); private final UiOptions uiOptions = new UiOptions();
private final VideoOptions videoOptions = new VideoOptions(); private final VideoOptions videoOptions = new VideoOptions();
@@ -29,15 +28,17 @@ public class RendererData {
private final KeycodeRegistry keycodeRegistry; private final KeycodeRegistry keycodeRegistry;
private final EventService eventService;
private RendererLoop rendererLoop; private RendererLoop rendererLoop;
public RendererData(final ApplicationContext applicationContext, final Renderer renderer, final RendererControl rendererControl, final RenderingBoPool renderingBoPool, final Consumer<Object> 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.applicationContext = applicationContext;
this.renderer = renderer; this.renderer = renderer;
this.rendererControl = rendererControl; this.rendererControl = rendererControl;
this.renderingBoPool = renderingBoPool; this.renderingBoPool = renderingBoPool;
this.eventConsumer = eventConsumer;
this.keycodeRegistry = keycodeRegistry; this.keycodeRegistry = keycodeRegistry;
this.eventService = eventService;
} }
public ApplicationContext getApplicationContext() { public ApplicationContext getApplicationContext() {
@@ -72,10 +73,6 @@ public class RendererData {
return this.videoOptions; return this.videoOptions;
} }
public Consumer<Object> getEventConsumer() {
return this.eventConsumer;
}
public void setRendererLoop(final RendererLoop rendererLoop) { public void setRendererLoop(final RendererLoop rendererLoop) {
this.rendererLoop = rendererLoop; this.rendererLoop = rendererLoop;
} }
@@ -88,4 +85,7 @@ public class RendererData {
return this.keycodeRegistry; return this.keycodeRegistry;
} }
public EventService getEventService() {
return this.eventService;
}
} }

View File

@@ -142,7 +142,7 @@ public class G2DMainFrame extends Frame {
@Override @Override
public void mouseReleased(final MouseEvent e) { public void mouseReleased(final MouseEvent e) {
try { 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) { catch (final Exception exc) {
LOGGER.warn(exc.getMessage()); LOGGER.warn(exc.getMessage());
@@ -153,7 +153,7 @@ public class G2DMainFrame extends Frame {
public void mousePressed(final MouseEvent e) { public void mousePressed(final MouseEvent e) {
try { try {
G2DMainFrame.this.requestFocus(); 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) { catch (final Exception exc) {
LOGGER.warn(exc.getMessage()); LOGGER.warn(exc.getMessage());
@@ -163,7 +163,7 @@ public class G2DMainFrame extends Frame {
@Override @Override
public void mouseExited(final MouseEvent e) { public void mouseExited(final MouseEvent e) {
try { 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) { catch (final Exception exc) {
LOGGER.warn(exc.getMessage()); LOGGER.warn(exc.getMessage());
@@ -173,7 +173,7 @@ public class G2DMainFrame extends Frame {
@Override @Override
public void mouseEntered(final MouseEvent e) { public void mouseEntered(final MouseEvent e) {
try { 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) { catch (final Exception exc) {
LOGGER.warn(exc.getMessage()); LOGGER.warn(exc.getMessage());
@@ -193,7 +193,7 @@ public class G2DMainFrame extends Frame {
final var button = this.getButton(e); final var button = this.getButton(e);
try { 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) { catch (final Exception exc) {
if ("Engine not started up yet".equals(exc.getMessage())) { if ("Engine not started up yet".equals(exc.getMessage())) {
@@ -208,7 +208,7 @@ public class G2DMainFrame extends Frame {
final var button = this.getButton(e); final var button = this.getButton(e);
try { 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) { catch (final Exception exc) {
if ("Engine not started up yet".equals(exc.getMessage())) { if ("Engine not started up yet".equals(exc.getMessage())) {
@@ -238,7 +238,7 @@ public class G2DMainFrame extends Frame {
@Override @Override
public void mouseWheelMoved(final MouseWheelEvent e) { public void mouseWheelMoved(final MouseWheelEvent e) {
try { 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) { catch (final Exception exc) {
LOGGER.warn(exc.getMessage()); LOGGER.warn(exc.getMessage());
@@ -261,7 +261,7 @@ public class G2DMainFrame extends Frame {
if (event.getID() == KeyEvent.KEY_PRESSED) { if (event.getID() == KeyEvent.KEY_PRESSED) {
LOGGER.trace("Press {} {} {}", e.getKeyCode(), KeyEvent.getKeyText(e.getKeyCode()), G2DMainFrame.getModifiers(e)); 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)); 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) { else if (event.getID() == KeyEvent.KEY_RELEASED) {
LOGGER.trace("Release {} {} {}", e.getKeyCode(), KeyEvent.getKeyText(e.getKeyCode()), G2DMainFrame.getModifiers(e)); LOGGER.trace("Release {} {} {}", e.getKeyCode(), KeyEvent.getKeyText(e.getKeyCode()), G2DMainFrame.getModifiers(e));
@@ -282,7 +282,7 @@ public class G2DMainFrame extends Frame {
} }
else { else {
final var keyPressMessage = new KeyStrokeEvent(true, e.getKeyCode(), KeyEvent.getKeyText(e.getKeyCode()), G2DMainFrame.getModifiers(e)); 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);
} }
} }
} }

View File

@@ -293,7 +293,7 @@ public class G2DRenderer implements Renderer {
LOGGER.debug("Took screenshot"); 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) { catch (final IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);

View File

@@ -14,7 +14,7 @@ public abstract class G2DAbstractToggleButtonControlImpl extends G2DButtonContro
public void performAction() { public void performAction() {
if (this.enabled) { if (this.enabled) {
this.manageCtrlGroupToggleState(); this.manageCtrlGroupToggleState();
this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, this.control.isToggled())); this.rendererData.getEventService().fire(new UiControlEvent(this.id, this.control.isToggled()));
} }
} }

View File

@@ -32,7 +32,7 @@ public class G2DButtonControlImpl extends G2DBaseControlImpl implements ButtonCo
@Override @Override
public void performAction() { public void performAction() {
if (this.enabled) { if (this.enabled) {
this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, null)); this.rendererData.getEventService().fire(new UiControlEvent(this.id, null));
} }
} }

View File

@@ -62,7 +62,7 @@ public class G2DLabelControlImpl extends G2DBaseControlImpl implements LabelCont
@Override @Override
public void performAction() { public void performAction() {
if (this.enabled) { if (this.enabled) {
this.rendererData.getEventConsumer().accept(new UiControlEvent(this.id, null)); this.rendererData.getEventService().fire(new UiControlEvent(this.id, null));
} }
} }

View File

@@ -87,7 +87,7 @@ public class G2DSliderControlImpl extends G2DBaseControlImpl implements SliderCo
public void performAction() { public void performAction() {
if (this.enabled) { if (this.enabled) {
if (this.actionConsumer == null) { 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 { else {
this.actionConsumer.accept(this.lastValue); this.actionConsumer.accept(this.lastValue);

View File

@@ -113,7 +113,7 @@ public class G2DTableControlImpl extends G2DBaseControlImpl implements TableCont
final var col = G2DTableControlImpl.this.control.columnAtPoint(e.getPoint()); final var col = G2DTableControlImpl.this.control.columnAtPoint(e.getPoint());
if (row > -1 && col > -1) { if (row > -1 && col > -1) {
if (G2DTableControlImpl.this.enabled) { 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)));
} }
} }
} }

View File

@@ -60,7 +60,7 @@ public class G2DTextfieldControlImpl extends G2DBaseControlImpl implements Textf
if (!this.multiLine) { if (!this.multiLine) {
((TextField) this.textComponent).addActionListener(event -> { ((TextField) this.textComponent).addActionListener(event -> {
// Simulate pressing enter // 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(); final var curComponentText = this.textComponent.getText();
if (!Objects.equals(this.lastText, curComponentText) && !((this.lastText == null || this.lastText.isEmpty()) && (curComponentText == null || curComponentText.isEmpty()))) { if (!Objects.equals(this.lastText, curComponentText) && !((this.lastText == null || this.lastText.isEmpty()) && (curComponentText == null || curComponentText.isEmpty()))) {
this.lastText = curComponentText; 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; boolean componentDirty;

View File

@@ -130,7 +130,7 @@ public class G2DTextfieldControlImpl2 extends G2DBaseControlImpl implements Text
this.textComponent = new CustomJTextField(); this.textComponent = new CustomJTextField();
((JTextField) this.textComponent).addActionListener(event -> { ((JTextField) this.textComponent).addActionListener(event -> {
// Simulate pressing enter // 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); this.textComponent.setName(this.id);
@@ -161,7 +161,7 @@ public class G2DTextfieldControlImpl2 extends G2DBaseControlImpl implements Text
final var curComponentText = this.textComponent.getText(); final var curComponentText = this.textComponent.getText();
if (!curComponentText.equals(this.lastText) && !(this.lastText == null || this.lastText.isEmpty() || curComponentText == null || curComponentText.isEmpty())) { if (!curComponentText.equals(this.lastText) && !(this.lastText == null || this.lastText.isEmpty() || curComponentText == null || curComponentText.isEmpty())) {
this.lastText = curComponentText; 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; boolean componentDirty;

View File

@@ -1,9 +1,11 @@
package de.extio.game_engine.renderer.model.event; 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. * 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; private boolean released;

View File

@@ -1,8 +1,9 @@
package de.extio.game_engine.renderer.model.event; package de.extio.game_engine.renderer.model.event;
import de.extio.game_engine.event.Event;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
public abstract class MouseEvent { public abstract class MouseEvent implements Event {
private CoordI2 coord; private CoordI2 coord;

View File

@@ -1,9 +1,11 @@
package de.extio.game_engine.renderer.model.event; 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 * 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; private final String id;

View File

@@ -1,9 +1,11 @@
package de.extio.game_engine.renderer.model.event; 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, ... * 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; private final String id;