DEADSOFTWARE

gl: fix mouse coords for holmes
[d2df-sdl.git] / src / game / renders / opengl / r_map.pas
index 6b54fa3a4273f1fd738451366082640d45f38eee..c9a4d3370393095ea4e2f363027b357ea1c13b0e 100644 (file)
@@ -40,7 +40,7 @@ interface
 
   procedure r_Map_Update;
 
-  procedure r_Map_Draw (x, y, w, h, camx, camy: Integer; player: TPlayer);
+  procedure r_Map_Draw (x, y, w, h, camx, camy: Integer; player: TPlayer; out acx, acy: Integer);
 
 implementation
 
@@ -1125,6 +1125,7 @@ implementation
       glEnable(GL_BLEND);
       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
+      r_Draw_SetColor(255, 255, 255, 255);
       glBegin(GL_POINTS);
         for i := 0 to High(Particles) do
         begin
@@ -1137,6 +1138,7 @@ implementation
           end;
         end;
       glEnd;
+      r_Draw_SetColor(0, 0, 0, 255);
 
       glDisable(GL_BLEND);
     end;
@@ -1383,7 +1385,7 @@ implementation
     end;
   end;
 
-  procedure r_Map_Draw (x, y, w, h, camx, camy: Integer; player: TPlayer);
+  procedure r_Map_Draw (x, y, w, h, camx, camy: Integer; player: TPlayer; out acx, acy: Integer);
     var iter: TPanelGrid.Iter; p: PPanel; cx, cy, cw, ch, xx, yy, ww, hh, ml, mt, mr, mb, mcx, mcy: Integer; sx, sy, sw, sh: LongInt; l, t, r, b: Integer;
   begin
     r_Draw_GetRect(l, t, r, b);
@@ -1398,16 +1400,24 @@ implementation
     (* camera bounds *)
     if g_dbg_ignore_bounds = false then
     begin
-      if cx + cw > gMapInfo.Width then
-        cx := gMapInfo.Width - cw;
-      if cy + ch > gMapInfo.Height then
-        cy := gMapInfo.Height - ch;
-      if cx < 0 then
+      if w > gMapInfo.Width then
+        cx := gMapInfo.Width div 2 - w div 2
+      else if cx + cw > gMapInfo.Width then
+        cx := gMapInfo.Width - cw
+      else if cx < 0 then
         cx := 0;
-      if cy < 0 then
+
+      if h > gMapInfo.Height then
+        cy := gMapInfo.Height div 2 - h div 2
+      else if cy + ch > gMapInfo.Height then
+        cy := gMapInfo.Height - ch
+      else if cy < 0 then
         cy := 0;
     end;
 
+    acx := cx;
+    acy := cy;
+
     (* map bounds *)
     xx := cx;
     yy := cy;
@@ -1484,6 +1494,9 @@ implementation
     r_Map_DrawPanelType(PANEL_FORE);
     // TODO draw monsters health bar
     // TODO draw players health bar
+
+    r_Draw_SetRect(x, y, x + w, y + h);
+
     if gGameSettings.GameMode <> GM_SINGLE then
       r_Map_DrawPlayerIndicators(player, cx, cy, cw, ch);
     if DebugCameraScale <> 1.0 then