public CacheFile(GameCache cacheContext, FileInfo file, CacheVersion version, bool memory) { CacheContext = cacheContext; File = file; Version = version; Deserializer = new TagDeserializer(Version); Stream = memory ? new MemoryStream() : (Stream)file.OpenRead(); if (memory) { using (var fileStream = file.OpenRead()) { fileStream.Seek(0, SeekOrigin.Begin); fileStream.CopyTo(Stream); } } Reader = new EndianReader(Stream, EndianFormat.LittleEndian); Reader.SeekTo(0); if (Reader.ReadTag() == "daeh") { Reader.Format = EndianFormat.BigEndian; } Reader.SeekTo(0); Header = Deserializer.Deserialize <CacheFileHeader>(new DataSerializationContext(Reader)); }
public CacheFileGen2(GameCache cacheContext, FileInfo file, CacheVersion version, bool memory) : base(cacheContext, file, version, memory) { if (file.Name == "mainmenu.map" && MainMenuCache?.File.FullName != file.FullName) { MainMenuCache = this; } else if (file.Name == "shared.map" && SharedCache?.File.FullName != file.FullName) { SharedCache = this; } else if (file.Name == "single_player_shared.map" && SharedCache?.File.FullName != file.FullName) { SinglePlayerSharedCache = this; } IndexHeader = new CacheIndexHeader(this); IndexItems = new IndexTable(this); Strings = new StringTable(this); LocaleTables = new List <LocaleTable>(); }