コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }