31 template<
typename FPred1,
typename FPred2>
32 void get_tiles_radius(std::set<map_location>&& locs,
size_t radius, std::set<map_location>& result,
const FPred1& pred1,
const FPred2& pred2)
35 location_set must_visit, filtered_out;
36 location_set not_visited = std::move(locs);
38 for ( ; radius != 0 && !not_visited.empty(); --radius )
40 location_set::const_iterator it = not_visited.begin();
41 location_set::const_iterator it_end = not_visited.end();
43 result.insert(it, it_end);
44 for(; it != it_end; ++it) {
47 for(
size_t i = 0;
i < adj.size(); ++
i) {
50 if( !result.count(loc) && !filtered_out.count(loc) ) {
52 must_visit.insert(loc);
55 filtered_out.insert(loc);
62 not_visited.swap(must_visit);
66 result.insert(not_visited.begin(), not_visited.end());
void get_adjacent_tiles(const map_location &a, map_location *res)
Function which, given a location, will place all adjacent locations in res.
void get_tiles_radius(std::set< map_location > &&locs, size_t radius, std::set< map_location > &result, const FPred1 &pred1, const FPred2 &pred2)
Function that will add to result all elements of locs, plus all on-board (that is: all locs that matc...
std::array< map_location, 6 > adjacent_loc_array_t
Encapsulates the map of the game.
std::set< map_location > location_set