ProjectZombie/src/catalystsurvival/entity/EntityItem.java

75 lines
1.7 KiB
Java

package catalystsurvival.entity;
import catalystsurvival.display.Camera;
import catalystsurvival.util.gl.GlHelpers;
import catalystsurvival.util.gl.texture.TextureReference;
import catalystsurvival.util.math.ItemStack;
import catalystsurvival.util.math.random.RandomHelpers;
import catalystsurvival.util.math.vec.Vec2d;
import catalystsurvival.world.chunk.Chunk;
import catalystsurvival.world.layer.Layer;
public class EntityItem extends EntityVertical
{
private ItemStack stack;
private double height = 0;
private double height_speed;
private int pickup_time = 100;
public EntityItem(Vec2d pos, ItemStack stack) {
super(pos, stack.item.texture, new Vec2d(0.5, 0.5));
this.opaqueTile = true;
this.stack = stack;
this.angle = RandomHelpers.randrange(rand, 360);
height_speed = RandomHelpers.randrange(rand, 10000) / 200000.0;
}
@Override
public void tick(Chunk chunk, Layer layer) {
super.tick(chunk, layer);
height += height_speed;
height_speed -= 0.001;
pickup_time -= 1;
if(pickup_time < 0) {
pickup_time = 0;
}
if(height <= 0) {
height_speed = 0;
}
else {
moveForward(0.01);
}
if(pickup_time == 0)
{
for(Entity e : layer.getNearbyEntities(pos, 1))
{
if(e instanceof EntityInventory)
{
// Pick the stack up if its an inventory
stack.item.onPickedUp(stack, layer, chunk, e);
}
}
}
// Kill this entity if the stack is empty
if(stack.isEmpty()) {
kill();
return;
}
}
@Override
public void render(Vec2d pos, Camera camera, TextureReference tex, Vec2d size) {
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, height);
super.render(pos, camera, tex, size);
GlHelpers.popMatrix();
}
}