private static void CopyResource(IArchiveResourceFile sourceResource, IArchiveDirectory targetDirectory) { var resourceStream = new MemoryStream(); sourceResource.Export(resourceStream); var targetResource = targetDirectory.CreateResourceFile(); targetResource.Name = sourceResource.Name; resourceStream.Position = 0; targetResource.Import(resourceStream); }
public static T GetResourceData <T>(IArchiveResourceFile file) where T : FileBase64_GTA5_pc, new() { var resource = new ResourceFile_GTA5_pc <T>(); using (var ms = new MemoryStream()) { file.Export(ms); resource.Load(ms); } return(resource.ResourceData); }
private void RebuildResourceFile(IArchiveResourceFile sourceFile, IArchiveDirectory destinationDirectory, RageArchiveEncryption7 archiveEncryption) { foreach (var handler in ResourceFileHandlers) { if (handler.CanRebuild(sourceFile)) { handler.Rebuild(sourceFile, destinationDirectory, archiveEncryption); return; } } CopyResource(sourceFile, destinationDirectory); }
public void Rebuild(IArchiveResourceFile sourceFile, IArchiveDirectory targetDirectory, RageArchiveEncryption7 encryption) { try { var resourceStream = new MemoryStream(); sourceFile.Export(resourceStream); var buffer = new byte[resourceStream.Length]; resourceStream.Position = 0; resourceStream.Read(buffer, 0, (int)resourceStream.Length); resourceStream = new MemoryStream(buffer); var resource = new ResourceFile_GTA5_pc <T>(); resourceStream.Position = 0; resource.Load(resourceStream); if (resource.Version != fileType.Version) { throw new Exception("Wrong version"); } var newResourceStream = new MemoryStream(); resource.Save(newResourceStream); buffer = new byte[newResourceStream.Length]; newResourceStream.Position = 0; newResourceStream.Read(buffer, 0, (int)newResourceStream.Length); newResourceStream = new MemoryStream(buffer); var targetResource = targetDirectory.CreateResourceFile(); targetResource.Name = sourceFile.Name; newResourceStream.Position = 0; targetResource.Import(newResourceStream); Console.WriteLine("Rebuilt " + sourceFile.Name); } catch (Exception ex) { Console.WriteLine("ERROR in " + sourceFile.Name + ": " + ex.Message); } }
public bool CanRebuild(IArchiveResourceFile sourceFile) { return(sourceFile.Name.EndsWith("." + fileType.Extension, StringComparison.OrdinalIgnoreCase)); }