Merge pull request #25971 from akien-mga/version-hex

Add hex-encoded version number to Engine singleton for easy comparisons
This commit is contained in:
Rémi Verschelde 2019-02-18 13:51:38 +01:00 committed by GitHub
commit 7c8fbd892c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 0 deletions

View file

@ -98,6 +98,7 @@ Dictionary Engine::get_version_info() const {
#else #else
dict["patch"] = 0; dict["patch"] = 0;
#endif #endif
dict["hex"] = VERSION_HEX;
dict["status"] = VERSION_STATUS; dict["status"] = VERSION_STATUS;
dict["build"] = VERSION_BUILD; dict["build"] = VERSION_BUILD;
dict["year"] = VERSION_YEAR; dict["year"] = VERSION_YEAR;

View file

@ -41,9 +41,14 @@
#ifdef VERSION_PATCH #ifdef VERSION_PATCH
// Example: "3.1.4" // Example: "3.1.4"
#define VERSION_NUMBER "" VERSION_BRANCH "." _MKSTR(VERSION_PATCH) #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 #else
// Example: "3.1" // Example: "3.1"
#define VERSION_NUMBER "" VERSION_BRANCH #define VERSION_NUMBER "" VERSION_BRANCH
#define VERSION_HEX 0x10000 * VERSION_MAJOR + 0x100 * VERSION_MINOR
#endif // VERSION_PATCH #endif // VERSION_PATCH
// Describes the full configuration of that Godot version, including the version number, // Describes the full configuration of that Godot version, including the version number,

View file

@ -90,9 +90,17 @@
"major" - Holds the major version number as an int "major" - Holds the major version number as an int
"minor" - Holds the minor version number as an int "minor" - Holds the minor version number as an int
"patch" - Holds the patch 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 "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 "build" - Holds the build name (e.g. "custom-build") as a String
"string" - major + minor + patch + status + build in a single 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> </description>
</method> </method>
<method name="has_singleton" qualifiers="const"> <method name="has_singleton" qualifiers="const">