Author: anonymissimus
Date: Tue Mar 27 21:51:38 2012
New Revision: 53675
URL: http://svn.gna.org/viewcvs/wesnoth?rev=53675&view=rev
Log:
introduce [filter_vision]<SSF> in SLFs (patch #3209 by brilliand)
Modified:
trunk/src/terrain_filter.cpp
Modified: trunk/src/terrain_filter.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/terrain_filter.cpp?rev=53675&r1=53674&r2=53675&view=diff
==============================================================================
--- trunk/src/terrain_filter.cpp (original)
+++ trunk/src/terrain_filter.cpp Tue Mar 27 21:51:38 2012
@@ -149,6 +149,27 @@
const unit_map::const_iterator u = units_.find(loc);
if (u == units_.end() || !u->matches_filter(unit_filter, loc,
flat_))
return false;
+ }
+
+ // Allow filtering on visibility to a side
+ if (cfg_.has_child("filter_vision")) {
+ const vconfig::child_list& vis_filt =
cfg_.get_children("filter_vision");
+ vconfig::child_list::const_iterator i, i_end = vis_filt.end();
+ for (i = vis_filt.begin(); i != i_end; ++i) {
+ bool visible = (*i)["visible"].to_bool(true);
+ bool respect_fog = (*i)["respect_fog"].to_bool(true);
+
+ side_filter ssf(*i);
+ std::vector<int> sides = ssf.get_teams();
+
+ foreach(const int side, sides) {
+ const team &viewing_team =
resources::teams->at(side - 1);
+ bool viewer_sees = respect_fog ?
!viewing_team.fogged(loc) : !viewing_team.shrouded(loc);
+ if (visible != viewer_sees) {
+ return false;
+ }
+ }
+ }
}
//Allow filtering on adjacent locations
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits