(svn r15045) -Add [NoAI API CHANGE]: in info.nut you can now have (optional) a CanLoadFromVersion(version), which should return true/false, to indicate if you can load a savegame made with your AI of version 'version'

-Add [NoAI API CHANGE]: in main.nut the Load() function now should be Load(version, data), where 'version' is the version of your AI which made the savegame
-Codechange [NoAI]: various of function renames to make things more sane
-Add [NoAI]: push the 'version' of the AI through various of layers
-Codechange [NoAI]: various of code cleanups
-Add [NoAI]: store the version of the AI in the savegame too
This commit is contained in:
truebrain
2009-01-13 01:46:46 +00:00
parent 27c0a4c801
commit 5573d9a459
13 changed files with 84 additions and 73 deletions

View File

@@ -344,26 +344,10 @@ AIInfo *AIScanner::SelectRandomAI()
AIInfoList::iterator it = this->info_list.begin();
for (; pos > 0; pos--) it++;
AIInfoList::iterator first_it = it;
AIInfo *i = (*it).second;
if (!i->AllowStartup()) {
/* We can't start this AI, try to find the next best */
do {
it++;
if (it == this->info_list.end()) it = this->info_list.begin();
/* Back at the beginning? We can't start an AI. */
if (first_it == it) {
DEBUG(ai, 0, "No suitable AI found, loading 'dummy' AI.");
return this->info_dummy;
}
i = (*it).second;
} while (!i->AllowStartup());
}
return i;
return (*it).second;
}
AIInfo *AIScanner::FindAI(const char *name)
AIInfo *AIScanner::FindInfo(const char *name, int version)
{
if (this->info_list.size() == 0) return NULL;
if (name == NULL) return NULL;
@@ -372,7 +356,7 @@ AIInfo *AIScanner::FindAI(const char *name)
for (; it != this->info_list.end(); it++) {
AIInfo *i = (*it).second;
if (strcasecmp(name, (*it).first) == 0 && i->AllowStartup()) {
if (strcasecmp(name, (*it).first) == 0 && i->CanLoadFromVersion(version)) {
return i;
}
}
@@ -386,8 +370,7 @@ char *AIScanner::GetAIConsoleList(char *p, const char *last)
AIInfoList::iterator it = this->info_list.begin();
for (; it != this->info_list.end(); it++) {
AIInfo *i = (*it).second;
if (!i->AllowStartup()) continue;
p += seprintf(p, last, "%10s: %s\n", (*it).first, i->GetDescription());
p += seprintf(p, last, "%10s (v%d): %s\n", (*it).first, i->GetVersion(), i->GetDescription());
}
p += seprintf(p, last, "\n");