(svn r21703) -Feature [FS#4372]: list_ai_libs console command to get a list of recognized AI libraries (dihedral)

This commit is contained in:
yexo 2011-01-03 14:52:30 +00:00
parent 37b9c31118
commit 8e3e93b96f
5 changed files with 52 additions and 7 deletions

View File

@ -126,6 +126,8 @@ public:
/** Wrapper function for AIScanner::GetAIConsoleList */ /** Wrapper function for AIScanner::GetAIConsoleList */
static char *GetConsoleList(char *p, const char *last); static char *GetConsoleList(char *p, const char *last);
/** Wrapper function for AIScanner::GetAIConsoleLibraryList */
static char *GetConsoleLibraryList(char *p, const char *last);
/** Wrapper function for AIScanner::GetAIInfoList */ /** Wrapper function for AIScanner::GetAIInfoList */
static const AIInfoList *GetInfoList(); static const AIInfoList *GetInfoList();
/** Wrapper function for AIScanner::GetUniqueAIInfoList */ /** Wrapper function for AIScanner::GetUniqueAIInfoList */

View File

@ -294,6 +294,11 @@ void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
return AI::ai_scanner->GetAIConsoleList(p, last); return AI::ai_scanner->GetAIConsoleList(p, last);
} }
/* static */ char *AI::GetConsoleLibraryList(char *p, const char *last)
{
return AI::ai_scanner->GetAIConsoleLibraryList(p, last);
}
/* static */ const AIInfoList *AI::GetInfoList() /* static */ const AIInfoList *AI::GetInfoList()
{ {
return AI::ai_scanner->GetAIInfoList(); return AI::ai_scanner->GetAIInfoList();

View File

@ -343,6 +343,19 @@ char *AIScanner::GetAIConsoleList(char *p, const char *last) const
return p; return p;
} }
char *AIScanner::GetAIConsoleLibraryList(char *p, const char *last) const
{
p += seprintf(p, last, "List of AI Libraries:\n");
AILibraryList::const_iterator it = this->library_list.begin();
for (; it != this->library_list.end(); it++) {
AILibrary *i = (*it).second;
p += seprintf(p, last, "%10s (v%d): %s\n", i->GetName(), i->GetVersion(), i->GetDescription());
}
p += seprintf(p, last, "\n");
return p;
}
#if defined(ENABLE_NETWORK) #if defined(ENABLE_NETWORK)
#include "../network/network_content.h" #include "../network/network_content.h"
#include "../3rdparty/md5/md5.h" #include "../3rdparty/md5/md5.h"

View File

@ -58,6 +58,11 @@ public:
*/ */
char *GetAIConsoleList(char *p, const char *last) const; char *GetAIConsoleList(char *p, const char *last) const;
/**
* Get the list of available AI Libraries for the console.
*/
char *GetAIConsoleLibraryList(char *p, const char *last) const;
/** /**
* Get the list of all registered AIs. * Get the list of all registered AIs.
*/ */

View File

@ -995,21 +995,40 @@ DEF_CONSOLE_CMD(ConRestart)
} }
#ifdef ENABLE_AI #ifdef ENABLE_AI
DEF_CONSOLE_CMD(ConListAI) /**
* Print a text buffer line by line to the console. Lines are seperated by '\n'.
* @param buf The buffer to print.
* @note All newlines are replace by '\0' characters.
*/
static void PrintLineByLine(char *buf)
{ {
char buf[4096]; char *p = buf;
char *p = &buf[0];
p = AI::GetConsoleList(p, lastof(buf));
p = &buf[0];
/* Print output line by line */ /* Print output line by line */
for (char *p2 = &buf[0]; *p2 != '\0'; p2++) { for (char *p2 = buf; *p2 != '\0'; p2++) {
if (*p2 == '\n') { if (*p2 == '\n') {
*p2 = '\0'; *p2 = '\0';
IConsolePrintF(CC_DEFAULT, "%s", p); IConsolePrintF(CC_DEFAULT, "%s", p);
p = p2 + 1; p = p2 + 1;
} }
} }
}
DEF_CONSOLE_CMD(ConListAILibs)
{
char buf[4096];
AI::GetConsoleLibraryList(buf, lastof(buf));
PrintLineByLine(buf);
return true;
}
DEF_CONSOLE_CMD(ConListAI)
{
char buf[4096];
AI::GetConsoleList(buf, lastof(buf));
PrintLineByLine(buf);
return true; return true;
} }
@ -1780,6 +1799,7 @@ void IConsoleStdLibRegister()
IConsoleAliasRegister("developer", "setting developer %+"); IConsoleAliasRegister("developer", "setting developer %+");
#ifdef ENABLE_AI #ifdef ENABLE_AI
IConsoleCmdRegister("list_ai_libs", ConListAILibs);
IConsoleCmdRegister("list_ai", ConListAI); IConsoleCmdRegister("list_ai", ConListAI);
IConsoleCmdRegister("reload_ai", ConReloadAI); IConsoleCmdRegister("reload_ai", ConReloadAI);
IConsoleCmdRegister("rescan_ai", ConRescanAI); IConsoleCmdRegister("rescan_ai", ConRescanAI);