changeset 11707:a93c9d93b8ec draft

(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.
author yexo <yexo@openttd.org>
date Sun, 19 Apr 2009 15:14:23 +0000
parents 42912f4e41bf
children 565bcb9d323b
files src/ai/ai_gui.cpp src/ai/ai_instance.cpp src/lang/english.txt src/script/script_info.cpp src/script/script_info.hpp
diffstat 5 files changed, 27 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ai/ai_gui.cpp
+++ b/src/ai/ai_gui.cpp
@@ -101,6 +101,11 @@
 			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);
 		}
--- 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 @@
 	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()
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -3593,6 +3593,7 @@
 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.
 ########
 
--- a/src/script/script_info.cpp
+++ b/src/script/script_info.cpp
@@ -19,6 +19,7 @@
 	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 @@
 	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;
 }
--- a/src/script/script_info.hpp
+++ b/src/script/script_info.hpp
@@ -17,7 +17,8 @@
 		short_name(NULL),
 		description(NULL),
 		date(NULL),
-		instance_name(NULL)
+		instance_name(NULL),
+		url(NULL)
 	{}
 	~ScriptFileInfo();
 
@@ -57,6 +58,11 @@
 	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 @@
 	const char *date;
 	const char *instance_name;
 	int version;
+	const char *url;
 };
 
 #endif /* SCRIPT_INFO */