75 lines
1.7 KiB
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();
|
|
}
|
|
}
|