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(); Movement getMovement();
boolean isMoving(); 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(); return animation.isMoving();
} }
@Override
public int chebyshevDistance(Vector2ic coordinates) {
return animation.chebyshevDistance(coordinates);
}
@Override
public int manhattanDistance(Vector2ic coordinates) {
return animation.manhattanDistance(coordinates);
}
@Override @Override
public void setPositionOffset(Vector2fc offset) { public void setPositionOffset(Vector2fc offset) {
animation.setPositionOffset(offset); animation.setPositionOffset(offset);

View File

@@ -174,6 +174,16 @@ public abstract class EntityDelegate implements Entity {
return entity.euclideanDistance(other); 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 @Override
public Matrix4fc getModelMatrix() { public Matrix4fc getModelMatrix() {
return entity.getModelMatrix(); return entity.getModelMatrix();

View File

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