Mercurial > hg > openttd
changeset 16524:b341f0626692 draft
(svn r21250) -Fix [FS#3952]: Rescanning AIs didn't "forget" removed AIs
author | rubidium <rubidium@openttd.org> |
---|---|
date | Thu, 18 Nov 2010 23:31:06 +0000 |
parents | e88b654f321e |
children | 141ebdd76921 |
files | src/ai/ai_gui.cpp src/ai/ai_scanner.cpp src/ai/ai_scanner.hpp src/console_cmds.cpp |
diffstat | 4 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -191,6 +191,9 @@ 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); } };
--- a/src/ai/ai_scanner.cpp +++ b/src/ai/ai_scanner.cpp @@ -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 @@ 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 @@ delete (*lit).second; } + this->info_list.clear(); + this->info_single_list.clear(); + this->library_list.clear(); +} + +AIScanner::~AIScanner() +{ + this->Reset(); + delete this->info_dummy; }