ProjectZombie/src/shootergame/entity/particle/ParticleBlood.java

81 lines
2.0 KiB
Java

package shootergame.entity.particle;
import java.util.Random;
import shootergame.Main;
import shootergame.display.Camera;
import shootergame.entity.EntityParticle;
import shootergame.util.gl.GlHelpers;
import shootergame.util.math.MathHelpers;
import shootergame.util.math.random.RandomHelpers;
import shootergame.util.math.vec.Vec2d;
import shootergame.util.math.vec.Vec2i;
import shootergame.util.math.vec.Vec3d;
import shootergame.world.chunk.Chunk;
import shootergame.world.layer.Layer;
public class ParticleBlood extends EntityParticle
{
private double r_color;
private double time = 1000;
private double height = 0;
private Vec3d velocity;
private double angle_height;
public ParticleBlood(Random rand, Vec2d pos, double angle) {
super(pos, rand.nextDouble() / 5, 0);
this.angle = angle + RandomHelpers.randrange(rand, -100, 100);
this.angle_height = RandomHelpers.randrange(rand, 9000, 18000) / 100;
this.height = rand.nextDouble();
r_color = RandomHelpers.randrange(rand, 200, 800) / 1000.0;
velocity = MathHelpers.moveTowards3(0.1,
new Vec2d(Math.toRadians(this.angle), Math.toRadians(angle_height)));
}
@Override
public void tick(Chunk chunk, Layer layer)
{
// Call super
super.tick(chunk, layer);
Main.player.setHealth(100);
// Move in the velocity and remove some of it
pos.x += velocity.x;
pos.y += velocity.y;
height += velocity.z;
velocity.x /= 1.05;
velocity.y /= 1.05;
velocity.z -= 0.001;
if(height < 0) {
height = 0;
velocity.z = 0;
}
// Remove some time
time -= 1;
// Should this particle too old; destroy it
if(time < 0) chunk.killEntity(this);
}
@Override
public void render(Vec2d pos, Camera camera)
{
// Get the light level
double light = chunk.getLightLevel(new Vec2i(
MathHelpers.floor(pos.x), MathHelpers.floor(pos.y)));
// Set some settings
GlHelpers.pushMatrix();
GlHelpers.color3(r_color * light, 0, 0);
GlHelpers.translate3(0, 0, height);
// Call super
super.render(pos, camera);
GlHelpers.color3(1, 1, 1);
GlHelpers.popMatrix();
}
}