index a83e3e03b140d0c76fcdbc0dcb8d9a628fa9d03b..7474330705f0c70b96027895375359b9a5cffbed 100644 (file)
uses
LCLIntf, LCLType, LMessages, SysUtils, Variants, Classes, Graphics,
- Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
+ Controls, Forms, Dialogs, StdCtrls, ExtCtrls, utils;
type
TSelectMapForm = class (TForm)
implementation
uses
- BinEditor, MAPREADER, WADEDITOR, WADSTRUCT, MAPSTRUCT;
+ MAPREADER, MAPSTRUCT, g_resources, sfs;
{$R *.lfm}
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
+ g_ReadResource(FileName, win2utf(list.Files[i].path), win2utf(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(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.