diff --git a/src/game/g_map.pas b/src/game/g_map.pas
index a4b2064a98e26b9609aa691c77fcb2f90eb61c2f..9470057306ae27f956b9b1c01b87ca49cdf7cd79 100644 (file)
--- a/src/game/g_map.pas
+++ b/src/game/g_map.pas
procedure g_Map_ResetFlag(Flag: Byte);
procedure g_Map_DrawFlags();
-function g_Map_PanelForPID(PanelID: Integer; var PanelArrayID: Integer): PPanel;
-
procedure g_Map_SaveState(Var Mem: TBinMemoryWriter);
procedure g_Map_LoadState(Var Mem: TBinMemoryReader);
gWADHash: TMD5Digest;
BackID: DWORD = DWORD(-1);
gExternalResources: TStringList;
+ gMovingWallIds: array of Integer = nil;
gdbg_map_use_accel_render: Boolean = true;
gdbg_map_use_accel_coldet: Boolean = true;
pttit: PTRec;
pannum, trignum, cnt, tgpid: Integer;
stt: UInt64;
+ moveSpeed{, moveStart, moveEnd}: TDFPoint;
+ //moveActive: Boolean;
begin
mapGrid.Free();
mapGrid := nil;
// set 'gamePanelId' field to panel id
rec.userPanelId := PanelID; // remember game panel id, we'll fix triggers later
+ // setup lifts
+ moveSpeed := rec.moveSpeed;
+ //moveStart := rec.moveStart;
+ //moveEnd := rec.moveEnd;
+ //moveActive := rec['move_active'].varvalue;
+ if not moveSpeed.isZero then
+ begin
+ SetLength(gMovingWallIds, Length(gMovingWallIds)+1);
+ gMovingWallIds[High(gMovingWallIds)] := PanelID;
+ //e_LogWritefln('found moving panel ''%s'' (idx=%s; id=%s)', [rec.id, pannum, PanelID]);
+ end;
+
//e_LogWritefln('PANEND: pannum=%s', [pannum]);
g_Game_StepLoading();
FreePanelArray(gSteps);
FreePanelArray(gLifts);
FreePanelArray(gBlockMon);
+ gMovingWallIds := nil;
if BackID <> DWORD(-1) then
begin
i: Integer;
begin
- if panels <> nil then
- for i := 0 to High(panels) do
- panels[i].Update();
+ for i := 0 to High(panels) do panels[i].Update();
end;
begin
///// /////
end;
-function g_Map_PanelForPID(PanelID: Integer; var PanelArrayID: Integer): PPanel;
-var
- Arr: TPanelArray;
-begin
- Result := nil;
- if (PanelID < 0) or (PanelID > High(PanelByID)) then Exit;
- Arr := PanelByID[PanelID].PWhere^;
- PanelArrayID := PanelByID[PanelID].PArrID;
- Result := Addr(Arr[PanelByID[PanelID].PArrID]);
-end;
-
// trace liquid, stepping by `dx` and `dy`
// return last seen liquid coords, and `false` if we're started outside of the liquid