package jsettlers.logic.movable.interfaces;
import java.io.Serializable;
import jsettlers.algorithms.fogofwar.IViewDistancable;
import jsettlers.algorithms.path.IPathCalculatable;
import jsettlers.algorithms.path.Path;
import jsettlers.common.movable.EMovableType;
import jsettlers.common.position.ShortPoint2D;
import jsettlers.input.IGuiMovable;
import jsettlers.logic.buildings.military.IBuildingOccupyableMovable;
import jsettlers.logic.buildings.military.IOccupyableBuilding;
import jsettlers.logic.player.Player;
import jsettlers.logic.timer.IScheduledTimerable;
public interface ILogicMovable extends
IScheduledTimerable,
IPathCalculatable,
IDebugable,
Serializable,
IViewDistancable,
IGuiMovable,
IAttackableMovable {
boolean push(ILogicMovable pushingMovable);
Path getPath();
void goSinglePathStep();
ShortPoint2D getPosition();
ILogicMovable getPushedFrom();
boolean isProbablyPushable(ILogicMovable pushingMovable);
void leavePosition();
boolean canOccupyBuilding();
void checkPlayerOfPosition(Player playerOfPosition);
void convertTo(EMovableType newMovableType);
Player getPlayer();
IBuildingOccupyableMovable setOccupyableBuilding(IOccupyableBuilding building);
void moveTo(ShortPoint2D targetPosition);
}