Author: dragonking
Date: Sat Jul 26 00:52:20 2008
New Revision: 28208

URL: http://svn.gna.org/viewcvs/wesnoth?rev=28208&view=rev
Log:
New formula AI function: get_unit_type

Modified:
    trunk/src/formula_ai.cpp

Modified: trunk/src/formula_ai.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/formula_ai.cpp?rev=28208&r1=28207&r2=28208&view=diff
==============================================================================
--- trunk/src/formula_ai.cpp (original)
+++ trunk/src/formula_ai.cpp Sat Jul 26 00:52:20 2008
@@ -423,7 +423,22 @@
        const std::string& type() const { return type_; }
 };
 
-
+class get_unit_type_function : public function_expression {
+public:
+       explicit get_unit_type_function(const args_list& args)
+         : function_expression("get_unit_type", args, 1, 1)
+       {}
+private:
+       variant execute(const formula_callable& variables) const {
+               const std::string type = 
args()[0]->evaluate(variables).as_string();
+
+               std::map<std::string,unit_type>::const_iterator unit_it = 
unit_type_data::types().find( type );
+               if (unit_it != unit_type_data::types().end() )
+                               return  variant( new unit_type_callable( 
unit_it->second ) );
+
+               return variant();
+       }
+};
 
 class recruit_function : public function_expression {
 public:
@@ -1057,6 +1072,8 @@
                return expression_ptr(new attack_function(args, ai_));
        } else if(fn == "recruit") {
                return expression_ptr(new recruit_function(args));
+       } else if(fn == "get_unit_type") {
+               return expression_ptr(new get_unit_type_function(args));
        } else if(fn == "is_village") {
                return expression_ptr(new is_village_function(args));
        } else if(fn == "is_unowned_village") {


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

Reply via email to