package rabbitescape.engine;
import java.util.ArrayList;
import java.util.List;
/**
* This class contains the monolothic enum of rabbit and token states.
*/
public class ChangeDescription
{
public enum State
{
NOTHING,
FIRE_A,
FIRE_A_RISE_RIGHT,
FIRE_A_RISE_LEFT,
FIRE_A_FALLING,
FIRE_A_FALL_TO_RISE_LEFT,
FIRE_A_FALL_TO_RISE_RIGHT,
FIRE_B,
FIRE_B_RISE_RIGHT,
FIRE_B_RISE_LEFT,
FIRE_B_FALLING,
FIRE_B_FALL_TO_RISE_LEFT,
FIRE_B_FALL_TO_RISE_RIGHT,
FIRE_C,
FIRE_C_RISE_RIGHT,
FIRE_C_RISE_LEFT,
FIRE_C_FALLING,
FIRE_C_FALL_TO_RISE_LEFT,
FIRE_C_FALL_TO_RISE_RIGHT,
FIRE_D,
FIRE_D_RISE_RIGHT,
FIRE_D_RISE_LEFT,
FIRE_D_FALLING,
FIRE_D_FALL_TO_RISE_LEFT,
FIRE_D_FALL_TO_RISE_RIGHT,
FIRE_EXTINGUISHING,
PIPE,
RABBIT_BURNING,
RABBIT_BURNING_ON_SLOPE,
RABBIT_WALKING_LEFT,
RABBIT_TURNING_LEFT_TO_RIGHT,
RABBIT_TURNING_LEFT_TO_RIGHT_RISING,
RABBIT_TURNING_LEFT_TO_RIGHT_LOWERING,
RABBIT_WALKING_RIGHT,
RABBIT_TURNING_RIGHT_TO_LEFT,
RABBIT_TURNING_RIGHT_TO_LEFT_RISING,
RABBIT_TURNING_RIGHT_TO_LEFT_LOWERING,
RABBIT_BROLLYCHUTING,
RABBIT_FALLING,
RABBIT_FALLING_1,
/** The flat block is two squares below where this starts.*/
RABBIT_FALLING_1_TO_DEATH,
/** Part 2 of the animation for RABBIT_FALLING_1_TO_DEATH.*/
RABBIT_DYING_OF_FALLING_2,
/** The rabbit starts on the death square.*/
RABBIT_DYING_OF_FALLING,
/** The slope is one square below where this starts. */
RABBIT_DYING_OF_FALLING_SLOPE_RISE_LEFT,
/** Part 2 of the animation for RABBIT_DYING_OF_FALLING_SLOPE_RISE_LEFT */
RABBIT_DYING_OF_FALLING_SLOPE_RISE_LEFT_2,
/** The slope is two squares below where this starts. */
RABBIT_DYING_OF_FALLING_2_SLOPE_RISE_LEFT,
/** Part 2 of RABBIT_DYING_OF_FALLING_2_SLOPE_RISE_RIGHT. */
RABBIT_DYING_OF_FALLING_2_SLOPE_RISE_LEFT_2,
/** The slope is one square below where this starts. */
RABBIT_DYING_OF_FALLING_SLOPE_RISE_RIGHT,
/** Part 2 of the animation for RABBIT_DYING_OF_FALLING_SLOPE_RISE_RIGHT */
RABBIT_DYING_OF_FALLING_SLOPE_RISE_RIGHT_2,
/** The slope is two squares below where this starts. */
RABBIT_DYING_OF_FALLING_2_SLOPE_RISE_RIGHT,
/** Part 2 of RABBIT_DYING_OF_FALLING_2_SLOPE_RISE_RIGHT. */
RABBIT_DYING_OF_FALLING_2_SLOPE_RISE_RIGHT_2,
RABBIT_FALLING_ONTO_LOWER_RIGHT,
RABBIT_FALLING_ONTO_RISE_RIGHT,
RABBIT_FALLING_ONTO_LOWER_LEFT,
RABBIT_FALLING_ONTO_RISE_LEFT,
RABBIT_FALLING_1_ONTO_LOWER_RIGHT,
RABBIT_FALLING_1_ONTO_RISE_RIGHT,
RABBIT_FALLING_1_ONTO_LOWER_LEFT,
RABBIT_FALLING_1_ONTO_RISE_LEFT,
RABBIT_RISING_RIGHT_START,
RABBIT_RISING_RIGHT_CONTINUE,
RABBIT_RISING_RIGHT_END,
RABBIT_RISING_LEFT_START,
RABBIT_RISING_LEFT_CONTINUE,
RABBIT_RISING_LEFT_END,
RABBIT_LOWERING_RIGHT_START,
RABBIT_LOWERING_RIGHT_CONTINUE,
RABBIT_LOWERING_RIGHT_END,
RABBIT_LOWERING_LEFT_START,
RABBIT_LOWERING_LEFT_CONTINUE,
RABBIT_LOWERING_LEFT_END,
RABBIT_LOWERING_AND_RISING_RIGHT,
RABBIT_LOWERING_AND_RISING_LEFT,
RABBIT_RISING_AND_LOWERING_RIGHT,
RABBIT_RISING_AND_LOWERING_LEFT,
RABBIT_ENTERING_EXIT,
RABBIT_ENTERING_EXIT_CLIMBING_RIGHT,
RABBIT_ENTERING_EXIT_CLIMBING_LEFT,
RABBIT_BASHING_RIGHT,
RABBIT_BASHING_LEFT,
RABBIT_BASHING_UP_RIGHT,
RABBIT_BASHING_UP_LEFT,
RABBIT_BASHING_USELESSLY_RIGHT,
RABBIT_BASHING_USELESSLY_LEFT,
RABBIT_BASHING_USELESSLY_RIGHT_UP,
RABBIT_BASHING_USELESSLY_LEFT_UP,
RABBIT_DIGGING,
RABBIT_DIGGING_USELESSLY,
RABBIT_DIGGING_ON_SLOPE,
RABBIT_DIGGING_2,
RABBIT_BRIDGING_IN_CORNER_RIGHT_1,
RABBIT_BRIDGING_IN_CORNER_RIGHT_2,
RABBIT_BRIDGING_IN_CORNER_RIGHT_3,
RABBIT_BRIDGING_IN_CORNER_LEFT_1,
RABBIT_BRIDGING_IN_CORNER_LEFT_2,
RABBIT_BRIDGING_IN_CORNER_LEFT_3,
RABBIT_BRIDGING_IN_CORNER_UP_RIGHT_1,
RABBIT_BRIDGING_IN_CORNER_UP_RIGHT_2,
RABBIT_BRIDGING_IN_CORNER_UP_RIGHT_3,
RABBIT_BRIDGING_IN_CORNER_UP_LEFT_1,
RABBIT_BRIDGING_IN_CORNER_UP_LEFT_2,
RABBIT_BRIDGING_IN_CORNER_UP_LEFT_3,
RABBIT_BRIDGING_RIGHT_1,
RABBIT_BRIDGING_RIGHT_2,
RABBIT_BRIDGING_RIGHT_3,
RABBIT_BRIDGING_LEFT_1,
RABBIT_BRIDGING_LEFT_2,
RABBIT_BRIDGING_LEFT_3,
RABBIT_BRIDGING_UP_RIGHT_1,
RABBIT_BRIDGING_UP_RIGHT_2,
RABBIT_BRIDGING_UP_RIGHT_3,
RABBIT_BRIDGING_UP_LEFT_1,
RABBIT_BRIDGING_UP_LEFT_2,
RABBIT_BRIDGING_UP_LEFT_3,
RABBIT_BRIDGING_DOWN_UP_RIGHT_1,
RABBIT_BRIDGING_DOWN_UP_RIGHT_2,
RABBIT_BRIDGING_DOWN_UP_RIGHT_3,
RABBIT_BRIDGING_DOWN_UP_LEFT_1,
RABBIT_BRIDGING_DOWN_UP_LEFT_2,
RABBIT_BRIDGING_DOWN_UP_LEFT_3,
RABBIT_CLIMBING_LEFT_START,
RABBIT_CLIMBING_LEFT_CONTINUE_1,
RABBIT_CLIMBING_LEFT_CONTINUE_2,
RABBIT_CLIMBING_LEFT_END,
RABBIT_CLIMBING_LEFT_BANG_HEAD,
RABBIT_CLIMBING_RIGHT_START,
RABBIT_CLIMBING_RIGHT_CONTINUE_1,
RABBIT_CLIMBING_RIGHT_CONTINUE_2,
RABBIT_CLIMBING_RIGHT_END,
RABBIT_CLIMBING_RIGHT_BANG_HEAD,
RABBIT_DROWNING,
RABBIT_BLOCKING,
RABBIT_BLOCKING_RISE_RIGHT,
RABBIT_BLOCKING_RISE_LEFT,
RABBIT_OUT_OF_BOUNDS,
RABBIT_EXPLODING,
TOKEN_BASH_STILL,
TOKEN_BASH_FALLING,
TOKEN_BASH_FALL_TO_SLOPE,
TOKEN_BASH_ON_SLOPE,
TOKEN_DIG_STILL,
TOKEN_DIG_FALLING,
TOKEN_DIG_FALL_TO_SLOPE,
TOKEN_DIG_ON_SLOPE,
TOKEN_BRIDGE_STILL,
TOKEN_BRIDGE_FALLING,
TOKEN_BRIDGE_FALL_TO_SLOPE,
TOKEN_BRIDGE_ON_SLOPE,
TOKEN_BLOCK_STILL,
TOKEN_BLOCK_FALLING,
TOKEN_BLOCK_FALL_TO_SLOPE,
TOKEN_BLOCK_ON_SLOPE,
TOKEN_CLIMB_STILL,
TOKEN_CLIMB_FALLING,
TOKEN_CLIMB_FALL_TO_SLOPE,
TOKEN_CLIMB_ON_SLOPE,
TOKEN_EXPLODE_FALLING,
TOKEN_EXPLODE_STILL,
TOKEN_EXPLODE_FALL_TO_SLOPE,
TOKEN_EXPLODE_ON_SLOPE,
TOKEN_BROLLY_FALLING,
TOKEN_BROLLY_STILL,
TOKEN_BROLLY_FALL_TO_SLOPE,
TOKEN_BROLLY_ON_SLOPE,
WATER_REGION,
WATER_REGION_HALF,
WATER_REGION_EMPTY,
WATER_REGION_FALLING,
ENTRANCE,
EXIT,
}
public static class Change
{
public final int x;
public final int y;
public final State state;
public Change( int x, int y, State state )
{
this.x = x;
this.y = y;
this.state = state;
}
}
public final List<Change> changes = new ArrayList<>();
public void add( int x, int y, State state )
{
changes.add( new Change( x, y, state ) );
}
}