X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_panel.pas;h=07fe2d6103e5dd4f2fc57ec38e1b67330060203b;hb=dd969f579db2bf70f6ddfcb5d377b2b95b994a6e;hp=563beffbbeac9cb783a2adee4d1ec9f417c0ceea;hpb=7934e57057ee8f016b900c0c53c97204ac776244;p=d2df-sdl.git diff --git a/src/game/g_panel.pas b/src/game/g_panel.pas index 563beff..07fe2d6 100644 --- a/src/game/g_panel.pas +++ b/src/game/g_panel.pas @@ -1009,10 +1009,11 @@ begin Result := Result + 100; end; + const PAN_SAVE_VERSION = 1; -procedure TPanel.SaveState(Var Mem: TBinMemoryWriter); +procedure TPanel.SaveState (var Mem: TBinMemoryWriter); var sig: DWORD; anim: Boolean; @@ -1020,35 +1021,35 @@ var begin if (Mem = nil) then exit; -// Ñèãíàòóðà ïàíåëè: + // Ñèãíàòóðà ïàíåëè sig := PANEL_SIGNATURE; // 'PANL' Mem.WriteDWORD(sig); ver := PAN_SAVE_VERSION; Mem.WriteByte(ver); -// Îòêðûòà/çàêðûòà, åñëè äâåðü: + // Îòêðûòà/çàêðûòà, åñëè äâåðü Mem.WriteBoolean(FEnabled); -// Íàïðàâëåíèå ëèôòà, åñëè ëèôò: + // Íàïðàâëåíèå ëèôòà, åñëè ëèôò Mem.WriteByte(FLiftType); -// Íîìåð òåêóùåé òåêñòóðû: + // Íîìåð òåêóùåé òåêñòóðû Mem.WriteInt(FCurTexture); -// Êîîðäû + // Êîîðäû Mem.WriteInt(FX); Mem.WriteInt(FY); Mem.WriteWord(FWidth); Mem.WriteWord(FHeight); -// Àíèìèðîâàííàÿ ëè òåêóùàÿ òåêñòóðà: + // Àíèìèðîâàííàÿ ëè òåêóùàÿ òåêñòóðà if (FCurTexture >= 0) and (FTextureIDs[FCurTexture].Anim) then - begin - Assert(FTextureIDs[FCurTexture].AnTex <> nil, - 'TPanel.SaveState: No animation object'); - anim := True; - end + begin + assert(FTextureIDs[FCurTexture].AnTex <> nil, 'TPanel.SaveState: No animation object'); + anim := True; + end else + begin anim := False; + end; Mem.WriteBoolean(anim); -// Åñëè äà - ñîõðàíÿåì àíèìàöèþ: - if anim then - FTextureIDs[FCurTexture].AnTex.SaveState(Mem); + // Åñëè äà - ñîõðàíÿåì àíèìàöèþ + if anim then FTextureIDs[FCurTexture].AnTex.SaveState(Mem); // moving platform state Mem.WriteInt(mMovingSpeed.X); @@ -1062,6 +1063,7 @@ begin Mem.WriteInt(mSizeSpeed.h); Mem.WriteInt(mSizeEnd.w); Mem.WriteInt(mSizeEnd.h); + Mem.WriteBoolean(mMovingActive); Mem.WriteBoolean(mMoveOnce); @@ -1069,37 +1071,35 @@ begin Mem.WriteInt(mEndSizeTrig); end; -procedure TPanel.LoadState(var Mem: TBinMemoryReader); + +procedure TPanel.LoadState (var Mem: TBinMemoryReader); var sig: DWORD; anim: Boolean; ver: Byte; - //ox, oy: Integer; begin if (Mem = nil) then exit; -// Ñèãíàòóðà ïàíåëè: + // Ñèãíàòóðà ïàíåëè Mem.ReadDWORD(sig); if (sig <> PANEL_SIGNATURE) then raise EBinSizeError.Create('TPanel.LoadState: wrong panel signature'); // 'PANL' Mem.ReadByte(ver); if (ver <> PAN_SAVE_VERSION) then raise EBinSizeError.Create('TPanel.LoadState: invalid panel version'); -// Îòêðûòà/çàêðûòà, åñëè äâåðü: + // Îòêðûòà/çàêðûòà, åñëè äâåðü Mem.ReadBoolean(FEnabled); -// Íàïðàâëåíèå ëèôòà, åñëè ëèôò: + // Íàïðàâëåíèå ëèôòà, åñëè ëèôò Mem.ReadByte(FLiftType); -// Íîìåð òåêóùåé òåêñòóðû: + // Íîìåð òåêóùåé òåêñòóðû Mem.ReadInt(FCurTexture); -// Êîîðäû - //ox := FX; - //oy := FY; + // Êîîðäû Mem.ReadInt(FX); Mem.ReadInt(FY); Mem.ReadWord(FWidth); Mem.ReadWord(FHeight); //e_LogWritefln('panel %s(%s): old=(%s,%s); new=(%s,%s); delta=(%s,%s)', [arrIdx, proxyId, ox, oy, FX, FY, FX-ox, FY-oy]); -// Àíèìèðîâàííàÿ ëè òåêóùàÿ òåêñòóðà: + // Àíèìèðîâàííàÿ ëè òåêóùàÿ òåêñòóðà Mem.ReadBoolean(anim); -// Åñëè äà - çàãðóæàåì àíèìàöèþ: + // Åñëè äà - çàãðóæàåì àíèìàöèþ if anim then begin Assert((FCurTexture >= 0) and @@ -1116,10 +1116,12 @@ begin Mem.ReadInt(mMovingStart.Y); Mem.ReadInt(mMovingEnd.X); Mem.ReadInt(mMovingEnd.Y); + Mem.ReadInt(mSizeSpeed.w); Mem.ReadInt(mSizeSpeed.h); Mem.ReadInt(mSizeEnd.w); Mem.ReadInt(mSizeEnd.h); + Mem.ReadBoolean(mMovingActive); Mem.ReadBoolean(mMoveOnce);