Author: dragonking
Date: Wed Apr  8 00:30:06 2009
New Revision: 34627

URL: http://svn.gna.org/viewcvs/wesnoth?rev=34627&view=rev
Log:
Improved formula if function

Modified:
    trunk/src/formula_function.cpp

Modified: trunk/src/formula_function.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/formula_function.cpp?rev=34627&r1=34626&r2=34627&view=diff
==============================================================================
--- trunk/src/formula_function.cpp (original)
+++ trunk/src/formula_function.cpp Wed Apr  8 00:30:06 2009
@@ -55,13 +55,23 @@
 class if_function : public function_expression {
 public:
        explicit if_function(const args_list& args)
-            : function_expression("if", args, 3, 3)
-       {}
-
-private:
-       variant execute(const formula_callable& variables) const {
-               const int i = args()[0]->evaluate(variables).as_bool() ? 1 : 2;
-               return args()[i]->evaluate(variables);
+            : function_expression("if", args, 3, -1)
+       {}
+
+private:
+       variant execute(const formula_callable& variables) const {
+               for(size_t n = 0; n < args().size()-1; n += 2) {
+                       if( args()[n]->evaluate(variables).as_bool() ) {
+                               return args()[n+1]->evaluate(variables);
+                       }
+               }
+                
+               if((args().size()%2) != 0) {
+                       return args().back()->evaluate(variables);
+               } else {
+                       return variant();
+               }
+
        }
 };
 


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

Reply via email to