diff options
author | yexo <yexo@openttd.org> | 2009-04-19 15:14:23 +0000 |
---|---|---|
committer | yexo <yexo@openttd.org> | 2009-04-19 15:14:23 +0000 |
commit | a91ff2d5e8b0a65da160b93f2aa293d3c54c2ae3 (patch) | |
tree | 9b72fe67cc6fc9267cfb13a40999747e5552175c /src | |
parent | ef909252265088d0a3d0949f37d34ddb853a18c7 (diff) | |
download | openttd-a91ff2d5e8b0a65da160b93f2aa293d3c54c2ae3.tar.xz |
(svn r16093) -Feature [FS#2808]: Add GetURL() as possible function to info.nut. If AIs implement it, that url is shown when the AI crashes and also in the AI selection window.
Diffstat (limited to 'src')
-rw-r--r-- | src/ai/ai_gui.cpp | 5 | ||||
-rw-r--r-- | src/ai/ai_instance.cpp | 7 | ||||
-rw-r--r-- | src/lang/english.txt | 1 | ||||
-rw-r--r-- | src/script/script_info.cpp | 6 | ||||
-rw-r--r-- | src/script/script_info.hpp | 9 |
5 files changed, 27 insertions, 1 deletions
diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index b534d89cd..90e7b6394 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -101,6 +101,11 @@ struct AIListWindow : public Window { SetDParam(0, selected_info->GetVersion()); DrawString(4, this->widget[AIL_WIDGET_INFO_BG].right - 4, y, STR_AI_VERSION, TC_BLACK); y += 13; + if (selected_info->GetURL() != NULL) { + SetDParamStr(0, selected_info->GetURL()); + DrawString(4, this->widget[AIL_WIDGET_INFO_BG].right - 4, y, STR_AI_URL, TC_BLACK); + y += 13; + } SetDParamStr(0, selected_info->GetDescription()); DrawStringMultiLine(4, this->width - 8, y, this->widget[AIL_WIDGET_INFO_BG].bottom, STR_JUST_RAW_STRING); } diff --git a/src/ai/ai_instance.cpp b/src/ai/ai_instance.cpp index 03f6b67ba..dcd68410b 100644 --- a/src/ai/ai_instance.cpp +++ b/src/ai/ai_instance.cpp @@ -19,6 +19,7 @@ #define DEFINE_SCRIPT_FILES #include "ai_info.hpp" +#include "ai_config.hpp" #include "ai_storage.hpp" #include "ai_instance.hpp" #include "ai_gui.hpp" @@ -258,6 +259,12 @@ void AIInstance::Died() if (strcmp(GetCompany(_current_company)->ai_info->GetMainScript(), "%_dummy") != 0) { ShowErrorMessage(INVALID_STRING_ID, STR_AI_PLEASE_REPORT_CRASH, 0, 0); } + + const AIInfo *info = AIConfig::GetConfig(_current_company)->GetInfo(); + if (info->GetURL() != NULL) { + AILog::Info("Please report the error to the following URL:"); + AILog::Info(info->GetURL()); + } } void AIInstance::GameLoop() diff --git a/src/lang/english.txt b/src/lang/english.txt index 37bbca1a0..204d26c86 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -3593,6 +3593,7 @@ STR_AI_RANDOM_AI :Random AI STR_AI_SETTINGS_CAPTION :{WHITE}AI Parameters STR_AI_AUTHOR :Author: {RAW_STRING} STR_AI_VERSION :Version: {NUM} +STR_AI_URL :URL: {RAW_STRING} STR_AI_PLEASE_REPORT_CRASH :{WHITE}One of the running AIs crashed. Please report this to the AI author with a screenshot of the AI Debug Window. ######## diff --git a/src/script/script_info.cpp b/src/script/script_info.cpp index 12df08ce5..eaf757553 100644 --- a/src/script/script_info.cpp +++ b/src/script/script_info.cpp @@ -19,6 +19,7 @@ ScriptFileInfo::~ScriptFileInfo() free((void *)this->description); free((void *)this->date); free((void *)this->instance_name); + free((void *)this->url); free(this->main_script); free(this->SQ_instance); } @@ -68,5 +69,10 @@ bool ScriptFileInfo::CheckMethod(const char *name) const if (!info->engine->CallIntegerMethod(*info->SQ_instance, "GetVersion", &info->version)) return SQ_ERROR; if (!info->engine->CallStringMethodStrdup(*info->SQ_instance, "CreateInstance", &info->instance_name)) return SQ_ERROR; + /* The GetURL function is optional. */ + if (info->engine->MethodExists(*info->SQ_instance, "GetURL")) { + if (!info->engine->CallStringMethodStrdup(*info->SQ_instance, "GetURL", &info->url)) return SQ_ERROR; + } + return 0; } diff --git a/src/script/script_info.hpp b/src/script/script_info.hpp index d34fd4cef..945e86407 100644 --- a/src/script/script_info.hpp +++ b/src/script/script_info.hpp @@ -17,7 +17,8 @@ public: short_name(NULL), description(NULL), date(NULL), - instance_name(NULL) + instance_name(NULL), + url(NULL) {} ~ScriptFileInfo(); @@ -57,6 +58,11 @@ public: const char *GetInstanceName() const { return this->instance_name; } /** + * Get the website for this script. + */ + const char *GetURL() const { return this->url; } + + /** * Get the filename of the main.nut script. */ const char *GetMainScript() const { return this->main_script; } @@ -83,6 +89,7 @@ private: const char *date; const char *instance_name; int version; + const char *url; }; #endif /* SCRIPT_INFO */ |