index 7474330705f0c70b96027895375359b9a5cffbed..46f365c7f6cfe4c9bf0a50ebc6046f559d8c9f69 100644 (file)
implementation
uses
- MAPREADER, MAPSTRUCT, g_resources, sfs;
+ BinEditor, MAPREADER, WADEDITOR, WADSTRUCT, MAPSTRUCT;
{$R *.lfm}
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.