DEADSOFTWARE

game: fix spectator camera
[d2df-sdl.git] / src / game / renders / opengl / r_render.pas
index 44ee5b61da1bdf57a5eb97d9c57113eb57f733f0..a16a37d8508ece44560788ccbd0c33d82e0bfad6 100644 (file)
@@ -80,6 +80,8 @@ interface
     function r_Render_HolmesViewIsSet (): Boolean;
   {$ENDIF}
 
+  procedure r_Render_GetSpectatorLimits (out x0, y0, x1, y1: Integer);
+
 implementation
 
   uses
@@ -99,6 +101,7 @@ implementation
     {$ENDIF}
     SysUtils, Classes, Math,
     g_basic,
+    e_sound, // DebugSound
     e_log, e_res, utils, wadreader, mapdef,
     g_game, g_map, g_panel, g_options, g_console, g_player, g_weapons, g_language, g_triggers, g_monsters,
     g_net, g_netmaster,
@@ -118,6 +121,7 @@ implementation
 
     FPS, FPSCounter, FPSTime: LongWord;
     TakeScreenShot: Boolean;
+    DebugSound: Boolean;
 
   procedure r_Render_LoadTextures;
   begin
@@ -214,12 +218,16 @@ implementation
 {$ENDIF}
 
   procedure r_Render_LogGLInfo;
+    var size: GLint;
   begin
+    size := 0;
+    glGetIntegerv(GL_MAX_TEXTURE_SIZE, @size);
     e_LogWritefln('GL Vendor: %s', [glGetString(GL_VENDOR)]);
     e_LogWritefln('GL Renderer: %s', [glGetString(GL_RENDERER)]);
     e_LogWritefln('GL Version: %s', [glGetString(GL_VERSION)]);
     e_LogWritefln('GL Shaders: %s', [glGetString(GL_SHADING_LANGUAGE_VERSION)]);
     e_LogWritefln('GL Extensions: %s', [glGetString(GL_EXTENSIONS)]);
+    e_LogWritefln('GL Texture: %s', [size]);
   end;
 
   procedure r_Render_Initialize;
@@ -1108,15 +1116,10 @@ implementation
         InitImage(img);
         if NewImage(gWinSizeX, gWinSizeY, TImageFormat.ifA8R8G8B8, img) then
         begin
-          {$IFDEF ENDIAN_LITTLE}
-            typ := GL_UNSIGNED_INT_8_8_8_8_REV;
-          {$ELSE}
-            typ := GL_UNSIGNED_INT_8_8_8_8;
-          {$ENDIF}
-          glReadPixels(0, 0, gWinSizeX, gWinSizeY, GL_BGRA, typ, img.bits);
+          glReadPixels(0, 0, gWinSizeX, gWinSizeY, GL_RGBA, GL_UNSIGNED_BYTE, img.bits);
           if glGetError() = GL_NO_ERROR then
           begin
-            if FlipImage(img) then
+            if FlipImage(img) and SwapChannels(img, ChannelRed, ChannelBlue) then
             begin
               ok := SaveImageToFile(fname, img);
             end;
@@ -1132,7 +1135,7 @@ implementation
   end;
 
   procedure r_Render_Draw;
-    var p1, p2: TPlayer; time: LongWord; pw, ph: Integer;
+    var p1, p2: TPlayer; time: LongWord; pw, ph, i, j: Integer;
   begin
     if gExit = EXIT_QUIT then
       exit;
@@ -1203,7 +1206,7 @@ implementation
     begin
       if gSpectMode = SPECT_MAPVIEW then
       begin
-        r_Render_DrawMapView(0, 0, gScreenWidth, gScreenHeight, gSpectX + gScreenWidth div 2, gSpectY + gScreenHeight div 2);
+        r_Render_DrawMapView(0, 0, gScreenWidth, gScreenHeight, gSpectX, gSpectY);
       end
       else if (p1 <> nil) and (p2 <> nil) then
       begin
@@ -1324,7 +1327,12 @@ implementation
 
     r_Console_Draw(false);
 
-    // TODO g_debug_Sounds
+    if DebugSound and gGameOn then
+    begin
+      for i := 0 to High(e_SoundsArray) do
+        for j := 0 to e_SoundsArray[i].nRefs do
+          r_Draw_FillRect(i + 100, j + 100, i + 100 + 1, j + 100 + 1, 255, 0, 0, 255);
+    end;
 
     if gShowFPS then
     begin
@@ -1478,4 +1486,12 @@ implementation
   end;
 {$ENDIF}
 
+  procedure r_Render_GetSpectatorLimits (out x0, y0, x1, y1: Integer);
+  begin
+    r_Map_GetSpectatorLimits(x0, y0, x1, y1);
+  end;
+
+begin
+  conRegVar('d_sounds', @DebugSound, '', '');
+  DebugSound := false;
 end.