diff --git a/src/game/g_map.pas b/src/game/g_map.pas
index 2c2a6b5c1a18c16e16c35cd2f4210eb79c5b6662..b9da59dd6d2064a97120d49f7bca56425d8533b3 100644 (file)
--- a/src/game/g_map.pas
+++ b/src/game/g_map.pas
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 ();
TPanelGrid = specialize TBodyGridBase<TPanel>;
var
- mapGrid: TPanelGrid = nil;
+ mapGrid: TPanelGrid = nil; // DO NOT USE! public for debugging only!
implementation
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
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);
// 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