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