DEADSOFTWARE

add cvar d_eres
[d2df-sdl.git] / src / shared / wadreader.pas
index b83102bf611814015126b787f8cc968608541120..1419f264faf6876b54adfe1d0b3f4dfa076bf713 100644 (file)
@@ -1,9 +1,8 @@
-(* Copyright (C)  DooM 2D:Forever Developers
+(* Copyright (C)  Doom 2D: Forever Developers
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
+ * the Free Software Foundation, version 3 of the License ONLY.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -22,13 +21,13 @@ unit wadreader;
 interface
 
 uses
-  mempool, sfs, xstreams, Classes;
+  Classes,
+  {$IFDEF USE_MEMPOOL}mempool,{$ENDIF}
+  sfs, xstreams, utils;
 
 
 type
-  SArray = array of ShortString;
-
-  TWADFile = class(TPoolObject)
+  TWADFile = class{$IFDEF USE_MEMPOOL}(TPoolObject){$ENDIF}
   private
     fFileName: AnsiString; // empty: not opened
     fIter: TSFSFileList;
@@ -49,7 +48,7 @@ type
 
     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;
+    function GetMapResources (): SSArray;
 
     // returns `nil` if file wasn't found
     function openFileStream (name: AnsiString): TStream;
@@ -57,15 +56,20 @@ type
     property isOpen: Boolean read getIsOpen;
   end;
 
-
+// g_ExtractWadName C:\svr\shit.wad:\MAPS\MAP01 -> C:/svr/shit.wad
 function g_ExtractWadName (resourceStr: AnsiString): AnsiString;
+
+// g_ExtractWadNameNoPath C:\svr\shit.wad:\MAPS\MAP01 -> shit.wad
 function g_ExtractWadNameNoPath (resourceStr: AnsiString): AnsiString;
+
+// g_ExtractFilePath C:\svr\shit.wad:\MAPS\MAP01 -> :/MAPS
 function g_ExtractFilePath (resourceStr: AnsiString): AnsiString;
+
+// g_ExtractFileName C:\svr\shit.wad:\MAPS\MAP01 -> MAP01
 function g_ExtractFileName (resourceStr: AnsiString): AnsiString; // without path
-function g_ExtractFilePathName (resourceStr: AnsiString): AnsiString;
 
-// return fixed AnsiString or empty AnsiString
-function findDiskWad (fname: AnsiString): AnsiString;
+// g_ExtractFilePathName C:\svr\shit.wad:\MAPS\MAP01 -> MAPS/MAP01
+function g_ExtractFilePathName (resourceStr: AnsiString): AnsiString;
 
 
 var
@@ -76,34 +80,7 @@ var
 implementation
 
 uses
-  SysUtils, e_log, utils, MAPDEF, xdynrec;
-
-
-function findDiskWad (fname: AnsiString): AnsiString;
-begin
-  result := '';
-  if not findFileCI(fname) then
-  begin
-    //e_WriteLog(Format('findDiskWad: error looking for [%s]', [fname]), MSG_NOTIFY);
-    if StrEquCI1251(ExtractFileExt(fname), '.wad') then
-    begin
-      fname := ChangeFileExt(fname, '.pk3');
-      //e_WriteLog(Format('  looking for [%s]', [fname]), MSG_NOTIFY);
-      if not findFileCI(fname) then
-      begin
-        fname := ChangeFileExt(fname, '.zip');
-        //e_WriteLog(Format('  looking for [%s]', [fname]), MSG_NOTIFY);
-        if not findFileCI(fname) then exit;
-      end;
-    end
-    else
-    begin
-      exit;
-    end;
-  end;
-  //e_WriteLog(Format('findDiskWad: FOUND [%s]', [fname]), MSG_NOTIFY);
-  result := fname;
-end;
+  SysUtils, e_log, MAPDEF, xdynrec;
 
 
 function normSlashes (s: AnsiString): AnsiString;
@@ -459,7 +436,7 @@ begin
   result := GetResourceEx(name, true, pData, Len, logError);
 end;
 
-function TWADFile.GetMapResources (): SArray;
+function TWADFile.GetMapResources (): SSArray;
 var
   f, c: Integer;
   fi: TSFSFileInfo;