Swap Sprite and LocationableSprite (now LocationableModel) in inheritance graph
This commit is contained in:
@@ -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.engine.DefaultGameEngine;
|
||||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
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.object.mesh.Mesh;
|
||||||
import com.bartlomiejpluta.base.engine.world.location.LocationableSprite;
|
|
||||||
import com.bartlomiejpluta.base.engine.world.object.Sprite;
|
import com.bartlomiejpluta.base.engine.world.object.Sprite;
|
||||||
import com.bartlomiejpluta.base.util.math.MathUtil;
|
import com.bartlomiejpluta.base.util.math.MathUtil;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.joml.Vector2fc;
|
import org.joml.Vector2fc;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public abstract class AnimatedSprite extends LocationableSprite implements Animated {
|
public abstract class AnimatedSprite extends Sprite implements Animated {
|
||||||
private int time;
|
private int time;
|
||||||
|
|
||||||
// The time in ms between frames
|
// The time in ms between frames
|
||||||
|
|||||||
@@ -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.core.gl.object.mesh.Mesh;
|
||||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||||
import com.bartlomiejpluta.base.engine.world.icon.manager.IconSetManager;
|
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 com.bartlomiejpluta.base.lib.event.EventHandler;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.joml.Vector2f;
|
import org.joml.Vector2f;
|
||||||
import org.joml.Vector2fc;
|
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 EventHandler eventHandler = new EventHandler();
|
||||||
private final IconSetManager iconSetManager;
|
private final IconSetManager iconSetManager;
|
||||||
private final Vector2f iconScale = new Vector2f(1, 1);
|
private final Vector2f iconScale = new Vector2f(1, 1);
|
||||||
|
|||||||
@@ -2,9 +2,7 @@ package com.bartlomiejpluta.base.engine.world.location;
|
|||||||
|
|
||||||
import com.bartlomiejpluta.base.api.location.Locationable;
|
import com.bartlomiejpluta.base.api.location.Locationable;
|
||||||
import com.bartlomiejpluta.base.api.move.Direction;
|
import com.bartlomiejpluta.base.api.move.Direction;
|
||||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
import com.bartlomiejpluta.base.engine.world.object.Model;
|
||||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh;
|
|
||||||
import com.bartlomiejpluta.base.engine.world.object.Sprite;
|
|
||||||
import com.bartlomiejpluta.base.util.math.Distance;
|
import com.bartlomiejpluta.base.util.math.Distance;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.joml.Vector2f;
|
import org.joml.Vector2f;
|
||||||
@@ -13,16 +11,13 @@ import org.joml.Vector2i;
|
|||||||
import org.joml.Vector2ic;
|
import org.joml.Vector2ic;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public abstract class LocationableSprite extends Sprite implements Locationable {
|
public abstract class LocationableModel extends Model implements Locationable {
|
||||||
private enum PlacingMode {BY_POSITION, BY_COORDINATES}
|
|
||||||
|
|
||||||
private PlacingMode placingMode;
|
|
||||||
protected final Vector2f coordinateStepSize = new Vector2f(0, 0);
|
protected final Vector2f coordinateStepSize = new Vector2f(0, 0);
|
||||||
protected final Vector2i coordinates = new Vector2i(0, 0);
|
protected final Vector2i coordinates = new Vector2i(0, 0);
|
||||||
protected final Vector2f positionOffset = new Vector2f(0, 0);
|
protected final Vector2f positionOffset = new Vector2f(0, 0);
|
||||||
|
private PlacingMode placingMode;
|
||||||
|
|
||||||
public LocationableSprite(Mesh mesh, Material material) {
|
public LocationableModel() {
|
||||||
super(mesh, material);
|
|
||||||
setCoordinates(0, 0);
|
setCoordinates(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,6 +26,11 @@ public abstract class LocationableSprite extends Sprite implements Locationable
|
|||||||
return coordinates;
|
return coordinates;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCoordinates(Vector2ic coordinates) {
|
||||||
|
setCoordinates(coordinates.x(), coordinates.y());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setCoordinates(int x, int y) {
|
public void setCoordinates(int x, int y) {
|
||||||
coordinates.x = x;
|
coordinates.x = x;
|
||||||
@@ -53,11 +53,6 @@ public abstract class LocationableSprite extends Sprite implements Locationable
|
|||||||
setPosition(position.x(), position.y());
|
setPosition(position.x(), position.y());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setCoordinates(Vector2ic coordinates) {
|
|
||||||
setCoordinates(coordinates.x(), coordinates.y());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStepSize(float x, float y) {
|
public void setStepSize(float x, float y) {
|
||||||
coordinateStepSize.x = x;
|
coordinateStepSize.x = x;
|
||||||
coordinateStepSize.y = y;
|
coordinateStepSize.y = y;
|
||||||
@@ -112,4 +107,6 @@ public abstract class LocationableSprite extends Sprite implements Locationable
|
|||||||
public int manhattanDistance(Locationable other) {
|
public int manhattanDistance(Locationable other) {
|
||||||
return Distance.manhattan(this.coordinates, other.getCoordinates());
|
return Distance.manhattan(this.coordinates, other.getCoordinates());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private enum PlacingMode {BY_POSITION, BY_COORDINATES}
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ public class DefaultTileLayer extends BaseLayer implements TileLayer {
|
|||||||
@Override
|
@Override
|
||||||
public void setTile(int row, int column, int tileId) {
|
public void setTile(int row, int column, int tileId) {
|
||||||
var tile = tileSet.tileById(tileId);
|
var tile = tileSet.tileById(tileId);
|
||||||
tile.setCoordinates(row, column);
|
tile.setLocation(row, column);
|
||||||
layer[row][column] = tile;
|
layer[row][column] = tile;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,7 @@ public class DefaultTileLayer extends BaseLayer implements TileLayer {
|
|||||||
@Override
|
@Override
|
||||||
public void setTile(int row, int column, int tileSetRow, int tileSetColumn) {
|
public void setTile(int row, int column, int tileSetRow, int tileSetColumn) {
|
||||||
var tile = tileSet.tileAt(tileSetRow, tileSetColumn);
|
var tile = tileSet.tileAt(tileSetRow, tileSetColumn);
|
||||||
tile.setCoordinates(row, column);
|
tile.setLocation(row, column);
|
||||||
layer[row][column] = tile;
|
layer[row][column] = tile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.material.Material;
|
||||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh;
|
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.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.Renderable;
|
||||||
import com.bartlomiejpluta.base.internal.render.ShaderManager;
|
import com.bartlomiejpluta.base.internal.render.ShaderManager;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@@ -13,7 +14,7 @@ import lombok.NonNull;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public abstract class Sprite extends Model implements Renderable {
|
public abstract class Sprite extends LocationableModel implements Renderable {
|
||||||
private final float farthestVertexDistance;
|
private final float farthestVertexDistance;
|
||||||
|
|
||||||
protected final Mesh mesh;
|
protected final Mesh mesh;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ public class Tile extends Sprite {
|
|||||||
private final Vector2f tileScale = new Vector2f(1, 1);
|
private final Vector2f tileScale = new Vector2f(1, 1);
|
||||||
private final Vector2fc tileSpriteSize;
|
private final Vector2fc tileSpriteSize;
|
||||||
|
|
||||||
public Tile setCoordinates(int row, int column) {
|
public Tile setLocation(int row, int column) {
|
||||||
var stepSize = material.getTexture().getSpriteSize();
|
var stepSize = material.getTexture().getSpriteSize();
|
||||||
setPosition(column * stepSize.x(), row * stepSize.y());
|
setPosition(column * stepSize.x(), row * stepSize.y());
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
Reference in New Issue
Block a user