(svn r20960) -Add: Allow setting 'minimal compatible version' via Action14. (planetmaker)

Note: Setting 'VRSN' also sets 'MINV' resulting in the Grf being only compatible to the same version. Set 'MINV' after 'VRSN' if your Grf is compatible to older versions.
This commit is contained in:
frosch
2010-10-17 12:14:49 +00:00
parent 8a06854943
commit 38c350fad5
4 changed files with 28 additions and 1 deletions

View File

@@ -6326,11 +6326,31 @@ static bool ChangeGRFVersion(size_t len, ByteReader *buf)
grfmsg(2, "StaticGRFInfo: expected 4 bytes for 'INFO'->'VRSN' but got " PRINTF_SIZE ", ignoring this field", len);
buf->Skip(len);
} else {
_cur_grfconfig->version = buf->ReadDWord();
/* Set min_loadable_version as well (default to minimal compatibility) */
_cur_grfconfig->version = _cur_grfconfig->min_loadable_version = buf->ReadDWord();
}
return true;
}
/** Callback function for 'INFO'->'MINV' to the minimum compatible version of the NewGRF. */
static bool ChangeGRFMinVersion(size_t len, ByteReader *buf)
{
if (len != 4) {
grfmsg(2, "StaticGRFInfo: expected 4 bytes for 'INFO'->'MINV' but got " PRINTF_SIZE ", ignoring this field", len);
buf->Skip(len);
} else {
_cur_grfconfig->min_loadable_version = buf->ReadDWord();
if (_cur_grfconfig->version == 0) {
grfmsg(2, "StaticGRFInfo: 'MINV' defined before 'VRSN' or 'VRSN' set to 0, ignoring this field");
_cur_grfconfig->min_loadable_version = 0;
}
if (_cur_grfconfig->version < _cur_grfconfig->min_loadable_version) {
grfmsg(2, "StaticGRFInfo: 'MINV' defined as %d, limiting it to 'VRSN'", _cur_grfconfig->min_loadable_version);
_cur_grfconfig->min_loadable_version = _cur_grfconfig->version;
}
}
return true;
}
static GRFParameterInfo *_cur_parameter; ///< The parameter which info is currently changed by the newgrf.
@@ -6583,6 +6603,7 @@ AllowedSubtags _tags_info[] = {
AllowedSubtags('NPAR', ChangeGRFNumUsedParams),
AllowedSubtags('PALS', ChangeGRFPalette),
AllowedSubtags('VRSN', ChangeGRFVersion),
AllowedSubtags('MINV', ChangeGRFMinVersion),
AllowedSubtags('PARA', HandleParameterInfo),
AllowedSubtags()
};