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);