Refactor event handling to use EventService; remove eventConsumer references and update related classes
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user