Author: tschmitz
Date: Sat Jul 9 09:57:20 2011
New Revision: 50251
URL: http://svn.gna.org/viewcvs/wesnoth?rev=50251&view=rev
Log:
Optimized by not iterating so much.
Modified:
trunk/src/whiteboard/validate_visitor.cpp
trunk/src/whiteboard/validate_visitor.hpp
Modified: trunk/src/whiteboard/validate_visitor.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/validate_visitor.cpp?rev=50251&r1=50250&r2=50251&view=diff
==============================================================================
--- trunk/src/whiteboard/validate_visitor.cpp (original)
+++ trunk/src/whiteboard/validate_visitor.cpp Sat Jul 9 09:57:20 2011
@@ -40,6 +40,7 @@
validate_visitor::validate_visitor(unit_map& unit_map)
: mapbuilder_visitor(unit_map, viewer_actions(), true)
, actions_to_erase_()
+ , arg_itor_()
{
assert(!resources::whiteboard->has_planned_unit_map());
}
@@ -62,10 +63,10 @@
size_t team_index = (current_team+iteration) % num_teams;
side_actions& actions =
*resources::teams->at(team_index).get_side_actions();
- side_actions::iterator itor = actions.begin();
+ arg_itor_ = actions.begin(); //< Parameter for the visit_***()
fcns
side_actions::iterator end = actions.end();
- for(; itor!=end; ++itor)
- (*itor)->accept(*this);
+ for(; arg_itor_!=end; ++arg_itor_)
+ (*arg_itor_)->accept(*this);
}
//FIXME: by reverse iterating this can be done in a more efficiant way
@@ -139,7 +140,7 @@
m.calculate_move_cost();
//send updated path to allies
-
resources::whiteboard->queue_net_cmd(side_actions_->make_net_cmd_replace(side_actions_->get_position_of(m_ptr),m_ptr));
+
resources::whiteboard->queue_net_cmd(side_actions_->make_net_cmd_replace(arg_itor_,m_ptr));
//@todo: Since this might lengthen the path, we
probably need a special conflict state
// to warn the player that the initial path is
no longer possible.
@@ -159,10 +160,10 @@
/* private */
bool validate_visitor::no_previous_invalids(move_ptr m_ptr)
{
- side_actions::iterator move_itor =
side_actions_->get_position_of(m_ptr);
- if(move_itor == side_actions_->begin())
+ //arg_itor_ is a protected member of mapbuilder_visitor
+ if(arg_itor_ == side_actions_->begin())
return true;
- side_actions::iterator prev_action_of_unit =
side_actions_->find_last_action_of(m_ptr->get_unit(),move_itor-1);
+ side_actions::iterator prev_action_of_unit =
side_actions_->find_last_action_of(m_ptr->get_unit(),arg_itor_-1);
if(prev_action_of_unit == side_actions_->end())
return true;
return (*prev_action_of_unit)->is_valid();
Modified: trunk/src/whiteboard/validate_visitor.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/validate_visitor.hpp?rev=50251&r1=50250&r2=50251&view=diff
==============================================================================
--- trunk/src/whiteboard/validate_visitor.hpp (original)
+++ trunk/src/whiteboard/validate_visitor.hpp Sat Jul 9 09:57:20 2011
@@ -21,6 +21,7 @@
#define WB_VALIDATE_VISITOR_HPP_
#include "mapbuilder_visitor.hpp"
+#include "side_actions.hpp"
#include <set>
@@ -55,6 +56,9 @@
bool no_previous_invalids(move_ptr);
std::set<action_ptr> actions_to_erase_;
+
+ //Parameter for the visit_***() fcns -- see validate_actions()
+ side_actions::iterator arg_itor_;
};
}
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits