public void Write(BinaryWriter writer, ModSaveInfo info) { long start = writer.BaseStream.Position; writer.Write(0L); IsCustomModel = info.BelongsToMe(data); DataIdentifier.Write(writer, dataID); writer.Write(IsCustomModel); switch (dataID.Type) { case IdentifierType.ACTOR: WriteData <CustomActorData>(writer, info); break; case IdentifierType.GADGET: WriteData <CustomGadgetData>(writer, info); break; default: throw new NotImplementedException(); } long current = writer.BaseStream.Position; writer.BaseStream.Seek(start, SeekOrigin.Begin); dataLength = current - start; writer.Write(dataLength); writer.BaseStream.Seek(current, SeekOrigin.Begin); }
public void WriteData(BinaryWriter writer) { writer.Write(ammoDataEntries.Count); foreach (var entry in ammoDataEntries) { entry.Write(writer); } writer.Write(segments.Count); foreach (var mod in segments) { mod.Write(writer); Debug.Log($"Saving mod {mod.modid} which is {mod.byteLength} bytes long"); } enumTranslator.Write(writer); writer.Write(partialData.Count); foreach (var pair in partialData) { DataIdentifier.Write(writer, pair.Key); pair.Value.Write(writer); } appearancesData.Write(writer); }