From e65ab940c326d4f95ae238c6f249cb8e108c35a4 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 12 Jan 2025 15:04:17 +0200 Subject: [PATCH] Refactor to get rid of some code duplication --- .../room/AbstractRoomController.java | 44 +++---------------- .../room}/AbstractRoomInformation.java | 3 +- .../openkeeper/view/map/MapRoomContainer.java | 2 +- 3 files changed, 9 insertions(+), 40 deletions(-) rename src/toniarts/openkeeper/game/{map => controller/room}/AbstractRoomInformation.java (93%) diff --git a/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java b/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java index bc7f8032..247e047e 100644 --- a/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java +++ b/src/toniarts/openkeeper/game/controller/room/AbstractRoomController.java @@ -16,6 +16,7 @@ */ package toniarts.openkeeper.game.controller.room; +import com.simsilica.es.EntityComponent; import com.simsilica.es.EntityData; import com.simsilica.es.EntityId; import java.awt.Point; @@ -26,7 +27,6 @@ import java.util.Map; import java.util.Set; import toniarts.openkeeper.common.RoomInstance; -import toniarts.openkeeper.game.component.Health; import toniarts.openkeeper.game.component.Owner; import toniarts.openkeeper.game.component.RoomComponent; import toniarts.openkeeper.game.controller.IObjectsController; @@ -39,7 +39,7 @@ * * @author Toni Helenius */ -public abstract class AbstractRoomController implements IRoomController { +public abstract class AbstractRoomController extends AbstractRoomInformation implements IRoomController { /** * The type of object the room houses @@ -85,6 +85,7 @@ public enum RoomObjectLayout { public AbstractRoomController(EntityId entityId, EntityData entityData, KwdFile kwdFile, RoomInstance roomInstance, IObjectsController objectsController) { + super(entityId); this.entityId = entityId; this.entityData = entityData; this.kwdFile = kwdFile; @@ -287,7 +288,7 @@ public boolean isDestroyed() { } private RoomComponent getRoomComponent() { - return entityData.getComponent(entityId, RoomComponent.class); + return getEntityComponent(RoomComponent.class); } /** @@ -459,40 +460,7 @@ protected static Short getPillarObject(short roomId) { } @Override - public EntityId getEntityId() { - return entityId; - } - - @Override - public int getHealth() { - return entityData.getComponent(entityId, Health.class).health; - } - - @Override - public int getMaxHealth() { - return entityData.getComponent(entityId, Health.class).maxHealth; - } - - @Override - public Integer getHealthPercent() { - Health health = entityData.getComponent(entityId, Health.class); - return Math.round((float) health.health / health.maxHealth * 100); - } - - @Override - public boolean isAtFullHealth() { - Health health = entityData.getComponent(entityId, Health.class); - - return (health.health == health.maxHealth); - } - - @Override - public short getOwnerId() { - return entityData.getComponent(entityId, Owner.class).ownerId; - } - - @Override - public short getRoomId() { - return roomInstance.getEntity().getId(); + protected T getEntityComponent(Class type) { + return entityData.getComponent(entityId, type); } } diff --git a/src/toniarts/openkeeper/game/map/AbstractRoomInformation.java b/src/toniarts/openkeeper/game/controller/room/AbstractRoomInformation.java similarity index 93% rename from src/toniarts/openkeeper/game/map/AbstractRoomInformation.java rename to src/toniarts/openkeeper/game/controller/room/AbstractRoomInformation.java index de877ac6..0789e75e 100644 --- a/src/toniarts/openkeeper/game/map/AbstractRoomInformation.java +++ b/src/toniarts/openkeeper/game/controller/room/AbstractRoomInformation.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with OpenKeeper. If not, see . */ -package toniarts.openkeeper.game.map; +package toniarts.openkeeper.game.controller.room; import com.simsilica.es.EntityComponent; import com.simsilica.es.EntityId; @@ -22,6 +22,7 @@ import toniarts.openkeeper.game.component.Health; import toniarts.openkeeper.game.component.Owner; import toniarts.openkeeper.game.component.RoomComponent; +import toniarts.openkeeper.game.map.IRoomInformation; /** * A presentation of a single map tile. Gets data from specified entity diff --git a/src/toniarts/openkeeper/view/map/MapRoomContainer.java b/src/toniarts/openkeeper/view/map/MapRoomContainer.java index e74466f6..c82f14dc 100644 --- a/src/toniarts/openkeeper/view/map/MapRoomContainer.java +++ b/src/toniarts/openkeeper/view/map/MapRoomContainer.java @@ -27,7 +27,7 @@ import toniarts.openkeeper.game.component.Health; import toniarts.openkeeper.game.component.Owner; import toniarts.openkeeper.game.component.RoomComponent; -import toniarts.openkeeper.game.map.AbstractRoomInformation; +import toniarts.openkeeper.game.controller.room.AbstractRoomInformation; import toniarts.openkeeper.game.map.IRoomInformation; import toniarts.openkeeper.game.map.IRoomsInformation; import toniarts.openkeeper.tools.convert.map.KwdFile;