Advertisement
thedupetroop

atDoorWalkTo

Dec 27th, 2011
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.88 KB | None | 0 0
  1.  
  2.    
  3.     public void atDoorWalkTo(int doorX, int doorY, int atDoorX, int atDoorY, int walkX, int walkY, int random, boolean useDoor) {
  4.         if(reachable(walkX, walkY)) {
  5.             myWalkTo(walkX + ((random(0,1) == 1 ? -1 : 1) * random(0, random)), walkY + ((random(0,1) == 1 ? -1 : 1) * random(0, random)));
  6.             waitWhileMoving(walkX, walkY, 1, random(800, 1250));
  7.         } else if(reachable(atDoorX, atDoorY)) {
  8.             if(distanceTo(getX(), getY(), atDoorX, atDoorY) < 5){
  9.                 if(useDoor) {
  10.                     useDoor(doorX, doorY);
  11.                 }
  12.                 else {
  13.                     useObject(doorX, doorY);
  14.                 }
  15.             }
  16.             else myWalkTo(atDoorX, atDoorY);
  17.             waitWhileMoving(atDoorX, atDoorY, 0, 1500);
  18.             wait(random(1000, 2000));
  19.         } else {
  20.             stop("Somethings wrong... cannot reach the door.");
  21.         }
  22.     }
  23.    
  24.     public boolean waitWhileMoving(int destinationX, int destinationY, int killDistance, int killTime) {
  25.         long start = System.currentTimeMillis();
  26.         int curX = getX();
  27.         int curY = getY();
  28.         while(System.currentTimeMillis() - start < killTime) {
  29.  
  30.             if(distanceTo(getX(), getY(), destinationX, destinationY) <= killDistance) {
  31.                 return true;
  32.             } else {
  33.                 if(getX() != curX || getY() != curY) {
  34.                     start = System.currentTimeMillis();
  35.                     curX = getX();
  36.                     curY = getY();
  37.                 }
  38.             }
  39.             wait(random(100, 250));
  40.         }
  41.         return false;
  42.     }
  43.    
  44.         public void myWalkTo(int x, int y) {   
  45.         if(areaAroundReachable(x, y)) {
  46.             if(distanceTo(getX(), getY(), x, y) < 4)
  47.                 walkTo(x, y);
  48.             else {
  49.                 int tempX = x + ((random(0,1) == 1 ? -1 : 1) * random(0, (distanceTo(getX(), getY(), x, y) > 4 ? 2 : 1)));
  50.                 int tempY = y + ((random(0,1) == 1 ? -1 : 1) * random(0, (distanceTo(getX(), getY(), x, y) > 4 ? 2 : 1)));
  51.                 if(reachable(tempX, tempY)) {
  52.                     walkTo(tempX, tempY);
  53.                 } else {
  54.                     int[] reachableCoords = getAreaAroundReachable(x, y);
  55.                     if(reachableCoords[0] != -1)
  56.                         walkTo(reachableCoords[0], reachableCoords[1]);
  57.                     else stop("I am so stinking lost...");
  58.                 }
  59.             }
  60.         } else {
  61.             stop("unreachable walking point (" + x + "," + y + ")");
  62.         }
  63.     }  
  64.  
  65.     public boolean areaAroundReachable(int x, int y) { 
  66.         if(reachable(x, y))
  67.             return true;
  68.         else if(reachable(x + 1, y)) {
  69.             return true;
  70.         }
  71.         else if(reachable(x - 1, y)) {
  72.             return true;
  73.         }
  74.         else if(reachable(x, y + 1)) {
  75.             return true;
  76.         }
  77.         else if(reachable(x, y - 1)) {
  78.             return true;
  79.         }
  80.         else if(reachable(x + 1, y + 1)) {
  81.             return true;
  82.         }
  83.         else if(reachable(x - 1, y - 1)) {
  84.             return true;
  85.         }
  86.         else if(reachable(x + 1, y - 1)) {
  87.             return true;
  88.         }
  89.         else if(reachable(x - 1, y + 1)) {
  90.             return true;
  91.         }
  92.         else return false;
  93.     }
  94.  
  95.     public int[] getAreaAroundReachable(int x, int y) {
  96.         int[] temp = new int[2];
  97.         temp[0] = -1;
  98.         temp[1] = -1;
  99.         int c = 0;
  100.         int random = random(0, 8);
  101.         while(c < 8) {
  102.             switch (random) {
  103.                 case 0:
  104.                     if(reachable(x, y)) {
  105.                         temp[0] = x;
  106.                         temp[1] = y;
  107.                     }          
  108.                     break;
  109.                 case 1:
  110.                     if(reachable(x + 1, y)) {
  111.                         temp[0] = x + 1;
  112.                         temp[1] = y;
  113.                     }  
  114.                     break;
  115.                 case 2:
  116.                     if(reachable(x - 1, y)) {
  117.                         temp[0] = x - 1;
  118.                         temp[1] = y;
  119.                     }  
  120.                     break;
  121.                 case 3:
  122.                     if(reachable(x, y + 1)) {
  123.                         temp[0] = x;
  124.                         temp[1] = y + 1;
  125.                     }  
  126.                     break;
  127.                 case 4:
  128.                     if(reachable(x, y - 1)) {
  129.                         temp[0] = x;
  130.                         temp[1] = y - 1;
  131.                     }  
  132.                     break;
  133.                 case 5:
  134.                     if(reachable(x + 1, y + 1)) {
  135.                         temp[0] = x + 1;
  136.                         temp[1] = y + 1;
  137.                     }  
  138.                     break;
  139.                 case 6:
  140.                     if(reachable(x - 1, y - 1)) {
  141.                         temp[0] = x - 1;
  142.                         temp[1] = y - 1;
  143.                     }  
  144.                     break;
  145.                 case 7:
  146.                     if(reachable(x + 1, y - 1)) {
  147.                         temp[0] = x + 1;
  148.                         temp[1] = y - 1;
  149.                     }  
  150.                     break;
  151.                 case 8:
  152.                     if(reachable(x - 1, y + 1)) {
  153.                         temp[0] = x - 1;
  154.                         temp[1] = y + 1;
  155.                     }  
  156.                     break;
  157.             }
  158.             random++;
  159.             if(random > 8)
  160.                 random = 0;
  161.             c++;
  162.         }
  163.         return temp;       
  164.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement