DEADSOFTWARE

quote fix
[d2df-sdl.git] / src / game / g_basic.pas
index 92a7955d505d74db05049759ad63e67b5e1bc4ad..c7a834beb158b26c35bb5741491706f7fb87fe44 100644 (file)
@@ -38,6 +38,10 @@ type
   DWArray = array of DWORD;
   String20 = String[20];
 
+function g_GetBuilderName (): AnsiString;
+function g_GetBuildHash (full: Boolean = True): AnsiString;
+function g_GetBuildArch (): AnsiString;
+
 function g_CreateUID(UIDType: Byte): Word;
 function g_GetUIDType(UID: Word): Byte;
 function g_Collide(X1, Y1: Integer; Width1, Height1: Word;
@@ -100,6 +104,117 @@ uses
   Math, geom, e_log, g_map, g_gfx, g_player, SysUtils, MAPDEF,
   StrUtils, e_graphics, g_monsters, g_items, g_game;
 
+{$PUSH}
+{$WARN 2054 OFF} // unknwon env var
+{$WARN 6018 OFF} // unreachable code
+function g_GetBuilderName (): AnsiString;
+begin
+  if {$I %D2DF_BUILD_USER%} <> '' then
+    result := {$I %D2DF_BUILD_USER%} // custom
+  else if {$I %USER%} <> '' then
+    result := {$I %USER%} // unix username
+  else if {$I %USERNAME%} <> '' then
+    result := {$I %USERNAME%} // windows username
+  else
+    result := 'unknown'
+end;
+
+function g_GetBuildHash (full: Boolean = True): AnsiString;
+begin
+  if {$I %D2DF_BUILD_HASH%} <> '' then
+    if full then
+      result := {$I %D2DF_BUILD_HASH%}
+    else
+      result := Copy({$I %D2DF_BUILD_HASH%}, 1, 7)
+  else
+    result := 'custom build'
+end;
+{$POP}
+
+function g_GetBuildArch (): AnsiString;
+  var cpu, mode, fpu: AnsiString;
+begin
+  {$IF DEFINED(CPUX86_64) OR DEFINED(CPUAMD64) OR DEFINED(CPUX64)}
+    cpu := 'x86_64';
+  {$ELSEIF DEFINED(CPUI386) OR DEFINED(CPU386)}
+    cpu := 'x86';
+  {$ELSEIF DEFINED(CPUI8086)}
+    cpu := 'i8086';
+  {$ELSEIF DEFINED(CPUI64)}
+    cpu := 'Itanium64';
+  {$ELSEIF DEFINED(CPUARM)}
+    cpu := 'ARM';
+  {$ELSEIF DEFINED(CPUAVR)}
+    cpu := 'AVR';
+  {$ELSEIF DEFINED(CPUPOWERPC32)}
+    cpu := 'PowerPC_32';
+  {$ELSEIF DEFINED(CPUPOWERPC64)}
+    cpu := 'PowerPC_64';
+  {$ELSEIF DEFINED(CPUALPHA)}}
+    cpu := 'Alpha';
+  {$ELSEIF DEFINED(CPUSPARC32)}
+    cpu := 'Sparc32';
+  {$ELSEIF DEFINED(CPUM68020)}
+    cpu := 'M68020';
+  {$ELSEIF DEFINED(CPU68K) OR DEFINED(CPUM68K)}
+    cpu := 'm68k';
+  {$ELSEIF DEFINED(CPUSPARC)}
+    cpu := 'unknown-sparc';
+  {$ELSEIF DEFINED(CPUPOWERPC)}
+    cpu := 'unknown-ppc';
+  {$ELSEIF DEFINED(CPU86) OR DEFINED(CPU87)}
+    cpu := 'unknown-intel';
+  {$ELSE}
+    cpu := 'unknown-arch';
+  {$ENDIF}
+
+  {$IF DEFINED(CPU64)}
+    mode := '64-bit';
+  {$ELSEIF DEFINED(CPU32)}
+    mode := '32-bit';
+  {$ELSEIF DEFINED(CPU16)}
+    mode := '16-bit';
+  {$ELSE}
+    mode := 'unknown-mode';
+  {$ENDIF}
+
+  {$IF DEFINED(FPUSOFT)}
+    fpu := 'soft';
+  {$ELSEIF DEFINED(FPUSSE3)}
+    fpu := 'sse3';
+  {$ELSEIF DEFINED(FPUSSE2)}
+    fpu := 'sse2';
+  {$ELSEIF DEFINED(FPUSSE)}
+    fpu := 'sse';
+  {$ELSEIF DEFINED(FPUSSE64)}
+    fpu := 'sse64';
+  {$ELSEIF DEFINED(FPULIBGCC)}
+    fpu := 'libgcc';
+  {$ELSEIF DEFINED(FPU68881)}
+    fpu := '68881';
+  {$ELSEIF DEFINED(FPUVFP)}
+    fpu := 'vfp';
+  {$ELSEIF DEFINED(FPUFPA11)}
+    fpu := 'fpa11';
+  {$ELSEIF DEFINED(FPUFPA10)}
+    fpu := 'fpa10';
+  {$ELSEIF DEFINED(FPUFPA)}
+    fpu := 'fpa';
+  {$ELSEIF DEFINED(FPUX87)}
+    fpu := 'x87';
+  {$ELSEIF DEFINED(FPUITANIUM)}
+    fpu := 'itanium';
+  {$ELSEIF DEFINED(FPUSTANDARD)}
+    fpu := 'standard';
+  {$ELSEIF DEFINED(FPUHARD)}
+    fpu := 'hard';
+  {$ELSE}
+    fpu := 'unknown-fpu';
+  {$ENDIF}
+
+  result := cpu + ' ' + mode + ' ' + fpu;
+end;
+
 function g_PatchLength(X1, Y1, X2, Y2: Integer): Word;
 begin
   Result := Min(Round(Hypot(Abs(X2-X1), Abs(Y2-Y1))), 65535);
@@ -646,7 +761,7 @@ function GetLines (Text: string; FontID: DWORD; MaxWidth: Word): SSArray;
 begin
   result := nil; lines := 0;
   j := 1; i := 1; len := Length(Text);
-  e_LogWritefln('GetLines @%s len=%s [%s]', [MaxWidth, len, Text]);
+  // e_LogWritefln('GetLines @%s len=%s [%s]', [MaxWidth, len, Text]);
   while j <= len do
   begin
     (* --- Get longest possible sequence --- *)
@@ -659,7 +774,7 @@ begin
     (* --- Add line --- *)
     SetLength(result, lines + 1);
     result[lines] := GetLine(j, i);
-    e_LogWritefln('  -> (%s:%s::%s) [%s]', [j, i, GetWidth(j, i), result[lines]]);
+    // e_LogWritefln('  -> (%s:%s::%s) [%s]', [j, i, GetWidth(j, i), result[lines]]);
     Inc(lines);
     (* --- Skip spaces --- *)
     while (i <= len) and (text[i] = ' ') do Inc(i);