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(); } }