Merge Movement object to MovableObject class
This commit is contained in:
@@ -23,7 +23,10 @@ public abstract class MovableObject extends AnimationableObject implements Updat
|
||||
);
|
||||
|
||||
private final Vector2f coordinateStepSize;
|
||||
private Movement movement;
|
||||
|
||||
|
||||
private int moveTime = 0;
|
||||
private Vector2f movementVector;
|
||||
|
||||
@Getter
|
||||
private final Vector2i coordinates = new Vector2i(0, 0);
|
||||
@@ -46,18 +49,18 @@ public abstract class MovableObject extends AnimationableObject implements Updat
|
||||
|
||||
@Override
|
||||
public boolean shouldAnimate() {
|
||||
return movement != null;
|
||||
return movementVector != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
if (movement != null) {
|
||||
var dS = movement.getMovementVector();
|
||||
if (dS != null) {
|
||||
movePosition(dS);
|
||||
if(movementVector != null) {
|
||||
if(moveTime > 0) {
|
||||
--moveTime;
|
||||
movePosition(movementVector);
|
||||
} else {
|
||||
adjustCoordinates();
|
||||
movement = null;
|
||||
movementVector = null;
|
||||
setAnimationFrame(new Vector2f(DEFAULT_SPRITE, SPRITE_ROWS.get(faceDirection)));
|
||||
}
|
||||
}
|
||||
@@ -69,11 +72,14 @@ public abstract class MovableObject extends AnimationableObject implements Updat
|
||||
}
|
||||
|
||||
public void move(Direction direction) {
|
||||
if (this.movement != null) {
|
||||
if (this.movementVector != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
setFaceDirection(direction);
|
||||
this.movement = new Movement(direction, coordinateStepSize, framesToCrossOneTile);
|
||||
var speed = new Vector2f(coordinateStepSize).div(framesToCrossOneTile);
|
||||
movementVector = direction.asFloatVector().mul(speed);
|
||||
moveTime = framesToCrossOneTile;
|
||||
}
|
||||
|
||||
public MovableObject setCoordinates(int x, int y) {
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
package com.bartlomiejpluta.base.game.world.movement;
|
||||
|
||||
import org.joml.Vector2f;
|
||||
|
||||
|
||||
public class Movement {
|
||||
private final Vector2f dS;
|
||||
private int moveTime;
|
||||
|
||||
public Vector2f getMovementVector() {
|
||||
if(moveTime > 0) {
|
||||
--moveTime;
|
||||
|
||||
return new Vector2f(dS);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public Movement(Direction direction, Vector2f tileSize, int framesToCrossOneTile) {
|
||||
var speed = new Vector2f(tileSize).div(framesToCrossOneTile);
|
||||
dS = direction.asFloatVector().mul(speed);
|
||||
moveTime = framesToCrossOneTile;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user