Advertisement
Guest User

Untitled

a guest
May 26th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.37 KB | None | 0 0
  1. public int[][] getClip() {
  2.         int type = this.getType();
  3.  
  4.         int clip = 0;
  5.         int[][] clips = new int[3][3];
  6.  
  7.         if (type == 22) {
  8.             if (this.getActionCount() == 1) {
  9.                 clip |= ClipMasks.BLOCKED_TILE;
  10.             }
  11.         } else if (type >= 9 && type <= 11) {
  12.             if (this.isSolid() || this.getActionCount() != 0) {
  13.                 clip |= this.getClipForSolidObject();
  14.             }
  15.         } else if (type >= 0 && type <= 3) {
  16.             if (this.getActionCount() != 0) {
  17.                 clips = this.getClipForVariableObject();
  18.             }
  19.         }
  20.  
  21.         clips[1][1] |= clip;
  22.  
  23.         return clips;
  24.     }
  25.  
  26.     private int getClipForSolidObject() {
  27.         int clipping = 0xFF;
  28.         if (this.isSolid()) {
  29.             clipping |= ClipMasks.OBJECT_BLOCK;
  30.         }
  31.         if (this.hasRangeBlockClipFlag() == false) {
  32.             clipping |= ClipMasks.OBJECT_ALLOW_RANGE;
  33.         }
  34.         return clipping;
  35.     }
  36.  
  37.     private int[][] getClipForVariableObject() {
  38.         int type = this.getType();
  39.         Direction direction = this.getFacing();
  40.         int[][] clips = new int[3][3];
  41.         boolean isSolid = this.isSolid();
  42.         boolean hasAllowRangeFlag = !this.hasRangeBlockClipFlag();
  43.  
  44.         if (type == 0) {
  45.             if (direction == Directions.NORTH) {
  46.                 clips[1][1] |= ClipMasks.WALL_WEST;
  47.                 clips[0][1] |= ClipMasks.WALL_EAST;
  48.             }
  49.             if (direction == Directions.EAST) {
  50.                 clips[1][1] |= ClipMasks.WALL_NORTH;
  51.                 clips[1][2] |= ClipMasks.WALL_SOUTH;
  52.             }
  53.             if (direction == Directions.SOUTH) {
  54.                 clips[1][1] |= ClipMasks.WALL_EAST;
  55.                 clips[2][1] |= ClipMasks.WALL_WEST;
  56.             }
  57.             if (direction == Directions.WEST) {
  58.                 clips[1][1] |= ClipMasks.WALL_SOUTH;
  59.                 clips[1][0] |= ClipMasks.WALL_NORTH;
  60.             }
  61.         }
  62.         if (type == 1 || type == 3) {
  63.             if (direction == Directions.NORTH) {
  64.                 clips[1][1] |= ClipMasks.WALL_NORTH_WEST;
  65.                 clips[0][2] |= ClipMasks.WALL_SOUTH_EAST;
  66.             }
  67.             if (direction == Directions.EAST) {
  68.                 clips[1][1] |= ClipMasks.WALL_NORTH_EAST;
  69.                 clips[2][2] |= ClipMasks.WALL_SOUTH_WEST;
  70.             }
  71.             if (direction == Directions.SOUTH) {
  72.                 clips[1][1] |= ClipMasks.WALL_SOUTH_EAST;
  73.                 clips[2][0] |= ClipMasks.WALL_NORTH_WEST;
  74.             }
  75.             if (direction == Directions.WEST) {
  76.                 clips[1][1] |= ClipMasks.WALL_SOUTH_WEST;
  77.                 clips[0][0] |= ClipMasks.WALL_NORTH_EAST;
  78.             }
  79.         }
  80.         if (type == 2) {
  81.             if (direction == Directions.NORTH) {
  82.                 clips[1][1] |= ClipMasks.WALL_WEST | ClipMasks.WALL_NORTH;
  83.                 clips[0][1] |= ClipMasks.WALL_EAST;
  84.                 clips[1][2] |= ClipMasks.WALL_SOUTH;
  85.             }
  86.             if (direction == Directions.EAST) {
  87.                 clips[1][1] |= ClipMasks.WALL_NORTH | ClipMasks.WALL_EAST;
  88.                 clips[1][2] |= ClipMasks.WALL_SOUTH;
  89.                 clips[2][1] |= ClipMasks.WALL_WEST;
  90.             }
  91.             if (direction == Directions.SOUTH) {
  92.                 clips[1][1] |= ClipMasks.WALL_EAST | ClipMasks.WALL_SOUTH;
  93.                 clips[2][1] |= ClipMasks.WALL_WEST;
  94.                 clips[1][0] |= ClipMasks.WALL_NORTH;
  95.             }
  96.             if (direction == Directions.WEST) {
  97.                 clips[1][1] |= ClipMasks.WALL_SOUTH | ClipMasks.WALL_WEST;
  98.                 clips[1][0] |= ClipMasks.WALL_NORTH;
  99.                 clips[0][1] |= ClipMasks.WALL_EAST;
  100.             }
  101.         }
  102.         if (isSolid) {
  103.             if (type == 0) {
  104.                 if (direction == Directions.NORTH) {
  105.                     clips[1][1] |= ClipMasks.BLOCKED_WEST;
  106.                     clips[0][1] |= ClipMasks.BLOCKED_EAST;
  107.                 }
  108.                 if (direction == Directions.EAST) {
  109.                     clips[1][1] |= ClipMasks.BLOCKED_NORTH;
  110.                     clips[1][2] |= ClipMasks.BLOCKED_SOUTH;
  111.                 }
  112.                 if (direction == Directions.SOUTH) {
  113.                     clips[1][1] |= ClipMasks.BLOCKED_EAST;
  114.                     clips[2][1] |= ClipMasks.BLOCKED_WEST;
  115.                 }
  116.                 if (direction == Directions.WEST) {
  117.                     clips[1][1] |= ClipMasks.BLOCKED_SOUTH;
  118.                     clips[1][0] |= ClipMasks.BLOCKED_NORTH;
  119.                 }
  120.             }
  121.             if (type == 1 || type == 3) {
  122.                 if (direction == Directions.NORTH) {
  123.                     clips[1][1] |= ClipMasks.BLOCKED_NORTH_WEST;
  124.                     clips[0][2] |= ClipMasks.BLOCKED_EAST;
  125.                 }
  126.                 if (direction == Directions.EAST) {
  127.                     clips[1][1] |= ClipMasks.BLOCKED_NORTH_EAST;
  128.                     clips[2][2] |= ClipMasks.BLOCKED_SOUTH_WEST;
  129.                 }
  130.                 if (direction == Directions.SOUTH) {
  131.                     clips[1][1] |= ClipMasks.BLOCKED_EAST;
  132.                     clips[2][0] |= ClipMasks.BLOCKED_NORTH_WEST;
  133.                 }
  134.                 if (direction == Directions.WEST) {
  135.                     clips[1][1] |= ClipMasks.BLOCKED_SOUTH_WEST;
  136.                     clips[0][0] |= ClipMasks.BLOCKED_NORTH_EAST;
  137.                 }
  138.             }
  139.             if (type == 2) {
  140.                 if (direction == Directions.NORTH) {
  141.                     clips[1][1] |= ClipMasks.BLOCKED_WEST | ClipMasks.BLOCKED_NORTH;
  142.                     clips[0][1] |= ClipMasks.BLOCKED_EAST;
  143.                     clips[1][2] |= ClipMasks.BLOCKED_SOUTH;
  144.                 }
  145.                 if (direction == Directions.EAST) {
  146.                     clips[1][1] |= ClipMasks.BLOCKED_NORTH | ClipMasks.BLOCKED_EAST;
  147.                     clips[1][2] |= ClipMasks.BLOCKED_SOUTH;
  148.                     clips[2][1] |= ClipMasks.BLOCKED_WEST;
  149.                 }
  150.                 if (direction == Directions.SOUTH) {
  151.                     clips[1][1] |= ClipMasks.BLOCKED_EAST | ClipMasks.BLOCKED_SOUTH;
  152.                     clips[2][1] |= ClipMasks.BLOCKED_WEST;
  153.                     clips[1][0] |= ClipMasks.BLOCKED_NORTH;
  154.                 }
  155.                 if (direction == Directions.WEST) {
  156.                     clips[1][1] |= ClipMasks.BLOCKED_SOUTH | ClipMasks.BLOCKED_WEST;
  157.                     clips[1][0] |= ClipMasks.BLOCKED_NORTH;
  158.                     clips[0][1] |= ClipMasks.BLOCKED_EAST;
  159.                 }
  160.             }
  161.         }
  162.         if (hasAllowRangeFlag) {
  163.             if (type == 0) {
  164.                 if (direction == Directions.NORTH) {
  165.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST;
  166.                     clips[0][1] |= ClipMasks.WALL_ALLOW_RANGE_EAST;
  167.                 }
  168.                 if (direction == Directions.EAST) {
  169.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_NORTH;
  170.                     clips[1][2] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH;
  171.                 }
  172.                 if (direction == Directions.SOUTH) {
  173.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_EAST;
  174.                     clips[2][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST;
  175.                 }
  176.                 if (direction == Directions.WEST) {
  177.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH;
  178.                     clips[1][0] |= ClipMasks.WALL_ALLOW_RANGE_NORTH;
  179.                 }
  180.             }
  181.             if (type == 1 || type == 3) {
  182.                 if (direction == Directions.NORTH) {
  183.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_NORTH_WEST;
  184.                     clips[0][2] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH_EAST;
  185.                 }
  186.                 if (direction == Directions.EAST) {
  187.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_NORTH_EAST;
  188.                     clips[2][2] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH_WEST;
  189.                 }
  190.                 if (direction == Directions.SOUTH) {
  191.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH_EAST;
  192.                     clips[2][0] |= ClipMasks.WALL_ALLOW_RANGE_NORTH_WEST;
  193.                 }
  194.                 if (direction == Directions.WEST) {
  195.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH_WEST;
  196.                     clips[0][0] |= ClipMasks.WALL_ALLOW_RANGE_NORTH_EAST;
  197.                 }
  198.             }
  199.             if (type == 2) {
  200.                 if (direction == Directions.NORTH) {
  201.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST | ClipMasks.WALL_ALLOW_RANGE_NORTH;
  202.                     clips[0][1] |= ClipMasks.WALL_ALLOW_RANGE_EAST;
  203.                     clips[1][2] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH;
  204.                 }
  205.                 if (direction == Directions.EAST) {
  206.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_NORTH | ClipMasks.WALL_ALLOW_RANGE_EAST;
  207.                     clips[1][2] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH;
  208.                     clips[2][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST;
  209.                 }
  210.                 if (direction == Directions.SOUTH) {
  211.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_EAST | ClipMasks.WALL_ALLOW_RANGE_SOUTH;
  212.                     clips[2][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST;
  213.                     clips[1][0] |= ClipMasks.WALL_ALLOW_RANGE_NORTH;
  214.                 }
  215.                 if (direction == Directions.WEST) {
  216.                     clips[1][1] |= ClipMasks.WALL_ALLOW_RANGE_SOUTH | ClipMasks.WALL_ALLOW_RANGE_WEST;
  217.                     clips[1][0] |= ClipMasks.WALL_ALLOW_RANGE_NORTH;
  218.                     clips[0][1] |= ClipMasks.WALL_ALLOW_RANGE_WEST;
  219.                 }
  220.             }
  221.         }
  222.         return clips;
  223.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement