diff --git a/src/game/g_panel.pas b/src/game/g_panel.pas
index 8a2265af842d9a546aa5eea28bd1c384875b43b1..5034697f5c1f3ce3b9a5358c846f27118d59c439 100644 (file)
--- a/src/game/g_panel.pas
+++ b/src/game/g_panel.pas
+(* Copyright (C) DooM 2D:Forever Developers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *)
+{$MODE DELPHI}
unit g_panel;
interface
SaveIt: Boolean; // Ñîõðàíÿòü ïðè SaveState?
Enabled: Boolean;
Door: Boolean;
+ Moved: Boolean;
LiftType: Byte;
LastAnimLoop: Byte;
procedure LoadState(var Mem: TBinMemoryReader);
end;
+ PPanel = ^TPanel;
TPanelArray = Array of TPanel;
implementation
uses
- g_basic, g_map, MAPDEF, g_game, e_graphics,
- g_console, g_language;
+ SysUtils, g_basic, g_map, MAPDEF, g_game, e_graphics,
+ g_console, g_language, e_log;
const
PANEL_SIGNATURE = $4C4E4150; // 'PANL'
FCurFrame := 0;
FCurFrameCount := 0;
LastAnimLoop := 0;
+ Moved := False;
// Òèï ïàíåëè:
PanelType := PanelRec.PanelType;
SaveIt := True;
// Åñëè íå ñïåöòåêñòóðà, òî çàäàåì ðàçìåðû:
- if not g_Map_IsSpecialTexture(Textures[PanelRec.TextureNum].TextureName) then
+ if PanelRec.TextureNum > High(Textures) then
+ begin
+ e_WriteLog(Format('WTF?! PanelRec.TextureNum is out of limits! (%d : %d)', [PanelRec.TextureNum, High(Textures)]), MSG_FATALERROR);
+ FTextureWidth := 2;
+ FTextureHeight := 2;
+ FAlpha := 0;
+ FBlending := ByteBool(0);
+ end
+ else if not g_Map_IsSpecialTexture(Textures[PanelRec.TextureNum].TextureName) then
begin
FTextureWidth := Textures[PanelRec.TextureNum].Width;
FTextureHeight := Textures[PanelRec.TextureNum].Height;
Mem.WriteByte(LiftType);
// Íîìåð òåêóùåé òåêñòóðû:
Mem.WriteInt(FCurTexture);
+// Êîîðäû
+ Mem.WriteInt(X);
+ Mem.WriteInt(Y);
// Àíèìèðîâàííàÿ ëè òåêóùàÿ òåêñòóðà:
if (FCurTexture >= 0) and (FTextureIDs[FCurTexture].Anim) then
begin
Mem.ReadByte(LiftType);
// Íîìåð òåêóùåé òåêñòóðû:
Mem.ReadInt(FCurTexture);
+// Êîîðäû
+ Mem.ReadInt(X);
+ Mem.ReadInt(Y);
// Àíèìèðîâàííàÿ ëè òåêóùàÿ òåêñòóðà:
Mem.ReadBoolean(anim);
// Åñëè äà - çàãðóæàåì àíèìàöèþ: