diff --git a/src/game/g_window.pas b/src/game/g_window.pas
index 33fc80c2969914e7f43c22d84edbc8c8d9ba55fb..cbc10281f3f8df5809a1971fb1999830816223b7 100644 (file)
--- a/src/game/g_window.pas
+++ b/src/game/g_window.pas
interface
uses
- WADEDITOR;
+ wadreader;
function SDLMain(): Integer;
function GetTimer(): Int64;
implementation
uses
+{$IFDEF WINDOWS}Windows,{$ENDIF}
SDL2, GL, GLExt, e_graphics, e_log, g_main,
g_console, SysUtils, e_input, g_options, g_game,
g_basic, g_textures, e_sound, g_sound, g_menu, ENet, g_net;
var
mode, cmode: TSDL_DisplayMode;
begin
+{$IFDEF HEADLESS}
+ Result := True;
+ Exit;
+{$ENDIF}
+
Result := False;
e_WriteLog('Setting display mode...', MSG_NOTIFY);
res, i, k, n, pw, ph: Integer;
begin
SetLength(Result, 0);
-
+ {$IFDEF HEADLESS}Exit;{$ENDIF}
k := 0; SelRes := 0;
n := SDL_GetNumDisplayModes(0);
pw := 0; ph := 0;
begin
gWinSizeX := gScreenWidth;
gWinSizeY := gScreenHeight;
+ {$IFDEF HEADLESS}Exit;{$ENDIF}
e_ResizeWindow(gScreenWidth, gScreenHeight);
g_Game_SetupScreenSize();
g_Menu_Reset();
Preserve: Boolean;
begin
Result := False;
+ {$IFDEF HEADLESS}Exit;{$ENDIF}
Preserve := False;
if (gScreenWidth <> W) or (gScreenHeight <> H) then
procedure SwapBuffers();
begin
+ {$IFDEF HEADLESS}Exit;{$ENDIF}
SDL_GL_SwapWindow(h_Wnd);
end;
exit;
end;
+{$IFNDEF HEADLESS}
h_Gl := SDL_GL_CreateContext(h_Wnd);
if h_Gl = nil then Exit;
-
+{$ENDIF}
//wWindowCreated := True;
e_ResizeWindow(gScreenWidth, gScreenHeight);
Result := True;
end;
+{$IFDEF WINDOWS}
+// windoze sux; in headless mode `GetTickCount()` (and SDL) returns shit
+function GetTimer(): Int64;
+var
+ F, C: Int64;
+begin
+ QueryPerformanceFrequency(F);
+ QueryPerformanceCounter(C);
+ Result := Round(C/F*1000{000});
+end;
+{$ELSE}
function GetTimer(): Int64;
var
t: Uint32;
lastTicks := t;
result := ticksOverflow+Int64(t);
end;
+{$ENDIF}
procedure ResetTimer();
begin
var
v: Byte;
begin
+ {$IFDEF HEADLESS}Exit;{$ENDIF}
if VSync then v := 1 else v := 0;
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
function SDLMain(): Integer;
begin
+{$IFDEF HEADLESS}
+ e_NoGraphics := True;
+{$ENDIF}
+
e_WriteLog('Creating GL window', MSG_NOTIFY);
if not CreateGLWindow(PChar(Format('Doom 2D: Forever %s', [GAME_VERSION]))) then
begin