summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--premake5.lua6
-rw-r--r--printHash.bat26
-rw-r--r--printHash.sh14
-rw-r--r--src/core/config.h6
-rw-r--r--src/core/main.cpp56
-rw-r--r--src/core/re3.cpp13
-rw-r--r--src/extras/GitSHA1.cpp2
-rw-r--r--src/extras/GitSHA1.h1
9 files changed, 121 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index 44d3eb0b..b4f221f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -358,3 +358,5 @@ sdk/
codewarrior/re3_Data/
codewarrior/Release/
codewarrior/Debug/
+
+src/extras/GitSHA1.cpp \ No newline at end of file
diff --git a/premake5.lua b/premake5.lua
index a0d54ea7..64dc8767 100644
--- a/premake5.lua
+++ b/premake5.lua
@@ -313,7 +313,7 @@ project "re3"
filter {}
if(os.getenv("GTA_III_RE_DIR")) then
- setpaths("$(GTA_III_RE_DIR)/", "%(cfg.buildtarget.name)")
+ setpaths(os.getenv("GTA_III_RE_DIR") .. "/", "%(cfg.buildtarget.name)")
end
filter "platforms:win*"
@@ -327,6 +327,10 @@ project "re3"
-- external librw is dynamic
staticruntime "on"
end
+ prebuildcommands { '"%{prj.location}..\\printHash.bat" "%{prj.location}..\\src\\extras\\GitSHA1.cpp"' }
+
+ filter "platforms:not win*"
+ prebuildcommands { '"%{prj.location}../printHash.sh" "%{prj.location}../src/extras/GitSHA1.cpp"' }
filter "platforms:win*glfw*"
staticruntime "off"
diff --git a/printHash.bat b/printHash.bat
new file mode 100644
index 00000000..ef1cd9d6
--- /dev/null
+++ b/printHash.bat
@@ -0,0 +1,26 @@
+@echo off
+
+REM creates version.h with HEAD commit hash
+REM params: $1=full path to output file (usually points version.h)
+
+setlocal enableextensions enabledelayedexpansion
+
+cd /d "%~dp0"
+
+break> %1
+
+<nul set /p=^"#define GIT_SHA1 ^"^"> %1
+
+where git
+if "%errorlevel%" == "0" ( goto :havegit ) else ( goto :writeending )
+
+:havegit
+for /f %%v in ('git rev-parse --short HEAD') do set version=%%v
+<nul set /p="%version%" >> %1
+
+:writeending
+
+echo ^" >> %1
+echo const char* g_GIT_SHA1 = GIT_SHA1; >> %1
+
+EXIT /B \ No newline at end of file
diff --git a/printHash.sh b/printHash.sh
new file mode 100644
index 00000000..7b4453a1
--- /dev/null
+++ b/printHash.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/bash
+
+> $1
+
+echo -n "#define GIT_SHA1 \"" > $1
+
+git --version 2>&1 >/dev/null
+GIT_IS_AVAILABLE=$?
+if [ $GIT_IS_AVAILABLE -ne 0 ]; then
+git rev-parse --short HEAD | tr -d '\n' >> $1
+fi
+
+echo "\"" >> $1
+echo "const char* g_GIT_SHA1 = GIT_SHA1;" >> $1 \ No newline at end of file
diff --git a/src/core/config.h b/src/core/config.h
index 73c29f15..87c31a0f 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -183,7 +183,11 @@ enum Config {
// those infamous texts
#define DRAW_GAME_VERSION_TEXT
-#define DRAW_MENU_VERSION_TEXT
+#ifdef DRAW_GAME_VERSION_TEXT
+ #define TOGGLEABLE_VERSION_TEXT
+ #define USE_OUR_VERSIONING // If you disable this then game will fetch version peds.col, as R* did while in development
+#endif
+//#define DRAW_MENU_VERSION_TEXT
// Memory allocation and compression
// #define USE_CUSTOM_ALLOCATOR // use CMemoryHeap for allocation. use with care, not finished yet
diff --git a/src/core/main.cpp b/src/core/main.cpp
index af0d556a..363087c0 100644
--- a/src/core/main.cpp
+++ b/src/core/main.cpp
@@ -70,6 +70,9 @@
#include "custompipes.h"
#include "screendroplets.h"
#include "MemoryHeap.h"
+#ifdef USE_OUR_VERSIONING
+#include "GitSHA1.h"
+#endif
GlobalScene Scene;
@@ -86,6 +89,9 @@ bool gbModelViewer;
#ifdef TIMEBARS
bool gbShowTimebars;
#endif
+#ifdef TOGGLEABLE_VERSION_TEXT
+bool gDrawVersionText;
+#endif
volatile int32 frameCount;
@@ -1089,13 +1095,58 @@ DisplayGameDebugText()
#ifdef DRAW_GAME_VERSION_TEXT
wchar ver[200];
-
+
+#ifdef TOGGLEABLE_VERSION_TEXT
+ if(gDrawVersionText)
+#endif
+ {
+
+#ifdef USE_OUR_VERSIONING
+ char verA[200];
+ sprintf(verA,
+#if defined _WIN32
+ "Win "
+#elif defined __linux__
+ "Linux "
+#elif defined __APPLE__
+ "Mac OS X "
+#elif defined __FreeBSD__
+ "FreeBSD "
+#else
+ "Posix-compliant "
+#endif
+#if defined __LP64__ || defined _WIN64
+ "64-bit "
+#else
+ "32-bit "
+#endif
+#if defined RW_D3D9
+ "D3D9 "
+#elif defined RWLIBS
+ "D3D8 "
+#elif defined RW_GL3
+ "OpenGL "
+#endif
+#if defined AUDIO_OAL
+ "OAL "
+#elif defined AUDIO_MSS
+ "MSS "
+#endif
+#if defined _DEBUG || defined DEBUG
+ "DEBUG "
+#endif
+ "%.8s",
+ g_GIT_SHA1);
+ AsciiToUnicode(verA, ver);
+ CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.7f));
+#else
AsciiToUnicode(version_name, ver);
+ CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.5f));
+#endif
CFont::SetPropOn();
CFont::SetBackgroundOff();
CFont::SetFontStyle(FONT_BANK);
- CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.5f));
CFont::SetCentreOff();
CFont::SetRightJustifyOff();
CFont::SetWrapx(SCREEN_WIDTH);
@@ -1107,6 +1158,7 @@ DisplayGameDebugText()
#else
CFont::PrintString(10.0f, 10.0f, ver);
#endif
+ }
#endif // #ifdef DRAW_GAME_VERSION_TEXT
FrameSamples++;
diff --git a/src/core/re3.cpp b/src/core/re3.cpp
index 3584e226..80e89ca4 100644
--- a/src/core/re3.cpp
+++ b/src/core/re3.cpp
@@ -508,6 +508,10 @@ bool LoadINISettings()
#ifdef FIX_SPRITES
ReadIniIfExists("Draw", "FixSprites", &CDraw::ms_bFixSprites);
#endif
+#ifdef TOGGLEABLE_VERSION_TEXT
+ extern bool gDrawVersionText;
+ ReadIniIfExists("General", "DrawVersionText", &gDrawVersionText);
+#endif
#ifdef CUSTOM_FRONTEND_OPTIONS
bool migrate = cfg.category_size("FrontendOptions") != 0;
@@ -595,6 +599,10 @@ void SaveINISettings()
#ifdef FIX_SPRITES
StoreIni("Draw", "FixSprites", CDraw::ms_bFixSprites);
#endif
+#ifdef TOGGLEABLE_VERSION_TEXT
+ extern bool gDrawVersionText;
+ StoreIni("General", "DrawVersionText", gDrawVersionText);
+#endif
#ifdef CUSTOM_FRONTEND_OPTIONS
for (int i = 0; i < MENUPAGES; i++) {
for (int j = 0; j < NUM_MENUROWS; j++) {
@@ -985,7 +993,10 @@ extern bool gbRenderWorld2;
#endif
-
+#ifdef TOGGLEABLE_VERSION_TEXT
+ extern bool gDrawVersionText;
+ DebugMenuAddVarBool8("Debug", "Version Text", &gDrawVersionText, nil);
+#endif
#ifndef FINAL
DebugMenuAddVarBool8("Debug", "Print Memory Usage", &gbPrintMemoryUsage, nil);
#ifdef USE_CUSTOM_ALLOCATOR
diff --git a/src/extras/GitSHA1.cpp b/src/extras/GitSHA1.cpp
new file mode 100644
index 00000000..3d1cd73e
--- /dev/null
+++ b/src/extras/GitSHA1.cpp
@@ -0,0 +1,2 @@
+#define GIT_SHA1 ""
+const char* g_GIT_SHA1 = GIT_SHA1;
diff --git a/src/extras/GitSHA1.h b/src/extras/GitSHA1.h
new file mode 100644
index 00000000..359bfaff
--- /dev/null
+++ b/src/extras/GitSHA1.h
@@ -0,0 +1 @@
+extern const char* g_GIT_SHA1; \ No newline at end of file