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