Author: tschmitz
Date: Fri Aug 26 20:32:09 2011
New Revision: 50924

URL: http://svn.gna.org/viewcvs/wesnoth?rev=50924&view=rev
Log:
Fixed another bug with invalid/multi-turn actions.

Modified:
    trunk/src/whiteboard/side_actions.cpp

Modified: trunk/src/whiteboard/side_actions.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/side_actions.cpp?rev=50924&r1=50923&r2=50924&view=diff
==============================================================================
--- trunk/src/whiteboard/side_actions.cpp (original)
+++ trunk/src/whiteboard/side_actions.cpp Fri Aug 26 20:32:09 2011
@@ -535,9 +535,27 @@
        }
 }
 
+static side_actions::const_iterator find_last_valid_of(unit const& u, 
side_actions const& sa_const)
+{
+       side_actions& sa = const_cast<side_actions&>(sa_const);
+       side_actions::iterator end = sa.end();
+
+       if(sa.empty())
+               return sa.end();
+
+       side_actions::iterator begin = sa.begin();
+       side_actions::iterator itor  = end;
+       do {
+               if(itor==begin && !(*itor)->is_valid())
+                       return end; //this unit has no valid actions!
+               itor = sa.find_last_action_of(&u,itor - 1);
+       } while(itor!=end && !(*itor)->is_valid());
+
+       return itor;
+}
 size_t side_actions::get_turn_num_of(unit const& u) const
 {
-       const_iterator itor = 
const_cast<side_actions*>(this)->find_last_action_of(&u);
+       const_iterator itor = find_last_valid_of(u,*this); //helper fcn -- above
        if(itor == end())
                return 0;
        return itor.base_.turn_num_;


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

Reply via email to