package rabbitescape.engine; import static rabbitescape.engine.Direction.*; import rabbitescape.engine.util.LookupItem2D; import rabbitescape.engine.util.Position; public class Block implements LookupItem2D { public enum Material { EARTH, METAL } public enum Shape { FLAT, UP_RIGHT, UP_LEFT, BRIDGE_UP_RIGHT, BRIDGE_UP_LEFT } public final int x; public final int y; public final Material material; public final Shape shape; public final int variant; public Block( int x, int y, Material material, Shape shape, int variant ) { this.x = x; this.y = y; this.material = material; this.shape = shape; this.variant = variant; } public Direction riseDir() { switch ( shape ) { case FLAT: return DOWN; case UP_RIGHT: case BRIDGE_UP_RIGHT: return RIGHT; case UP_LEFT: case BRIDGE_UP_LEFT: return LEFT; default: throw new RuntimeException( "Unknown block shape " + shape ); } } @Override public Position getPosition() { return new Position( x, y ); } }