DEADSOFTWARE

forcing centering of small maps (BlackDoomer request)
[d2df-sdl.git] / src / game / g_map.pas
index 2c2a6b5c1a18c16e16c35cd2f4210eb79c5b6662..b9da59dd6d2064a97120d49f7bca56425d8533b3 100644 (file)
@@ -104,10 +104,11 @@ type
   TForEachPanelCB = function (pan: TPanel): Boolean; // return `true` to stop
 
 function g_Map_HasAnyPanelAtPoint (x, y: Integer; panelType: Word): Boolean;
+function g_Map_PanelAtPoint (x, y: Integer; tagmask: Integer=-1): TPanel;
 
 // trace liquid, stepping by `dx` and `dy`
 // return last seen liquid coords, and `false` if we're started outside of the liquid
-function g_Map_TraceLiquid (x, y, dx, dy: Integer; out topx, topy: Integer): Boolean;
+function g_Map_TraceLiquidNonPrecise (x, y, dx, dy: Integer; out topx, topy: Integer): Boolean;
 
 
 procedure g_Map_ProfilersBegin ();
@@ -197,7 +198,7 @@ type
   TPanelGrid = specialize TBodyGridBase<TPanel>;
 
 var
-  mapGrid: TPanelGrid = nil;
+  mapGrid: TPanelGrid = nil; // DO NOT USE! public for debugging only!
 
 
 implementation
@@ -376,6 +377,14 @@ begin
 end;
 
 
+function g_Map_PanelAtPoint (x, y: Integer; tagmask: Integer=-1): TPanel;
+begin
+  result := nil;
+  if (tagmask = 0) then exit;
+  result := mapGrid.forEachAtPoint(x, y, nil, tagmask);
+end;
+
+
 function g_Map_IsSpecialTexture(Texture: String): Boolean;
 begin
   Result := (Texture = TEXTURE_NAME_WATER) or
@@ -1217,6 +1226,7 @@ begin
   if (mapY1 < gMapInfo.Height-1) then mapY1 := gMapInfo.Height-1;
 
   mapGrid := TPanelGrid.Create(mapX0-128, mapY0-128, mapX1-mapX0+1+128*2, mapY1-mapY0+1+128*2);
+  //mapGrid := TPanelGrid.Create(0, 0, gMapInfo.Width, gMapInfo.Height);
 
   addPanelsToGrid(gWalls);
   addPanelsToGrid(gRenderBackgrounds);
@@ -2873,7 +2883,7 @@ end;
 
 // trace liquid, stepping by `dx` and `dy`
 // return last seen liquid coords, and `false` if we're started outside of the liquid
-function g_Map_TraceLiquid (x, y, dx, dy: Integer; out topx, topy: Integer): Boolean;
+function g_Map_TraceLiquidNonPrecise (x, y, dx, dy: Integer; out topx, topy: Integer): Boolean;
 const
   MaskLiquid = GridTagWater or GridTagAcid1 or GridTagAcid2;
 begin