Advertisement
Zalgo2462

Untitled

Sep 22nd, 2011
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. public boolean canWalkOnTile(RSTile tile) {
  2. ArrayList<Flag> flags = getFlagsAtTile(tile);
  3. return !flags.contains(Flag.MAP_BLOCK) && !flags.contains(Flag.OBJECT_BLOCK)
  4. && !flags.contains(Flag.DECORATION_BLOCK);
  5. }
  6.  
  7. private ArrayList<Flag> getFlagsAtTile(RSTile tile) {
  8. try {
  9. ArrayList<Flag> flagsArrayList = new ArrayList<Flag>();
  10. RSTile offset = walking.getCollisionOffset(game.getPlane());
  11. int[][] flags = walking.getCollisionFlags(game.getPlane());
  12. int tileFlag = flags[tile.getX() - (game.getBaseX() + offset.getX())][tile.getY() - (game.getBaseY() + offset.getY())];
  13. for(Flag flag : Flag.values()) {
  14. if((flag.getFlag() & tileFlag) != 0) {
  15. flagsArrayList.add(flag);
  16. }
  17. }
  18. return flagsArrayList;
  19. } catch(ArrayIndexOutOfBoundsException e) {
  20. sleep(2000);
  21. return getFlagsAtTile(tile);
  22. }
  23. }
  24.  
  25. @SuppressWarnings({"UnusedDeclaration"})
  26. private enum Flag {
  27. WALL_NORTHWEST(0x1),
  28. WALL_NORTH(0x2),
  29. WALL_NORTHEAST(0x4),
  30. WALL_EAST(0x8),
  31. WALL_SOUTHEAST(0x10),
  32. WALL_SOUTH(0x20),
  33. WALL_SOUTHWEST(0x40),
  34. WALL_WEST(0x80),
  35.  
  36. OBJECT_TILE(0x100),
  37.  
  38.  
  39. WALL_BLOCK_NORTHWEST(0x200),
  40. WALL_BLOCK_NORTH(0x400),
  41. WALL_BLOCK_NORTHEAST(0x800),
  42. WALL_BLOCK_EAST(0x1000),
  43. WALL_BLOCK_SOUTHEAST(0x2000),
  44. WALL_BLOCK_SOUTH(0x4000),
  45. WALL_BLOCK_SOUTHWEST(0x8000),
  46. WALL_BLOCK_WEST(0x10000),
  47.  
  48. OBJECT_BLOCK(0x20000),
  49. DECORATION_BLOCK(0x40000),
  50.  
  51. MAP_BLOCK(0x200000),
  52.  
  53. WALL_ALLOW_RANGE_NORTHWEST(0x400000),
  54. WALL_ALLOW_RANGE_NORTH(0x800000),
  55. WALL_ALLOW_RANGE_NORTHEAST(0x1000000),
  56. WALL_ALLOW_RANGE_EAST(0x2000000),
  57. WALL_ALLOW_RANGE_SOUTHEAST(0x4000000),
  58. WALL_ALLOW_RANGE_SOUTH(0x8000000),
  59. WALL_ALLOW_RANGE_SOUTHWEST(0x10000000),
  60. WALL_ALLOW_RANGE_WEST(0x20000000),
  61. OBJECT_ALLOW_RANGE(0x40000000),
  62.  
  63. LIMITER(0x1280100),
  64.  
  65. NULL(0);
  66. private int flag;
  67.  
  68. Flag(int flag){
  69. this.flag = flag;
  70. }
  71.  
  72. public int getFlag() {
  73. return this.flag;
  74. }
  75.  
  76. public String toString() {
  77. return this.name();
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement