/// <summary> /// Exports a resource file. /// </summary> public void Export(Stream stream) { // find version // -> http://dageron.com/?page_id=5446&lang=en var version = ((file.GraphicsFlags & 0xF0000000) >> 28) | ((file.SystemFlags & 0xF0000000) >> 24); var writer = new DataWriter(stream); writer.Write((uint)0x07435352); writer.Write((uint)version); writer.Write((uint)file.SystemFlags); writer.Write((uint)file.GraphicsFlags); var resourceStream = new PartialStream( archiveWrapper.archive_.BaseStream, delegate () // offset { return file.FileOffset * RageArchiveWrapper7.BLOCK_SIZE; }, delegate () // size { return file.FileSize; } ); var resourceReader = new DataReader(resourceStream); resourceReader.Position = 16; var buf = resourceReader.ReadBytes((int)resourceReader.Length - 16); writer.Write(buf); }
/// <summary> /// Imports a resource file. /// </summary> public void Import(Stream stream) { var resourceStream = new PartialStream( archiveWrapper.archive_.BaseStream, delegate () // offset { return file.FileOffset * RageArchiveWrapper7.BLOCK_SIZE; }, delegate () // size { return file.FileSize; }, delegate (long length) { archiveWrapper.RequestBytesRES(file, length); } ); resourceStream.SetLength(stream.Length); // read resource var reader = new DataReader(stream); var ident = reader.ReadUInt32(); var version = reader.ReadUInt32(); var systemFlags = reader.ReadUInt32(); var graphicsFlags = reader.ReadUInt32(); reader.Position = 0; var buffer = reader.ReadBytes((int)stream.Length); file.SystemFlags = systemFlags; file.GraphicsFlags = graphicsFlags; resourceStream.Write(buffer, 0, buffer.Length); }