12 #include "../stdafx.h" 
   14 #include "../network/network.h" 
   15 #include "../core/random_func.hpp" 
   17 #include "../script/squirrel_class.hpp" 
   21 #include "../safeguards.h" 
   24 AIScannerInfo::AIScannerInfo() :
 
   30 void AIScannerInfo::Initialize()
 
   32   ScriptScanner::Initialize(
"AIScanner");
 
   46 AIScannerInfo::~AIScannerInfo()
 
   63   uint num_random_ais = 0;
 
   69   if (num_random_ais == 0) {
 
   70     DEBUG(script, 0, 
"No suitable AI found, loading 'dummy' AI.");
 
   77     pos = InteractiveRandomRange(num_random_ais);
 
   85 #define GetAIInfo(it) static_cast<AIInfo *>((*it).second) 
   86   while (!GetAIInfo(it)->UseAsRandomAI()) it++;
 
   87   for (; pos > 0; pos--) {
 
   89     while (!GetAIInfo(it)->UseAsRandomAI()) it++;
 
   97   if (this->
info_list.size() == 0) 
return NULL;
 
   98   if (nameParam == NULL) 
return NULL;
 
  107   if (versionParam == -1) {
 
  112     char *e = strrchr(ai_name, 
'.');
 
  113     if (e == NULL) 
return NULL;
 
  116     versionParam = atoi(e);
 
  120   if (force_exact_match) {
 
  122     char ai_name_tmp[1024];
 
  123     seprintf(ai_name_tmp, 
lastof(ai_name_tmp), 
"%s.%d", ai_name, versionParam);
 
  130   ScriptInfoList::iterator it = this->
info_list.begin();
 
  131   for (; it != this->
info_list.end(); it++) {
 
  143 void AIScannerLibrary::Initialize()
 
  145   ScriptScanner::Initialize(
"AIScanner");
 
  162   char library_name[1024];
 
  163   seprintf(library_name, 
lastof(library_name), 
"%s.%d", library, version);
 
  167   ScriptInfoList::iterator iter = this->
info_list.find(library_name);
 
  168   if (iter == this->
info_list.end()) 
return NULL;
 
  170   return static_cast<AILibrary *
>((*iter).second);