index 3830af240f6f924519c5704f81f1dc9683ab0dc5..69d04394ceaeacd10c077c149852d82dd8a210a7 100644 (file)
--- a/src/shared/wadreader.pas
+++ b/src/shared/wadreader.pas
type
SArray = array of ShortString;
- TWADFile = class(TObject)
+ TWADFile = class
private
fFileName: AnsiString; // empty: not opened
fIter: TSFSFileList;
function getIsOpen (): Boolean;
function isMapResource (idx: Integer): Boolean;
- function GetResourceEx (name: AnsiString; wantMap: Boolean; var pData: Pointer; var Len: Integer): Boolean;
+ function GetResourceEx (name: AnsiString; wantMap: Boolean; var pData: Pointer; var Len: Integer; logError: Boolean=true): Boolean;
public
- constructor Create();
- destructor Destroy(); override;
+ constructor Create ();
+ destructor Destroy (); override;
- procedure FreeWAD();
+ procedure FreeWAD ();
function ReadFile (FileName: AnsiString): Boolean;
function ReadMemory (Data: Pointer; Len: LongWord): Boolean;
- function GetResource (name: AnsiString; var pData: Pointer; var Len: Integer): Boolean;
- function GetMapResource (name: AnsiString; var pData: Pointer; var Len: Integer): Boolean;
+ function GetResource (name: AnsiString; var pData: Pointer; var Len: Integer; logError: Boolean=true): Boolean;
+ function GetMapResource (name: AnsiString; var pData: Pointer; var Len: Integer; logError: Boolean=true): Boolean;
function GetMapResources (): SArray;
// returns `nil` if file wasn't found
implementation
uses
- SysUtils, e_log, utils, MAPSTRUCT;
+ SysUtils, e_log, utils, MAPDEF;
function findDiskWad (fname: AnsiString): AnsiString;
end;
-function TWADFile.GetResourceEx (name: AnsiString; wantMap: Boolean; var pData: Pointer; var Len: Integer): Boolean;
+function TWADFile.GetResourceEx (name: AnsiString; wantMap: Boolean; var pData: Pointer; var Len: Integer; logError: Boolean=true): Boolean;
var
f, lastSlash: Integer;
fi: TSFSFileInfo;
if fs = nil then
begin
if wantMap then continue;
- e_WriteLog(Format('DFWAD: can''t open file [%s] in [%s]', [name, fFileName]), MSG_WARNING);
+ if logError then e_WriteLog(Format('DFWAD: can''t open file [%s] in [%s]', [name, fFileName]), MSG_WARNING);
break;
end;
// if we want only maps, check if this is map
exit;
end;
end;
- e_WriteLog(Format('DFWAD: file [%s] not found in [%s]', [name, fFileName]), MSG_WARNING);
+ if logError then e_WriteLog(Format('DFWAD: file [%s] not found in [%s]', [name, fFileName]), MSG_WARNING);
end;
-function TWADFile.GetResource (name: AnsiString; var pData: Pointer; var Len: Integer): Boolean;
+function TWADFile.GetResource (name: AnsiString; var pData: Pointer; var Len: Integer; logError: Boolean=true): Boolean;
begin
- result := GetResourceEx(name, false, pData, Len);
+ result := GetResourceEx(name, false, pData, Len, logError);
end;
-function TWADFile.GetMapResource (name: AnsiString; var pData: Pointer; var Len: Integer): Boolean;
+function TWADFile.GetMapResource (name: AnsiString; var pData: Pointer; var Len: Integer; logError: Boolean=true): Boolean;
begin
- result := GetResourceEx(name, true, pData, Len);
+ result := GetResourceEx(name, true, pData, Len, logError);
end;
function TWADFile.GetMapResources (): SArray;