diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/character/Character.java b/api/src/main/java/com/bartlomiejpluta/base/api/character/Character.java index e3daecb2..b44a5a55 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/character/Character.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/character/Character.java @@ -19,8 +19,4 @@ public interface Character extends Movable, Animated, Entity { void changeCharacterSet(String characterSetUid); CompletableFuture performInstantAnimation(); - - void addEventListener(EventType type, Consumer listener); - - void removeEventListener(EventType type, Consumer listener); } diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java b/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java index 6e72c316..ade88ec0 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java @@ -1,11 +1,15 @@ package com.bartlomiejpluta.base.api.entity; +import com.bartlomiejpluta.base.api.event.Event; +import com.bartlomiejpluta.base.api.event.EventType; import com.bartlomiejpluta.base.api.event.Reactive; import com.bartlomiejpluta.base.api.location.Locationable; import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.internal.logic.Updatable; import com.bartlomiejpluta.base.internal.render.Renderable; +import java.util.function.Consumer; + public interface Entity extends Locationable, Renderable, Updatable, Reactive { boolean isBlocking(); @@ -20,4 +24,8 @@ public interface Entity extends Locationable, Renderable, Updatable, Reactive { void onAdd(ObjectLayer layer); void onRemove(ObjectLayer layer); + + void addEventListener(EventType type, Consumer listener); + + void removeEventListener(EventType type, Consumer listener); } diff --git a/api/src/main/java/com/bartlomiejpluta/base/lib/entity/EntityDelegate.java b/api/src/main/java/com/bartlomiejpluta/base/lib/entity/EntityDelegate.java index 0151bf59..7276a69a 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/lib/entity/EntityDelegate.java +++ b/api/src/main/java/com/bartlomiejpluta/base/lib/entity/EntityDelegate.java @@ -3,6 +3,7 @@ package com.bartlomiejpluta.base.lib.entity; 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.location.Locationable; import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.api.move.Direction; @@ -13,6 +14,8 @@ import org.joml.Matrix4fc; import org.joml.Vector2fc; import org.joml.Vector2ic; +import java.util.function.Consumer; + public abstract class EntityDelegate implements Entity { protected final Entity entity; @@ -195,6 +198,16 @@ public abstract class EntityDelegate implements Entity { entity.setZIndex(zIndex); } + @Override + public void addEventListener(EventType type, Consumer listener) { + entity.addEventListener(type, listener); + } + + @Override + public void removeEventListener(EventType type, Consumer listener) { + entity.removeEventListener(type, listener); + } + @Override public void handleEvent(E event) { entity.handleEvent(event); diff --git a/api/src/main/java/com/bartlomiejpluta/base/lib/icon/IconDelegate.java b/api/src/main/java/com/bartlomiejpluta/base/lib/icon/IconDelegate.java index 09d41e25..4e366c65 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/lib/icon/IconDelegate.java +++ b/api/src/main/java/com/bartlomiejpluta/base/lib/icon/IconDelegate.java @@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.lib.icon; import com.bartlomiejpluta.base.api.camera.Camera; import com.bartlomiejpluta.base.api.event.Event; +import com.bartlomiejpluta.base.api.event.EventType; import com.bartlomiejpluta.base.api.icon.Icon; import com.bartlomiejpluta.base.api.location.Locationable; import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; @@ -14,6 +15,8 @@ import org.joml.Matrix4fc; import org.joml.Vector2fc; import org.joml.Vector2ic; +import java.util.function.Consumer; + public abstract class IconDelegate implements Icon { protected final Icon icon; @@ -221,6 +224,16 @@ public abstract class IconDelegate implements Icon { icon.setZIndex(zIndex); } + @Override + public void addEventListener(EventType type, Consumer listener) { + icon.addEventListener(type, listener); + } + + @Override + public void removeEventListener(EventType type, Consumer listener) { + icon.removeEventListener(type, listener); + } + @Override public void handleEvent(E event) { icon.handleEvent(event); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/AbstractEntity.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/AbstractEntity.java index 2d884996..53fc235d 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/AbstractEntity.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/entity/AbstractEntity.java @@ -3,6 +3,7 @@ package com.bartlomiejpluta.base.engine.world.entity; 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.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.engine.world.location.LocationableModel; @@ -11,6 +12,8 @@ import com.bartlomiejpluta.base.lib.event.EventHandler; import lombok.Getter; import lombok.Setter; +import java.util.function.Consumer; + public class AbstractEntity extends LocationableModel implements Entity { private final EventHandler eventHandler = new EventHandler(); @@ -35,6 +38,16 @@ public class AbstractEntity extends LocationableModel implements Entity { this.layer = null; } + @Override + public void addEventListener(EventType type, Consumer listener) { + eventHandler.addListener(type, listener); + } + + @Override + public void removeEventListener(EventType type, Consumer listener) { + eventHandler.removeListener(type, listener); + } + @Override public void handleEvent(E event) { eventHandler.handleEvent(event); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/icon/model/DefaultIcon.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/icon/model/DefaultIcon.java index 54e4a6da..74963862 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/icon/model/DefaultIcon.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/icon/model/DefaultIcon.java @@ -1,6 +1,7 @@ package com.bartlomiejpluta.base.engine.world.icon.model; import com.bartlomiejpluta.base.api.event.Event; +import com.bartlomiejpluta.base.api.event.EventType; import com.bartlomiejpluta.base.api.icon.Icon; import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh; @@ -13,6 +14,8 @@ import lombok.Setter; import org.joml.Vector2f; import org.joml.Vector2fc; +import java.util.function.Consumer; + public class DefaultIcon extends Sprite implements Icon { private final EventHandler eventHandler = new EventHandler(); private final IconSetManager iconSetManager; @@ -65,11 +68,6 @@ public class DefaultIcon extends Sprite implements Icon { this.layer = null; } - @Override - public void handleEvent(E event) { - eventHandler.handleEvent(event); - } - @Override public void changeIcon(int row, int column) { material.setSpritePosition(column, row); @@ -147,6 +145,21 @@ public class DefaultIcon extends Sprite implements Icon { return iconScale.y; } + @Override + public void addEventListener(EventType type, Consumer listener) { + eventHandler.addListener(type, listener); + } + + @Override + public void removeEventListener(EventType type, Consumer listener) { + eventHandler.removeListener(type, listener); + } + + @Override + public void handleEvent(E event) { + eventHandler.handleEvent(event); + } + @Override public void update(float dt) { // noop