You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
1.5 KiB
91 lines
1.5 KiB
package mightypork.rogue.world.tile.tiles;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
import mightypork.rogue.world.item.Item;
|
|
import mightypork.rogue.world.level.Level;
|
|
import mightypork.rogue.world.level.render.TileRenderContext;
|
|
import mightypork.rogue.world.tile.DroppedItemRenderer;
|
|
import mightypork.rogue.world.tile.Tile;
|
|
import mightypork.rogue.world.tile.TileRenderer;
|
|
import mightypork.util.files.ion.IonInput;
|
|
import mightypork.util.files.ion.IonOutput;
|
|
|
|
|
|
public abstract class GroundTile extends Tile {
|
|
|
|
private DroppedItemRenderer itemRenderer = new DroppedItemRenderer();
|
|
|
|
|
|
public GroundTile(int id, TileRenderer renderer)
|
|
{
|
|
super(id, renderer);
|
|
}
|
|
|
|
|
|
@Override
|
|
public void renderExtra(TileRenderContext context)
|
|
{
|
|
if (!items.isEmpty()) {
|
|
itemRenderer.render(items.peek(), context);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
public void update(Level level, double delta)
|
|
{
|
|
itemRenderer.update(delta);
|
|
}
|
|
|
|
|
|
@Override
|
|
public void save(IonOutput out) throws IOException
|
|
{
|
|
super.save(out);
|
|
|
|
out.writeSequence(items);
|
|
}
|
|
|
|
|
|
@Override
|
|
public void load(IonInput in) throws IOException
|
|
{
|
|
super.load(in);
|
|
|
|
in.readSequence(items);
|
|
}
|
|
|
|
@Override
|
|
public boolean doesCastShadow()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean isWalkable()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean dropItem(Item item)
|
|
{
|
|
items.push(item);
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public Item pickItem()
|
|
{
|
|
return hasItem() ? items.pop() : null;
|
|
}
|
|
|
|
@Override
|
|
public boolean hasItem()
|
|
{
|
|
return !items.isEmpty();
|
|
}
|
|
|
|
}
|
|
|