public ChunkBase NextChunk(Vault vault) { var header = new ChunkBlockHeader(); header.Read(vault, Reader); ChunkBase chunk = null; switch (header.ID) { case 0x53747245: chunk = new BinStringsChunk(); break; case 0x5374724E: chunk = new VltStartChunk(); break; case 0x456E6443: chunk = new EndChunk(); break; case 0x56657273: chunk = new VltVersionChunk(); break; case 0x4465704E: chunk = new VltDependencyChunk(); break; case 0x4578704E: chunk = new VltExportChunk(); break; case 0x5074724E: chunk = new VltPointersChunk(); break; default: chunk = new GenericChunk(header.ID); break; } chunk.Offset = header.Offset; chunk.Size = header.Size + 8; return(chunk); }
private Stream BuildBinStream() { MemoryStream ms = new MemoryStream(8192); BinaryWriter bw = new BinaryWriter(ms); ChunkWriter cw = new ChunkWriter(bw, Vault); var stringsSet = new HashSet <string>(); var strings = Vault.SaveContext.Collections.SelectMany(CollectStrings).ToList(); stringsSet.UnionWith(strings); var stringsChunk = new BinStringsChunk { Strings = new List <string>(stringsSet) }; cw.WriteChunk(stringsChunk); cw.WriteChunk(new EndChunk()); return(ms); }