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.
70 lines
1.5 KiB
70 lines
1.5 KiB
package mightypork.rogue.world.entity.entities;
|
|
|
|
|
|
import mightypork.rogue.world.Coord;
|
|
import mightypork.rogue.world.entity.Entity;
|
|
import mightypork.rogue.world.entity.EntityModel;
|
|
import mightypork.rogue.world.entity.EntityPathfindingContext;
|
|
import mightypork.rogue.world.entity.SimpleEntityPathFindingContext;
|
|
import mightypork.rogue.world.entity.renderers.EntityRenderer;
|
|
import mightypork.rogue.world.entity.renderers.SimpleLeftRightMobRenderer;
|
|
import mightypork.rogue.world.level.Level;
|
|
import mightypork.rogue.world.level.render.MapRenderContext;
|
|
import mightypork.rogue.world.pathfinding.PathFindingContext;
|
|
|
|
|
|
public class PlayerEntity extends Entity {
|
|
|
|
private final EntityPathfindingContext pathfc = new SimpleEntityPathFindingContext(this) {
|
|
|
|
@Override
|
|
public int getCost(Coord from, Coord to)
|
|
{
|
|
|
|
if (!getLevel().getTile(pos.getCoord()).isExplored()) { return 1000; }
|
|
|
|
return super.getCost(from, to);
|
|
|
|
};
|
|
};
|
|
|
|
private final EntityRenderer renderer = new SimpleLeftRightMobRenderer(this, "sprite.player");
|
|
|
|
|
|
public PlayerEntity(EntityModel model, int eid)
|
|
{
|
|
super(model, eid);
|
|
|
|
// init default values
|
|
pos.setStepTime(0.25);
|
|
}
|
|
|
|
|
|
@Override
|
|
public PathFindingContext getPathfindingContext()
|
|
{
|
|
return pathfc;
|
|
}
|
|
|
|
|
|
@Override
|
|
public void setLevel(Level level)
|
|
{
|
|
super.setLevel(level);
|
|
onStepFinished(this);
|
|
}
|
|
|
|
|
|
@Override
|
|
public void render(MapRenderContext context)
|
|
{
|
|
renderer.render(context);
|
|
}
|
|
|
|
|
|
@Override
|
|
public void onStepFinished(Entity entity)
|
|
{
|
|
getLevel().explore(pos.getCoord());
|
|
}
|
|
}
|
|
|