Create Entity API scaffolding
This commit is contained in:
@@ -1,5 +1,9 @@
|
|||||||
package com.bartlomiejpluta.base.api.context;
|
package com.bartlomiejpluta.base.api.context;
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||||
|
|
||||||
public interface Context {
|
public interface Context {
|
||||||
void openMap(String mapUid);
|
void openMap(String mapUid);
|
||||||
|
|
||||||
|
Entity createEntity(String entitySetUid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
@@ -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.gl.object.mesh.Mesh;
|
||||||
import com.bartlomiejpluta.base.core.util.mesh.MeshManager;
|
import com.bartlomiejpluta.base.core.util.mesh.MeshManager;
|
||||||
import com.bartlomiejpluta.base.game.entity.config.EntitySpriteConfiguration;
|
import com.bartlomiejpluta.base.game.entity.config.EntitySpriteConfiguration;
|
||||||
import com.bartlomiejpluta.base.game.entity.model.Entity;
|
import com.bartlomiejpluta.base.game.entity.model.DefaultEntity;
|
||||||
import com.bartlomiejpluta.base.game.map.model.GameMap;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -16,11 +15,13 @@ import org.springframework.stereotype.Component;
|
|||||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||||
public class DefaultEntityManager implements EntityManager {
|
public class DefaultEntityManager implements EntityManager {
|
||||||
private final MeshManager meshManager;
|
private final MeshManager meshManager;
|
||||||
|
private final EntitySetManager entitySetManager;
|
||||||
private final EntitySpriteConfiguration configuration;
|
private final EntitySpriteConfiguration configuration;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Entity createEntity(Material material, GameMap map) {
|
public DefaultEntity createEntity(String entitySetUid) {
|
||||||
return new Entity(buildMesh(material), material, map.getStepSize(), configuration);
|
var material = entitySetManager.loadObject(entitySetUid);
|
||||||
|
return new DefaultEntity(buildMesh(material), material, configuration);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Mesh buildMesh(Material material) {
|
private Mesh buildMesh(Material material) {
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
package com.bartlomiejpluta.base.game.entity.manager;
|
package com.bartlomiejpluta.base.game.entity.manager;
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.core.gc.Cleanable;
|
import com.bartlomiejpluta.base.core.gc.Cleanable;
|
||||||
import com.bartlomiejpluta.base.core.gl.object.material.Material;
|
import com.bartlomiejpluta.base.game.entity.model.DefaultEntity;
|
||||||
import com.bartlomiejpluta.base.game.entity.model.Entity;
|
|
||||||
import com.bartlomiejpluta.base.game.map.model.GameMap;
|
|
||||||
|
|
||||||
public interface EntityManager extends Cleanable {
|
public interface EntityManager extends Cleanable {
|
||||||
Entity createEntity(Material material, GameMap map);
|
DefaultEntity createEntity(String entitySetUid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.bartlomiejpluta.base.game.entity.model;
|
package com.bartlomiejpluta.base.game.entity.model;
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.api.entity.Direction;
|
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.material.Material;
|
||||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
||||||
import com.bartlomiejpluta.base.game.entity.config.EntitySpriteConfiguration;
|
import com.bartlomiejpluta.base.game.entity.config.EntitySpriteConfiguration;
|
||||||
@@ -13,7 +15,7 @@ import org.joml.Vector2f;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class Entity extends MovableSprite {
|
public class DefaultEntity extends MovableSprite implements Entity {
|
||||||
private final Map<Direction, Integer> spriteDirectionRows;
|
private final Map<Direction, Integer> spriteDirectionRows;
|
||||||
private final int defaultSpriteColumn;
|
private final int defaultSpriteColumn;
|
||||||
|
|
||||||
@@ -70,8 +72,13 @@ public class Entity extends MovableSprite {
|
|||||||
return framesToCrossOneTile;
|
return framesToCrossOneTile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Entity(Mesh mesh, Material material, Vector2f coordinateStepSize, EntitySpriteConfiguration configuration) {
|
@Override
|
||||||
super(mesh, material, coordinateStepSize);
|
public void setCoordinates(Vector coordinates) {
|
||||||
|
setCoordinates(coordinates.x, coordinates.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DefaultEntity(Mesh mesh, Material material, EntitySpriteConfiguration configuration) {
|
||||||
|
super(mesh, material);
|
||||||
this.defaultSpriteColumn = configuration.getDefaultSpriteColumn();
|
this.defaultSpriteColumn = configuration.getDefaultSpriteColumn();
|
||||||
this.spriteDirectionRows = configuration.getSpriteDirectionRows();
|
this.spriteDirectionRows = configuration.getSpriteDirectionRows();
|
||||||
this.faceDirection = Direction.DOWN;
|
this.faceDirection = Direction.DOWN;
|
||||||
@@ -13,7 +13,7 @@ import org.joml.Vector2i;
|
|||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public abstract class MovableSprite extends AnimatedSprite implements Updatable {
|
public abstract class MovableSprite extends AnimatedSprite implements Updatable {
|
||||||
private final Vector2f coordinateStepSize;
|
private final Vector2f coordinateStepSize = new Vector2f(0, 0);
|
||||||
|
|
||||||
private int moveTime = 0;
|
private int moveTime = 0;
|
||||||
private Vector2f movementVector;
|
private Vector2f movementVector;
|
||||||
@@ -78,9 +78,15 @@ public abstract class MovableSprite extends AnimatedSprite implements Updatable
|
|||||||
return setCoordinates(coordinates.x, coordinates.y);
|
return setCoordinates(coordinates.x, coordinates.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MovableSprite(Mesh mesh, Material material, Vector2f coordinateStepSize) {
|
public MovableSprite setStepSize(float x, float y) {
|
||||||
|
coordinateStepSize.x = x;
|
||||||
|
coordinateStepSize.y = y;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MovableSprite(Mesh mesh, Material material) {
|
||||||
super(mesh, material);
|
super(mesh, material);
|
||||||
this.coordinateStepSize = coordinateStepSize;
|
|
||||||
setCoordinates(0, 0);
|
setCoordinates(0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.bartlomiejpluta.base.game.project.model;
|
package com.bartlomiejpluta.base.game.project.model;
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.api.context.Context;
|
import com.bartlomiejpluta.base.api.context.Context;
|
||||||
|
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||||
import com.bartlomiejpluta.base.api.input.Keyboard;
|
import com.bartlomiejpluta.base.api.input.Keyboard;
|
||||||
import com.bartlomiejpluta.base.api.map.MapHandler;
|
import com.bartlomiejpluta.base.api.map.MapHandler;
|
||||||
import com.bartlomiejpluta.base.core.gl.object.texture.TextureManager;
|
import com.bartlomiejpluta.base.core.gl.object.texture.TextureManager;
|
||||||
@@ -52,6 +53,11 @@ public class RenderableContext implements Context, Updatable, Renderable {
|
|||||||
mapHandler.init(this);
|
mapHandler.init(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Entity createEntity(String entitySetUid) {
|
||||||
|
return entityManager.createEntity(entitySetUid);
|
||||||
|
}
|
||||||
|
|
||||||
public void input() {
|
public void input() {
|
||||||
mapHandler.input(keyboard);
|
mapHandler.input(keyboard);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user