Author: alink
Date: Wed Apr 15 19:36:56 2009
New Revision: 34942

URL: http://svn.gna.org/viewcvs/wesnoth?rev=34942&view=rev
Log:
Add a [not] tag into the recent [hide_help]
This allow to hide a whole mainline race except the types used in the campaign. 
syntax: [hide_help] race=human [not] type=Thief [/not][/hide_help]
Also rename keys races->race and types->type (as used in unit filter).

Modified:
    trunk/src/unit_types.cpp
    trunk/src/unit_types.hpp

Modified: trunk/src/unit_types.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit_types.cpp?rev=34942&r1=34941&r2=34942&view=diff
==============================================================================
--- trunk/src/unit_types.cpp (original)
+++ trunk/src/unit_types.cpp Wed Apr 15 19:36:56 2009
@@ -1047,8 +1047,7 @@
 }
 
 bool unit_type::hide_help() const {
-       return hide_help_ || unit_type_data::types().hide_types().count(id_)>0
-                       || 
unit_type_data::types().hide_races().count(race_->id())>0;
+       return hide_help_ || unit_type_data::types().hide_help(id_, 
race_->id());
 }
 
 // Allow storing "advances from" info for convenience in Help.
@@ -1178,13 +1177,16 @@
        build_all(unit_type::CREATED);
 
        if (const config &hide = cfg.child("hide_help")) {
-               std::vector<std::string> hide_types_list =
-                               utils::split(hide["types"]);
-               hide_types_.insert(hide_types_list.begin(), 
hide_types_list.end());
+               std::vector<std::string> types = utils::split(hide["type"]);
+               hide_types_.insert(types.begin(), types.end());
                
-               std::vector<std::string> hide_races_list =
-                               utils::split(hide["races"]);
-               hide_races_.insert(hide_races_list.begin(), 
hide_races_list.end());
+               std::vector<std::string> races = utils::split(hide["race"]);
+               hide_races_.insert(races.begin(), races.end());
+
+               if (const config &hide_not = hide.child("not")) {
+                       std::vector<std::string> n_types = 
utils::split(hide_not["type"]);
+                       hide_not_types_.insert(n_types.begin(), n_types.end());
+               }
        }
 }
 
@@ -1291,6 +1293,12 @@
     }
 
     return ut->second;
+}
+
+bool unit_type_data::unit_type_map_wrapper::hide_help(const std::string& 
type_id, const std::string& race_id) const
+{
+       return (hide_types_.count(type_id) || hide_races_.count(race_id))
+               && !hide_not_types_.count(type_id);
 }
 
 void unit_type_data::unit_type_map_wrapper::add_advancefrom(const config& 
unit_cfg) const

Modified: trunk/src/unit_types.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit_types.hpp?rev=34942&r1=34941&r2=34942&view=diff
==============================================================================
--- trunk/src/unit_types.hpp (original)
+++ trunk/src/unit_types.hpp Wed Apr 15 19:36:56 2009
@@ -358,8 +358,8 @@
 
             void build_all(unit_type::BUILD_STATUS status) const;
 
-            const std::set<std::string>& hide_types() const {return 
hide_types_;}
-            const std::set<std::string>& hide_races() const {return 
hide_races_;}
+                       // check if the root hide_help contains these ids
+                       bool hide_help(const std::string& type_id, const 
std::string& race_id) const;
 
         private:
             unit_type_map_wrapper();
@@ -386,6 +386,7 @@
 
                        std::set<std::string> hide_types_;
                        std::set<std::string> hide_races_;
+                       std::set<std::string> hide_not_types_;
 
             const config* unit_cfg_;
        };


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to