X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-editor.git;a=blobdiff_plain;f=src%2Feditor%2Ff_selectmap.pas;h=8d5eecc654bee87e7eefedca55c69fc99ab46ecb;hp=46f365c7f6cfe4c9bf0a50ebc6046f559d8c9f69;hb=c31a0cde6506576625aab584c2c45aac9168f2dd;hpb=a77aef1652fcbea68ad2f5a7816625bce8debb00 diff --git a/src/editor/f_selectmap.pas b/src/editor/f_selectmap.pas index 46f365c..8d5eecc 100644 --- a/src/editor/f_selectmap.pas +++ b/src/editor/f_selectmap.pas @@ -32,7 +32,7 @@ var implementation uses - BinEditor, MAPREADER, WADEDITOR, WADSTRUCT, MAPSTRUCT; + MAPREADER, MAPSTRUCT, g_resources, sfs; {$R *.lfm} @@ -54,41 +54,35 @@ begin end; procedure TSelectMapForm.GetMaps(FileName: String); -var - WAD: TWADEditor_1; - a: Integer; - ResList: SArray; - Data: Pointer; - Len: Integer; - Sign: Array [0..2] of Char; - + var + data: PByte; + list: TSFSFileList; + sign: Array [0..2] of Char; + i, len: Integer; begin lbMapList.Items.Clear(); - WAD := TWADEditor_1.Create(); - if not WAD.ReadFile(FileName) then - begin - WAD.Free(); - Exit; - end; + list := SFSFileList(FileName); + if list = nil then Exit; - ResList := WAD.GetResourcesList(''); + for i := 0 to list.Count - 1 do + begin + writeln('GetMap "' + list.Files[i].path + '" "' + list.Files[i].name + '"'); + g_ReadResource(FileName, list.Files[i].path, list.Files[i].name, data, len); - if ResList <> nil then - for a := 0 to High(ResList) do + if len >= 3 then begin - if not WAD.GetResource('', ResList[a], Data, Len) then - Continue; - - CopyMemory(@Sign[0], Data, 3); - FreeMem(Data); - - if Sign = MAP_SIGNATURE then - lbMapList.Items.Add(win2utf(ResList[a])); - Sign := ''; + sign[0] := chr(data[0]); + sign[1] := chr(data[1]); + sign[2] := chr(data[2]); + if sign = MAP_SIGNATURE then + lbMapList.Items.Add(win2utf(list.Files[i].name)) end; - WAD.Free(); + if len > 0 then FreeMem(data) + end; + + list.Destroy end; end.