public static void SaveFileHook(ChaFile __instance, bool __result, BinaryWriter bw, bool savePng) { if (!__result) { return; } ExtensibleSaveFormat.writeEvent(__instance); Dictionary <string, PluginData> extendedData = ExtensibleSaveFormat.GetAllExtendedData(__instance); if (extendedData == null) { return; } byte[] bytes = MessagePackSerializer.Serialize(extendedData); bw.Write(Marker); bw.Write(Version); foreach (KeyValuePair <string, PluginData> kv in extendedData) { PluginData dict = kv.Value as PluginData; } bw.Write((int)bytes.Length); bw.Write(bytes); }
public static void LoadFileHook(ChaFile __instance, bool __result, BinaryReader br, bool noLoadPNG, bool noLoadStatus) { Dictionary <string, PluginData> dictionary = null; if (!__result) { return; } try { string marker = br.ReadString(); int version = br.ReadInt32(); if (marker == Marker && version == Version) { int length = br.ReadInt32(); if (length > 0) { byte[] bytes = br.ReadBytes(length); dictionary = MessagePackSerializer.Deserialize <Dictionary <string, PluginData> >(bytes); } } } catch (EndOfStreamException) { } catch (System.InvalidOperationException) { /* Invalid/unexpected deserialized data */ } if (dictionary == null) { //initialize a new dictionary since it doesn't exist dictionary = new Dictionary <string, PluginData>(); } ExtensibleSaveFormat.internalDictionary.Set(__instance, dictionary); ExtensibleSaveFormat.readEvent(__instance); }