package rabbitescape.engine.behaviours;
import static rabbitescape.engine.ChangeDescription.State.*;
import rabbitescape.engine.Behaviour;
import rabbitescape.engine.BehaviourTools;
import rabbitescape.engine.ChangeDescription.State;
import rabbitescape.engine.Rabbit;
import rabbitescape.engine.World;
public class Burning extends Behaviour
{
@Override
public void cancel()
{
}
@Override
public boolean checkTriggered( Rabbit rabbit, World world )
{
return world.fireAt( rabbit.x, rabbit.y );
}
@Override
public State newState(
BehaviourTools t, boolean triggered
)
{
if ( triggered )
{
if ( t.rabbit.onSlope )
{
return RABBIT_BURNING_ON_SLOPE;
}
else
{
return RABBIT_BURNING;
}
}
return null;
}
@Override
public boolean behave( World world, Rabbit rabbit, State state )
{
switch ( state )
{
case RABBIT_BURNING:
case RABBIT_BURNING_ON_SLOPE:
{
world.changes.killRabbit( rabbit );
return true;
}
default:
{
return false;
}
}
}
}