/** * Function that will add to @a result all locations within @a radius tiles * of @a center (including @a center itself). @a result must be a std::set * of locations. */ void get_tiles_radius(const map_location& center, size_t radius, std::set<map_location>& result) { // Re-use some logic. std::vector<map_location> internal_result(1, center); get_tiles_in_radius(center, static_cast<int>(radius), internal_result); // Convert to a set. result.insert(internal_result.begin(), internal_result.end()); }
brush::brush(const config& cfg) : relative_tiles_() , name_(cfg["name"]) , id_(cfg["id"]) { int radius = cfg["radius"]; if (radius > 0) { std::vector<map_location> in_radius; get_tiles_in_radius(map_location(0, 0), radius, in_radius); BOOST_FOREACH(map_location& loc, in_radius) { add_relative_location(loc.x, loc.y); }
brush::brush(const config& cfg) : relative_tiles_() , name_(cfg["name"]) , image_(cfg["image"]) { int radius = lexical_cast_default<int>(cfg["radius"], 0); if (radius > 0) { std::vector<map_location> in_radius; get_tiles_in_radius(map_location(0, 0), radius, in_radius); foreach (map_location& loc, in_radius) { add_relative_location(loc.x, loc.y); }
brush::brush(const config& cfg) : relative_tiles_() , name_(cfg["name"]) , id_(cfg["id"]) { int radius = cfg["radius"]; if (radius > 0) { std::vector<map_location> in_radius; get_tiles_in_radius(map_location(0, 0), radius, in_radius); for (map_location& loc : in_radius) { add_relative_location(loc.x, loc.y); } } for (const config &relative : cfg.child_range("relative")) { int x = relative["x"]; int y = relative["y"]; add_relative_location(x, y); } if (relative_tiles_.empty()) { WRN_ED << "Empty brush definition, name=" << name_ << std::endl; } }