Пример #1
0
  private void chooseSearchForCivilianBuildings() {
    PriorityQueue<Building> buildings =
        new PriorityQueue<Building>(
            100,
            new Comparator<Building>() {

              @Override
              public int compare(Building o1, Building o2) {
                if (!o1.isSearchedForCivilian() && !o2.isSearchedForCivilian()) return 0;
                if (!o1.isSearchedForCivilian()) return 1;
                if (!o2.isSearchedForCivilian()) return -1;
                if (searchedForCivilianBuildings.contains(o1)
                    != searchedForCivilianBuildings.contains(o2))
                  return searchedForCivilianBuildings.contains(o1) ? 1 : -1;
                //				ClusterData myCluster = SOSAgent.currentAgent().getMyClusterData();
                //
                //	if(myCluster.getBuildings().contains(o1)!=myCluster.getBuildings().contains(o2))
                //					return myCluster.getBuildings().contains(o1)?1:-1;
                //				if(o1.getLastSearchedForCivilianTime()>o2.getLastSearchedForCivilianTime())
                //					return -1;
                //				if(o1.getLastSearchedForCivilianTime()<o2.getLastSearchedForCivilianTime())
                //					return 1;
                double distanceTo1 =
                    SOSAgent.currentAgent().me().getPositionPoint().distance(o1.getPositionPoint());
                double distanceTo2 =
                    SOSAgent.currentAgent().me().getPositionPoint().distance(o2.getPositionPoint());
                if (distanceTo1 > distanceTo2) return 1;
                if (distanceTo1 < distanceTo2) return -1;
                return 0;
              }
            });
    int priority = 10;
    int count = 0;
    for (Building b : model().buildings()) {
      if (b.isEitherFieryOrBurnt()) continue;
      if (!b.isSearchedForCivilian()) continue;
      buildings.add(b);
    }
    for (Building b : buildings) {
      count++;
      if (priority > 0 && count % 10 == 0) priority--;

      searchedForCivilianBuildings.add(b);
      MessageBlock messageBlock = new MessageBlock(HEADER_NO_COMM_SEARCHED_FOR_CIVILIAN);
      messageBlock.addData(DATA_BUILDING_INDEX, b.getBuildingIndex());
      messageBlock.addData(DATA_TIME, b.getLastSearchedForCivilianTime());

      sayMessages.add(messageBlock);
    }
  }