Exemplo n.º 1
0
 public EnemyInfo parseEnemyInfo() throws BotBadBaseException {
   final BufferedImage image = platform.screenshot(ENEMY_LOOT);
   final EnemyInfo info = new EnemyInfo();
   info.setGold(parseGold(image));
   info.setElixir(parseElixir(image));
   info.setDarkElixir(parseDarkElixir(image));
   info.setTrophyWin(parseTrophyWin(image));
   info.setTrophyDefeat(parseTrophyDefeat(image));
   return info;
 }
Exemplo n.º 2
0
  public FiringDecision getFiringDecision() {
    Vector3f playerPos = bot.getBotPosition();
    EnemyInfo chosen = null;
    float chosenRisk = Float.MAX_VALUE;
    float maxDist = -1;
    float maxError = 0;
    LinkedList<EnemyInfo> eligible = new LinkedList<EnemyInfo>();
    for (EnemyInfo ei : bot.kb.enemyInformation.values()) {

      if (ei.getBestVisibleEnemyPart(bot) == null) {
        continue;
      }

      if (ei.lastUpdateFrame + bot.cConfig.maxEnemyInfoAge4Firing < bot.getFrameNumber()) {
        continue;
      }

      float dist = CommFun.getDistanceBetweenPositions(playerPos, ei.getObjectPosition());
      float error = ei.lastPredictionError;

      if (dist > maxDist) {
        maxDist = dist;
      }
      if (error > maxError) {
        maxError = error;
      }

      eligible.add(ei);
    }

    for (EnemyInfo ei : eligible) {
      float dist = CommFun.getDistanceBetweenPositions(playerPos, ei.getObjectPosition());
      float error = ei.lastPredictionError;
      float risk = dist / maxDist + error / maxError;
      if (chosenRisk > risk) {
        chosenRisk = risk;
        chosen = ei;
      }
    }

    if (chosen == null) {
      return null;
    }
    actionDistance = CommFun.getDistanceBetweenPositions(playerPos, chosen.getObjectPosition());
    return new FiringDecision(chosen, -1);
  }