package com.jpii.navalbattle.renderer.particles;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.util.ArrayList;
import javax.swing.*;
public class ParticleEngine {
BufferedImage buffer;
Timer clock;
ArrayList<Particle> particles;
int maxParticles = 40;
public ParticleEngine(int millisecondUpdate, int envWidth, int envHeight) {
particles = new ArrayList<Particle>();
buffer = new BufferedImage(envWidth,envHeight,BufferedImage.TYPE_INT_ARGB);
ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
update();
}
};
clock = new Timer(millisecondUpdate, al);
clock.start();
}
public void setMaxParticles(int max) {
maxParticles = max;
}
public int getMaxParticles() {
return maxParticles;
}
public void addParticle(Particle p) {
if (maxParticles > particles.size())
particles.add(p);
}
public BufferedImage getBuffer() {
return buffer;
}
public void update() {
buffer = new BufferedImage(buffer.getWidth(),buffer.getHeight(),BufferedImage.TYPE_INT_ARGB);
Graphics2D g = (Graphics2D)buffer.getGraphics();
for (int c = 0; c < particles.size(); c++) {
Particle p = particles.get(c);
if (p.health <= 0)
particles.remove(p);
else {
p.run();
p.draw(g);
}
}
}
}