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

Reply via email to