changeset 18647:a52c4c1e219f draft

(svn r23494) -Feature: [NewGRF] action14 node INFO->URL_ to add an url
author yexo <yexo@openttd.org>
date Sun, 11 Dec 2011 12:55:04 +0000
parents 2c62497776ce
children f68b9653f952
files src/network/network_udp.cpp src/newgrf.cpp src/newgrf_config.cpp src/newgrf_config.h
diffstat 4 files changed, 27 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/network/network_udp.cpp
+++ b/src/network/network_udp.cpp
@@ -421,6 +421,9 @@
 		config->info->Release();
 		config->info = f->info;
 		config->info->AddRef();
+		config->url->Release();
+		config->url = f->url;
+		config->url->AddRef();
 	}
 	SetBit(config->flags, GCF_COPY);
 }
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -7065,6 +7065,13 @@
 	return true;
 }
 
+/** Callback function for 'INFO'->'URL_' to set the newgrf url. */
+static bool ChangeGRFURL(byte langid, const char *str)
+{
+	AddGRFTextToList(&_cur.grfconfig->url->text, langid, _cur.grfconfig->ident.grfid, false, str);
+	return true;
+}
+
 /** Callback function for 'INFO'->'NPAR' to set the number of valid parameters. */
 static bool ChangeGRFNumUsedParams(size_t len, ByteReader *buf)
 {
@@ -7412,6 +7419,7 @@
 AllowedSubtags _tags_info[] = {
 	AllowedSubtags('NAME', ChangeGRFName),
 	AllowedSubtags('DESC', ChangeGRFDescription),
+	AllowedSubtags('URL_', ChangeGRFURL),
 	AllowedSubtags('NPAR', ChangeGRFNumUsedParams),
 	AllowedSubtags('PALS', ChangeGRFPalette),
 	AllowedSubtags('BLTR', ChangeGRFBlitter),
--- a/src/newgrf_config.cpp
+++ b/src/newgrf_config.cpp
@@ -44,11 +44,13 @@
 GRFConfig::GRFConfig(const char *filename) :
 	name(new GRFTextWrapper()),
 	info(new GRFTextWrapper()),
+	url(new GRFTextWrapper()),
 	num_valid_params(lengthof(param))
 {
 	if (filename != NULL) this->filename = strdup(filename);
 	this->name->AddRef();
 	this->info->AddRef();
+	this->url->AddRef();
 }
 
 /**
@@ -60,6 +62,7 @@
 	ident(config.ident),
 	name(config.name),
 	info(config.info),
+	url(config.url),
 	version(config.version),
 	min_loadable_version(config.min_loadable_version),
 	flags(config.flags & ~(1 << GCF_COPY)),
@@ -75,6 +78,7 @@
 	if (config.filename != NULL) this->filename = strdup(config.filename);
 	this->name->AddRef();
 	this->info->AddRef();
+	this->url->AddRef();
 	if (config.error    != NULL) this->error    = new GRFError(*config.error);
 	for (uint i = 0; i < config.param_info.Length(); i++) {
 		if (config.param_info[i] == NULL) {
@@ -95,6 +99,7 @@
 	}
 	this->name->Release();
 	this->info->Release();
+	this->url->Release();
 
 	for (uint i = 0; i < this->param_info.Length(); i++) delete this->param_info[i];
 }
@@ -119,6 +124,15 @@
 	return GetGRFStringFromGRFText(this->info->text);
 }
 
+/**
+ * Get the grf url.
+ * @return A string with an url of this grf.
+ */
+const char *GRFConfig::GetURL() const
+{
+	return GetGRFStringFromGRFText(this->url->text);
+}
+
 /** Set the default value for all parameters as specified by action14. */
 void GRFConfig::SetParameterDefaults()
 {
--- a/src/newgrf_config.h
+++ b/src/newgrf_config.h
@@ -169,6 +169,7 @@
 	char *filename;                                ///< Filename - either with or without full path
 	GRFTextWrapper *name;                          ///< NOSAVE: GRF name (Action 0x08)
 	GRFTextWrapper *info;                          ///< NOSAVE: GRF info (author, copyright, ...) (Action 0x08)
+	GRFTextWrapper *url;                           ///< NOSAVE: URL belonging to this GRF.
 	GRFError *error;                               ///< NOSAVE: Error/Warning during GRF loading (Action 0x0B)
 
 	uint32 version;                                ///< NOSAVE: Version a NewGRF can set so only the newest NewGRF is shown
@@ -190,6 +191,7 @@
 	const char *GetTextfile(TextfileType type) const;
 	const char *GetName() const;
 	const char *GetDescription() const;
+	const char *GetURL() const;
 
 	void SetParameterDefaults();
 	void SetSuitablePalette();