Author: jamit
Date: Wed Apr 4 01:45:08 2012
New Revision: 53763
URL: http://svn.gna.org/viewcvs/wesnoth?rev=53763&view=rev
Log:
Terrain filters respect "with_border" for their radius (as well as for
everything else).
Modified:
trunk/src/pathutils.cpp
trunk/src/pathutils.hpp
trunk/src/terrain_filter.cpp
Modified: trunk/src/pathutils.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/pathutils.cpp?rev=53763&r1=53762&r2=53763&view=diff
==============================================================================
--- trunk/src/pathutils.cpp (original)
+++ trunk/src/pathutils.cpp Wed Apr 4 01:45:08 2012
@@ -75,7 +75,8 @@
}
void get_tiles_radius(gamemap const &map, std::vector<map_location> const
&locs,
- size_t radius, std::set<map_location> &res, xy_pred
*pred)
+ size_t radius, std::set<map_location> &res, bool
with_border,
+ xy_pred *pred)
{
typedef std::set<map_location> location_set;
location_set not_visited(locs.begin(), locs.end()), must_visit,
filtered_out;
@@ -89,11 +90,13 @@
get_adjacent_tiles(*it, adj);
for(size_t i = 0; i != 6; ++i) {
map_location const &loc = adj[i];
- if(map.on_board(loc) && !res.count(loc) &&
!filtered_out.count(loc)) {
- if(!pred || (*pred)(loc)) {
- must_visit.insert(loc);
- } else {
- filtered_out.insert(loc);
+ if ( with_border ?
map.on_board_with_border(loc) :
+ map.on_board(loc) ) {
+ if ( !res.count(loc) &&
!filtered_out.count(loc) ) {
+ if ( !pred || (*pred)(loc) )
+ must_visit.insert(loc);
+ else
+
filtered_out.insert(loc);
}
}
}
Modified: trunk/src/pathutils.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/pathutils.hpp?rev=53763&r1=53762&r2=53763&view=diff
==============================================================================
--- trunk/src/pathutils.hpp (original)
+++ trunk/src/pathutils.hpp Wed Apr 4 01:45:08 2012
@@ -42,7 +42,7 @@
/** Function which, given a set of locations, will find all tiles within
'radius' of those tiles */
void get_tiles_radius(const gamemap& map, const std::vector<map_location>&
locs, size_t radius,
- std::set<map_location>& res, xy_pred
*pred=NULL);
+ std::set<map_location>& res, bool
with_border=false, xy_pred *pred=NULL);
/**
* Function which, given a location, will place all locations in the radius of
r in res
Modified: trunk/src/terrain_filter.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/terrain_filter.cpp?rev=53763&r1=53762&r2=53763&view=diff
==============================================================================
--- trunk/src/terrain_filter.cpp (original)
+++ trunk/src/terrain_filter.cpp Wed Apr 4 01:45:08 2012
@@ -321,7 +321,7 @@
}
if(cfg_.has_child("filter_radius")) {
terrain_filter r_filter(cfg_.child("filter_radius"), *this);
- get_tiles_radius(*resources::game_map, loc_vec, radius, hexes,
&r_filter);
+ get_tiles_radius(*resources::game_map, loc_vec, radius, hexes,
false, &r_filter);
} else {
get_tiles_radius(*resources::game_map, loc_vec, radius, hexes);
}
@@ -420,7 +420,7 @@
const vconfig::child_list& adj_cfgs =
cfg_.get_children("filter_adjacent_location");
for (unsigned i = 0; i < adj_cfgs.size(); ++i) {
std::set<map_location> adj_set;
- /* GCC-3.3 doesn't like operator[] so use at which has
the same result */
+ /* GCC-3.3 doesn't like operator[] so use at(), which
has the same result */
terrain_filter(adj_cfgs.at(i),
*this).get_locations(adj_set, with_border);
cache_.adjacent_matches->push_back(adj_set);
if(i >= max_loop_ && i+1 < adj_cfgs.size()) {
@@ -504,9 +504,9 @@
std::copy(xy_set.begin(),xy_set.end(),std::inserter(xy_vector,xy_vector.end()));
if(cfg_.has_child("filter_radius")) {
terrain_filter r_filter(cfg_.child("filter_radius"),
*this);
- get_tiles_radius(*resources::game_map, xy_vector,
radius, locs, &r_filter);
+ get_tiles_radius(*resources::game_map, xy_vector,
radius, locs, with_border, &r_filter);
} else {
- get_tiles_radius(*resources::game_map, xy_vector,
radius, locs);
+ get_tiles_radius(*resources::game_map, xy_vector,
radius, locs, with_border);
}
} else {
std::copy(xy_set.begin(),xy_set.end(),std::inserter(locs,locs.end()));
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits