From c5e2888048592d881039f5f327d47672a231a901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Tue, 2 Mar 2021 14:12:24 +0100 Subject: [PATCH] Add some additional methods to Entity and GameMap API classes --- .../base/api/entity/Entity.java | 2 + .../bartlomiejpluta/base/api/map/GameMap.java | 16 +++- .../base/api/map}/PassageAbility.java | 2 +- .../base/game/entity/model/DefaultEntity.java | 16 ++-- .../game/map/layer/object/ObjectLayer.java | 1 + .../base/game/map/model/DefaultGameMap.java | 76 ++++++++----------- .../map/serial/ProtobufMapDeserializer.java | 2 +- 7 files changed, 56 insertions(+), 59 deletions(-) rename {game/src/main/java/com/bartlomiejpluta/base/game/map/layer/object => api/src/main/java/com/bartlomiejpluta/base/api/map}/PassageAbility.java (65%) 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 444efde5..bf23f085 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 @@ -14,4 +14,6 @@ public interface Entity { void setFaceDirection(Direction direction); void setSpeed(float speed); + + void setAnimationSpeed(float speed); } diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/map/GameMap.java b/api/src/main/java/com/bartlomiejpluta/base/api/map/GameMap.java index 0a47b308..d4709ffc 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/map/GameMap.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/map/GameMap.java @@ -4,9 +4,19 @@ import com.bartlomiejpluta.base.api.entity.Entity; import com.bartlomiejpluta.base.api.entity.Movement; public interface GameMap { - void addEntity(int layerIndex, Entity entity); + void addEntity(int objectLayerIndex, Entity entity); - void removeEntity(int layerIndex, Entity entity); + void removeEntity(int objectLayerIndex, Entity entity); - boolean isMovementPossible(int layerIndex, Movement movement); + boolean isMovementPossible(int objectLayerIndex, Movement movement); + + void setTile(int tileLayerIndex, int row, int column, int tileId); + + void setTile(int tileLayerIndex, int row, int column, int tileSetRow, int tileSetColumn); + + void clearTile(int tileLayerIndex, int row, int column); + + void setPassageAbility(int objectLayerIndex, int row, int column, PassageAbility passageAbility); + + void setColor(int colorLayerIndex, float r, float g, float b, float alpha); } diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/map/layer/object/PassageAbility.java b/api/src/main/java/com/bartlomiejpluta/base/api/map/PassageAbility.java similarity index 65% rename from game/src/main/java/com/bartlomiejpluta/base/game/map/layer/object/PassageAbility.java rename to api/src/main/java/com/bartlomiejpluta/base/api/map/PassageAbility.java index 676ac5bb..846a5cda 100644 --- a/game/src/main/java/com/bartlomiejpluta/base/game/map/layer/object/PassageAbility.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/map/PassageAbility.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.game.map.layer.object; +package com.bartlomiejpluta.base.api.map; public enum PassageAbility { BLOCK, diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/entity/model/DefaultEntity.java b/game/src/main/java/com/bartlomiejpluta/base/game/entity/model/DefaultEntity.java index 6a70ad21..33bb718c 100644 --- a/game/src/main/java/com/bartlomiejpluta/base/game/entity/model/DefaultEntity.java +++ b/game/src/main/java/com/bartlomiejpluta/base/game/entity/model/DefaultEntity.java @@ -20,7 +20,6 @@ public class DefaultEntity extends MovableSprite implements Entity { private final Map spriteDirectionRows; private final int defaultSpriteColumn; - @Setter private int animationSpeed = 100; @Setter @@ -65,14 +64,6 @@ public class DefaultEntity extends MovableSprite implements Entity { return false; } - public void setMovementSlowness(int slowness) { - framesToCrossOneTile = slowness; - } - - public int getMovementSlowness() { - return framesToCrossOneTile; - } - @Override public void setCoordinates(Vector coordinates) { setCoordinates(coordinates.x, coordinates.y); @@ -80,7 +71,12 @@ public class DefaultEntity extends MovableSprite implements Entity { @Override public void setSpeed(float speed) { - setMovementSlowness((int) (1 / MathUtil.clamp(speed, 0.01, 1.0))); + framesToCrossOneTile = (int) (1 / MathUtil.clamp(speed, Float.MIN_VALUE, 1.0)); + } + + @Override + public void setAnimationSpeed(float speed) { + animationSpeed = (int) (1 / MathUtil.clamp(speed, Float.MIN_VALUE, 1.0)); } public DefaultEntity(Mesh mesh, Material material, EntitySpriteConfiguration configuration) { diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/map/layer/object/ObjectLayer.java b/game/src/main/java/com/bartlomiejpluta/base/game/map/layer/object/ObjectLayer.java index 045f9d30..8ef7e1c4 100644 --- a/game/src/main/java/com/bartlomiejpluta/base/game/map/layer/object/ObjectLayer.java +++ b/game/src/main/java/com/bartlomiejpluta/base/game/map/layer/object/ObjectLayer.java @@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.game.map.layer.object; import com.bartlomiejpluta.base.api.entity.Direction; import com.bartlomiejpluta.base.api.geo.Vector; +import com.bartlomiejpluta.base.api.map.PassageAbility; import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager; import com.bartlomiejpluta.base.core.ui.Window; import com.bartlomiejpluta.base.core.world.camera.Camera; diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/map/model/DefaultGameMap.java b/game/src/main/java/com/bartlomiejpluta/base/game/map/model/DefaultGameMap.java index f84f4f3b..0489c93f 100644 --- a/game/src/main/java/com/bartlomiejpluta/base/game/map/model/DefaultGameMap.java +++ b/game/src/main/java/com/bartlomiejpluta/base/game/map/model/DefaultGameMap.java @@ -3,6 +3,7 @@ package com.bartlomiejpluta.base.game.map.model; import com.bartlomiejpluta.base.api.entity.Entity; import com.bartlomiejpluta.base.api.entity.Movement; import com.bartlomiejpluta.base.api.map.GameMap; +import com.bartlomiejpluta.base.api.map.PassageAbility; import com.bartlomiejpluta.base.core.gl.render.Renderable; import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager; import com.bartlomiejpluta.base.core.logic.Updatable; @@ -16,9 +17,7 @@ import com.bartlomiejpluta.base.game.map.layer.color.ColorLayer; import com.bartlomiejpluta.base.game.map.layer.image.ImageLayer; import com.bartlomiejpluta.base.game.map.layer.image.ImageLayerMode; import com.bartlomiejpluta.base.game.map.layer.object.ObjectLayer; -import com.bartlomiejpluta.base.game.map.layer.object.PassageAbility; import com.bartlomiejpluta.base.game.map.layer.tile.TileLayer; -import com.bartlomiejpluta.base.game.movement.MovableSprite; import com.bartlomiejpluta.base.game.tileset.model.TileSet; import lombok.Getter; import lombok.NonNull; @@ -110,57 +109,46 @@ public class DefaultGameMap implements Renderable, Updatable, GameMap { return layers.size() - 1; } - public DefaultGameMap setTile(int layerIndex, int row, int column, int tileId) { - ((TileLayer) layers.get(layerIndex)).setTile(row, column, tileSet.tileById(tileId)); - - return this; - } - - public DefaultGameMap setTile(int layerIndex, int row, int column, int tileSetRow, int tileSetColumn) { - ((TileLayer) layers.get(layerIndex)).setTile(row, column, tileSet.tileAt(tileSetRow, tileSetColumn)); - - return this; - } - - public DefaultGameMap clearTile(int layerIndex, int row, int column) { - ((TileLayer) layers.get(layerIndex)).setTile(row, column, null); - - return this; - } - - public DefaultGameMap removeObject(int layerIndex, MovableSprite object) { - ((ObjectLayer) layers.get(layerIndex)).removeObject(object); - - return this; - } - - public DefaultGameMap setPassageAbility(int layerIndex, int row, int column, PassageAbility passageAbility) { - ((ObjectLayer) layers.get(layerIndex)).setPassageAbility(row, column, passageAbility); - - return this; - } - - public DefaultGameMap setColor(int layerIndex, float r, float g, float b, float alpha) { - ((ColorLayer) layers.get(layerIndex)).setColor(r, g, b, alpha); - - return this; - } - @Override - public void addEntity(int layerIndex, Entity entity) { + public void addEntity(int objectLayerIndex, Entity entity) { var object = (DefaultEntity) entity; object.setStepSize(stepSize.x, stepSize.y); - ((ObjectLayer) layers.get(layerIndex)).addObject(object); + ((ObjectLayer) layers.get(objectLayerIndex)).addObject(object); } @Override - public void removeEntity(int layerIndex, Entity entity) { - ((ObjectLayer) layers.get(layerIndex)).removeObject((DefaultEntity) entity); + public void removeEntity(int objectLayerIndex, Entity entity) { + ((ObjectLayer) layers.get(objectLayerIndex)).removeObject((DefaultEntity) entity); } @Override - public boolean isMovementPossible(int layerIndex, Movement movement) { + public void setTile(int tileLayerIndex, int row, int column, int tileId) { + ((TileLayer) layers.get(tileLayerIndex)).setTile(row, column, tileSet.tileById(tileId)); + } + + @Override + public void setTile(int tileLayerIndex, int row, int column, int tileSetRow, int tileSetColumn) { + ((TileLayer) layers.get(tileLayerIndex)).setTile(row, column, tileSet.tileAt(tileSetRow, tileSetColumn)); + } + + @Override + public void clearTile(int tileLayerIndex, int row, int column) { + ((TileLayer) layers.get(tileLayerIndex)).setTile(row, column, null); + } + + @Override + public void setPassageAbility(int objectLayerIndex, int row, int column, PassageAbility passageAbility) { + ((ObjectLayer) layers.get(objectLayerIndex)).setPassageAbility(row, column, passageAbility); + } + + @Override + public void setColor(int colorLayerIndex, float r, float g, float b, float alpha) { + ((ColorLayer) layers.get(colorLayerIndex)).setColor(r, g, b, alpha); + } + + @Override + public boolean isMovementPossible(int objectLayerIndex, Movement movement) { var target = movement.getTo(); // Is trying to go beyond the map @@ -171,6 +159,6 @@ public class DefaultGameMap implements Renderable, Updatable, GameMap { var source = movement.getFrom(); var direction = movement.getDirection(); - return ((ObjectLayer) layers.get(layerIndex)).isMovementPossible(source, target, direction); + return ((ObjectLayer) layers.get(objectLayerIndex)).isMovementPossible(source, target, direction); } } diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/map/serial/ProtobufMapDeserializer.java b/game/src/main/java/com/bartlomiejpluta/base/game/map/serial/ProtobufMapDeserializer.java index ff837843..adf93b02 100644 --- a/game/src/main/java/com/bartlomiejpluta/base/game/map/serial/ProtobufMapDeserializer.java +++ b/game/src/main/java/com/bartlomiejpluta/base/game/map/serial/ProtobufMapDeserializer.java @@ -1,10 +1,10 @@ package com.bartlomiejpluta.base.game.map.serial; +import com.bartlomiejpluta.base.api.map.PassageAbility; import com.bartlomiejpluta.base.core.error.AppException; import com.bartlomiejpluta.base.core.util.mesh.MeshManager; import com.bartlomiejpluta.base.game.image.manager.ImageManager; import com.bartlomiejpluta.base.game.map.layer.image.ImageLayerMode; -import com.bartlomiejpluta.base.game.map.layer.object.PassageAbility; import com.bartlomiejpluta.base.game.map.model.DefaultGameMap; import com.bartlomiejpluta.base.game.tileset.manager.TileSetManager; import com.bartlomiejpluta.base.proto.GameMapProto;