(svn r15095) -Add [NoAI]: allow AI Libraries to be in .tar files (subdir required, as with AIs

-Add [NoAI]: allow multiple versions of the same AI co-exist
-Change [NoAI]: updated the whole method of AI (Library) finding and loading; it is now much more clear and transparent
-Change [NoAI]: the name of the AI is now the name used by CreateInstance()
-Change [NoAI]: make the AI finder a bit more clever, mostly related to version finding
This commit is contained in:
truebrain
2009-01-15 18:15:12 +00:00
parent 31a586dc6f
commit e436f0218f
8 changed files with 173 additions and 154 deletions

View File

@@ -25,11 +25,15 @@ AIFileInfo::~AIFileInfo()
free((void *)this->description);
free((void *)this->date);
free((void *)this->instance_name);
free(this->script_name);
free(this->dir_name);
free(this->main_script);
free(this->SQ_instance);
}
AILibrary::~AILibrary()
{
free((void *)this->category);
}
const char *AIFileInfo::GetAuthor()
{
if (this->author == NULL) this->author = this->engine->CallStringMethodStrdup(*this->SQ_instance, "GetAuthor");
@@ -98,14 +102,9 @@ bool AIFileInfo::CanLoadFromVersion(int version)
return sq_objtobool(&ret) != 0;
}
const char *AIFileInfo::GetDirName()
const char *AIFileInfo::GetMainScript()
{
return this->dir_name;
}
const char *AIFileInfo::GetScriptName()
{
return this->script_name;
return this->main_script;
}
void AIFileInfo::CheckMethods(SQInteger *res, const char *name)
@@ -145,8 +144,7 @@ void AIFileInfo::CheckMethods(SQInteger *res, const char *name)
/* Abort if one method was missing */
if (res != 0) return res;
info->script_name = strdup(info->base->GetCurrentScript());
info->dir_name = strdup(info->base->GetCurrentDirName());
info->main_script = strdup(info->base->GetMainScript());
return 0;
}