package info.u250.c2d.graphic; import info.u250.c2d.engine.Engine; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.graphics.g2d.ParticleEffect; import com.badlogic.gdx.graphics.g2d.ParticleEmitter; import com.badlogic.gdx.scenes.scene2d.Actor; public class ParticleEffectActor extends Actor { private ParticleEffect emitter; private boolean pauseWithEngine = false; public ParticleEffectActor(ParticleEffect pemitter,String... name) { this.emitter = new ParticleEffect(); for(String s :name){ this.emitter.getEmitters().add(new ParticleEmitter(pemitter.findEmitter(s))); } } @Override public void setColor(Color color) { for(ParticleEmitter e:this.emitter.getEmitters()){ if(e.getTint().getColors().length != 3)return; float[] colors = new float[e.getTint().getColors().length]; for(int i=0;i<colors.length;i+=3){ colors[i] = color.r; colors[i+1] = color.g; colors[i+2] = color.b; } e.getTint().setColors(colors); } super.setColor(color); } public ParticleEffect getEmitter() { return emitter; } public void setEmitter(ParticleEffect emitter) { this.emitter = emitter; } @Override public void draw(Batch batch, float parentAlpha) { if(this.isVisible()){ if (parentAlpha == 1) { if(Engine.isPause() && pauseWithEngine){}else{ this.emitter.setPosition(this.getX(), this.getY()); this.emitter.draw(batch, Engine.getDeltaTime()); } } } } public boolean isPauseWithEngine() { return pauseWithEngine; } public void setPauseWithEngine(boolean pauseWithEngine) { this.pauseWithEngine = pauseWithEngine; } }