DEADSOFTWARE

render: use only r_render to access render-specific info
[d2df-sdl.git] / src / game / opengl / r_render.pas
index 1773ba729dd1090331bb415d4cc8efbb35bbd5bc..e5ed3486c9916192ffbfd443bd64b345dd45f0bc 100644 (file)
@@ -17,7 +17,12 @@ unit r_render;
 
 interface
 
-  uses g_base; // TRectWH
+  uses
+    {$IFDEF ENABLE_MENU}
+      g_gui,
+    {$ENDIF}
+    g_base // TRectWH
+  ;
 
   procedure r_Render_Initialize;
   procedure r_Render_Finalize;
@@ -36,13 +41,25 @@ interface
 
   function r_Render_WriteScreenShot (filename: String): Boolean;
 
-  function r_Render_GetGibRect (m, id: Integer): TRectWH;
-  procedure r_Render_QueueEffect (AnimType, X, Y: Integer);
+  {$IFDEF ENABLE_GIBS}
+    function r_Render_GetGibRect (m, id: Integer): TRectWH;
+  {$ENDIF}
 
-{$IFDEF ENABLE_TOUCH}
-  // touch screen button location and size
-  procedure r_Render_GetKeyRect (key: Integer; out x, y, w, h: Integer; out founded: Boolean);
-{$ENDIF}
+  {$IFDEF ENABLE_GFX}
+    procedure r_Render_QueueEffect (AnimType, X, Y: Integer);
+  {$ENDIF}
+
+  {$IFDEF ENABLE_TOUCH}
+    // touch screen button location and size
+    procedure r_Render_GetKeyRect (key: Integer; out x, y, w, h: Integer; out founded: Boolean);
+  {$ENDIF}
+
+  {$IFDEF ENABLE_MENU}
+    procedure r_Render_GetControlSize (ctrl: TGUIControl; out w, h: Integer);
+    procedure r_Render_GetLogoSize (out w, h: Integer);
+    procedure r_Render_GetMaxFontSize (BigFont: Boolean; out w, h: Integer);
+    procedure r_Render_GetStringSize (BigFont: Boolean; str: String; out w, h: Integer);
+  {$ENDIF}
 
   procedure r_Render_DrawLoading (force: Boolean); // !!! remove it
 
@@ -53,11 +70,20 @@ implementation
     {$IFDEF ENABLE_TOUCH}
       r_touch,
     {$ENDIF}
+    {$IFDEF ENABLE_GFX}
+      r_gfx,
+    {$ENDIF}
+    {$IFDEF ENABLE_SYSTEM}
+      g_system,
+    {$ENDIF}
+    {$IFDEF ENABLE_MENU}
+      r_gui,
+    {$ENDIF}
     SysUtils, Classes, Math,
-    e_log, g_system, utils,
+    e_log, utils,
     g_game, g_options, g_console,
     r_window, r_graphics, r_console, r_playermodel, r_textures, r_animations,
-    r_weapons, r_items, r_gfx, r_monsters, r_map, r_player, r_game
+    r_weapons, r_items, r_monsters, r_map, r_player, r_game
   ;
 
   var
@@ -206,12 +232,22 @@ implementation
     r_Monsters_Load;
     r_Weapon_Load;
     r_Items_Load;
-    r_GFX_Load;
+    {$IFDEF ENABLE_GFX}
+      r_GFX_Load;
+    {$ENDIF}
+    {$IFDEF ENABLE_MENU}
+      r_GUI_Load;
+    {$ENDIF}
   end;
 
   procedure r_Render_Free;
   begin
-    r_GFX_Free;
+    {$IFDEF ENABLE_MENU}
+      r_GUI_Free;
+    {$ENDIF}
+    {$IFDEF ENABLE_GFX}
+      r_GFX_Free;
+    {$ENDIF}
     r_Items_Free;
     r_Weapon_Free;
     r_Monsters_Free;
@@ -225,8 +261,10 @@ implementation
 
   procedure r_Render_Initialize;
   begin
-    if sys_SetDisplayMode(gRC_Width, gRC_Height, gBPP, gRC_FullScreen, gRC_Maximized) = False then
-      raise Exception.Create('Failed to set videomode on startup.');
+    {$IFDEF ENABLE_SYSTEM}
+      if sys_SetDisplayMode(gRC_Width, gRC_Height, gBPP, gRC_FullScreen, gRC_Maximized) = False then
+        raise Exception.Create('Failed to set videomode on startup.');
+    {$ENDIF}
     LoadGL;
     r_Window_Initialize;
     r_Console_Init;
@@ -244,7 +282,9 @@ implementation
 
   procedure r_Render_Update;
   begin
-    r_GFX_Update;
+    {$IFDEF ENABLE_GFX}
+      r_GFX_Update;
+    {$ENDIF}
     r_Map_Update;
     r_PlayerModel_Update;
     r_Console_Update;
@@ -287,11 +327,13 @@ implementation
 
   procedure r_Render_Apply;
   begin
-    if sys_SetDisplayMode(Max(1, gRC_Width), Max(1, gRC_Height), Max(1, gBPP), gRC_FullScreen, gRC_Maximized) then
-      e_LogWriteln('resolution changed')
-    else
-      e_LogWriteln('resolution not changed');
-    sys_EnableVSync(gVSync)
+    {$IFDEF ENABLE_SYSTEM}
+      if sys_SetDisplayMode(Max(1, gRC_Width), Max(1, gRC_Height), Max(1, gBPP), gRC_FullScreen, gRC_Maximized) then
+        e_LogWriteln('resolution changed')
+      else
+        e_LogWriteln('resolution not changed');
+      sys_EnableVSync(gVSync)
+    {$ENDIF}
   end;
 
   function r_Render_WriteScreenShot (filename: String): Boolean;
@@ -311,15 +353,19 @@ implementation
     end
   end;
 
+{$IFDEF ENABLE_GIBS}
   function r_Render_GetGibRect (m, id: Integer): TRectWH;
   begin
     Result := r_PlayerModel_GetGibRect(m, id)
   end;
+{$ENDIF}
 
+{$IFDEF ENABLE_GFX}
   procedure r_Render_QueueEffect (AnimType, X, Y: Integer);
   begin
     r_GFX_OnceAnim(AnimType, X, Y)
   end;
+{$ENDIF}
 
 {$IFDEF ENABLE_TOUCH}
   procedure r_Render_GetKeyRect (key: Integer; out x, y, w, h: Integer; out founded: Boolean);
@@ -328,6 +374,28 @@ implementation
   end;
 {$ENDIF}
 
+{$IFDEF ENABLE_MENU}
+  procedure r_Render_GetControlSize (ctrl: TGUIControl; out w, h: Integer);
+  begin
+    r_GUI_GetSize(ctrl, w, h)
+  end;
+
+  procedure r_Render_GetLogoSize (out w, h: Integer);
+  begin
+    r_GUI_GetLogoSize(w, h)
+  end;
+
+  procedure r_Render_GetMaxFontSize (BigFont: Boolean; out w, h: Integer);
+  begin
+    r_GUI_GetMaxFontSize(BigFont, w, h)
+  end;
+
+  procedure r_Render_GetStringSize (BigFont: Boolean; str: String; out w, h: Integer);
+  begin
+    r_GUI_GetStringSize(BigFont, str, w, h)
+  end;
+{$ENDIF}
+
   procedure r_Render_DrawLoading (force: Boolean);
   begin
     r_Window_DrawLoading(force)