ai/registry.cpp

Go to the documentation of this file.
00001 /* $Id: registry.cpp 52533 2012-01-07 02:35:17Z shadowmaster $ */
00002 /*
00003    Copyright (C) 2009 - 2012 by Yurii Chernyi <terraninfo@terraninfo.net>
00004    Part of the Battle for Wesnoth Project http://www.wesnoth.org/
00005 
00006    This program is free software; you can redistribute it and/or modify
00007    it under the terms of the GNU General Public License as published by
00008    the Free Software Foundation; either version 2 of the License, or
00009    (at your option) any later version.
00010    This program is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY.
00012 
00013    See the COPYING file for more details.
00014 */
00015 
00016 /**
00017  * All known c++ AI parts. Workaround to a linker feature of not including all symbols from files, and including only actually referenced stuff. this is not good for 'static registry' pattern. (other workarounds such as --whole-archive for ld are possible, but require messing with all buildsystems)
00018  * @file
00019  */
00020 
00021 #include "composite/ai.hpp"
00022 #include "composite/aspect.hpp"
00023 #include "composite/engine_default.hpp"
00024 #include "composite/engine_fai.hpp"
00025 #include "composite/engine_lua.hpp"
00026 #include "composite/goal.hpp"
00027 #include "default/ai.hpp"
00028 #include "formula/ai.hpp"
00029 #include "registry.hpp"
00030 #include "testing/aspect_attacks.hpp"
00031 #include "testing/ca.hpp"
00032 #include "testing/ca_testing_move_to_targets.hpp"
00033 #include "testing/ca_testing_recruitment.hpp"
00034 #include "testing/ca_global_fallback.hpp"
00035 #include "testing/stage_rca.hpp"
00036 #include "testing/stage_fallback.hpp"
00037 
00038 namespace ai {
00039 // =======================================================================
00040 // AIs
00041 // =======================================================================
00042 
00043 static register_ai_factory<ai_composite> ai_factory_default("");
00044 static register_ai_factory<ai_composite> ai_default_ai_factory("default_ai");
00045 static register_ai_factory<idle_ai> ai_idle_ai_factory("idle_ai");
00046 static register_ai_factory<ai_composite> ai_composite_ai_factory("composite_ai");
00047 
00048 
00049 // =======================================================================
00050 // Engines
00051 // =======================================================================
00052 
00053 static register_engine_factory<engine_cpp>
00054     composite_ai_factory_cpp("cpp");
00055 
00056 static register_engine_factory<engine_fai>
00057     composite_ai_factory_fai("fai");
00058 
00059 static register_engine_factory<engine_lua>
00060     composite_ai_factory_lua("lua");
00061 
00062 // =======================================================================
00063 // Stages
00064 // =======================================================================
00065 static register_stage_factory<testing_ai_default::candidate_action_evaluation_loop>
00066     candidate_action_evaluation_loop_factory("testing_ai_default::candidate_action_evaluation_loop");
00067 
00068 static register_stage_factory<testing_ai_default::fallback_to_other_ai>
00069     fallback_to_other_ai_factory("testing_ai_default::fallback");
00070 
00071 static register_stage_factory<ai_default_recruitment_stage>
00072     ai_default_recruitment_stage_factory("ai_default::recruitment");
00073 
00074 static register_stage_factory<idle_stage>
00075     ai_idle_stage_factory("empty");
00076 
00077 
00078 // =======================================================================
00079 // Candidate actions
00080 // =======================================================================
00081 
00082 static register_candidate_action_factory<testing_ai_default::goto_phase>
00083     goto_phase_factory("testing_ai_default::goto_phase");
00084 
00085 static register_candidate_action_factory<testing_ai_default::aspect_recruitment_phase>
00086     aspect_recruitment_phase_factory("testing_ai_default::aspect_recruitment_phase");
00087 
00088 static register_candidate_action_factory<testing_ai_default::recruitment_phase>
00089     recruitment_phase_factory("testing_ai_default::recruitment_phase");
00090 
00091 static register_candidate_action_factory<testing_ai_default::combat_phase>
00092     combat_phase_factory("testing_ai_default::combat_phase");
00093 
00094 static register_candidate_action_factory<testing_ai_default::move_leader_to_goals_phase>
00095     move_leader_to_goals_phase_factory("testing_ai_default::move_leader_to_goals_phase");
00096 
00097 static register_candidate_action_factory<testing_ai_default::move_leader_to_keep_phase>
00098     move_leader_to_keep_phase_factory("testing_ai_default::move_leader_to_keep_phase");
00099 
00100 static register_candidate_action_factory<testing_ai_default::get_villages_phase>
00101     get_villages_phase_factory("testing_ai_default::get_villages_phase");
00102 
00103 static register_candidate_action_factory<testing_ai_default::get_healing_phase>
00104     get_healing_phase_factory("testing_ai_default::get_healing_phase");
00105 
00106 static register_candidate_action_factory<testing_ai_default::retreat_phase>
00107     retreat_phase_factory("testing_ai_default::retreat_phase");
00108 
00109 static register_candidate_action_factory<testing_ai_default::simple_move_and_targeting_phase>
00110     simple_move_and_targeting_phase_factory("testing_ai_default::simple_move_and_targeting_phase");
00111 
00112 static register_candidate_action_factory<testing_ai_default::testing_move_to_targets_phase>
00113     default_move_to_targets_phase_factory("testing_ai_default::default_move_to_targets_phase");
00114 
00115 static register_candidate_action_factory<testing_ai_default::testing_move_to_targets_phase>
00116     testing_move_to_targets_phase_factory("testing_ai_default::testing_move_to_targets_phase");
00117 
00118 static register_candidate_action_factory<testing_ai_default::leader_control_phase>
00119     leader_control_phase_factory("testing_ai_default::leader_control_phase");
00120 
00121 static register_candidate_action_factory<testing_ai_default::testing_recruitment_phase>
00122     testing_recruitment_phase_factory("testing_ai_default::testing_recruitment_phase");
00123 
00124 static register_candidate_action_factory<testing_ai_default::passive_leader_shares_keep_phase>
00125     passive_leader_shares_keep_phase_factory("testing_ai_default::passive_leader_shares_keep_phase");
00126 
00127 static register_candidate_action_factory<testing_ai_default::global_fallback_phase>
00128     global_fallback_phase_factory("testing_ai_default::global_fallback_phase");
00129 
00130 // =======================================================================
00131 // Goals
00132 // =======================================================================
00133 
00134 static register_goal_factory<target_unit_goal>
00135     goal_factory("");
00136 
00137 
00138 static register_goal_factory<target_unit_goal>
00139     goal_factory_target("target");
00140 
00141 
00142 static register_goal_factory<target_location_goal>
00143     goal_factory_target_location("target_location");
00144 
00145 
00146 static register_goal_factory<protect_location_goal>
00147     goal_factory_protect("protect");
00148 
00149 
00150 static register_goal_factory<protect_location_goal>
00151     goal_factory_protect_location("protect_location");
00152 
00153 
00154 static register_goal_factory<protect_my_unit_goal>
00155     goal_factory_protect_my_unit("protect_my_unit");
00156 
00157 
00158 static register_goal_factory<protect_unit_goal>
00159     goal_factory_protect_unit("protect_unit");
00160 
00161 static register_goal_factory<lua_goal>
00162     goal_factory_lua_goal("lua_goal");
00163 
00164 
00165 // =======================================================================
00166 // Aspects
00167 // =======================================================================
00168 
00169 //name=composite_aspect
00170 static register_aspect_factory< composite_aspect<double> >
00171     aggression__composite_aspect_factory("aggression*composite_aspect");
00172 
00173 static register_aspect_factory< composite_aspect<int> >
00174     attack_depth__composite_aspect_factory("attack_depth*composite_aspect");
00175 
00176 static register_aspect_factory< composite_aspect< attacks_vector > >
00177     attacks__composite_aspect_factory("attacks*composite_aspect");
00178 
00179 static register_aspect_factory< composite_aspect< terrain_filter > >
00180     avoid__composite_aspect_factory("avoid*composite_aspect");
00181 
00182 static register_aspect_factory< composite_aspect<double> >
00183     caution__composite_aspect_factory("caution*composite_aspect");
00184 
00185 static register_aspect_factory< composite_aspect<std::string> >
00186     grouping__composite_aspect_factory("grouping*composite_aspect");
00187 
00188 static register_aspect_factory< composite_aspect<double> >
00189     leader_aggression__composite_aspect_factory("leader_aggression*composite_aspect");
00190 
00191 static register_aspect_factory< composite_aspect<config> >
00192     leader_goal__composite_aspect_factory("leader_goal*composite_aspect");
00193 
00194 static register_aspect_factory< composite_aspect<double> >
00195     leader_value__composite_aspect_factory("leader_value*composite_aspect");
00196 
00197 static register_aspect_factory< composite_aspect<double> >
00198     number_of_possible_recruits_to_force_recruit__composite_aspect_factory("number_of_possible_recruits_to_force_recruit*composite_aspect");
00199 
00200 static register_aspect_factory< composite_aspect<bool> >
00201     passive_leader__composite_aspect_factory("passive_leader*composite_aspect");
00202 
00203 static register_aspect_factory< composite_aspect<bool> >
00204     passive_leader_shares_keep__composite_aspect_factory("passive_leader_shares_keep*composite_aspect");
00205 
00206 static register_aspect_factory< composite_aspect<ministage> >
00207         recruitment__composite_aspect_factory("recruitment*composite_aspect");
00208 
00209 static register_aspect_factory< composite_aspect<bool> >
00210     recruitment_ignore_bad_combat__composite_aspect_factory("recruitment_ignore_bad_combat*composite_aspect");
00211 
00212 static register_aspect_factory< composite_aspect<bool> >
00213     recruitment_ignore_bad_movement__composite_aspect_factory("recruitment_ignore_bad_movement*composite_aspect");
00214 
00215 static register_aspect_factory< composite_aspect< std::vector<std::string> > >
00216     recruitment_pattern__composite_aspect_factory("recruitment_pattern*composite_aspect");
00217 
00218 static register_aspect_factory< composite_aspect<double> >
00219     scout_village_targeting__composite_aspect_factory("scout_village_targeting*composite_aspect");
00220 
00221 static register_aspect_factory< composite_aspect<bool> >
00222     simple_targeting__composite_aspect_factory("simple_targeting*composite_aspect");
00223 
00224 static register_aspect_factory< composite_aspect<bool> >
00225     support_villages__composite_aspect_factory("support_villages*composite_aspect");
00226 
00227 static register_aspect_factory< composite_aspect<double> >
00228     village_value__composite_aspect_factory("village_value*composite_aspect");
00229 
00230 static register_aspect_factory< composite_aspect<int> >
00231     villages_per_scout__composite_aspect_factory("villages_per_scout*composite_aspect");
00232 
00233 
00234 //name=standard_aspect
00235 static register_aspect_factory< standard_aspect<double> >
00236     aggression__standard_aspect_factory("aggression*standard_aspect");
00237 
00238 static register_aspect_factory< standard_aspect<int> >
00239     attack_depth__standard_aspect_factory("attack_depth*standard_aspect");
00240 
00241 static register_aspect_factory< testing_ai_default::aspect_attacks >
00242     attacks__testing_ai_default_aspect_attacks_factory("attacks*testing_ai_default::aspect_attacks");
00243 
00244 static register_aspect_factory< standard_aspect< terrain_filter > >
00245     avoid__standard_aspect_factory("avoid*standard_aspect");
00246 
00247 static register_aspect_factory< standard_aspect<double> >
00248     caution__standard_aspect_factory("caution*standard_aspect");
00249 
00250 static register_aspect_factory< standard_aspect<std::string> >
00251     grouping__standard_aspect_factory("grouping*standard_aspect");
00252 
00253 static register_aspect_factory< standard_aspect<double> >
00254     leader_aggression__standard_aspect_factory("leader_aggression*standard_aspect");
00255 
00256 static register_aspect_factory< standard_aspect<config> >
00257     leader_goal__standard_aspect_factory("leader_goal*standard_aspect");
00258 
00259 static register_aspect_factory< standard_aspect<double> >
00260     leader_value__standard_aspect_factory("leader_value*standard_aspect");
00261 
00262 static register_aspect_factory< standard_aspect<double> >
00263     number_of_possible_recruits_to_force_recruit__standard_aspect_factory("number_of_possible_recruits_to_force_recruit*standard_aspect");
00264 
00265 static register_aspect_factory< standard_aspect<bool> >
00266     passive_leader__standard_aspect_factory("passive_leader*standard_aspect");
00267 
00268 static register_aspect_factory< standard_aspect<bool> >
00269     passive_leader_shares_keep__standard_aspect_factory("passive_leader_shares_keep*standard_aspect");
00270 
00271 static register_aspect_factory< standard_aspect<ministage> >
00272         recruitment__standard_aspect_factory("recruitment*standard_aspect");
00273 
00274 static register_aspect_factory< standard_aspect<bool> >
00275     recruitment_ignore_bad_combat__standard_aspect_factory("recruitment_ignore_bad_combat*standard_aspect");
00276 
00277 static register_aspect_factory< standard_aspect<bool> >
00278     recruitment_ignore_bad_movement__standard_aspect_factory("recruitment_ignore_bad_movement*standard_aspect");
00279 
00280 static register_aspect_factory< standard_aspect< std::vector<std::string> > >
00281     recruitment_pattern__standard_aspect_factory("recruitment_pattern*standard_aspect");
00282 
00283 static register_aspect_factory< standard_aspect<double> >
00284     scout_village_targeting__standard_aspect_factory("scout_village_targeting*standard_aspect");
00285 
00286 static register_aspect_factory< standard_aspect<bool> >
00287     simple_targeting__standard_aspect_factory("simple_targeting*standard_aspect");
00288 
00289 static register_aspect_factory< standard_aspect<bool> >
00290     support_villages__standard_aspect_factory("support_villages*standard_aspect");
00291 
00292 static register_aspect_factory< standard_aspect<double> >
00293     village_value__standard_aspect_factory("village_value*standard_aspect");
00294 
00295 static register_aspect_factory< standard_aspect<int> >
00296     villages_per_scout__standard_aspect_factory("villages_per_scout*standard_aspect");
00297 
00298 
00299 //name = default
00300 static register_aspect_factory< standard_aspect<double> >
00301     aggression__standard_aspect_factory2("aggression*");
00302 
00303 static register_aspect_factory< standard_aspect<int> >
00304     attack_depth__standard_aspect_factory2("attack_depth*");
00305 
00306 static register_aspect_factory< testing_ai_default::aspect_attacks >
00307     attacks__testing_ai_default_aspect_attacks_factory2("attacks*");
00308 
00309 static register_aspect_factory< standard_aspect< terrain_filter > >
00310     avoid__standard_aspect_factory2("avoid*");
00311 
00312 static register_aspect_factory< standard_aspect<double> >
00313     caution__standard_aspect_factory2("caution*");
00314 
00315 static register_aspect_factory< standard_aspect<std::string> >
00316     grouping__standard_aspect_factory2("grouping*");
00317 
00318 static register_aspect_factory< standard_aspect<double> >
00319     leader_aggression__standard_aspect_factory2("leader_aggression*");
00320 
00321 static register_aspect_factory< standard_aspect<config> >
00322     leader_goal__standard_aspect_factory2("leader_goal*");
00323 
00324 static register_aspect_factory< standard_aspect<double> >
00325     leader_value__standard_aspect_factory2("leader_value*");
00326 
00327 static register_aspect_factory< standard_aspect<double> >
00328     number_of_possible_recruits_to_force_recruit__standard_aspect_factory2("number_of_possible_recruits_to_force_recruit*");
00329 
00330 static register_aspect_factory< standard_aspect<bool> >
00331     passive_leader__standard_aspect_factory2("passive_leader*");
00332 
00333 static register_aspect_factory< standard_aspect<bool> >
00334     passive_leader_shares_keep__standard_aspect_factory2("passive_leader_shares_keep*");
00335 
00336 static register_aspect_factory< standard_aspect<ministage> >
00337         recruitment__standard_aspect_factory2("recruitment*");
00338 
00339 static register_aspect_factory< standard_aspect<bool> >
00340     recruitment_ignore_bad_combat__standard_aspect_factory2("recruitment_ignore_bad_combat*");
00341 
00342 static register_aspect_factory< standard_aspect<bool> >
00343     recruitment_ignore_bad_movement__standard_aspect_factory2("recruitment_ignore_bad_movement*");
00344 
00345 static register_aspect_factory< standard_aspect< std::vector<std::string> > >
00346     recruitment_pattern__standard_aspect_factory2("recruitment_pattern*");
00347 
00348 static register_aspect_factory< standard_aspect<double> >
00349     scout_village_targeting__standard_aspect_factory2("scout_village_targeting*");
00350 
00351 static register_aspect_factory< standard_aspect<bool> >
00352     simple_targeting__standard_aspect_factory2("simple_targeting*");
00353 
00354 static register_aspect_factory< standard_aspect<bool> >
00355     support_villages__standard_aspect_factory2("support_villages*");
00356 
00357 static register_aspect_factory< standard_aspect<double> >
00358     village_value__standard_aspect_factory2("village_value*");
00359 
00360 static register_aspect_factory< standard_aspect<int> >
00361     villages_per_scout__standard_aspect_factory2("villages_per_scout*");
00362 
00363 
00364 //name = lua
00365 static register_lua_aspect_factory< lua_aspect<double> >
00366     aggression__lua_aspect_factory("aggression*lua_aspect");
00367 
00368 static register_lua_aspect_factory< lua_aspect<int> >
00369     attack_depth__lua_aspect_factory("attack_depth*lua_aspect");
00370 
00371 static register_lua_aspect_factory< lua_aspect<terrain_filter> >
00372     avoid__lua_aspect_factory("avoid*lua_aspect");
00373 
00374 static register_lua_aspect_factory< lua_aspect<double> >
00375     caution__lua_aspect_factory("caution*lua_aspect");
00376 
00377 static register_lua_aspect_factory< lua_aspect<std::string> >
00378     grouping__lua_aspect_factory("grouping*lua_aspect");
00379 
00380 static register_lua_aspect_factory< lua_aspect<double> >
00381     leader_aggression__lua_aspect_factory("leader_aggression*lua_aspect");
00382 
00383 static register_lua_aspect_factory< lua_aspect<config> >
00384     leader_goal__lua_aspect_factory("leader_goal*lua_aspect");
00385 
00386 static register_lua_aspect_factory< lua_aspect<double> >
00387     leader_value__lua_aspect_factory("leader_value*lua_aspect");
00388 
00389 static register_lua_aspect_factory< lua_aspect<double> >
00390     number_of_possible_recruits_to_force_recruit__lua_aspect_factory("number_of_possible_recruits_to_force_recruit*lua_aspect");
00391 
00392 static register_lua_aspect_factory< lua_aspect<bool> >
00393     passive_leader__lua_aspect_factory("passive_leader*lua_aspect");
00394 
00395 static register_lua_aspect_factory< lua_aspect<bool> >
00396     passive_leader_shares_keep__lua_aspect_factory("passive_leader_shares_keep*lua_aspect");
00397 
00398 static register_lua_aspect_factory< lua_aspect<bool> >
00399     recruitment_ignore_bad_combat__lua_aspect_factory("recruitment_ignore_bad_combat*lua_aspect");
00400 
00401 static register_lua_aspect_factory< lua_aspect<bool> >
00402     recruitment_ignore_bad_movement__lua_aspect_factory("recruitment_ignore_bad_movement*lua_aspect");
00403 
00404 static register_lua_aspect_factory< lua_aspect<double> >
00405     scout_village_targeting__lua_aspect_factory("scout_village_targeting*lua_aspect");
00406 
00407 static register_lua_aspect_factory< lua_aspect<bool> >
00408     simple_targeting__lua_aspect_factory("simple_targeting*lua_aspect");
00409 
00410 static register_lua_aspect_factory< lua_aspect<bool> >
00411     support_villages__lua_aspect_factory("support_villages*lua_aspect");
00412 
00413 static register_lua_aspect_factory< lua_aspect<double> >
00414     village_value__lua_aspect_factory("village_value*lua_aspect");
00415 
00416 static register_lua_aspect_factory< lua_aspect<int> >
00417     villages_per_scout__lua_aspect_factory("villages_per_scout*lua_aspect");
00418 
00419 static register_lua_aspect_factory< lua_aspect< std::vector<std::string> > >
00420     recruitment_pattern__lua_aspect_factory("recruitment_pattern*lua_aspect");
00421 
00422 void registry::init()
00423 {
00424 }
00425 
00426 } //end of namespace ai
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated by doxygen 1.7.1 on Fri May 25 2012 01:02:44 for The Battle for Wesnoth
Gna! | Forum | Wiki | CIA | devdocs