public static async Task OblivionESM_GroupMask_Export(TestingSettings settings, Target target) { var mod = OblivionMod.CreateFromBinary( new ModPath( Mutagen.Bethesda.Oblivion.Constants.Oblivion, Path.Combine(settings.DataFolderLocations.Oblivion, target.Path))); using var tmp = TempFolder.FactoryByAddedPath("Mutagen_Oblivion_Binary_GroupMask_Export"); var oblivionOutputPath = Path.Combine(tmp.Dir.Path, TestingConstants.OBLIVION_ESM); mod.WriteToBinary( oblivionOutputPath, importMask: new GroupMask() { Npcs = true }); var fileLocs = RecordLocator.GetFileLocations(oblivionOutputPath, GameRelease.Oblivion); using var reader = new BinaryReadStream(oblivionOutputPath); foreach (var rec in fileLocs.ListedRecords.Keys) { reader.Position = rec; var t = HeaderTranslation.ReadNextRecordType(reader); if (!t.Equals(Oblivion.Internals.RecordTypes.NPC_)) { throw new ArgumentException("Exported a non-NPC record."); } } }
public ITempFolder CreateByAddedPath(string addedFolderPath, bool deleteAfter = true, bool throwIfUnsuccessfulDisposal = true) { return(TempFolder.FactoryByAddedPath( new DirectoryPath(Path.Combine(Path.GetTempPath(), addedFolderPath)), deleteAfter: deleteAfter, throwIfUnsuccessfulDisposal: throwIfUnsuccessfulDisposal, fileSystem: _fileSystem)); }
public static TempFolder GetTempFolder() => TempFolder.FactoryByAddedPath(Path.Combine(OverallTempFolderPath, Path.GetRandomFileName()), throwIfUnsuccessfulDisposal: false);