mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +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();
|
ParticleEffect effect = new ParticleEffect();
|
||||||
effect.load(Config.instance().getFile(path),Config.instance().getFile(path).parent());
|
effect.load(Config.instance().getFile(path),Config.instance().getFile(path).parent());
|
||||||
|
effect.setPosition(getCenterX(), getCenterY());
|
||||||
effects.add(new CurrentEffect(path, effect, offset, overlay));
|
effects.add(new CurrentEffect(path, effect, offset, overlay));
|
||||||
if(duration!=0)//ParticleEffect.setDuration uses an integer for some reason
|
if(duration!=0)//ParticleEffect.setDuration uses an integer for some reason
|
||||||
{
|
{
|
||||||
@@ -147,16 +148,29 @@ public class MapActor extends Actor {
|
|||||||
effect.effect.draw(batch);
|
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
|
@Override
|
||||||
public void act(float delta) {
|
public void act(float delta) {
|
||||||
super.act(delta);
|
super.act(delta);
|
||||||
|
|
||||||
|
|
||||||
for(int i=0;i<effects.size;i++)
|
for(int i=0;i<effects.size;i++)
|
||||||
{
|
{
|
||||||
CurrentEffect effect=effects.get(i);
|
CurrentEffect effect=effects.get(i);
|
||||||
effect.effect.update(delta);
|
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())
|
if(effect.effect.isComplete())
|
||||||
{
|
{
|
||||||
effects.removeIndex(i);
|
effects.removeIndex(i);
|
||||||
|
|||||||
@@ -798,9 +798,7 @@ public class MapStage extends GameStage {
|
|||||||
|
|
||||||
Current.player().win();
|
Current.player().win();
|
||||||
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||||
float vx = currentMob.getData().scale == 1f ? 0f : -((currentMob.getWidth()*currentMob.getData().scale)/2);
|
currentMob.playEffect(Paths.EFFECT_BLOOD, 0.5f);
|
||||||
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));
|
|
||||||
Timer.schedule(new Timer.Task() {
|
Timer.schedule(new Timer.Task() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|||||||
@@ -156,9 +156,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
|
|||||||
if (playerIsWinner) {
|
if (playerIsWinner) {
|
||||||
Current.player().win();
|
Current.player().win();
|
||||||
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||||
float vx = currentMob.getData().scale == 1f ? 0f : -((currentMob.getWidth()*currentMob.getData().scale)/2);
|
currentMob.playEffect(Paths.EFFECT_BLOOD, 0.5f);
|
||||||
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));
|
|
||||||
Timer.schedule(new Timer.Task() {
|
Timer.schedule(new Timer.Task() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|||||||
Reference in New Issue
Block a user