diff --git a/src/ai/ai.hpp b/src/ai/ai.hpp --- a/src/ai/ai.hpp +++ b/src/ai/ai.hpp @@ -125,7 +125,7 @@ public: static int GetStartNextTime(); /** Wrapper function for AIScanner::GetAIConsoleList */ - static char *GetConsoleList(char *p, const char *last); + static char *GetConsoleList(char *p, const char *last, bool newest_only = false); /** Wrapper function for AIScanner::GetAIConsoleLibraryList */ static char *GetConsoleLibraryList(char *p, const char *last); /** Wrapper function for AIScanner::GetAIInfoList */ diff --git a/src/ai/ai_core.cpp b/src/ai/ai_core.cpp --- a/src/ai/ai_core.cpp +++ b/src/ai/ai_core.cpp @@ -289,9 +289,9 @@ void CcAI(const CommandCost &result, Til return DAYS_IN_YEAR; } -/* static */ char *AI::GetConsoleList(char *p, const char *last) +/* static */ char *AI::GetConsoleList(char *p, const char *last, bool newest_only) { - return AI::ai_scanner->GetAIConsoleList(p, last); + return AI::ai_scanner->GetAIConsoleList(p, last, newest_only); } /* static */ char *AI::GetConsoleLibraryList(char *p, const char *last) diff --git a/src/ai/ai_scanner.cpp b/src/ai/ai_scanner.cpp --- a/src/ai/ai_scanner.cpp +++ b/src/ai/ai_scanner.cpp @@ -330,11 +330,12 @@ AIInfo *AIScanner::FindInfo(const char * return info; } -char *AIScanner::GetAIConsoleList(char *p, const char *last) const +char *AIScanner::GetAIConsoleList(char *p, const char *last, bool newest_only) const { p += seprintf(p, last, "List of AIs:\n"); - AIInfoList::const_iterator it = this->info_list.begin(); - for (; it != this->info_list.end(); it++) { + const AIInfoList &list = newest_only ? this->info_single_list : this->info_list; + AIInfoList::const_iterator it = list.begin(); + for (; it != list.end(); it++) { AIInfo *i = (*it).second; p += seprintf(p, last, "%10s (v%d): %s\n", i->GetName(), i->GetVersion(), i->GetDescription()); } diff --git a/src/ai/ai_scanner.hpp b/src/ai/ai_scanner.hpp --- a/src/ai/ai_scanner.hpp +++ b/src/ai/ai_scanner.hpp @@ -53,7 +53,7 @@ public: /** * Get the list of available AIs for the console. */ - char *GetAIConsoleList(char *p, const char *last) const; + char *GetAIConsoleList(char *p, const char *last, bool newest_only) const; /** * Get the list of available AI Libraries for the console. diff --git a/src/openttd.cpp b/src/openttd.cpp --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -204,7 +204,7 @@ static void ShowHelp() /* We need to initialize the AI, so it finds the AIs */ TarScanner::DoScan(); AI::Initialize(); - p = AI::GetConsoleList(p, lastof(buf)); + p = AI::GetConsoleList(p, lastof(buf), true); AI::Uninitialize(true); /* ShowInfo put output to stderr, but version information should go