From 5748d09b54a4183c4e54893b77753cf0006992cb Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 10 Mar 2023 09:18:43 +0800 Subject: [PATCH] fix particle effect initial position - move the offset calculation inside MapActor --- .../forge/adventure/character/MapActor.java | 20 ++++++++++++++++--- .../src/forge/adventure/stage/MapStage.java | 4 +--- .../src/forge/adventure/stage/WorldStage.java | 4 +--- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/character/MapActor.java b/forge-gui-mobile/src/forge/adventure/character/MapActor.java index 304b8a2d52c..ffe50e1e676 100644 --- a/forge-gui-mobile/src/forge/adventure/character/MapActor.java +++ b/forge-gui-mobile/src/forge/adventure/character/MapActor.java @@ -63,6 +63,7 @@ public class MapActor extends Actor { { ParticleEffect effect = new ParticleEffect(); effect.load(Config.instance().getFile(path),Config.instance().getFile(path).parent()); + effect.setPosition(getCenterX(), getCenterY()); effects.add(new CurrentEffect(path, effect, offset, overlay)); if(duration!=0)//ParticleEffect.setDuration uses an integer for some reason { @@ -147,16 +148,29 @@ public class MapActor extends Actor { effect.effect.draw(batch); } } + float getCenterX() { + float scale = 1f; + if (this instanceof EnemySprite) { + scale = ((EnemySprite) this).getData().scale; + } + return getX()+(getWidth()*scale)/2; + } + float getCenterY() { + float scale = 1f; + if (this instanceof EnemySprite) { + scale = ((EnemySprite) this).getData().scale; + } + return getY()+(getHeight()*scale)/2; + } + @Override public void act(float delta) { super.act(delta); - - for(int i=0;i