From: Ketmar Dark Date: Wed, 6 Sep 2017 04:09:04 +0000 (+0300) Subject: network/panel code cleanup X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=commitdiff_plain;h=bc39ceef968c6dabc91c4f4fb94411f52117e9f3 network/panel code cleanup --- diff --git a/src/game/g_map.pas b/src/game/g_map.pas index 6cfd0da..33571b8 100644 --- a/src/game/g_map.pas +++ b/src/game/g_map.pas @@ -290,7 +290,7 @@ begin begin for pan in panByGUID do begin - if pan.gncNeedSend then MH_SEND_PanelState(pan.panelType, pan.guid); + if pan.gncNeedSend then MH_SEND_PanelState(pan.guid); end; end; end; @@ -821,7 +821,7 @@ begin PanelArray := nil; end; -function CreatePanel (PanelRec: TDynRecord; AddTextures: TAddTextureArray; CurTex: Integer; sav: Boolean): Integer; +function CreatePanel (PanelRec: TDynRecord; AddTextures: TAddTextureArray; CurTex: Integer): Integer; var len: Integer; panels: ^TPanelArray; @@ -856,7 +856,6 @@ begin pan.arrIdx := len; pan.proxyId := -1; pan.tag := panelTypeToTag(PanelRec.PanelType); - if sav then pan.SaveIt := True; PanelRec.user['panel_guid'] := pguid; @@ -1642,7 +1641,7 @@ var FileName, mapResName, s, TexName: String; Data: Pointer; Len: Integer; - ok, isAnim, trigRef: Boolean; + ok, isAnim: Boolean; CurTex, ntn: Integer; rec, texrec: TDynRecord; pttit: PTRec; @@ -1881,7 +1880,6 @@ begin //e_LogWritefln('PANSTART: pannum=%s', [pannum]); texrec := nil; SetLength(AddTextures, 0); - trigRef := False; CurTex := -1; ok := false; @@ -1898,21 +1896,9 @@ begin ok := false; if (TriggersTable <> nil) and (mapTextureList <> nil) then begin - { - for b := 0 to High(TriggersTable) do - begin - if (TriggersTable[b].texPan = rec) or (TriggersTable[b].shotPan = rec) then - begin - trigRef := True; - ok := True; - break; - end; - end; - } if rec.userPanelTrigRef then begin // e_LogWritefln('trigref for panel %s', [pannum]); - trigRef := True; ok := True; end; end; @@ -2040,7 +2026,7 @@ begin //e_LogWritefln('PANADD: pannum=%s', [pannum]); // Ñîçäàåì ïàíåëü è çàïîìèíàåì åå GUID - PanelID := CreatePanel(rec, AddTextures, CurTex, trigRef); + PanelID := CreatePanel(rec, AddTextures, CurTex); //e_LogWritefln('panel #%s of type %s got guid #%s', [pannum, rec.PanelType, PanelID]); rec.userPanelId := PanelID; // remember game panel id, we'll fix triggers later @@ -2940,7 +2926,7 @@ begin //if (pan.proxyId >= 0) then mapGrid.proxyEnabled[pan.proxyId] := true //else pan.proxyId := mapGrid.insertBody(pan, pan.X, pan.Y, pan.Width, pan.Height, GridTagDoor); - //if g_Game_IsServer and g_Game_IsNet then MH_SEND_PanelState({gWalls[ID]}pan.PanelType, pguid); + //if g_Game_IsServer and g_Game_IsNet then MH_SEND_PanelState(pguid); // mark platform as interesting pan.setDirty(); @@ -2965,7 +2951,7 @@ begin mapGrid.proxyEnabled[pan.proxyId] := false; //if (pan.proxyId >= 0) then begin mapGrid.removeBody(pan.proxyId); pan.proxyId := -1; end; - //if g_Game_IsServer and g_Game_IsNet then MH_SEND_PanelState(pan.PanelType, pguid); + //if g_Game_IsServer and g_Game_IsNet then MH_SEND_PanelState(pguid); // mark platform as interesting pan.setDirty(); @@ -2995,7 +2981,7 @@ begin } tp.NextTexture(AnimLoop); - if g_Game_IsServer and g_Game_IsNet then MH_SEND_PanelTexture(PanelType, pguid, AnimLoop); + if g_Game_IsServer and g_Game_IsNet then MH_SEND_PanelTexture(pguid, AnimLoop); end; @@ -3024,7 +3010,7 @@ begin 3: g_Mark(X, Y, Width, Height, MARK_LIFTRIGHT); end; - //if g_Game_IsServer and g_Game_IsNet then MH_SEND_PanelState(PanelType, pguid); + //if g_Game_IsServer and g_Game_IsNet then MH_SEND_PanelState(pguid); // mark platform as interesting pan.setDirty(); end; @@ -3147,20 +3133,15 @@ var var PAMem: TBinMemoryWriter; pan: TPanel; + count: Integer; begin // Ñîçäàåì íîâûé ñïèñîê ñîõðàíÿåìûõ ïàíåëåé PAMem := TBinMemoryWriter.Create((Length(panByGUID)+1) * 40); - for pan in panByGUID do - begin - if true{pan.SaveIt} then - begin - // ID ïàíåëè - //PAMem.WriteInt(i); - // Ñîõðàíÿåì ïàíåëü - pan.SaveState(PAMem); - end; - end; + // Ñîõðàíÿåì ïàíåëè + count := Length(panByGUID); + Mem.WriteInt(count); + for pan in panByGUID do pan.SaveState(PAMem); // Ñîõðàíÿåì ýòîò ñïèñîê ïàíåëåé PAMem.SaveToMemory(Mem); @@ -3243,25 +3224,19 @@ var var PAMem: TBinMemoryReader; pan: TPanel; + count: LongInt; begin // Çàãðóæàåì òåêóùèé ñïèñîê ïàíåëåé PAMem := TBinMemoryReader.Create(); PAMem.LoadFromMemory(Mem); + // Çàãðóæàåì ïàíåëè + PAMem.ReadInt(count); + if (count <> Length(panByGUID)) then raise EBinSizeError.Create('g_Map_LoadState: LoadPanelArray: invalid number of panels'); for pan in panByGUID do begin - if true{pan.SaveIt} then - begin - // ID ïàíåëè: - //PAMem.ReadInt(id); - { - if id <> i then raise EBinSizeError.Create('g_Map_LoadState: LoadPanelArray: Wrong Panel ID'); - } - // Çàãðóæàåì ïàíåëü - pan.LoadState(PAMem); - //if (panels[i].arrIdx <> i) then raise Exception.Create('g_Map_LoadState: LoadPanelArray: Wrong Panel arrIdx'); - if (pan.proxyId >= 0) then mapGrid.proxyEnabled[pan.proxyId] := pan.Enabled; - end; + pan.LoadState(PAMem); + if (pan.proxyId >= 0) then mapGrid.proxyEnabled[pan.proxyId] := pan.Enabled; end; // Ýòîò ñïèñîê ïàíåëåé çàãðóæåí diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index 8b9aa1e..88764ed 100644 --- a/src/game/g_netmsg.pas +++ b/src/game/g_netmsg.pas @@ -168,8 +168,8 @@ procedure MH_SEND_PlayerSettings(PID: Word; Mdl: string = ''; ID: Integer = NET_ procedure MH_SEND_ItemSpawn(Quiet: Boolean; IID: Word; ID: Integer = NET_EVERYONE); procedure MH_SEND_ItemDestroy(Quiet: Boolean; IID: Word; ID: Integer = NET_EVERYONE); // PANEL -procedure MH_SEND_PanelTexture(PType: Word; PGUID: Integer; AnimLoop: Byte; ID: Integer = NET_EVERYONE); -procedure MH_SEND_PanelState(PType: Word; PGUID: Integer; ID: Integer = NET_EVERYONE); +procedure MH_SEND_PanelTexture(PGUID: Integer; AnimLoop: Byte; ID: Integer = NET_EVERYONE); +procedure MH_SEND_PanelState(PGUID: Integer; ID: Integer = NET_EVERYONE); // MONSTER procedure MH_SEND_MonsterSpawn(UID: Word; ID: Integer = NET_EVERYONE); procedure MH_SEND_MonsterPos(UID: Word; ID: Integer = NET_EVERYONE); @@ -643,8 +643,8 @@ procedure MH_SEND_Everything(CreatePlayers: Boolean = False; ID: Integer = NET_E function sendPanelState (pan: TPanel): Boolean; begin result := false; // don't stop - MH_SEND_PanelState(pan.PanelType, pan.guid, ID); // anyway, to sync mplats - if (pan.GetTextureCount > 1) then MH_SEND_PanelTexture(pan.PanelType, pan.guid, pan.LastAnimLoop, ID); + MH_SEND_PanelState(pan.guid, ID); // anyway, to sync mplats + if (pan.GetTextureCount > 1) then MH_SEND_PanelTexture(pan.guid, pan.LastAnimLoop, ID); end; var @@ -670,99 +670,29 @@ begin g_Items_ForEachAlive(sendItemRespawn, true); // backwards g_Mons_ForEach(sendMonSpawn); - g_Map_ForEachPanel(sendPanelState); - (* replaced with the `g_Map_ForEachPanel()` call above - if gWalls <> nil then - for I := Low(gWalls) to High(gWalls) do - if gWalls[I] <> nil then - with gWalls[I] do - begin - {if Door then} // anyway, to sync mplats - MH_SEND_PanelState(PanelType, I, ID); - - if GetTextureCount > 1 then - MH_SEND_PanelTexture(PanelType, I, LastAnimLoop, ID); - end; - - if gLifts <> nil then - for I := Low(gLifts) to High(gLifts) do - if gLifts[I] <> nil then - with gLifts[I] do - MH_SEND_PanelState(PanelType, I, ID); - - if gRenderForegrounds <> nil then - for I := Low(gRenderForegrounds) to High(gRenderForegrounds) do - if gRenderForegrounds[I] <> nil then - with gRenderForegrounds[I] do - begin - if (GetTextureCount > 1) then - MH_SEND_PanelTexture(PanelType, I, LastAnimLoop, ID); - {if Moved then} // anyway, to sync mplats - MH_SEND_PanelState(PanelType, I, ID); - end; - if gRenderBackgrounds <> nil then - for I := Low(gRenderBackgrounds) to High(gRenderBackgrounds) do - if gRenderBackgrounds[I] <> nil then - with gRenderBackgrounds[I] do - begin - if (GetTextureCount > 1) then - MH_SEND_PanelTexture(PanelType, I, LastAnimLoop, ID); - {if Moved then} // anyway, to sync mplats - MH_SEND_PanelState(PanelType, I, ID); - end; - if gWater <> nil then - for I := Low(gWater) to High(gWater) do - if gWater[I] <> nil then - with gWater[I] do - begin - if GetTextureCount > 1 then - MH_SEND_PanelTexture(PanelType, I, LastAnimLoop, ID); - {if Moved then} // anyway, to sync mplats - MH_SEND_PanelState(PanelType, I, ID); - end; - if gAcid1 <> nil then - for I := Low(gAcid1) to High(gAcid1) do - if gAcid1[I] <> nil then - with gAcid1[I] do - begin - if GetTextureCount > 1 then - MH_SEND_PanelTexture(PanelType, I, LastAnimLoop, ID); - {if Moved then} // anyway, to sync mplats - MH_SEND_PanelState(PanelType, I, ID); - end; - if gAcid2 <> nil then - for I := Low(gAcid2) to High(gAcid2) do - if gAcid2[I] <> nil then - with gAcid2[I] do - begin - if GetTextureCount > 1 then - MH_SEND_PanelTexture(PanelType, I, LastAnimLoop, ID); - {if Moved then} // anyway, to sync mplats - MH_SEND_PanelState(PanelType, I, ID); - end; - if gSteps <> nil then - for I := Low(gSteps) to High(gSteps) do - if gSteps[I] <> nil then - with gSteps[I] do - begin - if GetTextureCount > 1 then - MH_SEND_PanelTexture(PanelType, I, LastAnimLoop, ID); - {if Moved then} // anyway, to sync mplats - MH_SEND_PanelState(PanelType, I, ID); - end; - *) - if gTriggers <> nil then + begin for I := Low(gTriggers) to High(gTriggers) do + begin if gTriggers[I].TriggerType = TRIGGER_SOUND then + begin MH_SEND_TriggerSound(gTriggers[I], ID); + end; + end; + end; if Shots <> nil then + begin for I := Low(Shots) to High(Shots) do + begin if Shots[i].ShotType in [6, 7, 8] then + begin MH_SEND_CreateShot(i, ID); + end; + end; + end; MH_SEND_TriggerMusic(ID); @@ -771,16 +701,16 @@ begin if gGameSettings.GameMode = GM_CTF then begin - if gFlags[FLAG_RED].State <> FLAG_STATE_CAPTURED then - MH_SEND_FlagEvent(gFlags[FLAG_RED].State, FLAG_RED, 0, True, ID); - if gFlags[FLAG_BLUE].State <> FLAG_STATE_CAPTURED then - MH_SEND_FlagEvent(gFlags[FLAG_BLUE].State, FLAG_BLUE, 0, True, ID); + if gFlags[FLAG_RED].State <> FLAG_STATE_CAPTURED then MH_SEND_FlagEvent(gFlags[FLAG_RED].State, FLAG_RED, 0, True, ID); + if gFlags[FLAG_BLUE].State <> FLAG_STATE_CAPTURED then MH_SEND_FlagEvent(gFlags[FLAG_BLUE].State, FLAG_BLUE, 0, True, ID); end; if CreatePlayers and (ID >= 0) then NetClients[ID].State := NET_STATE_GAME; if gLMSRespawn > LMS_RESPAWN_NONE then + begin MH_SEND_GameEvent(NET_EV_LMS_WARMUP, (gLMSRespawnTime - gTime) div 1000, 'N', ID); + end; end; procedure MH_SEND_Info(ID: Byte); @@ -1246,37 +1176,16 @@ end; // PANEL -procedure MH_SEND_PanelTexture(PType: Word; PGUID: Integer; AnimLoop: Byte; ID: Integer = NET_EVERYONE); +procedure MH_SEND_PanelTexture(PGUID: Integer; AnimLoop: Byte; ID: Integer = NET_EVERYONE); var TP: TPanel; begin TP := g_Map_PanelByGUID(PGUID); if (TP = nil) then exit; - { - case PType of - PANEL_WALL, PANEL_OPENDOOR, PANEL_CLOSEDOOR: - TP := gWalls[PID]; - PANEL_FORE: - TP := gRenderForegrounds[PID]; - PANEL_BACK: - TP := gRenderBackgrounds[PID]; - PANEL_WATER: - TP := gWater[PID]; - PANEL_ACID1: - TP := gAcid1[PID]; - PANEL_ACID2: - TP := gAcid2[PID]; - PANEL_STEP: - TP := gSteps[PID]; - else - Exit; - end; - } with TP do begin NetOut.Write(Byte(NET_MSG_PTEX)); - NetOut.Write(PType); NetOut.Write(LongWord(PGUID)); NetOut.Write(FCurTexture); NetOut.Write(FCurFrame); @@ -1287,36 +1196,15 @@ begin g_Net_Host_Send(ID, True, NET_CHAN_LARGEDATA); end; -procedure MH_SEND_PanelState(PType: Word; PGUID: Integer; ID: Integer = NET_EVERYONE); +procedure MH_SEND_PanelState(PGUID: Integer; ID: Integer = NET_EVERYONE); var TP: TPanel; mpflags: Byte = 0; begin TP := g_Map_PanelByGUID(PGUID); if (TP = nil) then exit; - case PType of - { - PANEL_WALL, PANEL_OPENDOOR, PANEL_CLOSEDOOR: TP := gWalls[PID]; - PANEL_LIFTUP, PANEL_LIFTDOWN, PANEL_LIFTLEFT, PANEL_LIFTRIGHT: TP := gLifts[PID]; - } - PANEL_BACK: - begin - //TP := gRenderBackgrounds[PID]; - TP.Moved := True; - end; - PANEL_FORE: - begin - //TP := gRenderForegrounds[PID]; - TP.Moved := True; - end; - { - else - Exit; - } - end; NetOut.Write(Byte(NET_MSG_PSTATE)); - NetOut.Write(PType); NetOut.Write(LongWord(PGUID)); NetOut.Write(Byte(TP.Enabled)); NetOut.Write(TP.LiftType); @@ -2457,13 +2345,12 @@ end; procedure MC_RECV_PanelTexture(var M: TMsg); var TP: TPanel; - //PType: Word; PGUID: Integer; Tex, Fr: Integer; Loop, Cnt: Byte; begin if not gGameOn then Exit; - {PType :=} M.ReadWord(); + PGUID := Integer(M.ReadLongWord()); Tex := M.ReadLongInt(); Fr := M.ReadLongInt(); @@ -2471,20 +2358,6 @@ begin Loop := M.ReadByte(); TP := g_Map_PanelByGUID(PGUID); - - { - case PType of - PANEL_WALL, PANEL_OPENDOOR, PANEL_CLOSEDOOR: if gWalls <> nil then TP := gWalls[ID]; - PANEL_FORE: if gRenderForegrounds <> nil then TP := gRenderForegrounds[ID]; - PANEL_BACK: if gRenderBackgrounds <> nil then TP := gRenderBackgrounds[ID]; - PANEL_WATER: if gWater <> nil then TP := gWater[ID]; - PANEL_ACID1: if gAcid1 <> nil then TP := gAcid1[ID]; - PANEL_ACID2: if gAcid2 <> nil then TP := gAcid2[ID]; - PANEL_STEP: if gSteps <> nil then TP := gSteps[ID]; - else Exit; - end; - } - if (TP <> nil) then begin if Loop = 0 then @@ -2506,7 +2379,6 @@ var PGUID: Integer; E: Boolean; Lift: Byte; - PType: Word; X, Y, W, H: Integer; TP: TPanel; speedX, speedY, startX, startY, endX, endY: Integer; @@ -2514,7 +2386,7 @@ var mpflags: Byte; begin if not gGameOn then Exit; - PType := M.ReadWord(); + PGUID := Integer(M.ReadLongWord()); E := (M.ReadByte() <> 0); Lift := M.ReadByte(); @@ -2535,66 +2407,35 @@ begin sizeEY := M.ReadLongInt(); mpflags := M.ReadByte(); // bit0: TP.movingActive; bit1: TP.moveOnce - case PType of - {PANEL_WALL, PANEL_OPENDOOR, PANEL_CLOSEDOOR: - if E then g_Map_EnableWallGUID(PGUID) else g_Map_DisableWallGUID(PGUID);} - - PANEL_LIFTUP, PANEL_LIFTDOWN, PANEL_LIFTLEFT, PANEL_LIFTRIGHT: - g_Map_SetLiftGUID(PGUID, Lift); - - {PANEL_BACK, - PANEL_FORE:} - { - else - begin - TP := g_Map_PanelByGUID(PGUID); - if (TP <> nil) then - begin - TP.X := X; - TP.Y := Y; - TP.positionChanged(); - end; - //gRenderBackgrounds[ID].X := X; - //gRenderBackgrounds[ID].Y := Y; - end; - } + TP := g_Map_PanelByGUID(PGUID); + if (TP = nil) then exit; - { - PANEL_FORE: - begin - gRenderForegrounds[ID].X := X; - gRenderForegrounds[ID].Y := Y; - end; - } - end; + // update lifts state + if TP.isGLift then g_Map_SetLiftGUID(PGUID, Lift); // update enabled/disabled state for all panels if E then g_Map_EnableWallGUID(PGUID) else g_Map_DisableWallGUID(PGUID); - // update panel position, as it can be moved - TP := g_Map_PanelByGUID(PGUID); - if (TP <> nil) then - begin - // mplat - TP.movingSpeedX := speedX; - TP.movingSpeedY := speedY; - TP.movingStartX := startX; - TP.movingStartY := startY; - TP.movingEndX := endX; - TP.movingEndY := endY; - TP.sizeSpeedX := sizeSpX; - TP.sizeSpeedY := sizeSpY; - TP.sizeEndX := sizeEX; - TP.sizeEndY := sizeEY; - TP.movingActive := ((mpflags and 1) <> 0); - TP.moveOnce := ((mpflags and 2) <> 0); - // position - TP.X := X; - TP.Y := Y; - TP.Width := W; - TP.Height := H; - TP.positionChanged(); - end; + // update panel position, as it can be moved (mplat) + TP.X := X; + TP.Y := Y; + TP.Width := W; + TP.Height := H; + // update mplat state + TP.movingSpeedX := speedX; + TP.movingSpeedY := speedY; + TP.movingStartX := startX; + TP.movingStartY := startY; + TP.movingEndX := endX; + TP.movingEndY := endY; + TP.sizeSpeedX := sizeSpX; + TP.sizeSpeedY := sizeSpY; + TP.sizeEndX := sizeEX; + TP.sizeEndY := sizeEY; + TP.movingActive := ((mpflags and 1) <> 0); + TP.moveOnce := ((mpflags and 2) <> 0); + // notify panel of it's position/size change, so it can fix other internal structures + TP.positionChanged(); end; // TRIGGERS @@ -2711,7 +2552,6 @@ begin setPosition(X, Y); // this will call positionChanged(); GameVelX := VX; GameVelY := VY; - //positionChanged(); // this updates spatial accelerators end; end; @@ -2734,7 +2574,6 @@ begin GameVelX := M.ReadLongInt(); GameVelY := M.ReadLongInt(); GameDirection := TDirection(M.ReadByte()); - //positionChanged(); // this updates spatial accelerators end; end; @@ -2766,16 +2605,11 @@ begin if MonsterState <> MState then begin - if (MState = MONSTATE_GO) and (MonsterState = MONSTATE_SLEEP) then - WakeUpSound; - if (MState = MONSTATE_DIE) then - DieSound; - if (MState = MONSTATE_PAIN) then - MakeBloodSimple(Min(200, MonsterPain)); - if (MState = MONSTATE_ATTACK) then - kick(nil); - if (MState = MONSTATE_DEAD) then - SetDeadAnim; + if (MState = MONSTATE_GO) and (MonsterState = MONSTATE_SLEEP) then WakeUpSound(); + if (MState = MONSTATE_DIE) then DieSound(); + if (MState = MONSTATE_PAIN) then MakeBloodSimple(Min(200, MonsterPain)); + if (MState = MONSTATE_ATTACK) then kick(nil); + if (MState = MONSTATE_DEAD) then SetDeadAnim(); SetState(MState, MFAnm); end; diff --git a/src/game/g_panel.pas b/src/game/g_panel.pas index 00407db..6f45fc2 100644 --- a/src/game/g_panel.pas +++ b/src/game/g_panel.pas @@ -98,10 +98,8 @@ type FX, FY: Integer; FWidth, FHeight: Word; FPanelType: Word; - FSaveIt: Boolean; // Ñîõðàíÿòü ïðè SaveState? FEnabled: Boolean; FDoor: Boolean; - FMoved: Boolean; FLiftType: Byte; FLastAnimLoop: Byte; // sorry, there fields are public to allow setting 'em in g_map; this should be fixed later @@ -159,10 +157,8 @@ type property width: Word read FWidth write FWidth; property height: Word read FHeight write FHeight; property panelType: Word read FPanelType write FPanelType; - property saveIt: Boolean read FSaveIt write FSaveIt; // Ñîõðàíÿòü ïðè SaveState? property enabled: Boolean read FEnabled write FEnabled; // Ñîõðàíÿòü ïðè SaveState? property door: Boolean read FDoor write FDoor; // Ñîõðàíÿòü ïðè SaveState? - property moved: Boolean read FMoved write FMoved; // Ñîõðàíÿòü ïðè SaveState? property liftType: Byte read FLiftType write FLiftType; // Ñîõðàíÿòü ïðè SaveState? property lastAnimLoop: Byte read FLastAnimLoop write FLastAnimLoop; // Ñîõðàíÿòü ïðè SaveState? @@ -236,7 +232,6 @@ begin FCurFrame := 0; FCurFrameCount := 0; LastAnimLoop := 0; - Moved := False; mapId := PanelRec.id; mGUID := aguid; @@ -261,37 +256,14 @@ begin Enabled := True; Door := False; LiftType := 0; - SaveIt := False; case PanelType of - PANEL_OPENDOOR: - begin - Enabled := False; - Door := True; - SaveIt := True; - end; - PANEL_CLOSEDOOR: - begin - Door := True; - SaveIt := True; - end; - PANEL_LIFTUP: - SaveIt := True; - PANEL_LIFTDOWN: - begin - LiftType := 1; - SaveIt := True; - end; - PANEL_LIFTLEFT: - begin - LiftType := 2; - SaveIt := True; - end; - PANEL_LIFTRIGHT: - begin - LiftType := 3; - SaveIt := True; - end; + PANEL_OPENDOOR: begin Enabled := False; Door := True; end; + PANEL_CLOSEDOOR: Door := True; + PANEL_LIFTUP: LiftType := 0; //??? + PANEL_LIFTDOWN: LiftType := 1; + PANEL_LIFTLEFT: LiftType := 2; + PANEL_LIFTRIGHT: LiftType := 3; end; // Íåâèäèìàÿ: @@ -354,7 +326,6 @@ begin True, Textures[AddTextures[i].Texture].Speed); FTextureIDs[i].AnTex.Blending := ByteBool(PanelRec.Flags and PANEL_FLAG_BLENDING); FTextureIDs[i].AnTex.Alpha := PanelRec.Alpha; - SaveIt := True; end else begin // Îáû÷íàÿ òåêñòóðà @@ -363,8 +334,7 @@ begin end; // Òåêñòóð íåñêîëüêî - íóæíî ñîõðàíÿòü òåêóùóþ: - if Length(FTextureIDs) > 1 then - SaveIt := True; + //if Length(FTextureIDs) > 1 then SaveIt := True; // Åñëè íå ñïåöòåêñòóðà, òî çàäàåì ðàçìåðû: if PanelRec.TextureNum > High(Textures) then @@ -1057,7 +1027,6 @@ var ver: Byte; begin if (Mem = nil) then exit; - //if not SaveIt then exit; // Ñèãíàòóðà ïàíåëè: sig := PANEL_SIGNATURE; // 'PANL' @@ -1116,7 +1085,6 @@ var //ox, oy: Integer; begin if (Mem = nil) then exit; - //if not SaveIt then exit; // Ñèãíàòóðà ïàíåëè: Mem.ReadDWORD(sig);