mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
fix particle effect initial position
- move the offset calculation inside MapActor
This commit is contained in:
@@ -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<effects.size;i++)
|
||||
{
|
||||
CurrentEffect effect=effects.get(i);
|
||||
effect.effect.update(delta);
|
||||
effect.effect.setPosition(getX()+getHeight()/2+effect.offset.x,getY()+getWidth()/2+effect.offset.y);
|
||||
effect.effect.setPosition(getCenterX()+effect.offset.x,getCenterY()+effect.offset.y);
|
||||
if(effect.effect.isComplete())
|
||||
{
|
||||
effects.removeIndex(i);
|
||||
|
||||
@@ -798,9 +798,7 @@ public class MapStage extends GameStage {
|
||||
|
||||
Current.player().win();
|
||||
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||
float vx = currentMob.getData().scale == 1f ? 0f : -((currentMob.getWidth()*currentMob.getData().scale)/2);
|
||||
float vy = currentMob.getData().scale == 1f ? 0f : -((currentMob.getHeight()*currentMob.getData().scale)/2);
|
||||
currentMob.playEffect(Paths.EFFECT_BLOOD, 0.5f, true, new Vector2(vx, vy));
|
||||
currentMob.playEffect(Paths.EFFECT_BLOOD, 0.5f);
|
||||
Timer.schedule(new Timer.Task() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
@@ -156,9 +156,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
|
||||
if (playerIsWinner) {
|
||||
Current.player().win();
|
||||
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||
float vx = currentMob.getData().scale == 1f ? 0f : -((currentMob.getWidth()*currentMob.getData().scale)/2);
|
||||
float vy = currentMob.getData().scale == 1f ? 0f : -((currentMob.getHeight()*currentMob.getData().scale)/2);
|
||||
currentMob.playEffect(Paths.EFFECT_BLOOD, 0.5f, true, new Vector2(vx, vy));
|
||||
currentMob.playEffect(Paths.EFFECT_BLOOD, 0.5f);
|
||||
Timer.schedule(new Timer.Task() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
Reference in New Issue
Block a user