Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public boolean canWalkOnTile(RSTile tile) {
- ArrayList<Flag> flags = getFlagsAtTile(tile);
- return !flags.contains(Flag.MAP_BLOCK) && !flags.contains(Flag.OBJECT_BLOCK)
- && !flags.contains(Flag.DECORATION_BLOCK);
- }
- private ArrayList<Flag> getFlagsAtTile(RSTile tile) {
- try {
- ArrayList<Flag> flagsArrayList = new ArrayList<Flag>();
- RSTile offset = walking.getCollisionOffset(game.getPlane());
- int[][] flags = walking.getCollisionFlags(game.getPlane());
- int tileFlag = flags[tile.getX() - (game.getBaseX() + offset.getX())][tile.getY() - (game.getBaseY() + offset.getY())];
- for(Flag flag : Flag.values()) {
- if((flag.getFlag() & tileFlag) != 0) {
- flagsArrayList.add(flag);
- }
- }
- return flagsArrayList;
- } catch(ArrayIndexOutOfBoundsException e) {
- sleep(2000);
- return getFlagsAtTile(tile);
- }
- }
- @SuppressWarnings({"UnusedDeclaration"})
- private enum Flag {
- WALL_NORTHWEST(0x1),
- WALL_NORTH(0x2),
- WALL_NORTHEAST(0x4),
- WALL_EAST(0x8),
- WALL_SOUTHEAST(0x10),
- WALL_SOUTH(0x20),
- WALL_SOUTHWEST(0x40),
- WALL_WEST(0x80),
- OBJECT_TILE(0x100),
- WALL_BLOCK_NORTHWEST(0x200),
- WALL_BLOCK_NORTH(0x400),
- WALL_BLOCK_NORTHEAST(0x800),
- WALL_BLOCK_EAST(0x1000),
- WALL_BLOCK_SOUTHEAST(0x2000),
- WALL_BLOCK_SOUTH(0x4000),
- WALL_BLOCK_SOUTHWEST(0x8000),
- WALL_BLOCK_WEST(0x10000),
- OBJECT_BLOCK(0x20000),
- DECORATION_BLOCK(0x40000),
- MAP_BLOCK(0x200000),
- WALL_ALLOW_RANGE_NORTHWEST(0x400000),
- WALL_ALLOW_RANGE_NORTH(0x800000),
- WALL_ALLOW_RANGE_NORTHEAST(0x1000000),
- WALL_ALLOW_RANGE_EAST(0x2000000),
- WALL_ALLOW_RANGE_SOUTHEAST(0x4000000),
- WALL_ALLOW_RANGE_SOUTH(0x8000000),
- WALL_ALLOW_RANGE_SOUTHWEST(0x10000000),
- WALL_ALLOW_RANGE_WEST(0x20000000),
- OBJECT_ALLOW_RANGE(0x40000000),
- LIMITER(0x1280100),
- NULL(0);
- private int flag;
- Flag(int flag){
- this.flag = flag;
- }
- public int getFlag() {
- return this.flag;
- }
- public String toString() {
- return this.name();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement