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

Reply via email to