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);
}
@Bean(name = "gameEngineEventConsumer")
@Conditional(StandaloneEnvCondition.class)
public Consumer<Object> eventConsumer() {
return event -> {
};
}
static class StandaloneEnvCondition implements Condition {
public StandaloneEnvCondition() {

View File

@@ -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<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);
rendererControl.setRendererData(rendererData);
renderingBoPool.setRendererData(rendererData);

View File

@@ -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<Object> eventConsumer;
private final UiOptions uiOptions = new UiOptions();
private final VideoOptions videoOptions = new VideoOptions();
@@ -29,15 +28,17 @@ public class RendererData {
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<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.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<Object> 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;
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);

View File

@@ -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()));
}
}

View File

@@ -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));
}
}

View File

@@ -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));
}
}

View File

@@ -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);

View File

@@ -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)));
}
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;