mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-12 03:24:06 +09:00
added sources for Slick
Former-commit-id: 1647fa32ef6894bd7db44f741f07c2f4dcdf9054 Former-commit-id: 0e5810dcfbe1fd59b13e7cabe9f1e93c5542da2d
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
package org.newdawn.slick.particles.effects;
|
||||
|
||||
import org.newdawn.slick.Image;
|
||||
import org.newdawn.slick.particles.Particle;
|
||||
import org.newdawn.slick.particles.ParticleEmitter;
|
||||
import org.newdawn.slick.particles.ParticleSystem;
|
||||
|
||||
/**
|
||||
* A stock effect for fire usin the particle system
|
||||
*
|
||||
* @author kevin
|
||||
*/
|
||||
public class FireEmitter implements ParticleEmitter {
|
||||
/** The x coordinate of the center of the fire effect */
|
||||
private int x;
|
||||
/** The y coordinate of the center of the fire effect */
|
||||
private int y;
|
||||
|
||||
/** The particle emission rate */
|
||||
private int interval = 50;
|
||||
/** Time til the next particle */
|
||||
private int timer;
|
||||
/** The size of the initial particles */
|
||||
private float size = 40;
|
||||
|
||||
/**
|
||||
* Create a default fire effect at 0,0
|
||||
*/
|
||||
public FireEmitter() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a default fire effect at x,y
|
||||
*
|
||||
* @param x The x coordinate of the fire effect
|
||||
* @param y The y coordinate of the fire effect
|
||||
*/
|
||||
public FireEmitter(int x, int y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a default fire effect at x,y
|
||||
*
|
||||
* @param x The x coordinate of the fire effect
|
||||
* @param y The y coordinate of the fire effect
|
||||
* @param size The size of the particle being pumped out
|
||||
*/
|
||||
public FireEmitter(int x, int y, float size) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#update(org.newdawn.slick.particles.ParticleSystem, int)
|
||||
*/
|
||||
public void update(ParticleSystem system, int delta) {
|
||||
timer -= delta;
|
||||
if (timer <= 0) {
|
||||
timer = interval;
|
||||
Particle p = system.getNewParticle(this, 1000);
|
||||
p.setColor(1, 1, 1, 0.5f);
|
||||
p.setPosition(x, y);
|
||||
p.setSize(size);
|
||||
float vx = (float) (-0.02f + (Math.random() * 0.04f));
|
||||
float vy = (float) (-(Math.random() * 0.15f));
|
||||
p.setVelocity(vx,vy,1.1f);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#updateParticle(org.newdawn.slick.particles.Particle, int)
|
||||
*/
|
||||
public void updateParticle(Particle particle, int delta) {
|
||||
if (particle.getLife() > 600) {
|
||||
particle.adjustSize(0.07f * delta);
|
||||
} else {
|
||||
particle.adjustSize(-0.04f * delta * (size / 40.0f));
|
||||
}
|
||||
float c = 0.002f * delta;
|
||||
particle.adjustColor(0,-c/2,-c*2,-c/4);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#isEnabled()
|
||||
*/
|
||||
public boolean isEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#setEnabled(boolean)
|
||||
*/
|
||||
public void setEnabled(boolean enabled) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#completed()
|
||||
*/
|
||||
public boolean completed() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#useAdditive()
|
||||
*/
|
||||
public boolean useAdditive() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#getImage()
|
||||
*/
|
||||
public Image getImage() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#usePoints(org.newdawn.slick.particles.ParticleSystem)
|
||||
*/
|
||||
public boolean usePoints(ParticleSystem system) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#isOriented()
|
||||
*/
|
||||
public boolean isOriented() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#wrapUp()
|
||||
*/
|
||||
public void wrapUp() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.particles.ParticleEmitter#resetState()
|
||||
*/
|
||||
public void resetState() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
<BODY>
|
||||
This package should contain stock effects for simple particle systems.
|
||||
</BODY>
|
||||
Reference in New Issue
Block a user