DEADSOFTWARE

gl: force camera at map center when screen larger than map
[d2df-sdl.git] / src / game / sdl / g_system.pas
index c7eab2cd9750d273bcb424ce2bcfff4cf0d07d20..6d7cf03ef433b371fb4abcad6cf440f1c9b8cbd5 100644 (file)
@@ -19,20 +19,36 @@ interface
 
   uses Utils;
 
-  (* --- Utils --- *)
-  function sys_GetTicks (): Int64;
-  procedure sys_Delay (ms: Integer);
+  type
+    TGLProfile = (Core, Compat, Common, CommonLite);
+
+    TGLDisplayInfo = record
+      w, h, bpp: Integer;
+      fullscreen: Boolean;
+      maximized: Boolean;
+      major, minor: Integer;
+      profile: TGLProfile;
+    end;
 
   (* --- Graphics --- *)
+
   function sys_GetDisplayModes (bpp: Integer): SSArray;
   function sys_SetDisplayMode (w, h, bpp: Integer; fullscreen, maximized: Boolean): Boolean;
   procedure sys_EnableVSync (yes: Boolean);
   procedure sys_Repaint;
 
+  function sys_SetDisplayModeGL (const info: TGLDisplayInfo): Boolean;
+
   (* --- Input --- *)
+
   function sys_HandleInput (): Boolean;
   procedure sys_RequestQuit;
 
+{$IFDEF ENABLE_TOUCH}
+  function sys_IsTextInputActive (): Boolean;
+  procedure sys_ShowKeyboard (yes: Boolean);
+{$ENDIF}
+
   (* --- Init --- *)
   procedure sys_Init;
   procedure sys_Final;
@@ -52,7 +68,7 @@ implementation
     {$ENDIF}
     SysUtils, SDL, Math,
     e_log, e_input, e_sound,
-    g_options, g_console, g_game, g_menu, g_gui, g_basic;
+    g_options, g_console, g_game, g_basic;
 
   const
     GameTitle = 'Doom 2D: Forever (SDL 1.2, %s, %s)';
@@ -66,18 +82,6 @@ implementation
     JoystickHatState: array [0..e_MaxJoys - 1, 0..e_MaxJoyHats - 1, HAT_LEFT..HAT_DOWN] of Boolean;
     JoystickZeroAxes: array [0..e_MaxJoys - 1, 0..e_MaxJoyAxes - 1] of Integer;
 
-  (* --------- Utils --------- *)
-
-  function sys_GetTicks (): Int64;
-  begin
-    result := SDL_GetTicks()
-  end;
-
-  procedure sys_Delay (ms: Integer);
-  begin
-    SDL_Delay(ms)
-  end;
-
   (* --------- Graphics --------- *)
 
   function GetDriver (): AnsiString;
@@ -166,6 +170,14 @@ implementation
     result := InitWindow(w, h, bpp, fullscreen)
   end;
 
+  function sys_SetDisplayModeGL (const info: TGLDisplayInfo): Boolean;
+  begin
+    result := false;
+    case info.profile of
+      TGLProfile.Compat: result := InitWindow(info.w, info.h, info.bpp, info.fullscreen);
+    end;
+  end;
+
   (* --------- Joystick --------- *)
 
   procedure HandleJoyButton (var ev: TSDL_JoyButtonEvent);
@@ -464,6 +476,18 @@ implementation
   end;
 {$ENDIF}
 
+{$IFDEF ENABLE_TOUCH}
+  procedure sys_ShowKeyboard (yes: Boolean);
+  begin
+    // stub
+  end;
+
+  function sys_IsTextInputActive (): Boolean;
+  begin
+    Result := false
+  end;
+{$ENDIF}
+
   function Key2Stub (key: Integer): Integer;
     var x: Integer;
   begin