Mercurial > hg > openttd
changeset 10757:dcc20859477f draft
(svn r15090) -Add [NoAI] [API CHANGE]: info.nut/library.nut now requires a function GetShortName(), which should return a 4 (four) character string, unique throughout the world. This id is simular to a GRFid.
author | truebrain <truebrain@openttd.org> |
---|---|
date | Thu, 15 Jan 2009 14:37:44 +0000 |
parents | 4198a31a894e |
children | 2027f714bb47 |
files | bin/ai/library/graph/aystar/library.nut bin/ai/library/pathfinder/rail/library.nut bin/ai/library/pathfinder/road/library.nut bin/ai/library/queue/binary_heap/library.nut bin/ai/library/queue/fibonacci_heap/library.nut bin/ai/library/queue/priority_queue/library.nut bin/ai/regression/regression_info.nut bin/ai/wrightai/info.nut src/ai/ai_info.cpp src/ai/ai_info.hpp src/ai/ai_info_dummy.cpp src/ai/ai_scanner.cpp |
diffstat | 12 files changed, 31 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/bin/ai/library/graph/aystar/library.nut +++ b/bin/ai/library/graph/aystar/library.nut @@ -3,6 +3,7 @@ class AyStar extends AILibrary { function GetAuthor() { return "OpenTTD NoAI Developers Team"; } function GetName() { return "AyStar"; } + function GetShortName() { return "GRA*"; } function GetDescription() { return "An implementation of AyStar"; } function GetVersion() { return 4; } function GetDate() { return "2008-06-11"; }
--- a/bin/ai/library/pathfinder/rail/library.nut +++ b/bin/ai/library/pathfinder/rail/library.nut @@ -3,6 +3,7 @@ class Rail extends AILibrary { function GetAuthor() { return "OpenTTD NoAI Developers Team"; } function GetName() { return "Rail"; } + function GetShortName() { return "PFRL"; } function GetDescription() { return "An implementation of a rail pathfinder"; } function GetVersion() { return 1; } function GetDate() { return "2008-09-22"; }
--- a/bin/ai/library/pathfinder/road/library.nut +++ b/bin/ai/library/pathfinder/road/library.nut @@ -3,6 +3,7 @@ class Road extends AILibrary { function GetAuthor() { return "OpenTTD NoAI Developers Team"; } function GetName() { return "Road"; } + function GetShortName() { return "PFRO"; } function GetDescription() { return "An implementation of a road pathfinder"; } function GetVersion() { return 3; } function GetDate() { return "2008-06-18"; }
--- a/bin/ai/library/queue/binary_heap/library.nut +++ b/bin/ai/library/queue/binary_heap/library.nut @@ -3,6 +3,7 @@ class BinaryHeap extends AILibrary { function GetAuthor() { return "OpenTTD NoAI Developers Team"; } function GetName() { return "Binary Heap"; } + function GetShortName() { return "QUBH"; } function GetDescription() { return "An implementation of a Binary Heap"; } function GetVersion() { return 1; } function GetDate() { return "2008-06-10"; }
--- a/bin/ai/library/queue/fibonacci_heap/library.nut +++ b/bin/ai/library/queue/fibonacci_heap/library.nut @@ -3,6 +3,7 @@ class FibonacciHeap extends AILibrary { function GetAuthor() { return "OpenTTD NoAI Developers Team"; } function GetName() { return "Fibonacci Heap"; } + function GetShortName() { return "QUFH"; } function GetDescription() { return "An implementation of a Fibonacci Heap"; } function GetVersion() { return 1; } function GetDate() { return "2008-08-22"; }
--- a/bin/ai/library/queue/priority_queue/library.nut +++ b/bin/ai/library/queue/priority_queue/library.nut @@ -3,6 +3,7 @@ class PriorityQueue extends AILibrary { function GetAuthor() { return "OpenTTD NoAI Developers Team"; } function GetName() { return "Priority Queue"; } + function GetShortName() { return "QUPQ"; } function GetDescription() { return "An implementation of a Priority Queue"; } function GetVersion() { return 2; } function GetDate() { return "2008-06-10"; }
--- a/bin/ai/regression/regression_info.nut +++ b/bin/ai/regression/regression_info.nut @@ -3,6 +3,7 @@ class Regression extends AIInfo { function GetAuthor() { return "OpenTTD NoAI Developers Team"; } function GetName() { return "Regression"; } + function GetShortName() { return "REGR"; } function GetDescription() { return "This runs regression-tests on all commands. On the same map the result should always be the same."; } function GetVersion() { return 1; } function GetDate() { return "2007-03-18"; }
--- a/bin/ai/wrightai/info.nut +++ b/bin/ai/wrightai/info.nut @@ -3,6 +3,7 @@ class WrightAI extends AIInfo { function GetAuthor() { return "OpenTTD NoAI Developers Team"; } function GetName() { return "WrightAI"; } + function GetShortName() { return "WRAI"; } function GetDescription() { return "A simple AI that tries to beat you with only aircrafts"; } function GetVersion() { return 2; } function GetDate() { return "2008-02-24"; }
--- a/src/ai/ai_info.cpp +++ b/src/ai/ai_info.cpp @@ -42,6 +42,12 @@ return this->name; } +const char *AIFileInfo::GetShortName() +{ + if (this->short_name == NULL) this->short_name = this->engine->CallStringMethodStrdup(*this->SQ_instance, "GetShortName"); + return this->short_name; +} + const char *AIFileInfo::GetDescription() { if (this->description == NULL) this->description = this->engine->CallStringMethodStrdup(*this->SQ_instance, "GetDescription"); @@ -106,7 +112,7 @@ { if (!this->engine->MethodExists(*this->SQ_instance, name)) { char error[1024]; - snprintf(error, sizeof(error), "your AIFileInfo doesn't have the method '%s'", name); + snprintf(error, sizeof(error), "your info.nut/library.nut doesn't have the method '%s'", name); this->engine->ThrowError(error); *res = SQ_ERROR; } @@ -127,6 +133,7 @@ /* Check if all needed fields are there */ info->CheckMethods(&res, "GetAuthor"); info->CheckMethods(&res, "GetName"); + info->CheckMethods(&res, "GetShortName"); info->CheckMethods(&res, "GetDescription"); info->CheckMethods(&res, "GetVersion"); info->CheckMethods(&res, "GetDate");
--- a/src/ai/ai_info.hpp +++ b/src/ai/ai_info.hpp @@ -35,7 +35,7 @@ friend class AIInfo; friend class AILibrary; - AIFileInfo() : author(NULL), name(NULL), description(NULL), date(NULL), instance_name(NULL) {}; + AIFileInfo() : author(NULL), name(NULL), short_name(NULL), description(NULL), date(NULL), instance_name(NULL) {}; ~AIFileInfo(); /** @@ -49,6 +49,11 @@ const char *GetName(); /** + * Get the 4 character long short name of the AI. + */ + const char *GetShortName(); + + /** * Get the description of the AI. */ const char *GetDescription(); @@ -106,6 +111,7 @@ class AIScanner *base; const char *author; const char *name; + const char *short_name; const char *description; const char *date; const char *instance_name;
--- a/src/ai/ai_info_dummy.cpp +++ b/src/ai/ai_info_dummy.cpp @@ -16,6 +16,7 @@ class DummyAI extends AIInfo { \n\ function GetAuthor() { return \"OpenTTD NoAI Developers Team\"; } \n\ function GetName() { return \"DummyAI\"; } \n\ + function GetShortName() { return \"DUMM\"; } \n\ function GetDescription() { return \"A Dummy AI that is loaded when your ai/ dir is empty\"; }\n\ function GetVersion() { return 1; } \n\ function GetDate() { return \"2008-07-26\"; } \n\
--- a/src/ai/ai_scanner.cpp +++ b/src/ai/ai_scanner.cpp @@ -308,6 +308,13 @@ { const char *ai_name = info->GetDirName(); + /* Check if GetShortName follows the rules */ + if (strlen(info->GetShortName()) != 4) { + DEBUG(ai, 0, "The AI '%s' returned a string from GetShortName() which is not four characaters. Unable to load the AI.", info->GetDirName()); + delete info; + return; + } + /* Check if we register twice; than the first always wins */ if (this->info_list.find(ai_name) != this->info_list.end()) { /* In case they are not the same dir, give a warning */