Refactor MovableSprite

This commit is contained in:
2021-03-22 23:04:00 +01:00
parent ac7bb864e8
commit 8717a3e582
4 changed files with 34 additions and 5 deletions

View File

@@ -23,4 +23,8 @@ public interface Movable {
Movement getMovement();
boolean isMoving();
int chebyshevDistance(Vector2ic coordinates);
int manhattanDistance(Vector2ic coordinates);
}

View File

@@ -160,6 +160,16 @@ public abstract class AnimationDelegate implements Animation {
return animation.isMoving();
}
@Override
public int chebyshevDistance(Vector2ic coordinates) {
return animation.chebyshevDistance(coordinates);
}
@Override
public int manhattanDistance(Vector2ic coordinates) {
return animation.manhattanDistance(coordinates);
}
@Override
public void setPositionOffset(Vector2fc offset) {
animation.setPositionOffset(offset);

View File

@@ -174,6 +174,16 @@ public abstract class EntityDelegate implements Entity {
return entity.euclideanDistance(other);
}
@Override
public int chebyshevDistance(Vector2ic coordinates) {
return entity.chebyshevDistance(coordinates);
}
@Override
public int manhattanDistance(Vector2ic coordinates) {
return entity.manhattanDistance(coordinates);
}
@Override
public Matrix4fc getModelMatrix() {
return entity.getModelMatrix();

View File

@@ -31,6 +31,12 @@ public abstract class MovableSprite extends AnimatedSprite implements Movable, U
@Getter
private Movement movement;
public MovableSprite(Mesh mesh, Material material) {
super(mesh, material);
setCoordinates(0, 0);
}
@Override
public Vector2ic getCoordinates() {
return coordinates;
}
@@ -92,6 +98,7 @@ public abstract class MovableSprite extends AnimatedSprite implements Movable, U
return true;
}
@Override
public void setCoordinates(int x, int y) {
coordinates.x = x;
coordinates.y = y;
@@ -112,6 +119,7 @@ public abstract class MovableSprite extends AnimatedSprite implements Movable, U
coordinates.y = (int) ((position.y() - positionOffset.y) / coordinateStepSize.y);
}
@Override
public void setCoordinates(Vector2ic coordinates) {
setCoordinates(coordinates.x(), coordinates.y());
}
@@ -139,16 +147,13 @@ public abstract class MovableSprite extends AnimatedSprite implements Movable, U
this.positionOffset.y = offsetY;
}
@Override
public int chebyshevDistance(Vector2ic coordinates) {
return max(abs(this.coordinates.x - coordinates.x()), abs(this.coordinates.y - coordinates.y()));
}
@Override
public int manhattanDistance(Vector2ic coordinates) {
return abs(this.coordinates.x - coordinates.x()) + abs(this.coordinates.y - coordinates.y());
}
public MovableSprite(Mesh mesh, Material material) {
super(mesh, material);
setCoordinates(0, 0);
}
}