diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/world/movement/MovableObject.java b/game/src/main/java/com/bartlomiejpluta/base/game/world/movement/MovableObject.java index a6a40ed2..433a5614 100755 --- a/game/src/main/java/com/bartlomiejpluta/base/game/world/movement/MovableObject.java +++ b/game/src/main/java/com/bartlomiejpluta/base/game/world/movement/MovableObject.java @@ -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) { diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/world/movement/Movement.java b/game/src/main/java/com/bartlomiejpluta/base/game/world/movement/Movement.java deleted file mode 100755 index b60c0543..00000000 --- a/game/src/main/java/com/bartlomiejpluta/base/game/world/movement/Movement.java +++ /dev/null @@ -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; - } -}