From 9147aa55ce44b80a2916eaad7256e598bbdb0abd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Tue, 2 Mar 2021 11:37:44 +0100 Subject: [PATCH] Create Entity API scaffolding --- .../base/api/context/Context.java | 4 ++++ .../bartlomiejpluta/base/api/entity/Entity.java | 15 +++++++++++++++ .../entity/manager/DefaultEntityManager.java | 9 +++++---- .../base/game/entity/manager/EntityManager.java | 6 ++---- .../model/{Entity.java => DefaultEntity.java} | 17 ++++++++++++----- .../base/game/movement/MovableSprite.java | 12 +++++++++--- .../game/project/model/RenderableContext.java | 6 ++++++ .../tileset/manager/DefaultTileSetManager.java | 2 +- 8 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java rename game/src/main/java/com/bartlomiejpluta/base/game/entity/model/{Entity.java => DefaultEntity.java} (79%) diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java b/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java index 59374917..120db735 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java @@ -1,5 +1,9 @@ package com.bartlomiejpluta.base.api.context; +import com.bartlomiejpluta.base.api.entity.Entity; + public interface Context { void openMap(String mapUid); + + Entity createEntity(String entitySetUid); } 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 new file mode 100644 index 00000000..766b1eaf --- /dev/null +++ b/api/src/main/java/com/bartlomiejpluta/base/api/entity/Entity.java @@ -0,0 +1,15 @@ +package com.bartlomiejpluta.base.api.entity; + +import com.bartlomiejpluta.base.api.geo.Vector; + +public interface Entity { + Vector getCoordinates(); + + void setCoordinates(Vector coordinates); + + Movement prepareMovement(Direction direction); + + Direction getFaceDirection(); + + void setFaceDirection(Direction direction); +} diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/entity/manager/DefaultEntityManager.java b/game/src/main/java/com/bartlomiejpluta/base/game/entity/manager/DefaultEntityManager.java index 5eaad6ec..b8037f52 100644 --- a/game/src/main/java/com/bartlomiejpluta/base/game/entity/manager/DefaultEntityManager.java +++ b/game/src/main/java/com/bartlomiejpluta/base/game/entity/manager/DefaultEntityManager.java @@ -4,8 +4,7 @@ import com.bartlomiejpluta.base.core.gl.object.material.Material; import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh; import com.bartlomiejpluta.base.core.util.mesh.MeshManager; import com.bartlomiejpluta.base.game.entity.config.EntitySpriteConfiguration; -import com.bartlomiejpluta.base.game.entity.model.Entity; -import com.bartlomiejpluta.base.game.map.model.GameMap; +import com.bartlomiejpluta.base.game.entity.model.DefaultEntity; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -16,11 +15,13 @@ import org.springframework.stereotype.Component; @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class DefaultEntityManager implements EntityManager { private final MeshManager meshManager; + private final EntitySetManager entitySetManager; private final EntitySpriteConfiguration configuration; @Override - public Entity createEntity(Material material, GameMap map) { - return new Entity(buildMesh(material), material, map.getStepSize(), configuration); + public DefaultEntity createEntity(String entitySetUid) { + var material = entitySetManager.loadObject(entitySetUid); + return new DefaultEntity(buildMesh(material), material, configuration); } private Mesh buildMesh(Material material) { diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/entity/manager/EntityManager.java b/game/src/main/java/com/bartlomiejpluta/base/game/entity/manager/EntityManager.java index ea91bbf3..1624a5da 100644 --- a/game/src/main/java/com/bartlomiejpluta/base/game/entity/manager/EntityManager.java +++ b/game/src/main/java/com/bartlomiejpluta/base/game/entity/manager/EntityManager.java @@ -1,10 +1,8 @@ package com.bartlomiejpluta.base.game.entity.manager; import com.bartlomiejpluta.base.core.gc.Cleanable; -import com.bartlomiejpluta.base.core.gl.object.material.Material; -import com.bartlomiejpluta.base.game.entity.model.Entity; -import com.bartlomiejpluta.base.game.map.model.GameMap; +import com.bartlomiejpluta.base.game.entity.model.DefaultEntity; public interface EntityManager extends Cleanable { - Entity createEntity(Material material, GameMap map); + DefaultEntity createEntity(String entitySetUid); } diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/entity/model/Entity.java b/game/src/main/java/com/bartlomiejpluta/base/game/entity/model/DefaultEntity.java similarity index 79% rename from game/src/main/java/com/bartlomiejpluta/base/game/entity/model/Entity.java rename to game/src/main/java/com/bartlomiejpluta/base/game/entity/model/DefaultEntity.java index 881038dc..8ee1bbf8 100644 --- a/game/src/main/java/com/bartlomiejpluta/base/game/entity/model/Entity.java +++ b/game/src/main/java/com/bartlomiejpluta/base/game/entity/model/DefaultEntity.java @@ -1,6 +1,8 @@ package com.bartlomiejpluta.base.game.entity.model; import com.bartlomiejpluta.base.api.entity.Direction; +import com.bartlomiejpluta.base.api.entity.Entity; +import com.bartlomiejpluta.base.api.geo.Vector; import com.bartlomiejpluta.base.core.gl.object.material.Material; import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh; import com.bartlomiejpluta.base.game.entity.config.EntitySpriteConfiguration; @@ -13,7 +15,7 @@ import org.joml.Vector2f; import java.util.Map; @EqualsAndHashCode(callSuper = true) -public class Entity extends MovableSprite { +public class DefaultEntity extends MovableSprite implements Entity { private final Map spriteDirectionRows; private final int defaultSpriteColumn; @@ -40,7 +42,7 @@ public class Entity extends MovableSprite { var frames = material.getTexture().getRows(); var array = new Vector2f[frames]; - for(int column=0; column