DEADSOFTWARE

gl: move holmes drawing code into render
[d2df-sdl.git] / src / game / renders / opengl / r_render.pas
index 5a6bb2745ff53aa886567b9f917f47406c38dd1f..9fa586aee5beb8782268231b0d02be8bc1996352 100644 (file)
@@ -73,6 +73,12 @@ interface
   procedure r_Render_StepLoading (incval: Integer);
   procedure r_Render_DrawLoading (force: Boolean);
 
+  {$IFDEF ENABLE_HOLMES}
+    function pmsCurMapX (): Integer;
+    function pmsCurMapY (): Integer;
+    function r_Render_HolmesViewIsSet (): Boolean;
+  {$ENDIF}
+
 implementation
 
   uses
@@ -87,6 +93,9 @@ implementation
     {$IFDEF ENABLE_SYSTEM}
       g_system,
     {$ENDIF}
+    {$IFDEF ENABLE_HOLMES}
+      r_holmes,
+    {$ENDIF}
     SysUtils, Classes, Math,
     g_basic,
     e_log, utils, wadreader, mapdef,
@@ -127,24 +136,24 @@ implementation
     r_LoadScreen_Load;
     r_Common_Load;
     r_Common_SetLoading('HUD Textures', 5 + (WP_LAST + 1) + 11);
-    hud :=  r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/HUD');
-    hudbg :=  r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/HUDBG');
-    hudhp[false] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/MED2');
-    hudhp[true] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/BMED');
-    hudap := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/ARMORHUD');
+    hud :=  r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/HUD', [TGLHints.txNoRepeat]);
+    hudbg :=  r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/HUDBG', []);
+    hudhp[false] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/MED2', [TGLHints.txNoRepeat]);
+    hudhp[true] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/BMED', [TGLHints.txNoRepeat]);
+    hudap := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/ARMORHUD', [TGLHints.txNoRepeat]);
     for i := 0 to WP_LAST do
-      hudwp[i] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/' + WeapName[i]);
-    hudkey[0] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/KEYR');
-    hudkey[1] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/KEYG');
-    hudkey[2] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/KEYB');
-    hudair := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/AIRBAR');
-    hudjet := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/JETBAR');
-    hudrflag := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_R_BASE');
-    hudrflags := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_R_STOLEN');
-    hudrflagd := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_R_DROP');
-    hudbflag := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_B_BASE');
-    hudbflags := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_B_STOLEN');
-    hudbflagd := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_B_DROP');
+      hudwp[i] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/' + WeapName[i], [TGLHints.txNoRepeat]);
+    hudkey[0] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/KEYR', [TGLHints.txNoRepeat]);
+    hudkey[1] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/KEYG', [TGLHints.txNoRepeat]);
+    hudkey[2] := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/KEYB', [TGLHints.txNoRepeat]);
+    hudair := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/AIRBAR', [TGLHints.txNoRepeat]);
+    hudjet := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/JETBAR', [TGLHints.txNoRepeat]);
+    hudrflag := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_R_BASE', [TGLHints.txNoRepeat]);
+    hudrflags := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_R_STOLEN', [TGLHints.txNoRepeat]);
+    hudrflagd := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_R_DROP', [TGLHints.txNoRepeat]);
+    hudbflag := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_B_BASE', [TGLHints.txNoRepeat]);
+    hudbflags := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_B_STOLEN', [TGLHints.txNoRepeat]);
+    hudbflagd := r_Common_LoadTextureFromFile(GameWAD + ':TEXTURES/FLAGHUD_B_DROP', [TGLHints.txNoRepeat]);
     r_Console_Load;
     r_Map_Load;
     {$IFDEF ENABLE_MENU}
@@ -160,28 +169,24 @@ implementation
     {$ENDIF}
     r_Map_Free;
     r_Console_Free;
-    hudbflagd.Free;
-    hudbflags.Free;
-    hudbflag.Free;
-    hudrflagd.Free;
-    hudrflags.Free;
-    hudrflag.Free;
-    hudjet.Free;
-    hudair.Free;
-    hudkey[0].Free;
-    hudkey[1].Free;
-    hudkey[2].Free;
+    r_Common_FreeAndNil(hudbflagd);
+    r_Common_FreeAndNil(hudbflags);
+    r_Common_FreeAndNil(hudbflag);
+    r_Common_FreeAndNil(hudrflagd);
+    r_Common_FreeAndNil(hudrflags);
+    r_Common_FreeAndNil(hudrflag);
+    r_Common_FreeAndNil(hudjet);
+    r_Common_FreeAndNil(hudair);
+    r_Common_FreeAndNil(hudkey[0]);
+    r_Common_FreeAndNil(hudkey[1]);
+    r_Common_FreeAndNil(hudkey[2]);
     for i := 0 to WP_LAST do
-    begin
-      if hudwp[i] <> nil then
-        hudwp[i].Free;
-      hudwp[i] := nil;
-    end;
-    hudap.Free;
-    hudhp[true].Free;
-    hudhp[false].Free;
-    hudbg.Free;
-    hud.Free;
+      r_Common_FreeAndNil(hudwp[i]);
+    r_Common_FreeAndNil(hudap);
+    r_Common_FreeAndNil(hudhp[true]);
+    r_Common_FreeAndNil(hudhp[false]);
+    r_Common_FreeAndNil(hudbg);
+    r_Common_FreeAndNil(hud);
     r_Common_Free;
   end;
 
@@ -395,6 +400,13 @@ implementation
     r_Common_GetCameraPos(p, true, xx, yy);
     if p <> nil then
     begin
+      {$IFDEF ENABLE_HOLMES}
+        if p = gPlayer1 then
+        begin
+          r_Holmes_plrViewPos(x, y);
+          r_Holmes_plrViewSize(w, h);
+        end;
+      {$ENDIF}
       r_Map_Draw(x, y, w, h, xx, yy, p);
       r_Render_DrawStatsView(x, y, w, h, p);
       if p.Spectator and p.NoRespawn then
@@ -1111,7 +1123,9 @@ implementation
       if gShowMap then
         r_Render_DrawMiniMap(0, 0, 160);
 
-      // TODO draw holmes inspector
+      {$IFDEF ENABLE_HOLMES}
+        r_Holmes_Draw;
+      {$ENDIF}
 
       if MessageText <> '' then
         r_Common_DrawFormatText(MessageText, (gScreenWidth - 196) div 2, gScreenHeight div 2, 255, menufont, TBasePoint.BP_CENTER);
@@ -1219,7 +1233,9 @@ implementation
 
     // TODO draw profilers
 
-    // TODO draw holmes interface
+    {$IFDEF ENABLE_HOLMES}
+      r_Holmes_DrawUI;
+    {$ENDIF}
 
     // TODO draw touch screen controls
 
@@ -1322,4 +1338,21 @@ implementation
     r_Common_DrawLoading(force);
   end;
 
+{$IFDEF ENABLE_HOLMES}
+  function pmsCurMapX (): Integer;
+  begin
+    result := r_holmes.pmsCurMapX();
+  end;
+
+  function pmsCurMapY (): Integer;
+  begin
+    result := r_holmes.pmsCurMapY();
+  end;
+
+  function r_Render_HolmesViewIsSet (): Boolean;
+  begin
+    result := vpSet;
+  end;
+{$ENDIF}
+
 end.