mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r21250) -Fix [FS#3952]: Rescanning AIs didn't "forget" removed AIs
This commit is contained in:
parent
40258d927f
commit
924a924907
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -84,6 +84,11 @@ private:
|
|||
*/
|
||||
void ScanAIDir();
|
||||
|
||||
/**
|
||||
* Reset all allocated lists.
|
||||
*/
|
||||
void Reset();
|
||||
|
||||
AIInfo *info_dummy;
|
||||
AIInfoList info_list;
|
||||
AIInfoList info_single_list;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue