Exemplo n.º 1
0
std::vector<Trade_route> City::find_sellers_of(Resource res)
{
  std::vector<Trade_route> ret;
  for (std::map<int,Trade_route>::iterator it = trade_routes.begin();
       it != trade_routes.end();
       it++) {
    City* seller = GAME->world->lookup_city_uid(it->first);
    if (seller) {
      int avail = seller->get_net_resource_production(res);
      if (avail > 0) {
// Insert into our return vector, sorted by distance.
// TODO: Sort by unit price (including overhead)!
        int dist = it->second.distance;
        bool found = false;
        for (int i = 0; !found && i < ret.size(); i++) {
          if (dist <= ret[i].distance) {
            found = true;
            ret.insert( ret.begin() + i, it->second );
          }
        }
        if (!found) {
          ret.push_back(it->second);
        }
      } // if (avail > 0)
    } // if (seller)
  } // for (std::map<int,Trade_route>::iterator it = trade_routes.begin(); ... )
  return ret;
}