(svn r21250) -Fix [FS#3952]: Rescanning AIs didn't "forget" removed AIs

This commit is contained in:
rubidium 2010-11-18 23:31:06 +00:00
parent 40258d927f
commit 924a924907
4 changed files with 21 additions and 1 deletions

View File

@ -191,6 +191,9 @@ struct AIListWindow : public Window {
virtual void OnInvalidateData(int data)
{
this->vscroll->SetCount((int)this->ai_info_list->size() + 1);
/* selected goes from -1 .. length of ai list - 1. */
this->selected = min(this->selected, this->vscroll->GetCount() - 2);
}
};

View File

@ -22,6 +22,8 @@
void AIScanner::RescanAIDir()
{
/* Get rid of information of old AIs. */
this->Reset();
this->ScanScriptDir("info.nut", AI_DIR);
this->ScanScriptDir("library.nut", AI_LIBRARY_DIR);
}
@ -59,7 +61,7 @@ AIScanner::AIScanner() :
AI_CreateAIInfoDummy(this->engine->GetVM());
}
AIScanner::~AIScanner()
void AIScanner::Reset()
{
AIInfoList::iterator it = this->info_list.begin();
for (; it != this->info_list.end(); it++) {
@ -76,6 +78,15 @@ AIScanner::~AIScanner()
delete (*lit).second;
}
this->info_list.clear();
this->info_single_list.clear();
this->library_list.clear();
}
AIScanner::~AIScanner()
{
this->Reset();
delete this->info_dummy;
}

View File

@ -84,6 +84,11 @@ private:
*/
void ScanAIDir();
/**
* Reset all allocated lists.
*/
void Reset();
AIInfo *info_dummy;
AIInfoList info_list;
AIInfoList info_single_list;

View File

@ -1160,6 +1160,7 @@ DEF_CONSOLE_CMD(ConRescanAI)
TarScanner::DoScan();
AI::Rescan();
InvalidateWindowData(WC_AI_LIST, 0, 1);
SetWindowDirty(WC_AI_SETTINGS, 0);
return true;
}