private static bool HEditDataSaveHook(bool __result, HEditData __instance, ref BinaryWriter _writer, ref YS_Node.NodeControl _nodeControl, ref bool _isInitUserID) { ExtendedSave.HEditDataWriteEvent(__instance); ExtendedSave.Logger.Log(LogLevel.Debug, "MapInfo hook!"); var extendedData = ExtendedSave.GetAllExtendedData(__instance); if (extendedData == null || extendedData.Count == 0) { return(__result); } var originalLength = _writer.BaseStream.Length; var originalPosition = _writer.BaseStream.Position; try { var bytes = ExtendedSave.MessagePackSerialize(extendedData); _writer.Write(Marker); _writer.Write(Version); _writer.Write(bytes.Length); _writer.Write(bytes); } catch (Exception e) { ExtendedSave.Logger.Log(LogLevel.Warning, $"Failed to save extended data in card. {e.Message}"); _writer.BaseStream.Position = originalPosition; _writer.BaseStream.SetLength(originalLength); } return(__result); }
private static bool HEditDataLoadHook(bool __result, HEditData __instance, ref BinaryReader _reader, ref int _loadKind, ref YS_Node.NodeControl _nodeControl, ref HEditData.InfoData _info, ref bool _isEdit) { var originalPosition = _reader.BaseStream.Position; try { var marker = _reader.ReadString(); var version = _reader.ReadInt32(); var length = _reader.ReadInt32(); if (marker == Marker && version == Version && length > 0) { var bytes = _reader.ReadBytes(length); var dictionary = ExtendedSave.MessagePackDeserialize <Dictionary <string, PluginData> >(bytes); ExtendedSave._internalHEditDataDictionary.Set(__instance, dictionary); } else { ExtendedSave._internalHEditDataDictionary.Set(__instance, new Dictionary <string, PluginData>()); _reader.BaseStream.Position = originalPosition; } } catch (EndOfStreamException) { /* Incomplete/non-existant data */ ExtendedSave._internalHEditDataDictionary.Set(__instance, new Dictionary <string, PluginData>()); _reader.BaseStream.Position = originalPosition; } catch (InvalidOperationException) { /* Invalid/unexpected deserialized data */ ExtendedSave._internalHEditDataDictionary.Set(__instance, new Dictionary <string, PluginData>()); _reader.BaseStream.Position = originalPosition; } ExtendedSave.HEditDataReadEvent(__instance); return(__result); }
internal static bool HEditDataLoadHook(bool __result, HEditData __instance, ref BinaryReader _reader) { var originalPosition = _reader.BaseStream.Position; try { var marker = _reader.ReadString(); var version = _reader.ReadInt32(); var length = _reader.ReadInt32(); if (marker == Marker && version == DataVersion && length > 0) { var bytes = _reader.ReadBytes(length); var dictionary = MessagePackDeserialize <Dictionary <string, PluginData> >(bytes); _internalHEditDataDictionary.Set(__instance, dictionary); } else { _internalHEditDataDictionary.Set(__instance, new Dictionary <string, PluginData>()); _reader.BaseStream.Position = originalPosition; } } catch (EndOfStreamException) { /* Incomplete/non-existant data */ _internalHEditDataDictionary.Set(__instance, new Dictionary <string, PluginData>()); _reader.BaseStream.Position = originalPosition; } catch (InvalidOperationException) { /* Invalid/unexpected deserialized data */ _internalHEditDataDictionary.Set(__instance, new Dictionary <string, PluginData>()); _reader.BaseStream.Position = originalPosition; } HEditDataReadEvent(__instance); return(__result); }