Refactor event system | make Context events-aware | introduce GamePauseEvent
This commit is contained in:
@@ -4,6 +4,8 @@ import com.bartlomiejpluta.base.api.animation.Animation;
|
||||
import com.bartlomiejpluta.base.api.audio.Sound;
|
||||
import com.bartlomiejpluta.base.api.camera.Camera;
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.event.Event;
|
||||
import com.bartlomiejpluta.base.api.event.EventType;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.image.Image;
|
||||
import com.bartlomiejpluta.base.api.input.Input;
|
||||
@@ -18,6 +20,7 @@ import com.bartlomiejpluta.base.util.lambda.UncheckedFunction;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public interface Context extends Updatable, Renderable, Disposable {
|
||||
GameRunner getGameRunner();
|
||||
@@ -70,6 +73,10 @@ public interface Context extends Updatable, Renderable, Disposable {
|
||||
|
||||
boolean togglePause();
|
||||
|
||||
<E extends Event> void addEventListener(EventType<E> type, Consumer<E> listener);
|
||||
|
||||
<E extends Event> void removeEventListener(EventType<E> type, Consumer<E> listener);
|
||||
|
||||
void init(Screen screen, Input input, Camera camera);
|
||||
|
||||
void input(Input input);
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.bartlomiejpluta.base.api.context;
|
||||
|
||||
import com.bartlomiejpluta.base.api.event.Event;
|
||||
import com.bartlomiejpluta.base.api.event.EventType;
|
||||
import com.bartlomiejpluta.base.lib.event.BaseEvent;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Value;
|
||||
|
||||
@Value
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class GamePauseEvent extends BaseEvent {
|
||||
public static final EventType<GamePauseEvent> TYPE = new EventType<>("GAME_PAUSE_EVENT");
|
||||
boolean paused;
|
||||
|
||||
@Override
|
||||
public EventType<? extends Event> getType() {
|
||||
return TYPE;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,12 @@
|
||||
package com.bartlomiejpluta.base.api.map.layer.base;
|
||||
|
||||
import com.bartlomiejpluta.base.api.animation.Animation;
|
||||
import com.bartlomiejpluta.base.api.event.Reactive;
|
||||
import com.bartlomiejpluta.base.api.map.model.GameMap;
|
||||
import com.bartlomiejpluta.base.internal.logic.Updatable;
|
||||
import com.bartlomiejpluta.base.internal.render.Renderable;
|
||||
|
||||
public interface Layer extends Renderable, Updatable {
|
||||
public interface Layer extends Renderable, Updatable, Reactive {
|
||||
GameMap getMap();
|
||||
|
||||
void pushAnimation(Animation animation);
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
package com.bartlomiejpluta.base.api.map.model;
|
||||
|
||||
import com.bartlomiejpluta.base.api.event.Reactive;
|
||||
import com.bartlomiejpluta.base.api.map.layer.color.ColorLayer;
|
||||
import com.bartlomiejpluta.base.api.map.layer.image.ImageLayer;
|
||||
import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
|
||||
import com.bartlomiejpluta.base.api.map.layer.tile.TileLayer;
|
||||
import org.joml.Vector2fc;
|
||||
|
||||
public interface GameMap {
|
||||
public interface GameMap extends Reactive {
|
||||
float getWidth();
|
||||
|
||||
float getHeight();
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.bartlomiejpluta.base.lib.event;
|
||||
|
||||
import com.bartlomiejpluta.base.api.event.Event;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
|
||||
@EqualsAndHashCode
|
||||
public abstract class BaseEvent implements Event {
|
||||
|
||||
@Getter
|
||||
|
||||
Reference in New Issue
Block a user