X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fgame%2Fg_map.pas;h=b9da59dd6d2064a97120d49f7bca56425d8533b3;hb=cb39caa8b879b70aa096476a2e919d4a298f1fa5;hp=2c2a6b5c1a18c16e16c35cd2f4210eb79c5b6662;hpb=4caa7355c2a35f38ee6fbd541cfed72751a520a4;p=d2df-sdl.git diff --git a/src/game/g_map.pas b/src/game/g_map.pas index 2c2a6b5..b9da59d 100644 --- a/src/game/g_map.pas +++ b/src/game/g_map.pas @@ -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; 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