Enable firing events from Context

This commit is contained in:
2022-08-18 13:49:31 +02:00
parent 5650154c23
commit 957e8fca0e
2 changed files with 9 additions and 6 deletions

View File

@@ -73,6 +73,8 @@ public interface Context extends Updatable, Renderable, Disposable {
boolean togglePause();
<E extends Event> void fireEvent(E event);
<E extends Event> void addEventListener(EventType<E> type, Consumer<E> listener);
<E extends Event> void removeEventListener(EventType<E> type, Consumer<E> listener);

View File

@@ -112,12 +112,13 @@ public class DefaultContext implements Context {
this.input = input;
this.camera = camera;
input.addKeyEventHandler(this::populateEvent);
input.addKeyEventHandler(this::fireEvent);
gameRunner.init(this);
}
private void populateEvent(Event event) {
@Override
public <E extends Event> void fireEvent(E event) {
eventHandler.handleEvent(event);
if (map == null || event.isConsumed()) {
@@ -228,7 +229,7 @@ public class DefaultContext implements Context {
public void setPaused(boolean paused) {
this.paused = paused;
sounds.forEach(this.paused ? Sound::pause : Sound::play);
populateEvent(new GamePauseEvent(this.paused));
fireEvent(new GamePauseEvent(this.paused));
}
@@ -236,21 +237,21 @@ public class DefaultContext implements Context {
public void pause() {
this.paused = true;
sounds.forEach(Sound::pause);
populateEvent(new GamePauseEvent(true));
fireEvent(new GamePauseEvent(true));
}
@Override
public void resume() {
this.paused = false;
sounds.forEach(Sound::play);
populateEvent(new GamePauseEvent(false));
fireEvent(new GamePauseEvent(false));
}
@Override
public boolean togglePause() {
this.paused = !this.paused;
sounds.forEach(this.paused ? Sound::pause : Sound::play);
populateEvent(new GamePauseEvent(this.paused));
fireEvent(new GamePauseEvent(this.paused));
return this.paused;
}