Author: tschmitz
Date: Fri Aug 26 20:31:54 2011
New Revision: 50923

URL: http://svn.gna.org/viewcvs/wesnoth?rev=50923&view=rev
Log:
Made it possible to plan invalid actions instead of silently rejecting them.

Modified:
    trunk/src/whiteboard/manager.cpp
    trunk/src/whiteboard/manager.hpp

Modified: trunk/src/whiteboard/manager.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/manager.cpp?rev=50923&r1=50922&r2=50923&view=diff
==============================================================================
--- trunk/src/whiteboard/manager.cpp (original)
+++ trunk/src/whiteboard/manager.cpp Fri Aug 26 20:31:54 2011
@@ -659,6 +659,8 @@
                assert(u);
                size_t first_turn = sa.get_turn_num_of(*u);
 
+               on_save_action(u);
+
                assert(move_arrows_.size() == fake_units_.size());
                size_t size = move_arrows_.size();
                for(size_t i=0; i<size; ++i)
@@ -677,7 +679,6 @@
                }
                erase_temp_move();
 
-               on_save_action();
                LOG_WB << *viewer_actions() << "\n";
                print_help_once();
        }
@@ -720,10 +721,10 @@
 
                if (weapon_choice >= 0)
                {
+                       on_save_action(attacking_unit);
+
                        side_actions& sa = *viewer_actions();
                        
sa.queue_attack(sa.get_turn_num_of(*attacking_unit),*attacking_unit,target_hex,weapon_choice,*route_,move_arrow,fake_unit);
-
-                       on_save_action();
 
                        print_help_once();
                }
@@ -746,6 +747,8 @@
                }
                else
                {
+                       on_save_action(NULL);
+
                        side_actions& sa = *viewer_actions();
                        unit* recruiter;
                        { wb::scoped_planned_unit_map raii;
@@ -756,8 +759,6 @@
                        sa.queue_recruit(turn,name,recruit_hex);
                        created_planned_recruit = true;
 
-                       on_save_action();
-
                        print_help_once();
                }
        }
@@ -777,6 +778,8 @@
                }
                else
                {
+                       on_save_action(NULL);
+
                        side_actions& sa = *viewer_actions();
                        size_t turn = sa.num_turns();
                        if(turn > 0)
@@ -784,8 +787,6 @@
                        sa.queue_recall(turn,unit,recall_hex);
                        created_planned_recall = true;
 
-                       on_save_action();
-
                        print_help_once();
                }
        }
@@ -796,17 +797,16 @@
 {
        if(active_ && !executing_actions_ && 
!resources::controller->is_linger_mode())
        {
+               on_save_action(&curr_unit);
                side_actions& sa = *viewer_actions();
                
sa.queue_suppose_dead(sa.get_turn_num_of(curr_unit),curr_unit,loc);
-               on_save_action();
-       }
-}
-
-void manager::on_save_action() const
-{
-       side_actions& sa = *viewer_actions();
-       action& act = **(sa.end()-1);
-       sa.remove_invalid_of(act.get_unit());
+       }
+}
+
+void manager::on_save_action(unit const* u) const
+{
+       if(u)
+               viewer_actions()->remove_invalid_of(u);
 }
 
 void manager::contextual_execute()

Modified: trunk/src/whiteboard/manager.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/manager.hpp?rev=50923&r1=50922&r2=50923&view=diff
==============================================================================
--- trunk/src/whiteboard/manager.hpp (original)
+++ trunk/src/whiteboard/manager.hpp Fri Aug 26 20:31:54 2011
@@ -165,7 +165,7 @@
 private:
        void validate_actions_if_needed();
        /// Called by all of the save_***() methods after they have added their 
action to the queue
-       void on_save_action() const;
+       void on_save_action(unit const* unit_with_plan) const;
        void update_plan_hiding(size_t viewing_team) const;
        void update_plan_hiding() const; //same as above, but uses 
wb::viewer_team() as default argument
 


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

Reply via email to