Author: silene
Date: Sat May 30 12:26:00 2009
New Revision: 35939

URL: http://svn.gna.org/viewcvs/wesnoth?rev=35939&view=rev
Log:
Simplified interface of ai_move_result.

Modified:
    trunk/src/ai/ai_actions.cpp
    trunk/src/ai/ai_actions.hpp

Modified: trunk/src/ai/ai_actions.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/ai_actions.cpp?rev=35939&r1=35938&r2=35939&view=diff
==============================================================================
--- trunk/src/ai/ai_actions.cpp (original)
+++ trunk/src/ai/ai_actions.cpp Sat May 30 12:26:00 2009
@@ -211,32 +211,33 @@
 }
 
 
-bool ai_move_result::test_unit(unit_map::const_iterator& un, const unit_map& 
units, const std::vector<team>& /*teams*/, bool /*update_knowledge*/)
-{
-       un = units.find(from_);
+const unit *ai_move_result::get_unit(const unit_map &units, const 
std::vector<team> &, bool)
+{
+       unit_map::const_iterator un = units.find(from_);
        if (un==units.end()){
                set_error(E_NO_UNIT);
-               return false;
-       }
-       if (un->second.side()!=get_side()){
+               return NULL;
+       }
+       const unit *u = &un->second;
+       if (u->side() != get_side()) {
                set_error(E_NOT_OWN_UNIT);
-               return false;
-       }
-       if (un->second.incapacitated()){
+               return NULL;
+       }
+       if (u->incapacitated()) {
                set_error(E_INCAPACITATED_UNIT);
-               return false;
-       }
-       return true;
-}
-
-
-bool ai_move_result::test_route(const unit_map::const_iterator& un, const 
team& my_team, const unit_map& units, const std::vector<team>& teams, const 
gamemap& map, bool /*update_knowledge*/ )
+               return NULL;
+       }
+       return u;
+}
+
+
+bool ai_move_result::test_route(const unit &un, const team &my_team, const 
unit_map &units, const std::vector<team> &teams, const gamemap &map, bool)
 {
        if (from_==to_) {
                set_error(E_EMPTY_MOVE);
                return false;
        }
-       const shortest_path_calculator calc(un->second,my_team,units,teams,map);
+       const shortest_path_calculator calc(un, my_team, units, teams,map);
 
        //allowed teleports
        std::set<map_location> allowed_teleports;
@@ -244,7 +245,7 @@
        //@todo 1.7: calculate allowed teleports
 
        //do an A*-search
-       route_ = a_star_search(un->first, to_, 10000.0, &calc, map.w(), 
map.h(), &allowed_teleports);
+       route_ = a_star_search(un.get_location(), to_, 10000.0, &calc, map.w(), 
map.h(), &allowed_teleports);
        return true;
 }
 
@@ -264,15 +265,13 @@
        const std::vector<team> &s_teams = s_info.teams;
        const std::vector<team> &teams = info.teams;
 
-       unit_map::const_iterator s_unit;
-       unit_map::const_iterator unit;
-       if ( !test_unit(s_unit,s_units,s_teams) ||
-               ( is_execution() && using_subjective_info() &&
-               !test_unit(unit,units,teams,true) ) ){
-               return;
-       }
-
-       if ( !test_route(s_unit,s_my_team,s_units,s_teams,s_map) ) {
+       const unit *s_unit = get_unit(s_units, s_teams);
+       if (!s_unit || (is_execution() && using_subjective_info() && 
!get_unit(units, teams, true)))
+       {
+               return;
+       }
+
+       if (!test_route(*s_unit, s_my_team, s_units, s_teams, s_map)) {
                //impossible to test using real info without revealing anything
                //prematurely, since moves are done 'in steps'
                return;

Modified: trunk/src/ai/ai_actions.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/ai_actions.hpp?rev=35939&r1=35938&r2=35939&view=diff
==============================================================================
--- trunk/src/ai/ai_actions.hpp (original)
+++ trunk/src/ai/ai_actions.hpp Sat May 30 12:26:00 2009
@@ -154,8 +154,8 @@
        virtual void do_execute();
        virtual void do_init_for_execution();
 private:
-       bool test_unit(unit_map::const_iterator& un, const unit_map& units, 
const std::vector<team>& teams, bool update_knowledge = false );
-       bool test_route(const unit_map::const_iterator& un, const team& 
my_team, const unit_map& units, const std::vector<team>& teams, const gamemap& 
map, bool update_knowledge = false );
+       const unit *get_unit(const unit_map &units, const std::vector<team> 
&teams, bool update_knowledge = false);
+       bool test_route(const unit &un, const team &my_team, const unit_map 
&units, const std::vector<team> &teams, const gamemap &map, bool 
update_knowledge = false);
        const map_location& from_;
        const map_location& to_;
        bool remove_movement_;


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

Reply via email to