Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.41 KB | None | 0 0
  1. class ZulrahConstants {
  2.     public static final byte RANGE = 0x1;
  3.     public static final byte MAGE  = 0x2;
  4.     public static final byte MELEE = 0x3;
  5.  
  6.     public static final byte CENTER = 0x0;
  7.     public static final byte LEFT = 0x4;
  8.     public static final byte RIGHT = 0x8;
  9.     public static final byte BOTTOM = 0xc;
  10.  
  11.     public static final byte MELEE_CENTER = MELEE | CENTER;
  12.     public static final byte MAGE_CENTER = MAGE | CENTER;
  13.     public static final byte MAGE_RIGHT = MAGE | CENTER;
  14.     public static final byte RANGE_CENTER = RANGE | CENTER;
  15.     public static final byte RANGE_BOTTOM = RANGE | BOTTOM;
  16.     public static final byte RANGE_LEFT = RANGE | LEFT;
  17.     public static final byte RANGE_RIGHT = RANGE | RIGHT;
  18.  
  19.     public static final short RANGE_MELEE_MAGE_CENTER = (short) (RANGE_CENTER | (MELEE_CENTER << 4) | (MAGE_CENTER << 8));
  20.     public static final short FIRST_PATTERN = (short) (RANGE_MELEE_MAGE_CENTER | (RANGE_BOTTOM << 12));
  21.     public static final short SECOND_PATTERN = (short) (RANGE_MELEE_MAGE_CENTER | (RANGE_LEFT << 12));
  22.     public static final short THIRD_PATTERN = (short) (RANGE_CENTER | (RANGE_RIGHT << 4));
  23.     public static final short FOURTH_PATTERN = (short) (RANGE_CENTER | (MAGE_RIGHT << 4));
  24.  
  25.     public static final int MAGE_ID = 1;
  26.     public static final int RANGE_ID = 1;
  27.     public static final int MELEE_ID = 1;
  28.  
  29.     public static final Area LEFT_AREA = new Area();
  30.     public static final Area RIGHT_AREA = new Area();
  31.     public static final Area BOTTOM_AREA = new Area();
  32.     public static final Area CENTER_AREA = new Area();
  33. }
  34.  
  35. class PatternHashBuilder {
  36.     public short buildHash(MethodProvider api, short currentHash, int currentRound) {
  37.         NPC zulrah = api.getNpcs().closest("Zulrah");
  38.         if(zulrah == null)
  39.             return currentHash;
  40.  
  41.         switch(zulrah.getId()) {
  42.             case 1:
  43.                 currentHash |= RANGE << (currentRound * 4);
  44.                 break;
  45.             case 2:
  46.                 currentHash |= MAGE << (currentRound * 4);
  47.                 break;
  48.             case 3:
  49.                 currentHash |= MELEE << (currentRound * 4);
  50.                 break;         
  51.         }
  52.  
  53.         Area area = zulrah.getArea();
  54.         if(area.equals(CENTER_AREA)) {
  55.             currentHash |= CENTER << (currentRound * 4);
  56.         } else if(area.equals(LEFT_AREA)) {
  57.             currentHash |= LEFT << (currentRound * 4);
  58.         }
  59.        
  60.         return currentHash;
  61.     }
  62. }
  63.  
  64. class ZulrahHelperScript extends Script {
  65.     private Map<Short, ZulrahPattern> patterns = new HashMap<>();
  66.     private ZulrahPattern pattern;
  67.    
  68.     private PatternHashBuilder hashBuilder;
  69.     private short currentHash;
  70.     private int currentRound;
  71.    
  72.     public void onStart() {
  73.         //create Zulrah and Player details
  74.         //create ZulrahStages
  75.        
  76.         patterns.put(FIRST_PATTERN, new ZulrahPattern());
  77.         patterns.put(SECOND_PATTERN, new ZulrahPattern());
  78.         patterns.put(THIRD_PATTERN, new ZulrahPattern());
  79.         patterns.put(FOURTH_PATTERN, new ZulrahPattern());
  80.        
  81.         System.out.println();
  82.         System.out.println(SECOND_PATTERN);
  83.         System.out.println(THIRD_PATTERN);
  84.         System.out.println(FOURTH_PATTERN);
  85.     }
  86.    
  87.     public int onLoop() {
  88.         if(patternIsAvailable()) {
  89.             processPattern();
  90.         } else {
  91.             pattern = patterns.get(hashBuilder.buildHash(this, currentHash, currentRound));
  92.         }
  93.        
  94.         return 33;
  95.     }
  96.    
  97.     private void processPattern() {
  98.         if(pattern.isFinished()) {
  99.             //end script / restart
  100.         } else {
  101.             if(pattern.process(this)) {
  102.                 currentRound++;
  103.             }
  104.         }
  105.     }
  106.    
  107.     private boolean patternIsAvailable() {
  108.         return pattern != null;
  109.     }
  110. }
  111.  
  112. class ZulrahPattern {
  113.     private final LinkedList<ZulrahRound> stagesToProcess;
  114.     private boolean finished;
  115.    
  116.     public ZulrahPattern(final ZulrahRound...stages) {
  117.         stagesToProcess = new LinkedList<>(Arrays.asList(stages));
  118.     }
  119.    
  120.     /**
  121.      * @return true if current round is finished. False if otherwise.
  122.      */
  123.     public boolean process(MethodProvider api) {
  124.         ZulrahRound currentStage = stagesToProcess.peekFirst();
  125.         if(currentStage.isFinished(api)) {
  126.             stagesToProcess.pop();
  127.  
  128.             if(stagesToProcess.size() < 1) {
  129.                 finished = true;
  130.             }
  131.            
  132.             return true;
  133.         } else {
  134.             currentStage.process(api);
  135.             return false;
  136.         }
  137.     }
  138.    
  139.     public boolean isFinished() {
  140.         return finished;
  141.     }
  142. }
  143.  
  144. class ZulrahRound {
  145.     private ZulrahDetails zulrah;
  146.     private PlayerDetails player;
  147.  
  148.     public ZulrahRound(ZulrahDetails zulrah, PlayerDetails player) {
  149.         this.zulrah = zulrah;
  150.         this.player = player;
  151.     }
  152.  
  153.     public void process(MethodProvider api) {
  154.  
  155.     }
  156.  
  157.     public boolean isFinished(MethodProvider api) {
  158.         return false;
  159.     }
  160. }
  161.  
  162.  
  163. class ZulrahDetails {
  164.    
  165. }
  166.  
  167. class PlayerDetails {
  168.    
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement