Advertisement
Guest User

Untitled

a guest
May 1st, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.21 KB | None | 0 0
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package Controller;
  6.  
  7. import Controller.AssistanceLogic.BuildingConstruction;
  8. import Controller.AssistanceLogic.Recruit;
  9. import Controller.Interaction.GetVillages;
  10. import Controller.Scanner.TargetScanner;
  11. import Model.Data.Order;
  12. import Model.Data.Village;
  13. import Model.Enums.PlaceEnums;
  14. import Model.VillageController;
  15. import communication.CommunicationLevel;
  16. import java.io.File;
  17. import java.util.ArrayList;
  18. import java.util.Date;
  19. import java.util.logging.Level;
  20. import java.util.logging.Logger;
  21. import reports.Reporter;
  22. import webbot.aufrufe.GetAufruf;
  23. import webbot.aufrufe.LogoutAufruf;
  24. import webbot.core.Session;
  25. import webbot.core.SessionFactory;
  26.  
  27. /**
  28.  *
  29.  * @author Andreas
  30.  */
  31. public class Logic extends Thread {
  32.  
  33.     private Controller control;
  34.     private long lastPage = 0;
  35.     private long nextCycle = 0;
  36.     private int minSleep = 300000; //10min
  37.     private int maxSleep = 1800000; //30min
  38.     boolean firstCycle = true;
  39.     private Reporter reporter = new Reporter(this);
  40.  
  41.     public Logic(Controller control) {
  42.         this.control = control;
  43.         start();
  44.     }
  45.  
  46.     public void run() {
  47.  
  48.         while (true) {
  49.             try {
  50.                 nextCycle = 0;//Cycle zuruecksetzen
  51.                 if (firstCycle) {//Alles was nur beim ersten Durchlauf durchgefuert werden soll
  52.                     firstCycle = false;
  53.                     login(); //Login nur einmal ntig, wird danach bei jedem Aufruf von getPage() mit loginCheck auf true geprueft
  54.                     GetVillages vills = new GetVillages(this, control.getPreference()); //Holt die Dorfliste
  55.                     if (control.getModel().getTargets().getTargetsAsList().size() < 1) {
  56.                         TargetScanner scan = new TargetScanner(this, 210, false);
  57.                         scan.run();
  58.                         synchronized (this) { //Auf den Scanner warten.
  59.                             wait();
  60.                         }
  61.                     }
  62.                 }
  63.                 //control.getStatisticController().addReports(reporter.getAllReportsByDay(false, new Date(System.currentTimeMillis())));
  64.                 System.out.println("Reports");
  65.                 control.getStatisticController().getNewReports();
  66.                 System.out.println("/Reports");
  67.                 GetVillages vills = new GetVillages(this, control.getPreference()); //Holt die Dorfliste
  68.  
  69.                 //Ausbau / Rekrutierung / ... durchfuehren
  70. //                for (Village vill : getVillageController().getVillages()) {
  71. //                    BuildingConstruction cons = new BuildingConstruction(this, vill); //Ausbau
  72. //                    Recruit rec = new Recruit(this, vill); //Rekrutierung
  73. //                    vill.setWallbreaker(false);
  74. //                    vill.setScavenge(true);
  75. //                    vill.setAutoRecruit(false);
  76. //                    if (vill.getId() != 51301 && vill.getId() != 51380 && vill.getId() != 46063 && vill.getId() != 44138 && vill.getId() != 57689 && vill.getId() != 53404) {
  77. //                        vill.setAutoRecruit(true);
  78. //                        vill.setRecruitRoutine("off");
  79. //                        if (control.getModel().getOrders().newRecruitRoutine("deff")) {
  80. //                            Order o = new Order();
  81. //                            o.setMax(500);
  82. //                            o.setType(PlaceEnums.SPEAR.toString());
  83. //                            control.getModel().getOrders().getRecruitOrders("deff").addOrder(o);
  84. //
  85. //                            o = new Order();
  86. //                            o.setMax(500);
  87. //                            o.setType(PlaceEnums.SWORD.toString());
  88. //                            control.getModel().getOrders().getRecruitOrders("deff").addOrder(o);
  89. //
  90. //                        }
  91. //                        if (control.getModel().getOrders().newRecruitRoutine("off")) {
  92. //                            Order o = new Order();
  93. //                            o = new Order();
  94. //                            o.setMax(3500);
  95. //                            o.setType(PlaceEnums.LIGHT.toString());
  96. //                            control.getModel().getOrders().getRecruitOrders("off").addOrder(o);
  97. //
  98. //                            o = new Order();
  99. //                            o.setMax(5000);
  100. //                            o.setType(PlaceEnums.AXE.toString());
  101. //                            control.getModel().getOrders().getRecruitOrders("off").addOrder(o);
  102. //                        }
  103. //                    } else if (vill.getId() != 44138) {
  104. //                        vill.setAutoRecruit(true);
  105. //                        vill.setRecruitRoutine("deff");
  106. //                    }
  107. //                }
  108.  
  109.  
  110. //                getVillageController().getVillagesAsList().get(5).setWallbreaker(true);
  111. //
  112. //                getVillageController().getVillagesAsList().get(3).setScavenge(false);
  113. //                getVillageController().getVillagesAsList().get(4).setScavenge(false);
  114. //                getVillageController().getVillagesAsList().get(0).setScavenge(false);
  115.  
  116.                 control.startNewScavengeRound(this);
  117.                 control.shutDown(); // Spter wieder entfernen - NICHT VERGESSEN!
  118.                 pause();
  119.             } catch (Exception ex) {
  120.                 ex.printStackTrace();
  121.             }
  122.             control.shutDown();
  123.         }
  124.  
  125. //            logout();
  126.  
  127.  
  128.  
  129.  
  130.     }
  131.  
  132.     public VillageController getVillageController() {
  133.         return control.getModel().getVillages();
  134.     }
  135.  
  136.     public void login() {
  137.         PreferenceController prefs = control.getPreference();
  138.         String username = prefs.loadPref("login-name");
  139.         String password = prefs.loadPref("password");
  140.         String server = prefs.loadPref("world");
  141.         getControl().setSession(SessionFactory.getLoginSession(username, password, server, this));
  142.     }
  143.  
  144.     /**
  145.      * Nicht zu empfehlen falls noch Aktionen ausgefuehrt werden sollen, z.B. in Threads!
  146.      */
  147.     public void logout() {
  148.         getControl().getSession().execute(new LogoutAufruf(getControl().getSession()), false);
  149.         getControl().setSession(null);
  150.     }
  151.  
  152.     public ArrayList<String> getPage(String relUrl) throws Exception {
  153.         ArrayList<String> temp;
  154.         synchronized (getSession()) {
  155.             nextPage();
  156.             GetAufruf ruf = new GetAufruf(getSession(), relUrl);
  157.             temp = (ArrayList<String>) getSession().execute(ruf, true);
  158.         }
  159.         if (temp == null) {
  160.             System.err.println("Ausgeloggt! Logge neu ein!");
  161.             login();
  162.             temp = getPage(relUrl);
  163.         }
  164.         return temp;
  165.     }
  166.  
  167.     public Session getSession() throws Exception {
  168.         if (getControl().getSession() == null) {
  169.             throw new Exception("Session == null -> Stopping!");
  170.         }
  171.         return getControl().getSession();
  172.     }
  173.  
  174.     private void nextPage() {
  175.         long diff = System.currentTimeMillis() - lastPage;
  176.         if (diff < 300) {
  177.             try {
  178.                 Thread.sleep(diff + 50);
  179.             } catch (Exception ex) {
  180.                 ex.printStackTrace();
  181.             }
  182.         }
  183.         lastPage = System.currentTimeMillis();
  184.     }
  185.  
  186.     private void pause() {
  187.         long sleep = nextCycle - System.currentTimeMillis();
  188.         if (sleep < minSleep) {
  189.             sleep = minSleep;
  190.         } else if (sleep > maxSleep) {
  191.             sleep = maxSleep;
  192.         }
  193.         Date d = new Date(sleep + System.currentTimeMillis());
  194.         control.getCommunicator().write("Pausiere bis " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(), CommunicationLevel.MESSAGE);
  195.         try {
  196.             sleep(sleep);
  197.         } catch (InterruptedException ex) {
  198.             Logger.getLogger(Logic.class.getName()).log(Level.SEVERE, null, ex);
  199.         }
  200.     }
  201.  
  202.     public void setNextCycle(long timestamp) {
  203.         if (timestamp < nextCycle || nextCycle == 0) {
  204.             nextCycle = timestamp;
  205.         }
  206.     }
  207.  
  208.     /**
  209.      * @return the control
  210.      */
  211.     public Controller getControl() {
  212.         return control;
  213.     }
  214.  
  215.     public Reporter getReporter() {
  216.         return reporter;
  217.     }
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement