X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Feditor%2Fg_map.pas;h=d2067915aede48ffc8beed0fd5633a89a9d0cbdd;hb=952e5c9c629e44e260c55f2756d72a199d8d9052;hp=a93a75af45ac2396fb8f48f8849aeb24d50824eb;hpb=233712fffbff81a4df04b7b026014e1e9981e9c1;p=d2df-editor.git diff --git a/src/editor/g_map.pas b/src/editor/g_map.pas index a93a75a..d206791 100644 --- a/src/editor/g_map.pas +++ b/src/editor/g_map.pas @@ -233,7 +233,7 @@ function IsSpecialTexture(TextureName: String): Boolean; function SpecialTextureID(TextureName: String): DWORD; procedure ClearMap(); -function SaveMap(Res: String): Pointer; +function SaveMap(Res, ArchiveFormat: String): Pointer; function LoadMap(Res: String): Boolean; function LoadMapOld(_FileName: String): Boolean; procedure DrawMap(); @@ -1051,9 +1051,9 @@ begin Result := TEXTURE_SPECIAL_ACID2; end; -function SaveMap(Res: String): Pointer; +function SaveMap(Res, ArchiveFormat: String): Pointer; var - WAD: TWADEditor_1; + WAD: TWADEditor; MapWriter: TMapWriter_1; textures: TTexturesRec1Array; panels: TPanelsRec1Array; @@ -1086,11 +1086,22 @@ begin // Открываем WAD, если надо: if Res <> '' then begin - WAD := TWADEditor_1.Create(); g_ProcessResourceStr(Res, FileName, SectionName, ResName); - if not WAD.ReadFile(FileName) then - WAD.FreeWAD(); + if ArchiveFormat = '' then + begin + // format not specified -> try open automatically and append to it (or create new default) + WAD := gWADEditorFactory.OpenFile(FileName); + if WAD = nil then + WAD := gWADEditorFactory.CreateDefaultEditor(); + end + else + begin + // format specified -> appned using exactly this format (overwrite if not compatible) + WAD := gWADEditorFactory.CreateEditor(ArchiveFormat); + if WAD.ReadFile(FileName) = False then + WAD.FreeWAD(); + end; WAD.CreateImage(); end;