DEADSOFTWARE

added license info
[d2df-sdl.git] / src / game / g_panel.pas
index b522ae2beb5c49b38a31e602f7227bd238f2ae3a..c13693e7b0bc3aa3cefd820bfdd433fb35446973 100644 (file)
@@ -1,3 +1,19 @@
+(* 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
@@ -61,8 +77,8 @@ type
 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'
@@ -197,7 +213,15 @@ begin
     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;
@@ -233,7 +257,7 @@ begin
       begin // Àíèìèðîâàííàÿ òåêñòóðà
         if FTextureIDs[FCurTexture].AnTex = nil then
           Exit;
-  
+
         for xx := 0 to (Width div FTextureWidth)-1 do
           for yy := 0 to (Height div FTextureHeight)-1 do
             FTextureIDs[FCurTexture].AnTex.Draw(
@@ -356,7 +380,7 @@ begin
     else
       if AnimLoop = 2 then
         FTextureIDs[FCurTexture].AnTex.Loop := False;
-        
+
     FTextureIDs[FCurTexture].AnTex.Reset();
   end;
 
@@ -396,7 +420,7 @@ begin
     else
       if AnimLoop = 2 then
         FTextureIDs[FCurTexture].AnTex.Loop := False;
-        
+
     FTextureIDs[FCurTexture].AnTex.Reset();
   end;