summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-10-21 14:59:05 +0000
committerrubidium <rubidium@openttd.org>2007-10-21 14:59:05 +0000
commitf4775d06bb53f927ad05c7e6344a4e839c884c44 (patch)
tree2808064f7264f726364aadc0c5869eb17d794970 /src
parent93303cffc453d8cd99b4a1e00645c072e7f7fae3 (diff)
downloadopenttd-f4775d06bb53f927ad05c7e6344a4e839c884c44.tar.xz
(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.
Diffstat (limited to 'src')
-rw-r--r--src/lang/english.txt1
-rw-r--r--src/newgrf.cpp8
-rw-r--r--src/ottdres.rc.in5
-rw-r--r--src/rev.cpp.in40
4 files changed, 51 insertions, 3 deletions
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 "<major>.<minor>.<build>[-RC<rc>]",
+ * "r<revision number>[M][-<branch>]" 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