Author: crab
Date: Tue Apr 14 22:32:42 2009
New Revision: 34924
URL: http://svn.gna.org/viewcvs/wesnoth?rev=34924&view=rev
Log:
AI Refactoring: removed some code duplication during AI construction.
Now ai_manager is the sole interface to AI module from the point of view of
Wesnoth.
Modified:
trunk/src/ai/ai_manager.cpp
trunk/src/ai/ai_manager.hpp
trunk/src/team.cpp
Modified: trunk/src/ai/ai_manager.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/ai_manager.cpp?rev=34924&r1=34923&r2=34924&view=diff
==============================================================================
--- trunk/src/ai/ai_manager.cpp (original)
+++ trunk/src/ai/ai_manager.cpp Tue Apr 14 22:32:42 2009
@@ -13,11 +13,10 @@
*/
/**
- * Managing the AI lifecycle
+ * Managing the AI lifecycle and interface for the rest of Wesnoth
* @file ai/ai_manager.cpp
*/
-//@todo: shorten this list of includes, for this list is copypasted from ai.cpp
#include "ai.hpp"
#include "ai2.hpp"
#include "ai_configuration.hpp"
@@ -436,6 +435,11 @@
ERR_AI_MANAGER << " unable to read [SIDE] config for side "<<
side << "from file [" << file <<"]"<< std::endl;
return false;
}
+ return add_ai_for_side_from_config(side,cfg,replace);
+}
+
+
+bool ai_manager::add_ai_for_side_from_config( int side, const config& cfg,
bool replace ){
config ai_memory;//AI memory
std::vector<config> ai_parameters;//AI parameters inside [ai] tags. May
contain filters
config global_ai_parameters ;//AI parameters which do not have a filter
applied
Modified: trunk/src/ai/ai_manager.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/ai_manager.hpp?rev=34924&r1=34923&r2=34924&view=diff
==============================================================================
--- trunk/src/ai/ai_manager.hpp (original)
+++ trunk/src/ai/ai_manager.hpp Tue Apr 14 22:32:42 2009
@@ -181,6 +181,7 @@
* AI is not initialized at this point.
* @param side side number (1-based, as in ai_interface::info)
* @param file file name, follows the usual WML convention
+ * @param replace should new ai replace the current ai or 'be placed on
top of it'
* @return success?
* @retval true all ok
* @retval false not all ok
@@ -193,8 +194,22 @@
* @note: Running this command may invalidate references previously
returned by AI Manager
* AI is not initialized at this point.
* @param side side number (1-based, as in ai_interface::info)
+ * @param config the config from which all ai parameters are to be read
+ * @param replace should new ai replace the current ai or 'be placed on
top of it'
+ * @return success?
+ * @retval true all ok
+ * @retval false not all ok
+ */
+ static bool add_ai_for_side_from_config( int side, const config&
config, bool replace = true);
+
+
+ /**
+ * Add active AI for specified side from parameters.
+ * @note: Running this command may invalidate references previously
returned by AI Manager
+ * AI is not initialized at this point.
+ * @param side side number (1-based, as in ai_interface::info)
* @param ai_algorithm_type type of AI algorithm to create
- * @param ai_params AI parameters
+ * @param replace should new ai replace the current ai or 'be placed on
top of it'
* @return success?
* @retval true all ok
* @retval false not all ok
Modified: trunk/src/team.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/team.cpp?rev=34924&r1=34923&r2=34924&view=diff
==============================================================================
--- trunk/src/team.cpp (original)
+++ trunk/src/team.cpp Tue Apr 14 22:32:42 2009
@@ -19,7 +19,6 @@
#include "global.hpp"
-#include "ai/ai_configuration.hpp"
#include "ai/ai_manager.hpp"
#include "foreach.hpp"
#include "game_events.hpp"
@@ -121,23 +120,12 @@
if (!user_team_name.translatable())
user_team_name = user_team_name.from_serialized(user_team_name);
- config ai_memory;
- config global_ai_parameters;//AI parameters which do not have a filter
applied
- std::vector<config> ai_parameters;//AI parameters inside [ai] tags. May
contain filters.
- const config& default_ai_parameters =
ai_configuration::get_default_ai_parameters();
- std::string ai_algorithm_type;
- config effective_ai_params;//Needed only to set some legacy stuff in
team_info
-
- ai_configuration::parse_side_config(cfg, ai_algorithm_type,
global_ai_parameters, ai_parameters, default_ai_parameters, ai_memory,
effective_ai_params );
- ai_manager::add_ai_for_side(side,ai_algorithm_type,true);
-
-
ai_manager::set_active_ai_effective_parameters_for_side(side,effective_ai_params);
-
ai_manager::set_active_ai_global_parameters_for_side(side,global_ai_parameters);
- ai_manager::set_active_ai_memory_for_side(side,ai_memory);
- ai_manager::set_active_ai_parameters_for_side(side,ai_parameters);
-
+ ai_manager::add_ai_for_side_from_config(side,cfg,true);
//legacy parameters
+ const config& global_ai_parameters =
ai_manager::get_active_ai_global_parameters_for_side(side);
+ const config& effective_ai_params =
ai_manager::get_active_ai_effective_parameters_for_side(side);
+
number_of_possible_recruits_to_force_recruit =
lexical_cast<float>(effective_ai_params["number_of_possible_recruits_to_force_recruit"]);
villages_per_scout =
lexical_cast<int>(effective_ai_params["villages_per_scout"]);
leader_value =
lexical_cast<double>(effective_ai_params["leader_value"]);
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits