From ccc72d49a7819de3d7bf7e8c7d84fd25b88ba568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Thu, 1 Apr 2021 23:20:04 +0200 Subject: [PATCH] Refactor MovableSprite Make updating position offset also recalculates position --- .../base/engine/world/movement/MovableSprite.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/MovableSprite.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/MovableSprite.java index c83ae975..1111fba5 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/MovableSprite.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/movement/MovableSprite.java @@ -116,7 +116,7 @@ public abstract class MovableSprite extends AnimatedSprite implements Movable, U @Override public void setPosition(float x, float y) { - super.setPosition(x - positionOffset.x, y - positionOffset.y); + super.setPosition(x + positionOffset.x, y + positionOffset.y); coordinates.x = (int) (x / coordinateStepSize.x); coordinates.y = (int) (y / coordinateStepSize.y); placingMode = PlacingMode.BY_POSITION; @@ -124,10 +124,7 @@ public abstract class MovableSprite extends AnimatedSprite implements Movable, U @Override public void setPosition(Vector2fc position) { - super.setPosition(position.x() - positionOffset.x, position.y() - positionOffset.y); - coordinates.x = (int) (position.x() / coordinateStepSize.x); - coordinates.y = (int) (position.y() / coordinateStepSize.y); - placingMode = PlacingMode.BY_POSITION; + setPosition(position.x(), position.y()); } @Override @@ -138,7 +135,10 @@ public abstract class MovableSprite extends AnimatedSprite implements Movable, U public void setStepSize(float x, float y) { coordinateStepSize.x = x; coordinateStepSize.y = y; + adjustPosition(); + } + private void adjustPosition() { switch (placingMode) { case BY_POSITION -> setPosition(position); case BY_COORDINATES -> setCoordinates(coordinates); @@ -152,14 +152,14 @@ public abstract class MovableSprite extends AnimatedSprite implements Movable, U @Override public void setPositionOffset(Vector2fc offset) { - this.positionOffset.x = offset.x(); - this.positionOffset.y = offset.y(); + setPositionOffset(offset.x(), offset.y()); } @Override public void setPositionOffset(float offsetX, float offsetY) { this.positionOffset.x = offsetX; this.positionOffset.y = offsetY; + adjustPosition(); } @Override