From f4775d06bb53f927ad05c7e6344a4e839c884c44 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sun, 21 Oct 2007 14:59:05 +0000 Subject: (svn r11330) -Add: OTTD version checking for NewGRFs. This allows NewGRFs to do something different for different versions of OpenTTD, like disabling it for too low versions or loading different graphics. --- src/lang/english.txt | 1 + src/newgrf.cpp | 8 +++++++- src/ottdres.rc.in | 5 +++-- src/rev.cpp.in | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/lang/english.txt b/src/lang/english.txt index ad5408f46..44f1d0b22 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -3073,6 +3073,7 @@ STR_NEWGRF_ERROR_UNSET_SWITCH :{STRING} is des STR_NEWGRF_ERROR_INVALID_PARAMETER :Invalid parameter for {STRING}: parameter {STRING} ({NUM}) STR_NEWGRF_ERROR_LOAD_BEFORE :{STRING} must be loaded before {STRING}. STR_NEWGRF_ERROR_LOAD_AFTER :{STRING} must be loaded after {STRING}. +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{STRING} requires OpenTTD version {STRING} or better. STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :the GRF file it was designed to translate STR_NEWGRF_ADD :{BLACK}Add diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 307fc48ed..3cf4334ec 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -3424,6 +3424,11 @@ static uint32 GetParamVal(byte param, uint32 *cond_val) case 0x9E: // Miscellaneous GRF features return _misc_grf_features; + case 0xA1: { // OpenTTD version + extern uint32 _openttd_newgrf_version; + return _openttd_newgrf_version; + } + default: /* GRF Parameter */ if (param < 0x80) return _cur_grffile->param[param]; @@ -3790,7 +3795,8 @@ static void GRFLoadError(byte *buf, int len) STR_NEWGRF_ERROR_UNSET_SWITCH, STR_NEWGRF_ERROR_INVALID_PARAMETER, STR_NEWGRF_ERROR_LOAD_BEFORE, - STR_NEWGRF_ERROR_LOAD_AFTER + STR_NEWGRF_ERROR_LOAD_AFTER, + STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER, }; static const StringID sevstr[] = { diff --git a/src/ottdres.rc.in b/src/ottdres.rc.in index a75294fe1..72e1d813e 100644 --- a/src/ottdres.rc.in +++ b/src/ottdres.rc.in @@ -1,4 +1,5 @@ //Microsoft Developer Studio generated resource script. +// $Id$ // #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// @@ -65,8 +66,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,5,99,0 - PRODUCTVERSION 0,5,99,0 + FILEVERSION 0,6,0,@@REVISION@@ + PRODUCTVERSION 0,6,0,@@REVISION@@ FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L diff --git a/src/rev.cpp.in b/src/rev.cpp.in index badec3c0d..0db42ac60 100644 --- a/src/rev.cpp.in +++ b/src/rev.cpp.in @@ -1,4 +1,44 @@ +/* $Id$ */ + +/** @file rev.cpp Autogenerated file with the revision and such of OpenTTD. */ + +#include "stdafx.h" + +/** + * The text version of OpenTTD's revision. + * This will be either "..[-RC]", + * "r[M][-]" or "norev000". + * + * The major, minor and build are the numbers that describe releases of + * OpenTTD (like 0.5.3). "-RC" is used to flag release candidates. + * + * The revision number is fairly straight forward. The M is to show that + * the binary is made from modified source code. The branch shows the + * branch the revision is of and will not be there when it is trunk. + * + * norev000 is for non-releases that are made on systems without + * subversion or sources that are not a checkout of subversion. + */ extern const char _openttd_revision[] = "@@VERSION@@"; + +/** + * The NewGRF revision of OTTD: + * bits meaning. + * 28-31 major version + * 24-27 minor version + * 20-23 build + * 19 1 if it is a release, 0 if it is not. + * 0-18 revision number; 0 for releases and when the revision is unknown. + * + * The 19th bit is there so the development/betas/alpha, etc. leading to a + * final release will always have a lower version number than the released + * version, thus making comparisions on specific revisions easy. + */ +uint32 _openttd_newgrf_version = 0 << 28 | 6 << 24 | 0 << 20 | 0 << 19 | (@@REVISION@@ & ((1 << 19) - 1)); + #ifdef __MORPHOS__ +/** + * Variable used by MorphOS to show the version. + */ extern const char morphos_versions_tag[] = "\\0$VER: OpenTTD @@VERSION@@ (@@DATE@@) OpenTTD Team [MorphOS, PowerPC]"; #endif -- cgit v1.2.3-54-g00ecf