diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/model/AnimatedSprite.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/model/AnimatedSprite.java index 12675a6c..c0d52854 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/model/AnimatedSprite.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/animation/model/AnimatedSprite.java @@ -4,14 +4,13 @@ import com.bartlomiejpluta.base.api.animation.Animated; import com.bartlomiejpluta.base.engine.core.engine.DefaultGameEngine; import com.bartlomiejpluta.base.engine.core.gl.object.material.Material; import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh; -import com.bartlomiejpluta.base.engine.world.location.LocationableSprite; import com.bartlomiejpluta.base.engine.world.object.Sprite; import com.bartlomiejpluta.base.util.math.MathUtil; import lombok.EqualsAndHashCode; import org.joml.Vector2fc; @EqualsAndHashCode(callSuper = true) -public abstract class AnimatedSprite extends LocationableSprite implements Animated { +public abstract class AnimatedSprite extends Sprite implements Animated { private int time; // The time in ms between frames diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/icon/model/DefaultIcon.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/icon/model/DefaultIcon.java index aff77bb2..815885a6 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/icon/model/DefaultIcon.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/icon/model/DefaultIcon.java @@ -6,14 +6,14 @@ import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh; import com.bartlomiejpluta.base.engine.error.AppException; import com.bartlomiejpluta.base.engine.world.icon.manager.IconSetManager; -import com.bartlomiejpluta.base.engine.world.location.LocationableSprite; +import com.bartlomiejpluta.base.engine.world.object.Sprite; import com.bartlomiejpluta.base.lib.event.EventHandler; import lombok.Getter; import lombok.Setter; import org.joml.Vector2f; import org.joml.Vector2fc; -public class DefaultIcon extends LocationableSprite implements Icon { +public class DefaultIcon extends Sprite implements Icon { private final EventHandler eventHandler = new EventHandler(); private final IconSetManager iconSetManager; private final Vector2f iconScale = new Vector2f(1, 1); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/location/LocationableSprite.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/location/LocationableModel.java similarity index 89% rename from engine/src/main/java/com/bartlomiejpluta/base/engine/world/location/LocationableSprite.java rename to engine/src/main/java/com/bartlomiejpluta/base/engine/world/location/LocationableModel.java index 31bebe2b..7014ef0b 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/location/LocationableSprite.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/location/LocationableModel.java @@ -2,9 +2,7 @@ package com.bartlomiejpluta.base.engine.world.location; import com.bartlomiejpluta.base.api.location.Locationable; import com.bartlomiejpluta.base.api.move.Direction; -import com.bartlomiejpluta.base.engine.core.gl.object.material.Material; -import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh; -import com.bartlomiejpluta.base.engine.world.object.Sprite; +import com.bartlomiejpluta.base.engine.world.object.Model; import com.bartlomiejpluta.base.util.math.Distance; import lombok.EqualsAndHashCode; import org.joml.Vector2f; @@ -13,16 +11,13 @@ import org.joml.Vector2i; import org.joml.Vector2ic; @EqualsAndHashCode(callSuper = true) -public abstract class LocationableSprite extends Sprite implements Locationable { - private enum PlacingMode {BY_POSITION, BY_COORDINATES} - - private PlacingMode placingMode; +public abstract class LocationableModel extends Model implements Locationable { protected final Vector2f coordinateStepSize = new Vector2f(0, 0); protected final Vector2i coordinates = new Vector2i(0, 0); protected final Vector2f positionOffset = new Vector2f(0, 0); + private PlacingMode placingMode; - public LocationableSprite(Mesh mesh, Material material) { - super(mesh, material); + public LocationableModel() { setCoordinates(0, 0); } @@ -31,6 +26,11 @@ public abstract class LocationableSprite extends Sprite implements Locationable return coordinates; } + @Override + public void setCoordinates(Vector2ic coordinates) { + setCoordinates(coordinates.x(), coordinates.y()); + } + @Override public void setCoordinates(int x, int y) { coordinates.x = x; @@ -53,11 +53,6 @@ public abstract class LocationableSprite extends Sprite implements Locationable setPosition(position.x(), position.y()); } - @Override - public void setCoordinates(Vector2ic coordinates) { - setCoordinates(coordinates.x(), coordinates.y()); - } - public void setStepSize(float x, float y) { coordinateStepSize.x = x; coordinateStepSize.y = y; @@ -112,4 +107,6 @@ public abstract class LocationableSprite extends Sprite implements Locationable public int manhattanDistance(Locationable other) { return Distance.manhattan(this.coordinates, other.getCoordinates()); } + + private enum PlacingMode {BY_POSITION, BY_COORDINATES} } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/tile/DefaultTileLayer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/tile/DefaultTileLayer.java index fadb74ba..68421489 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/tile/DefaultTileLayer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/tile/DefaultTileLayer.java @@ -26,7 +26,7 @@ public class DefaultTileLayer extends BaseLayer implements TileLayer { @Override public void setTile(int row, int column, int tileId) { var tile = tileSet.tileById(tileId); - tile.setCoordinates(row, column); + tile.setLocation(row, column); layer[row][column] = tile; } @@ -34,7 +34,7 @@ public class DefaultTileLayer extends BaseLayer implements TileLayer { @Override public void setTile(int row, int column, int tileSetRow, int tileSetColumn) { var tile = tileSet.tileAt(tileSetRow, tileSetColumn); - tile.setCoordinates(row, column); + tile.setLocation(row, column); layer[row][column] = tile; } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Sprite.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Sprite.java index 70b7d6de..58d35d3f 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Sprite.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/object/Sprite.java @@ -5,6 +5,7 @@ import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.engine.core.gl.object.material.Material; import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh; import com.bartlomiejpluta.base.engine.core.gl.shader.constant.UniformName; +import com.bartlomiejpluta.base.engine.world.location.LocationableModel; import com.bartlomiejpluta.base.internal.render.Renderable; import com.bartlomiejpluta.base.internal.render.ShaderManager; import lombok.EqualsAndHashCode; @@ -13,7 +14,7 @@ import lombok.NonNull; import lombok.Setter; @EqualsAndHashCode(callSuper = true) -public abstract class Sprite extends Model implements Renderable { +public abstract class Sprite extends LocationableModel implements Renderable { private final float farthestVertexDistance; protected final Mesh mesh; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/tileset/model/Tile.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/tileset/model/Tile.java index 25972f42..ba4865cb 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/tileset/model/Tile.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/tileset/model/Tile.java @@ -16,7 +16,7 @@ public class Tile extends Sprite { private final Vector2f tileScale = new Vector2f(1, 1); private final Vector2fc tileSpriteSize; - public Tile setCoordinates(int row, int column) { + public Tile setLocation(int row, int column) { var stepSize = material.getTexture().getSpriteSize(); setPosition(column * stepSize.x(), row * stepSize.y()); return this;