X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Feditor%2Ff_savemap.pas;h=15ddd506f09e6260c48c0550ddb0c636e8324b31;hb=ba4c3b36f450283d70a350c24df9e572c2daf4bc;hp=f89ee7366f2a7105e6502bc93f37ecb91463a608;hpb=3dc2fe6b3d29cd54425db8f590e922f2dce50e99;p=d2df-editor.git diff --git a/src/editor/f_savemap.pas b/src/editor/f_savemap.pas index f89ee73..15ddd50 100644 --- a/src/editor/f_savemap.pas +++ b/src/editor/f_savemap.pas @@ -6,7 +6,7 @@ interface uses LCLIntf, LCLType, LMessages, SysUtils, Variants, Classes, - Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; + Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, utils; type TSaveMapForm = class (TForm) @@ -17,7 +17,7 @@ type Panel2: TPanel; eMapName: TEdit; - procedure GetMaps(FileName: String; placeName: Boolean); + procedure GetMaps(FileName: String; placeName: Boolean; ArchiveFormat: String); procedure FormActivate(Sender: TObject); procedure eMapNameChange(Sender: TObject); procedure lbMapListClick(Sender: TObject); @@ -69,9 +69,9 @@ begin for a := 0 to lbMapList.Count-1 do if eMapName.Text = lbMapList.Items[a] then begin - ok := MessageBox(0, PChar(Format(_lc[I_MSG_MAP_EXISTS], + ok := Application.MessageBox(PChar(Format(MsgMsgMapExists, [eMapName.Text])), - PChar(_lc[I_MSG_SAVE_MAP]), + PChar(MsgMsgSaveMap), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON1) = mrYes; if not ok then Exit; @@ -84,9 +84,9 @@ begin SaveMapForm.ModalResult := mrCancel; end; -procedure TSaveMapForm.GetMaps(FileName: String; placeName: Boolean); +procedure TSaveMapForm.GetMaps(FileName: String; placeName: Boolean; ArchiveFormat: String); var - WAD: TWADEditor_1; + WAD: TWADEditor; a, max_num, j: Integer; ResList: SArray; Data: Pointer; @@ -98,9 +98,22 @@ begin lbMapList.Items.Clear(); max_num := 1; - WAD := TWADEditor_1.Create(); - WAD.ReadFile(FileName); - ResList := WAD.GetResourcesList(''); + 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 -> append using exactly this format (overwrite if not compatible) + WAD := gWADEditorFactory.CreateEditor(ArchiveFormat); + if WAD.ReadFile(FileName) = False then + WAD.FreeWAD(); + end; + + ResList := WAD.GetResourcesList(''); if ResList <> nil then for a := 0 to High(ResList) do @@ -110,10 +123,10 @@ begin CopyMemory(@Sign[0], Data, 3); FreeMem(Data); - + if Sign = MAP_SIGNATURE then begin - nm := ResList[a]; + nm := win2utf(ResList[a]); lbMapList.Items.Add(nm); if placeName then