DEADSOFTWARE

put "{$MODE ...}" directive in each source file; removed trailing spaces, and convert...
[d2df-sdl.git] / src / game / g_window.pas
index c159ddd236d40221480036aa03394f51e41b51f9..29f79e480c403d6e6779e61f2a87f72a71fed84d 100644 (file)
@@ -1,9 +1,10 @@
+{$MODE DELPHI}
 unit g_window;
 
 interface
 
 uses
-  WADEDITOR;
+  wadreader;
 
 function  SDLMain(): Integer;
 function  GetTimer(): Int64;
@@ -23,6 +24,7 @@ function  g_Window_SetSize(W, H: Word; FScreen: Boolean): Boolean;
 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;
@@ -77,7 +79,7 @@ begin
   Result := True;
   Exit;
 {$ENDIF}
-  
+
   Result := False;
 
   e_WriteLog('Setting display mode...', MSG_NOTIFY);
@@ -85,13 +87,13 @@ begin
   wFlags := SDL_WINDOW_OPENGL or SDL_WINDOW_RESIZABLE;
   if gFullscreen then wFlags := wFlags or SDL_WINDOW_FULLSCREEN;
   if gWinMaximized then wFlags := wFlags or SDL_WINDOW_MAXIMIZED;
-  
+
   if h_Wnd <> nil then
   begin
     SDL_DestroyWindow(h_Wnd);
     h_Wnd := nil;
   end;
-  
+
   if gFullscreen then
   begin
     mode.w := gScreenWidth;
@@ -113,7 +115,7 @@ begin
 
   h_Wnd := SDL_CreateWindow(PChar(wTitle), gWinRealPosX, gWinRealPosY, gScreenWidth, gScreenHeight, wFlags);
   if h_Wnd = nil then Exit;
-  
+
   SDL_GL_MakeCurrent(h_Wnd, h_GL);
   SDL_ShowCursor(SDL_DISABLE);
 
@@ -204,7 +206,7 @@ begin
   Result := False;
   wActivate := False;
   wDeactivate := False;
-  
+
   case ev.event of
     SDL_WINDOWEVENT_MOVED:
     begin
@@ -214,7 +216,7 @@ begin
         gWinRealPosY := ev.data2;
       end;
     end;
-    
+
     SDL_WINDOWEVENT_MINIMIZED:
     begin
       if not wMinimized then
@@ -230,7 +232,7 @@ begin
         wDeactivate := True;
       end;
     end;
-    
+
     SDL_WINDOWEVENT_RESIZED:
     begin
       gScreenWidth := ev.data1;
@@ -243,10 +245,10 @@ begin
         e_WriteLog('[DEBUG] WinMsgs: Resized to ' + IntToStr(ev.data1) + 'x' + IntToStr(ev.data2), MSG_NOTIFY);
       end;
     end;
-    
+
     SDL_WINDOWEVENT_EXPOSED:
       SwapBuffers();
-    
+
     SDL_WINDOWEVENT_MAXIMIZED:
     begin
       if wMinimized then
@@ -265,7 +267,7 @@ begin
         end;
       end;
     end;
-    
+
     SDL_WINDOWEVENT_RESTORED:
     begin
       if wMinimized then
@@ -374,7 +376,7 @@ begin
       key := ev.key.keysym.scancode;
       KeyPress(key);
     end;
-    
+
     SDL_TEXTINPUT:
     begin
       Utf8ToUnicode(@uc, PChar(ev.text.text), 1);
@@ -434,6 +436,17 @@ begin
   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;
@@ -458,6 +471,7 @@ begin
   lastTicks := t;
   result := ticksOverflow+Int64(t);
 end;
+{$ENDIF}
 
 procedure ResetTimer();
 begin