void Deserialize(DataStream ds) { Mapping = new List <FileMapping>(); Magic = ds.ReadUInt32(); if (Magic != MAGIC) { throw new InvalidDataException("data is not a valid steam3 manifest: incorrect magic."); } Version = ds.ReadUInt32(); DepotID = ds.ReadUInt32(); ManifestGID = ds.ReadUInt64(); CreationTime = Utils.DateTimeFromUnixTime(ds.ReadUInt32()); AreFileNamesEncrypted = ds.ReadUInt32() != 0; TotalUncompressedSize = ds.ReadUInt64(); TotalCompressedSize = ds.ReadUInt64(); ChunkCount = ds.ReadUInt32(); FileEntryCount = ds.ReadUInt32(); FileMappingSize = ds.ReadUInt32(); EncryptedCRC = ds.ReadUInt32(); DecryptedCRC = ds.ReadUInt32(); Flags = ds.ReadUInt32(); for (uint i = FileMappingSize; i > 0;) { long start = ds.Position; FileMapping mapping = new FileMapping(); mapping.Deserialize(ds); Mapping.Add(mapping); i -= (uint)(ds.Position - start); } }
internal void Deserialize(DataStream ds) { ChunkGID = ds.ReadBytes(20); CRC = ds.ReadBytes(4); Offset = ds.ReadUInt64(); DecompressedSize = ds.ReadUInt32(); CompressedSize = ds.ReadUInt32(); }
internal void Deserialize(DataStream ds) { FileName = ds.ReadNullTermString(Encoding.ASCII); TotalSize = ds.ReadUInt64(); Flags = (EDepotFileFlag)ds.ReadUInt32(); HashFileName = ds.ReadBytes(20); HashContent = ds.ReadBytes(20); NumChunks = ds.ReadUInt32(); Chunks = new Chunk[NumChunks]; for (int x = 0; x < Chunks.Length; ++x) { Chunks[x] = new Chunk(); Chunks[x].Deserialize(ds); } }
/// <summary> /// Deserialize a MicroTime from an input byte array /// </summary> public static MicroTime Deserialize(byte[] data) { DataStream ds = new DataStream(data); return(new MicroTime(ds.ReadUInt64())); }