Mercurial > hg > openttd
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();