Can extract .fomod files (again)

This commit is contained in:
Timothy Baldridge 2020-10-12 22:22:40 -06:00
parent 59874dbf00
commit 34f7babc3e
2 changed files with 21 additions and 3 deletions

View File

@ -168,6 +168,21 @@ namespace Wabbajack.VirtualFileSystem.Test
});
}
[Fact]
public async Task CanExtractFOMODFiles()
{
var tmpFolder = await TempFolder.Create();
var src = await DownloadMod(Game.FalloutNewVegas, 52510);
var newName = src.FileName.RelativeTo(tmpFolder.Dir);
await src.CopyToAsync(newName);
var ctx = new Context(_queue);
await ctx.AddRoot(tmpFolder.Dir);
Assert.NotEmpty(ctx.Index.ByName.Where(f => f.Key.FileName == (RelativePath)"Alternative Repairing.esp"));
}
[Fact]
public async Task SmallZipNoLongerCrashes()
{

View File

@ -27,6 +27,8 @@ namespace Wabbajack.VirtualFileSystem
Definitions.FileType._7Z);
private static Extension OMODExtension = new Extension(".omod");
private static Extension FOMODExtension = new Extension(".fomod");
private static Extension BSAExtension = new Extension(".bsa");
public static readonly HashSet<Extension> ExtractableExtensions = new HashSet<Extension>
@ -37,7 +39,8 @@ namespace Wabbajack.VirtualFileSystem
new Extension(".7zip"),
new Extension(".rar"),
new Extension(".zip"),
OMODExtension
OMODExtension,
FOMODExtension
};
@ -109,7 +112,7 @@ namespace Wabbajack.VirtualFileSystem
}
return results;
}
private static async Task<Dictionary<RelativePath,T>> GatheringExtractWithOMOD<T>(Stream archive, Predicate<RelativePath> shouldExtract, Func<RelativePath,IExtractedFile,ValueTask<T>> mapfn)
{
var tmpFile = new TempFile();
@ -119,7 +122,7 @@ namespace Wabbajack.VirtualFileSystem
Framework.Settings.TempPath = (string)dest.Dir;
Framework.Settings.CodeProgress = new OMODProgress();
var omod = new OMOD((string)tmpFile.Path);
omod.GetDataFiles();
omod.GetPlugins();