diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2019-02-17 13:38:52 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2019-02-17 13:38:52 +0100 |
commit | 2e6501d879105acd7355393838dc2930d533b768 (patch) | |
tree | 54503742d17915e7e16c9c7993984e3e6a742cb6 | |
parent | 623f7b64ae7ab075fe9cc7f5b7b2c777e774f81d (diff) |
Add hex-encoded version number to Engine singleton for easy comparisons
-rw-r--r-- | core/engine.cpp | 1 | ||||
-rw-r--r-- | core/version.h | 5 | ||||
-rw-r--r-- | doc/classes/Engine.xml | 8 |
3 files changed, 14 insertions, 0 deletions
diff --git a/core/engine.cpp b/core/engine.cpp index 4dba41853d..9607dedb3c 100644 --- a/core/engine.cpp +++ b/core/engine.cpp @@ -98,6 +98,7 @@ Dictionary Engine::get_version_info() const { #else dict["patch"] = 0; #endif + dict["hex"] = VERSION_HEX; dict["status"] = VERSION_STATUS; dict["build"] = VERSION_BUILD; dict["year"] = VERSION_YEAR; diff --git a/core/version.h b/core/version.h index 46eecf6125..05fec9d0a6 100644 --- a/core/version.h +++ b/core/version.h @@ -41,9 +41,14 @@ #ifdef VERSION_PATCH // Example: "3.1.4" #define VERSION_NUMBER "" VERSION_BRANCH "." _MKSTR(VERSION_PATCH) +// Version number encoded as hexadecimal int with one byte for each number, +// for easy comparison from code. +// Example: 3.1.4 will be 0x030104, making comparison easy from script. +#define VERSION_HEX 0x10000 * VERSION_MAJOR + 0x100 * VERSION_MINOR + VERSION_PATCH #else // Example: "3.1" #define VERSION_NUMBER "" VERSION_BRANCH +#define VERSION_HEX 0x10000 * VERSION_MAJOR + 0x100 * VERSION_MINOR #endif // VERSION_PATCH // Describes the full configuration of that Godot version, including the version number, diff --git a/doc/classes/Engine.xml b/doc/classes/Engine.xml index f921b76b21..b8808b8b53 100644 --- a/doc/classes/Engine.xml +++ b/doc/classes/Engine.xml @@ -90,9 +90,17 @@ "major" - Holds the major version number as an int "minor" - Holds the minor version number as an int "patch" - Holds the patch version number as an int + "hex" - Holds the full version number encoded as an hexadecimal int with one byte (2 places) per number (see example below) "status" - Holds the status (e.g. "beta", "rc1", "rc2", ... "stable") as a String "build" - Holds the build name (e.g. "custom-build") as a String "string" - major + minor + patch + status + build in a single String + The "hex" value is encoded as follows, from left to right: one byte for the major, one byte for the minor, one byte for the patch version. For example, "3.1.12" would be [code]0x03010C[/code]. Note that it's still an int internally, and printing it will give you its decimal representation, which is not particularly meaningful. Use hexadecimal literals for easy version comparisons from code: + [codeblock] + if Engine.get_version_info().hex >= 0x030200: + # do things specific to version 3.2 or later + else: + # do things specific to versions before 3.2 + [/codeblock] </description> </method> <method name="has_singleton" qualifiers="const"> |