Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public int[][] getClip() {
- int type = this.getType();
- int clip = 0;
- int[][] clips = new int[3][3];
- if (type == 22) {
- if (this.getActionCount() == 1) {
- clip |= ClipMasks.BLOCKED_TILE;
- }
- } else if (type >= 9 && type <= 11) {
- if (this.isSolid() || this.getActionCount() != 0) {
- clip |= this.getClipForSolidObject();
- }
- } else if (type >= 0 && type <= 3) {
- if (this.getActionCount() != 0) {
- clips = this.getClipForVariableObject();
- }
- }
- clips[1][1] |= clip;
- return clips;
- }
- private int getClipForSolidObject() {
- int clipping = 0xFF;
- if (this.isSolid()) {
- clipping |= ClipMasks.OBJECT_BLOCK;
- }
- if (this.hasRangeBlockClipFlag() == false) {
- clipping |= ClipMasks.OBJECT_ALLOW_RANGE;
- }
- return clipping;
- }
- private int[][] getClipForVariableObject() {
- int type = this.getType();
- Direction direction = this.getFacing();
- int[][] clips = new int[3][3];
- boolean isSolid = this.isSolid();
- boolean hasAllowRangeFlag = !this.hasRangeBlockClipFlag();
- if (type == 0) {
- if (direction == Directions.NORTH) {
- clips[1][1] |= ClipMasks.WALL_WEST;
- clips[0][1] |= ClipMasks.WALL_EAST;
- }
- if (direction == Directions.EAST) {
- clips[1][1] |= ClipMasks.WALL_NORTH;
- clips[1][2] |= ClipMasks.WALL_SOUTH;
- }
- if (direction == Directions.SOUTH) {
- clips[1][1] |= ClipMasks.WALL_EAST;
- clips[2][1] |= ClipMasks.WALL_WEST;
- }
- if (direction == Directions.WEST) {
- clips[1][1] |= ClipMasks.WALL_SOUTH;
- clips[1][0] |= ClipMasks.WALL_NORTH;
- }
- }
- if (type == 1 || type == 3) {
- if (direction == Directions.NORTH) {
- clips[1][1] |= ClipMasks.WALL_NORTH_WEST;
- clips[0][2] |= ClipMasks.WALL_SOUTH_EAST;
- }
- if (direction == Directions.EAST) {
- clips[1][1] |= ClipMasks.WALL_NORTH_EAST;
- clips[2][2] |= ClipMasks.WALL_SOUTH_WEST;
- }
- if (direction == Directions.SOUTH) {
- clips[1][1] |= ClipMasks.WALL_SOUTH_EAST;
- clips[2][0] |= ClipMasks.WALL_NORTH_WEST;
- }
- if (direction == Directions.WEST) {
- clips[1][1] |= ClipMasks.WALL_SOUTH_WEST;
- clips[0][0] |= ClipMasks.WALL_NORTH_EAST;
- }
- }
- if (type == 2) {
- if (direction == Directions.NORTH) {
- clips[1][1] |= ClipMasks.WALL_WEST | ClipMasks.WALL_NORTH;
- clips[0][1] |= ClipMasks.WALL_EAST;
- clips[1][2] |= ClipMasks.WALL_SOUTH;
- }
- if (direction == Directions.EAST) {
- clips[1][1] |= ClipMasks.WALL_NORTH | ClipMasks.WALL_EAST;
- clips[1][2] |= ClipMasks.WALL_SOUTH;
- clips[2][1] |= ClipMasks.WALL_WEST;
- }
- if (direction == Directions.SOUTH) {
- clips[1][1] |= ClipMasks.WALL_EAST | ClipMasks.WALL_SOUTH;
- clips[2][1] |= ClipMasks.WALL_WEST;
- clips[1][0] |= ClipMasks.WALL_NORTH;
- }
- if (direction == Directions.WEST) {
- clips[1][1] |= ClipMasks.WALL_SOUTH | ClipMasks.WALL_WEST;
- clips[1][0] |= ClipMasks.WALL_NORTH;
- clips[0][1] |= ClipMasks.WALL_EAST;
- }
- }
- if (isSolid) {
- if (type == 0) {
- if (direction == Directions.NORTH) {
- clips[1][1] |= ClipMasks.BLOCKED_WEST;
- clips[0][1] |= ClipMasks.BLOCKED_EAST;
- }
- if (direction == Directions.EAST) {
- clips[1][1] |= ClipMasks.BLOCKED_NORTH;
- clips[1][2] |= ClipMasks.BLOCKED_SOUTH;
- }
- if (direction == Directions.SOUTH) {
- clips[1][1] |= ClipMasks.BLOCKED_EAST;
- clips[2][1] |= ClipMasks.BLOCKED_WEST;
- }
- if (direction == Directions.WEST) {
- clips[1][1] |= ClipMasks.BLOCKED_SOUTH;
- clips[1][0] |= ClipMasks.BLOCKED_NORTH;
- }
- }
- if (type == 1 || type == 3) {
- if (direction == Directions.NORTH) {
- clips[1][1] |= ClipMasks.BLOCKED_NORTH_WEST;
- clips[0][2] |= ClipMasks.BLOCKED_EAST;
- }
- if (direction == Directions.EAST) {
- clips[1][1] |= ClipMasks.BLOCKED_NORTH_EAST;
- clips[2][2] |= ClipMasks.BLOCKED_SOUTH_WEST;
- }
- if (direction == Directions.SOUTH) {
- clips[1][1] |= ClipMasks.BLOCKED_EAST;
- clips[2][0] |= ClipMasks.BLOCKED_NORTH_WEST;
- }
- if (direction == Directions.WEST) {
- clips[1][1] |= ClipMasks.BLOCKED_SOUTH_WEST;
- clips[0][0] |= ClipMasks.BLOCKED_NORTH_EAST;
- }
- }
- if (type == 2) {
- if (direction == Directions.NORTH) {
- clips[1][1] |= ClipMasks.BLOCKED_WEST | ClipMasks.BLOCKED_NORTH;
- clips[0][1] |= ClipMasks.BLOCKED_EAST;
- clips[1][2] |= ClipMasks.BLOCKED_SOUTH;
- }
- if (direction == Directions.EAST) {
- clips[1][1] |= ClipMasks.BLOCKED_NORTH | ClipMasks.BLOCKED_EAST;
- clips[1][2] |= ClipMasks.BLOCKED_SOUTH;
- clips[2][1] |= ClipMasks.BLOCKED_WEST;
- }
- if (direction == Directions.SOUTH) {
- clips[1][1] |= ClipMasks.BLOCKED_EAST | ClipMasks.BLOCKED_SOUTH;
- clips[2][1] |= ClipMasks.BLOCKED_WEST;
- clips[1][0] |= ClipMasks.BLOCKED_NORTH;
- }
- if (direction == Directions.WEST) {
- clips[1][1] |= ClipMasks.BLOCKED_SOUTH | ClipMasks.BLOCKED_WEST;
- clips[1][0] |= ClipMasks.BLOCKED_NORTH;
- clips[0][1] |= ClipMasks.BLOCKED_EAST;
- }
- }
- }
- if (hasAllowRangeFlag) {
- if (type == 0) {
- if (direction == Directions.NORTH) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST;
- clips[0][1] |= ClipMasks.WALL_ALLOW_RANGE_EAST;
- }
- if (direction == Directions.EAST) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_NORTH;
- clips[1][2] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH;
- }
- if (direction == Directions.SOUTH) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_EAST;
- clips[2][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST;
- }
- if (direction == Directions.WEST) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH;
- clips[1][0] |= ClipMasks.WALL_ALLOW_RANGE_NORTH;
- }
- }
- if (type == 1 || type == 3) {
- if (direction == Directions.NORTH) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_NORTH_WEST;
- clips[0][2] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH_EAST;
- }
- if (direction == Directions.EAST) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_NORTH_EAST;
- clips[2][2] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH_WEST;
- }
- if (direction == Directions.SOUTH) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH_EAST;
- clips[2][0] |= ClipMasks.WALL_ALLOW_RANGE_NORTH_WEST;
- }
- if (direction == Directions.WEST) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH_WEST;
- clips[0][0] |= ClipMasks.WALL_ALLOW_RANGE_NORTH_EAST;
- }
- }
- if (type == 2) {
- if (direction == Directions.NORTH) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST | ClipMasks.WALL_ALLOW_RANGE_NORTH;
- clips[0][1] |= ClipMasks.WALL_ALLOW_RANGE_EAST;
- clips[1][2] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH;
- }
- if (direction == Directions.EAST) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_NORTH | ClipMasks.WALL_ALLOW_RANGE_EAST;
- clips[1][2] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH;
- clips[2][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST;
- }
- if (direction == Directions.SOUTH) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_EAST | ClipMasks.WALL_ALLOW_RANGE_SOUTH;
- clips[2][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST;
- clips[1][0] |= ClipMasks.WALL_ALLOW_RANGE_NORTH;
- }
- if (direction == Directions.WEST) {
- clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH | ClipMasks.WALL_ALLOW_RANGE_WEST;
- clips[1][0] |= ClipMasks.WALL_ALLOW_RANGE_NORTH;
- clips[0][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST;
- }
- }
- }
- return clips;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement