DEADSOFTWARE

opts: add option --wads-dir
authorDeaDDooMER <deaddoomer@deadsoftware.ru>
Mon, 22 May 2023 18:37:47 +0000 (21:37 +0300)
committerDeaDDooMER <deaddoomer@deadsoftware.ru>
Mon, 22 May 2023 18:37:47 +0000 (21:37 +0300)
src/editor/Editor.lpr
src/editor/f_addresource.pas
src/editor/f_main.pas
src/editor/f_packmap.pas
src/editor/g_map.pas
src/editor/g_options.pas

index 171c8564c25c7313e70c80e65dc5cd8d0ee7aa10..18f997c7c142c491e02c5f14ab87c1796c0abeba 100644 (file)
@@ -113,6 +113,14 @@ uses
           Inc(i);
           EditorWad := ParamStr(i);
         end;
+      end
+      else if p = '--wads-dir' then
+      begin
+        if i + 1 <= ParamCount then
+        begin
+          Inc(i);
+          WadsDir := ParamStr(i);
+        end;
       end;
       Inc(i);
     end;
@@ -152,6 +160,7 @@ begin
   CfgFileName := EditorDir + DirectorySeparator + 'Editor.cfg';
   GameWad := EditorDir + DirectorySeparator + 'data' + DirectorySeparator + 'game.wad';
   EditorWad := EditorDir + DirectorySeparator + 'data' + DirectorySeparator + 'editor.wad';
+  WadsDir := EditorDir + DirectorySeparator + 'wads';
 
   CheckParamOptions;
   InitLogs;
index 24c9f8327171b4d2e57bae1a2daf7a8aa1041fe3..d67765e20d111ae91e253ee8350953e1a46ff8c4 100644 (file)
@@ -64,7 +64,7 @@ begin
   FFullResourceName := '';
   FResourceSelected := False;
 
-  if FindFirst(EditorDir + 'wads/*.*', faAnyFile, SR) = 0 then
+  if FindFirst(WadsDir + DirectorySeparator + '*.*', faAnyFile, SR) = 0 then
   repeat
     if (SR.name <> '.') and (SR.name <> '..') then
       cbWADList.Items.Add(SR.Name);
@@ -108,7 +108,7 @@ procedure TAddResourceForm.cbWADListChange(Sender: TObject);
     FileName, Section, sn, rn: String;
 begin
   if cbWADList.Text <> _lc[I_WAD_SPECIAL_MAP] then
-    FileName := EditorDir + 'wads/' + cbWADList.Text (* Resource wad *)
+    FileName := WadsDir + DirectorySeparator + cbWADList.Text (* Resource wad *)
   else
     g_ProcessResourceStr(OpenedMap, FileName, sn, rn); (* Map wad *)
 
@@ -138,7 +138,7 @@ procedure TAddResourceForm.cbSectionsListChange(Sender: TObject);
     FileName, Section, SectionName, sn, rn: String;
 begin
   if cbWADList.Text <> _lc[I_WAD_SPECIAL_MAP] then
-    FileName := EditorDir + 'wads/' + cbWADList.Text (* Resource wad *)
+    FileName := WadsDir + DirectorySeparator + cbWADList.Text (* Resource wad *)
   else
     g_ProcessResourceStr(OpenedMap, FileName, sn, rn); (* Map wad *)
 
@@ -179,7 +179,7 @@ begin
 
   g_ProcessResourceStr(OpenedMap, @fn, nil, nil);
   if FileName <> '' then
-    FFullResourceName := EditorDir + 'wads/' + FResourceName
+    FFullResourceName := WadsDir + DirectorySeparator + FResourceName
   else
     FFullResourceName := fn + FResourceName
 end;
index be9dee3915e746363fd9c91ff7fd9b22abb05ab5..e3c6288d2419f49a2b6d2f38fca31b5e1eec0da4 100644 (file)
@@ -1946,7 +1946,7 @@ begin
       end
     else
       begin // Внешний WAD
-        FileName := EditorDir+'wads/'+aWAD;
+        FileName := WadsDir + DirectorySeparator + aWAD;
         ResourceName := aWAD+':'+SectionName+'\'+aTex;
       end;
 
index fbfe4735001a57e21e74bfefbefb5bf5ccb47d80..1fce2c21b9f7678dc42dd4b8ad5e8f01bf421848 100644 (file)
@@ -80,7 +80,7 @@ begin
   if filename = '' then
     g_GetResourceSection(OpenedMap, filename, us, un)
   else
-    filename := EditorDir + 'wads/' + filename;
+    filename := WadsDir + DirectorySeparator + filename;
   e_WriteLog('ProcessResource: "' + wad_to + '" "' + section_to + '" "' + filename + '" "' + section + '" "' + resource + '"', MSG_NOTIFY);
 
   if resource = '' then Exit;
index d6e71a0f263f97e33b7ab55f01e57b98c6cf5010..3f3b58d2e734b3d82969b930a6e7730e73a6f418 100644 (file)
@@ -366,7 +366,7 @@ begin
       fn := fn + Res;
     end
   else
-    fn := EditorDir + 'wads/' + Res;
+    fn := WadsDir + DirectorySeparator + Res;
 
   g_CreateTextureWAD(SKY_TEXTURE, fn);
 end;
@@ -1445,7 +1445,7 @@ begin
       if _fn = '' then
         TextureRes := FileName + ustr
       else
-        TextureRes := EditorDir+'wads/'+ustr;
+        TextureRes := WadsDir + DirectorySeparator + ustr;
 
       Error := False;
 
@@ -1735,13 +1735,13 @@ begin
       Continue;
 
   // Нет такой текстуры - ищем в WAD карты:
-    if not g_CreateTextureWAD(s, EditorDir+'wads/'+s) then
+    if not g_CreateTextureWAD(s, WadsDir + DirectorySeparator + s) then
     begin
       s := ExtractFileName(_FileName);
       Delete(s, Length(s)-3, 4);
       s := UpperCase(s) + '.WAD:TEXTURES\'+ UpperCase(win2utf(map.ReadStr('Textures', 'TextureName'+IntToStr(a), '')));
 
-      if not g_CreateTextureWAD(s, EditorDir+'wads/'+s) then
+      if not g_CreateTextureWAD(s, WadsDir + DirectorySeparator + s) then
         Continue;
     end;
 
index acb5de936c410a4802c44ff047869eac0f15255d..19141add46dce469cfd9cd29a377efae7012993f 100644 (file)
@@ -9,6 +9,7 @@ interface
     CfgFileName: AnsiString;
     GameWad: AnsiString;
     EditorWad: AnsiString;
+    WadsDir: AnsiString;
 
 implementation