Add *EventListener methods to Entity

This commit is contained in:
2022-08-31 12:56:16 +02:00
parent ec28a22b72
commit f412bd2d69
6 changed files with 65 additions and 9 deletions

View File

@@ -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 <E extends Event> void addEventListener(EventType<E> type, Consumer<E> listener) {
eventHandler.addListener(type, listener);
}
@Override
public <E extends Event> void removeEventListener(EventType<E> type, Consumer<E> listener) {
eventHandler.removeListener(type, listener);
}
@Override
public <E extends Event> void handleEvent(E event) {
eventHandler.handleEvent(event);

View File

@@ -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 <E extends Event> 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 <E extends Event> void addEventListener(EventType<E> type, Consumer<E> listener) {
eventHandler.addListener(type, listener);
}
@Override
public <E extends Event> void removeEventListener(EventType<E> type, Consumer<E> listener) {
eventHandler.removeListener(type, listener);
}
@Override
public <E extends Event> void handleEvent(E event) {
eventHandler.handleEvent(event);
}
@Override
public void update(float dt) {
// noop