summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2540411)
raw | patch | inline | side by side (parent: 2540411)
author | Ketmar Dark <ketmar@ketmar.no-ip.org> | |
Wed, 6 Sep 2017 04:09:04 +0000 (07:09 +0300) | ||
committer | Ketmar Dark <ketmar@ketmar.no-ip.org> | |
Wed, 6 Sep 2017 04:09:20 +0000 (07:09 +0300) |
src/game/g_map.pas | patch | blob | history | |
src/game/g_netmsg.pas | patch | blob | history | |
src/game/g_panel.pas | patch | blob | history |
diff --git a/src/game/g_map.pas b/src/game/g_map.pas
index 6cfd0da3b578ccd8d20f6ca93fe46e1637dcca37..33571b8bcd182fb5b61cbae55bfabfcd3c9f4a33 100644 (file)
--- a/src/game/g_map.pas
+++ b/src/game/g_map.pas
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;
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;
pan.arrIdx := len;
pan.proxyId := -1;
pan.tag := panelTypeToTag(PanelRec.PanelType);
- if sav then pan.SaveIt := True;
PanelRec.user['panel_guid'] := pguid;
FileName, mapResName, s, TexName: String;
Data: Pointer;
Len: Integer;
- ok, isAnim, trigRef: Boolean;
+ ok, isAnim: Boolean;
CurTex, ntn: Integer;
rec, texrec: TDynRecord;
pttit: PTRec;
//e_LogWritefln('PANSTART: pannum=%s', [pannum]);
texrec := nil;
SetLength(AddTextures, 0);
- trigRef := False;
CurTex := -1;
ok := false;
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;
//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
//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();
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();
}
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;
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;
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);
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 8b9aa1e05da1bb65c9ac50872d49f3dd4fd944bc..88764ed9a2bd913b481a581d55c0d65450d6c3f8 100644 (file)
--- 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
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);
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);
// 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);
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);
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();
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
PGUID: Integer;
E: Boolean;
Lift: Byte;
- PType: Word;
X, Y, W, H: Integer;
TP: TPanel;
speedX, speedY, startX, startY, endX, endY: Integer;
mpflags: Byte;
begin
if not gGameOn then Exit;
- PType := M.ReadWord();
+
PGUID := Integer(M.ReadLongWord());
E := (M.ReadByte() <> 0);
Lift := M.ReadByte();
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
setPosition(X, Y); // this will call positionChanged();
GameVelX := VX;
GameVelY := VY;
- //positionChanged(); // this updates spatial accelerators
end;
end;
GameVelX := M.ReadLongInt();
GameVelY := M.ReadLongInt();
GameDirection := TDirection(M.ReadByte());
- //positionChanged(); // this updates spatial accelerators
end;
end;
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 00407dbd68921463601b5b932ae4cd444d9d07d6..6f45fc2cf45a9cd567b86c4c734cfdfe043faf9e 100644 (file)
--- a/src/game/g_panel.pas
+++ b/src/game/g_panel.pas
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
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?
FCurFrame := 0;
FCurFrameCount := 0;
LastAnimLoop := 0;
- Moved := False;
mapId := PanelRec.id;
mGUID := aguid;
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;
// Íåâèäèìàÿ:
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 // Îáû÷íàÿ òåêñòóðà
end;
// Òåêñòóð íåñêîëüêî - íóæíî ñîõðàíÿòü òåêóùóþ:
- if Length(FTextureIDs) > 1 then
- SaveIt := True;
+ //if Length(FTextureIDs) > 1 then SaveIt := True;
// Åñëè íå ñïåöòåêñòóðà, òî çàäàåì ðàçìåðû:
if PanelRec.TextureNum > High(Textures) then
ver: Byte;
begin
if (Mem = nil) then exit;
- //if not SaveIt then exit;
// Ñèãíàòóðà ïàíåëè:
sig := PANEL_SIGNATURE; // 'PANL'
//ox, oy: Integer;
begin
if (Mem = nil) then exit;
- //if not SaveIt then exit;
// Ñèãíàòóðà ïàíåëè:
Mem.ReadDWORD(sig);