DEADSOFTWARE

Main: Epic encoding and other bugs megafix!
[d2df-editor.git] / src / editor / g_map.pas
index d61a0e2c2fc57d1617ca4b2220de416176c749b2..caa6b57d1a53a099ef97d4da799342b4d88ac9f1 100644 (file)
@@ -1,12 +1,12 @@
 Unit g_map;
 
-{$MODE Delphi}
+{$INCLUDE ../shared/a_modes.inc}
 
 Interface
 
 Uses
-  LCLIntf, LCLType, LMessages, g_basic, e_graphics, MAPREADER, MAPSTRUCT,
-  MAPWRITER, e_log, MAPDEF;
+  LCLIntf, LCLType, g_basic, e_graphics, MAPREADER, MAPSTRUCT,
+  MAPWRITER, e_log, MAPDEF, utils;
 
 Type
   TMapObject = record
@@ -131,7 +131,9 @@ const
      ((14), (18)), // BOTTLE
      ((16), (15)), // HELMET
      ((32), (24)), // JETPACK
-     ((25), (25))); // INVIS
+     ((25), (25)), // INVIS
+     ((53), (20)), // WEAPON_FLAMETHROWER
+     ((13), (20))); // AMMO_FUELCAN
 
   AreaSize: Array [AREA_PLAYERPOINT1..AREA_BLUETEAMPOINT] of TRectWH =
     ((X:15; Y:12; Width:34; Height:52), // PLAYERPOINT1
@@ -238,12 +240,11 @@ procedure FreeData();
 
 procedure ShiftMapObjects(dx, dy: Integer);
 
-Implementation
+implementation
 
-Uses
+uses
   BinEditor, g_textures, Dialogs, SysUtils, CONFIG, f_main,
-  Forms, Math, f_addresource_texture, WADEDITOR,
-  Masks, g_Language;
+  Forms, Math, f_addresource_texture, WADEDITOR, g_language;
 
 const
   OLD_ITEM_MEDKIT_SMALL          = 1;
@@ -363,7 +364,7 @@ begin
       fn := fn + Res;
     end
   else
-    fn := EditorDir + 'wads\' + Res;
+    fn := EditorDir + 'wads/' + Res;
 
   g_CreateTextureWAD(SKY_TEXTURE, fn);
 end;
@@ -699,6 +700,7 @@ var
 
 begin
   Result := False;
+  PanelID := DWORD(-1);
 
   case ObjectType of
     OBJECT_PANEL:
@@ -1063,6 +1065,16 @@ var
 
 begin
   WAD := nil;
+  textures := nil;
+  panels := nil;
+  items := nil;
+  areas := nil;
+  monsters := nil;
+  triggers := nil;
+  PanelTable := nil;
+  MonsterTable := nil;
+  Data := nil;
+  Len := 0;
 
 // Открываем WAD, если надо:
   if Res <> '' then
@@ -1082,20 +1094,25 @@ begin
   begin
     ZeroMemory(@header, SizeOf(TMapHeaderRec_1));
 
-    if gMapInfo.Name <> '' then
-      CopyMemory(@MapName[0], @gMapInfo.Name[1], Min(32, Length(gMapInfo.Name)));
+    s := utf2win(gMapInfo.Name);
+    if s <> '' then
+      CopyMemory(@MapName[0], @s[1], Min(32, Length(s)));
 
-    if gMapInfo.Description <> '' then
-      CopyMemory(@MapDescription[0], @gMapInfo.Description[1], Min(256, Length(gMapInfo.Description)));
+    s := utf2win(gMapInfo.Description);
+    if s <> '' then
+      CopyMemory(@MapDescription[0], @s[1], Min(256, Length(s)));
 
-    if gMapInfo.Author <> '' then
-      CopyMemory(@MapAuthor[0], @gMapInfo.Author[1], Min(32, Length(gMapInfo.Author)));
+    s := utf2win(gMapInfo.Author);
+    if s <> '' then
+      CopyMemory(@MapAuthor[0], @s[1], Min(32, Length(s)));
 
-    if gMapInfo.MusicName <> '' then
-      CopyMemory(@MusicName[0], @gMapInfo.MusicName[1], Min(64, Length(gMapInfo.MusicName)));
+    s := utf2win(gMapInfo.MusicName);
+    if s <> '' then
+      CopyMemory(@MusicName[0], @s[1], Min(64, Length(s)));
 
-    if gMapInfo.SkyName <> '' then
-      CopyMemory(@SkyName[0], @gMapInfo.SkyName[1], Min(64, Length(gMapInfo.SkyName)));
+    s := utf2win(gMapInfo.SkyName);
+    if s <> '' then
+      CopyMemory(@SkyName[0], @s[1], Min(64, Length(s)));
 
     Width := gMapInfo.Width;
     Height := gMapInfo.Height;
@@ -1109,9 +1126,9 @@ begin
     for a := 0 to MainForm.lbTextureList.Items.Count-1 do
     begin
       SetLength(textures, Length(textures)+1);
-      s := MainForm.lbTextureList.Items[a];
+      s := utf2win(MainForm.lbTextureList.Items[a]);
       CopyMemory(@textures[High(textures)].Resource[0], @s[1], Min(64, Length(s)));
-      if g_GetTextureFlagByName(s) = 1 then
+      if g_GetTextureFlagByName(MainForm.lbTextureList.Items[a]) = 1 then
         textures[High(textures)].Anim := 1
       else
         textures[High(textures)].Anim := 0;
@@ -1163,7 +1180,7 @@ begin
           // Номер текстуры в списке текстур:
             if gPanels[a].TextureID <> TEXTURE_SPECIAL_NONE then
               for b := 0 to High(textures) do
-                if gPanels[a].TextureName = textures[b].Resource then
+                if utf2win(gPanels[a].TextureName) = textures[b].Resource then
                 begin
                   TextureNum := b;
                   Break;
@@ -1327,8 +1344,9 @@ begin
 // Записываем в WAD, если надо:
   if Res <> '' then
     begin
-      WAD.RemoveResource('', ResName);
-      WAD.AddResource(Data, Len, ResName, '');
+      s := utf2win(ResName);
+      WAD.RemoveResource('', s);
+      WAD.AddResource(Data, Len, s, '');
       WAD.SaveTo(FileName);
 
       FreeMem(Data);
@@ -1376,14 +1394,23 @@ var
   Data: Pointer;
   Width, Height, m: Word;
   FileName, SectionName, ResName, _fn: String;
-  TextureRes: String;
+  TextureRes, ustr: String;
   pData: Pointer;
-  Len: Integer;
+  Len, FrameLen: Integer;
   Error: Boolean;
   NoTextureID: DWORD;
   NW, NH: Word;
 begin
   Result := False;
+  pData := nil;
+  Len := 0;
+  Data := nil;
+  FrameLen := 0;
+  Width := 0;
+  Height := 0;
+  NoTextureID := 0;
+  NW := 0;
+  NH := 0;
 
   MainForm.pbLoad.Position := 0;
   MainForm.lLoad.Caption := _lc[I_LOAD_WAD];
@@ -1400,7 +1427,7 @@ begin
   end;
 
 // Читаем ресурс карты:
-  if not WAD.GetResource('', ResName, pData, Len) then
+  if not WAD.GetResource('', utf2win(ResName), pData, Len) then
   begin
     WAD.Free();
     Exit;
@@ -1428,50 +1455,51 @@ begin
     begin
       MainForm.pbLoad.StepIt();
       Application.ProcessMessages();
+      ustr := win2utf(textures[a].Resource);
 
-      if IsSpecialTexture(textures[a].Resource) then
+      if IsSpecialTexture(ustr) then
       begin
-        AddTexture(textures[a].Resource, False);
+        AddTexture(ustr, False);
         Continue;
       end;
 
-      g_ProcessResourceStr(textures[a].Resource, @_fn, nil, nil);
+      g_ProcessResourceStr(ustr, @_fn, nil, nil);
 
       if _fn = '' then
-        TextureRes := FileName + textures[a].Resource
+        TextureRes := FileName + ustr
       else
-        TextureRes := EditorDir+'wads\'+textures[a].Resource;
+        TextureRes := EditorDir+'wads/'+ustr;
 
       Error := False;
 
       if not ByteBool(textures[a].Anim) then
         begin // Обычная текстура
-          if not g_CreateTextureWAD(textures[a].Resource, TextureRes) then
+          if not g_CreateTextureWAD(ustr, TextureRes) then
           begin
             e_WriteLog(Format('g_CreateTextureWAD() error, res=%s',
-                              [textures[a].Resource]), MSG_WARNING);
+                              [ustr]), MSG_WARNING);
             Error := True;
           end;
 
-          AddTexture(textures[a].Resource, Error);
+          AddTexture(ustr, Error);
         end
       else // Anim
         begin // Анимированная текстура
-          if not GetFrame(TextureRes, Data, Width, Height) then
+          if not GetFrame(TextureRes, Data, FrameLen, Width, Height) then
           begin // Кадры
             e_WriteLog(Format('GetFrame() error, res=%s',
-                              [textures[a].Resource]), MSG_WARNING);
+                              [ustr]), MSG_WARNING);
             Error := True;
           end;
 
-          if not g_CreateTextureMemorySize(Data, textures[a].Resource, 0, 0, Width, Height, 1) then
+          if not g_CreateTextureMemorySize(Data, FrameLen, ustr, 0, 0, Width, Height, 1) then
           begin // Сама текстура
             e_WriteLog(Format('g_CreateTextureMemorySize() error, res=%s',
-                              [textures[a].Resource]), MSG_WARNING);
+                              [ustr]), MSG_WARNING);
             Error := True;
           end;
 
-          AddTexture(textures[a].Resource, Error);
+          AddTexture(ustr, Error);
         end;
     end;
   end;
@@ -1514,9 +1542,10 @@ begin
       if WordBool(panel.PanelType and m) and
          (not (ByteBool(panels[a].Flags and PANEL_FLAG_HIDE))) then
       begin
-        if not IsSpecialTexture(textures[panels[a].TextureNum].Resource) then
+        ustr := win2utf(textures[panels[a].TextureNum].Resource);
+        if not IsSpecialTexture(ustr) then
           begin // Текстура
-            if g_GetTexture(textures[panels[a].TextureNum].Resource, panel.TextureID) then
+            if g_GetTexture(ustr, panel.TextureID) then
               g_GetTextureSizeByID(panel.TextureID, panel.TextureWidth, panel.TextureHeight)
             else begin
               panel.TextureWidth := 1;
@@ -1531,9 +1560,9 @@ begin
             end;
           end
         else // Спец. текстура
-          panel.TextureID := SpecialTextureID(textures[panels[a].TextureNum].Resource);
+          panel.TextureID := SpecialTextureID(ustr);
 
-        panel.TextureName := textures[panels[a].TextureNum].Resource;
+        panel.TextureName := ustr;
       end;
 
     // Жидкость без текстуры:
@@ -1662,11 +1691,11 @@ begin
   with gMapInfo do
   begin
     MapName := ResName;
-    Name := Header.MapName;
-    Description := Header.MapDescription;
-    Author := Header.MapAuthor;
-    MusicName := Header.MusicName;
-    SkyName := Header.SkyName;
+    Name := win2utf(Header.MapName);
+    Description := win2utf(Header.MapDescription);
+    Author := win2utf(Header.MapAuthor);
+    MusicName := win2utf(Header.MusicName);
+    SkyName := win2utf(Header.SkyName);
     Height := Header.Height;
     Width := Header.Width;
   end;
@@ -1729,13 +1758,13 @@ begin
       Continue;
 
   // Нет такой текстуры - ищем в WAD карты:
-    if not g_CreateTextureWAD(s, EditorDir+'\wads\'+s) then
+    if not g_CreateTextureWAD(s, EditorDir+'wads/'+s) then
     begin
       s := ExtractFileName(_FileName);
       Delete(s, Length(s)-3, 4);
-      s := UpperCase(s) + '.WAD:TEXTURES\'+ UpperCase(map.ReadStr('Textures', 'TextureName'+IntToStr(a), ''));
+      s := UpperCase(s) + '.WAD:TEXTURES\'+ UpperCase(win2utf(map.ReadStr('Textures', 'TextureName'+IntToStr(a), '')));
 
-      if not g_CreateTextureWAD(s, EditorDir+'\wads\'+s) then
+      if not g_CreateTextureWAD(s, EditorDir+'wads/'+s) then
         Continue;
     end;
 
@@ -1789,7 +1818,7 @@ begin
           begin
             s := ExtractFileName(_FileName);
             Delete(s, Length(s)-3, 4);
-            s := UpperCase(s) + '.WAD:TEXTURES\' + UpperCase(map.ReadStr(section, 'TextureName', ''));
+            s := UpperCase(s) + '.WAD:TEXTURES\' + UpperCase(win2utf(map.ReadStr(section, 'TextureName', '')));
 
             if g_GetTexture(s, panel.TextureID) then
               begin
@@ -1965,6 +1994,9 @@ procedure DrawPanels(fPanelType: Word);
     NoTextureID: DWORD;
     NW, NH: Word;
   begin
+    NoTextureID := 0;
+    NW := 0;
+    NH := 0;
     with gPanels[a] do
     begin
       case TextureID of
@@ -2076,6 +2108,7 @@ var
   r: TRectWH;
 
 begin
+  ID := 0;
 // В режиме Превью рисуем небо:
   if PreviewMode then
   begin
@@ -2149,6 +2182,8 @@ begin
             ITEM_HELMET: g_GetTexture('ITEM_HELMET', ID);
             ITEM_JETPACK: g_GetTexture('ITEM_JETPACK', ID);
             ITEM_INVIS: g_GetTexture('ITEM_INVIS', ID);
+            ITEM_WEAPON_FLAMETHROWER: g_GetTexture('ITEM_WEAPON_FLAMETHROWER', ID);
+            ITEM_AMMO_FUELCAN: g_GetTexture('ITEM_AMMO_FUELCAN', ID);
           end;
 
           if ID <> DWORD(-1) then
@@ -2538,6 +2573,8 @@ begin
                         ITEM_HELMET: g_GetTexture('ITEM_HELMET', ID);
                         ITEM_JETPACK: g_GetTexture('ITEM_JETPACK', ID);
                         ITEM_INVIS: g_GetTexture('ITEM_INVIS', ID);
+                        ITEM_WEAPON_FLAMETHROWER: g_GetTexture('ITEM_WEAPON_FLAMETHROWER', ID);
+                        ITEM_AMMO_FUELCAN: g_GetTexture('ITEM_AMMO_FUELCAN', ID);
                       end;
                       if ID <> DWORD(-1) then
                         e_Draw(ID, MapOffset.X+Data.ItemPos.X-(ItemSize[Data.ItemType][0] div 2),
@@ -2716,76 +2753,79 @@ end;
 
 procedure LoadData();
 begin
- g_CreateTextureWAD('NOTEXTURE', EditorDir+'\data\Game.wad:TEXTURES\NOTEXTURE');
-
- g_CreateTextureWADSize('AREA_REDFLAG', EditorDir+'\data\Game.wad:TEXTURES\FLAGRED', 0, 0, 64, 64);
- g_CreateTextureWADSize('AREA_BLUEFLAG', EditorDir+'\data\Game.wad:TEXTURES\FLAGBLUE', 0, 0, 64, 64);
- g_CreateTextureWADSize('AREA_DOMFLAG', EditorDir+'\data\Game.wad:TEXTURES\FLAGDOM', 0, 0, 64, 64);
-
- g_CreateTextureWADSize('MONSTER_DEMON', EditorDir+'\data\Game.wad:MTEXTURES\DEMON_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_IMP', EditorDir+'\data\Game.wad:MTEXTURES\IMP_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_ZOMBY', EditorDir+'\data\Game.wad:MTEXTURES\ZOMBY_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_SERG', EditorDir+'\data\Game.wad:MTEXTURES\SERG_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_CYBER', EditorDir+'\data\Game.wad:MTEXTURES\CYBER_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_CGUN', EditorDir+'\data\Game.wad:MTEXTURES\CGUN_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_BARON', EditorDir+'\data\Game.wad:MTEXTURES\BARON_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_KNIGHT', EditorDir+'\data\Game.wad:MTEXTURES\KNIGHT_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_CACO', EditorDir+'\data\Game.wad:MTEXTURES\CACO_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_SOUL', EditorDir+'\data\Game.wad:MTEXTURES\SOUL_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_PAIN', EditorDir+'\data\Game.wad:MTEXTURES\PAIN_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_SPIDER', EditorDir+'\data\Game.wad:MTEXTURES\SPIDER_SLEEP', 0, 0, 256, 128);
- g_CreateTextureWADSize('MONSTER_BSP', EditorDir+'\data\Game.wad:MTEXTURES\BSP_SLEEP', 0, 0, 128, 64);
- g_CreateTextureWADSize('MONSTER_MANCUB', EditorDir+'\data\Game.wad:MTEXTURES\MANCUB_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_SKEL', EditorDir+'\data\Game.wad:MTEXTURES\SKEL_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_VILE', EditorDir+'\data\Game.wad:MTEXTURES\VILE_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_FISH', EditorDir+'\data\Game.wad:MTEXTURES\FISH_SLEEP', 0, 0, 32, 32);
- g_CreateTextureWADSize('MONSTER_BARREL', EditorDir+'\data\Game.wad:MTEXTURES\BARREL_SLEEP', 0, 0, 64, 64);
- g_CreateTextureWADSize('MONSTER_ROBO', EditorDir+'\data\Game.wad:MTEXTURES\ROBO_SLEEP', 0, 0, 128, 128);
- g_CreateTextureWADSize('MONSTER_MAN', EditorDir+'\data\Game.wad:MTEXTURES\MAN_SLEEP', 0, 0, 64, 64);
-
- g_CreateTextureWADSize('ITEM_BLUESPHERE', EditorDir+'\data\Game.wad:TEXTURES\SBLUE', 0, 0, 32, 32);
- g_CreateTextureWADSize('ITEM_WHITESPHERE', EditorDir+'\data\Game.wad:TEXTURES\SWHITE', 0, 0, 32, 32);
- g_CreateTextureWADSize('ITEM_ARMORGREEN', EditorDir+'\data\Game.wad:TEXTURES\ARMORGREEN', 0, 0, 32, 16);
- g_CreateTextureWADSize('ITEM_ARMORBLUE', EditorDir+'\data\Game.wad:TEXTURES\ARMORBLUE', 0, 0, 32, 16);
- g_CreateTextureWADSize('ITEM_INVUL', EditorDir+'\data\Game.wad:TEXTURES\INVUL', 0, 0, 32, 32);
- g_CreateTextureWADSize('ITEM_BOTTLE', EditorDir+'\data\Game.wad:TEXTURES\BOTTLE', 0, 0, 16, 32);
- g_CreateTextureWADSize('ITEM_HELMET', EditorDir+'\data\Game.wad:TEXTURES\HELMET', 0, 0, 16, 16);
- g_CreateTextureWADSize('ITEM_INVIS', EditorDir+'\data\Game.wad:TEXTURES\INVIS', 0, 0, 32, 32);
-
- g_CreateTextureWAD('ITEM_MEDKIT_SMALL', EditorDir+'\data\Game.wad:TEXTURES\MED1');
- g_CreateTextureWAD('ITEM_MEDKIT_LARGE', EditorDir+'\data\Game.wad:TEXTURES\MED2');
- g_CreateTextureWAD('ITEM_WEAPON_SAW', EditorDir+'\data\Game.wad:TEXTURES\SAW');
- g_CreateTextureWAD('ITEM_WEAPON_PISTOL', EditorDir+'\data\Game.wad:TEXTURES\PISTOL');
- g_CreateTextureWAD('ITEM_WEAPON_KASTET', EditorDir+'\data\Game.wad:TEXTURES\KASTET');
- g_CreateTextureWAD('ITEM_WEAPON_SHOTGUN1', EditorDir+'\data\Game.wad:TEXTURES\SHOTGUN1');
- g_CreateTextureWAD('ITEM_WEAPON_SHOTGUN2', EditorDir+'\data\Game.wad:TEXTURES\SHOTGUN2');
- g_CreateTextureWAD('ITEM_WEAPON_CHAINGUN', EditorDir+'\data\Game.wad:TEXTURES\MGUN');
- g_CreateTextureWAD('ITEM_WEAPON_ROCKETLAUNCHER', EditorDir+'\data\Game.wad:TEXTURES\RLAUNCHER');
- g_CreateTextureWAD('ITEM_WEAPON_PLASMA', EditorDir+'\data\Game.wad:TEXTURES\PGUN');
- g_CreateTextureWAD('ITEM_WEAPON_BFG', EditorDir+'\data\Game.wad:TEXTURES\BFG');
- g_CreateTextureWAD('ITEM_WEAPON_SUPERPULEMET', EditorDir+'\data\Game.wad:TEXTURES\SPULEMET');
- g_CreateTextureWAD('ITEM_AMMO_BULLETS', EditorDir+'\data\Game.wad:TEXTURES\CLIP');
- g_CreateTextureWAD('ITEM_AMMO_BULLETS_BOX', EditorDir+'\data\Game.wad:TEXTURES\AMMO');
- g_CreateTextureWAD('ITEM_AMMO_SHELLS', EditorDir+'\data\Game.wad:TEXTURES\SHELL1');
- g_CreateTextureWAD('ITEM_AMMO_SHELLS_BOX', EditorDir+'\data\Game.wad:TEXTURES\SHELL2');
- g_CreateTextureWAD('ITEM_AMMO_ROCKET', EditorDir+'\data\Game.wad:TEXTURES\ROCKET');
- g_CreateTextureWAD('ITEM_AMMO_ROCKET_BOX', EditorDir+'\data\Game.wad:TEXTURES\ROCKETS');
- g_CreateTextureWAD('ITEM_AMMO_CELL', EditorDir+'\data\Game.wad:TEXTURES\CELL');
- g_CreateTextureWAD('ITEM_AMMO_CELL_BIG', EditorDir+'\data\Game.wad:TEXTURES\CELL2');
- g_CreateTextureWAD('ITEM_AMMO_BACKPACK', EditorDir+'\data\Game.wad:TEXTURES\BPACK');
- g_CreateTextureWAD('ITEM_KEY_RED', EditorDir+'\data\Game.wad:TEXTURES\KEYR');
- g_CreateTextureWAD('ITEM_KEY_GREEN', EditorDir+'\data\Game.wad:TEXTURES\KEYG');
- g_CreateTextureWAD('ITEM_KEY_BLUE', EditorDir+'\data\Game.wad:TEXTURES\KEYB');
- g_CreateTextureWAD('ITEM_OXYGEN', EditorDir+'\data\Game.wad:TEXTURES\OXYGEN');
- g_CreateTextureWAD('ITEM_SUIT', EditorDir+'\data\Game.wad:TEXTURES\SUIT');
- g_CreateTextureWAD('ITEM_MEDKIT_BLACK', EditorDir+'\data\Game.wad:TEXTURES\BMED');
- g_CreateTextureWAD('ITEM_JETPACK', EditorDir+'\data\Game.wad:TEXTURES\JETPACK');
-
- g_CreateTextureWAD('AREA_PLAYERPOINT1', EditorDir+'\data\Editor.wad:TEXTURES\P1POINT');
- g_CreateTextureWAD('AREA_PLAYERPOINT2', EditorDir+'\data\Editor.wad:TEXTURES\P2POINT');
- g_CreateTextureWAD('AREA_DMPOINT', EditorDir+'\data\Editor.wad:TEXTURES\DMPOINT');
- g_CreateTextureWAD('AREA_REDPOINT', EditorDir+'\data\Editor.wad:TEXTURES\REDPOINT');
- g_CreateTextureWAD('AREA_BLUEPOINT', EditorDir+'\data\Editor.wad:TEXTURES\BLUEPOINT');
+ g_CreateTextureWAD('PREVIEW', EditorDir+'data/Editor.wad:TEXTURES\CHECKERS');
+ g_CreateTextureWAD('NOTEXTURE', EditorDir+'data/Game.wad:TEXTURES\NOTEXTURE');
+
+ g_CreateTextureWADSize('AREA_REDFLAG', EditorDir+'data/Game.wad:TEXTURES\FLAGRED', 0, 0, 64, 64);
+ g_CreateTextureWADSize('AREA_BLUEFLAG', EditorDir+'data/Game.wad:TEXTURES\FLAGBLUE', 0, 0, 64, 64);
+ g_CreateTextureWADSize('AREA_DOMFLAG', EditorDir+'data/Game.wad:TEXTURES\FLAGDOM', 0, 0, 64, 64);
+
+ g_CreateTextureWADSize('MONSTER_DEMON', EditorDir+'data/Game.wad:MTEXTURES\DEMON_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_IMP', EditorDir+'data/Game.wad:MTEXTURES\IMP_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_ZOMBY', EditorDir+'data/Game.wad:MTEXTURES\ZOMBY_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_SERG', EditorDir+'data/Game.wad:MTEXTURES\SERG_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_CYBER', EditorDir+'data/Game.wad:MTEXTURES\CYBER_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_CGUN', EditorDir+'data/Game.wad:MTEXTURES\CGUN_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_BARON', EditorDir+'data/Game.wad:MTEXTURES\BARON_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_KNIGHT', EditorDir+'data/Game.wad:MTEXTURES\KNIGHT_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_CACO', EditorDir+'data/Game.wad:MTEXTURES\CACO_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_SOUL', EditorDir+'data/Game.wad:MTEXTURES\SOUL_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_PAIN', EditorDir+'data/Game.wad:MTEXTURES\PAIN_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_SPIDER', EditorDir+'data/Game.wad:MTEXTURES\SPIDER_SLEEP', 0, 0, 256, 128);
+ g_CreateTextureWADSize('MONSTER_BSP', EditorDir+'data/Game.wad:MTEXTURES\BSP_SLEEP', 0, 0, 128, 64);
+ g_CreateTextureWADSize('MONSTER_MANCUB', EditorDir+'data/Game.wad:MTEXTURES\MANCUB_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_SKEL', EditorDir+'data/Game.wad:MTEXTURES\SKEL_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_VILE', EditorDir+'data/Game.wad:MTEXTURES\VILE_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_FISH', EditorDir+'data/Game.wad:MTEXTURES\FISH_SLEEP', 0, 0, 32, 32);
+ g_CreateTextureWADSize('MONSTER_BARREL', EditorDir+'data/Game.wad:MTEXTURES\BARREL_SLEEP', 0, 0, 64, 64);
+ g_CreateTextureWADSize('MONSTER_ROBO', EditorDir+'data/Game.wad:MTEXTURES\ROBO_SLEEP', 0, 0, 128, 128);
+ g_CreateTextureWADSize('MONSTER_MAN', EditorDir+'data/Game.wad:MTEXTURES\MAN_SLEEP', 0, 0, 64, 64);
+
+ g_CreateTextureWADSize('ITEM_BLUESPHERE', EditorDir+'data/Game.wad:TEXTURES\SBLUE', 0, 0, 32, 32);
+ g_CreateTextureWADSize('ITEM_WHITESPHERE', EditorDir+'data/Game.wad:TEXTURES\SWHITE', 0, 0, 32, 32);
+ g_CreateTextureWADSize('ITEM_ARMORGREEN', EditorDir+'data/Game.wad:TEXTURES\ARMORGREEN', 0, 0, 32, 16);
+ g_CreateTextureWADSize('ITEM_ARMORBLUE', EditorDir+'data/Game.wad:TEXTURES\ARMORBLUE', 0, 0, 32, 16);
+ g_CreateTextureWADSize('ITEM_INVUL', EditorDir+'data/Game.wad:TEXTURES\INVUL', 0, 0, 32, 32);
+ g_CreateTextureWADSize('ITEM_BOTTLE', EditorDir+'data/Game.wad:TEXTURES\BOTTLE', 0, 0, 16, 32);
+ g_CreateTextureWADSize('ITEM_HELMET', EditorDir+'data/Game.wad:TEXTURES\HELMET', 0, 0, 16, 16);
+ g_CreateTextureWADSize('ITEM_INVIS', EditorDir+'data/Game.wad:TEXTURES\INVIS', 0, 0, 32, 32);
+ g_CreateTextureWADSize('ITEM_WEAPON_FLAMETHROWER', EditorDir+'data/Game.wad:TEXTURES\FLAMETHROWER', 0, 0, 64, 32);
+ g_CreateTextureWADSize('ITEM_AMMO_FUELCAN', EditorDir+'data/Game.wad:TEXTURES\FUELCAN', 0, 0, 16, 32);
+
+ g_CreateTextureWAD('ITEM_MEDKIT_SMALL', EditorDir+'data/Game.wad:TEXTURES\MED1');
+ g_CreateTextureWAD('ITEM_MEDKIT_LARGE', EditorDir+'data/Game.wad:TEXTURES\MED2');
+ g_CreateTextureWAD('ITEM_WEAPON_SAW', EditorDir+'data/Game.wad:TEXTURES\SAW');
+ g_CreateTextureWAD('ITEM_WEAPON_PISTOL', EditorDir+'data/Game.wad:TEXTURES\PISTOL');
+ g_CreateTextureWAD('ITEM_WEAPON_KASTET', EditorDir+'data/Game.wad:TEXTURES\KASTET');
+ g_CreateTextureWAD('ITEM_WEAPON_SHOTGUN1', EditorDir+'data/Game.wad:TEXTURES\SHOTGUN1');
+ g_CreateTextureWAD('ITEM_WEAPON_SHOTGUN2', EditorDir+'data/Game.wad:TEXTURES\SHOTGUN2');
+ g_CreateTextureWAD('ITEM_WEAPON_CHAINGUN', EditorDir+'data/Game.wad:TEXTURES\MGUN');
+ g_CreateTextureWAD('ITEM_WEAPON_ROCKETLAUNCHER', EditorDir+'data/Game.wad:TEXTURES\RLAUNCHER');
+ g_CreateTextureWAD('ITEM_WEAPON_PLASMA', EditorDir+'data/Game.wad:TEXTURES\PGUN');
+ g_CreateTextureWAD('ITEM_WEAPON_BFG', EditorDir+'data/Game.wad:TEXTURES\BFG');
+ g_CreateTextureWAD('ITEM_WEAPON_SUPERPULEMET', EditorDir+'data/Game.wad:TEXTURES\SPULEMET');
+ g_CreateTextureWAD('ITEM_AMMO_BULLETS', EditorDir+'data/Game.wad:TEXTURES\CLIP');
+ g_CreateTextureWAD('ITEM_AMMO_BULLETS_BOX', EditorDir+'data/Game.wad:TEXTURES\AMMO');
+ g_CreateTextureWAD('ITEM_AMMO_SHELLS', EditorDir+'data/Game.wad:TEXTURES\SHELL1');
+ g_CreateTextureWAD('ITEM_AMMO_SHELLS_BOX', EditorDir+'data/Game.wad:TEXTURES\SHELL2');
+ g_CreateTextureWAD('ITEM_AMMO_ROCKET', EditorDir+'data/Game.wad:TEXTURES\ROCKET');
+ g_CreateTextureWAD('ITEM_AMMO_ROCKET_BOX', EditorDir+'data/Game.wad:TEXTURES\ROCKETS');
+ g_CreateTextureWAD('ITEM_AMMO_CELL', EditorDir+'data/Game.wad:TEXTURES\CELL');
+ g_CreateTextureWAD('ITEM_AMMO_CELL_BIG', EditorDir+'data/Game.wad:TEXTURES\CELL2');
+ g_CreateTextureWAD('ITEM_AMMO_BACKPACK', EditorDir+'data/Game.wad:TEXTURES\BPACK');
+ g_CreateTextureWAD('ITEM_KEY_RED', EditorDir+'data/Game.wad:TEXTURES\KEYR');
+ g_CreateTextureWAD('ITEM_KEY_GREEN', EditorDir+'data/Game.wad:TEXTURES\KEYG');
+ g_CreateTextureWAD('ITEM_KEY_BLUE', EditorDir+'data/Game.wad:TEXTURES\KEYB');
+ g_CreateTextureWAD('ITEM_OXYGEN', EditorDir+'data/Game.wad:TEXTURES\OXYGEN');
+ g_CreateTextureWAD('ITEM_SUIT', EditorDir+'data/Game.wad:TEXTURES\SUIT');
+ g_CreateTextureWAD('ITEM_MEDKIT_BLACK', EditorDir+'data/Game.wad:TEXTURES\BMED');
+ g_CreateTextureWAD('ITEM_JETPACK', EditorDir+'data/Game.wad:TEXTURES\JETPACK');
+
+ g_CreateTextureWAD('AREA_PLAYERPOINT1', EditorDir+'data/Editor.wad:TEXTURES\P1POINT');
+ g_CreateTextureWAD('AREA_PLAYERPOINT2', EditorDir+'data/Editor.wad:TEXTURES\P2POINT');
+ g_CreateTextureWAD('AREA_DMPOINT', EditorDir+'data/Editor.wad:TEXTURES\DMPOINT');
+ g_CreateTextureWAD('AREA_REDPOINT', EditorDir+'data/Editor.wad:TEXTURES\REDPOINT');
+ g_CreateTextureWAD('AREA_BLUEPOINT', EditorDir+'data/Editor.wad:TEXTURES\BLUEPOINT');
 end;
 
 procedure FreeData();
@@ -2861,6 +2901,8 @@ begin
  g_DeleteTexture('ITEM_MEDKIT_BLACK');
  g_DeleteTexture('ITEM_JETPACK');
  g_DeleteTexture('ITEM_INVIS');
+ g_DeleteTexture('ITEM_WEAPON_FLAMETHROWER');
+ g_DeleteTexture('ITEM_AMMO_FUELCAN');
 
  g_DeleteTexture('AREA_PLAYERPOINT1');
  g_DeleteTexture('AREA_PLAYERPOINT2');