Added syncing for custom objects before saving.
This commit is contained in:
parent
19732ad2bf
commit
b53379736d
|
@ -109,6 +109,13 @@ namespace Revitalize.Framework.Objects
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (this.info == null)
|
||||||
|
{
|
||||||
|
ModCore.log("Info was null when getting data.");
|
||||||
|
this.updateInfo();
|
||||||
|
}
|
||||||
|
|
||||||
return this.info.id;
|
return this.info.id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -675,8 +682,8 @@ namespace Revitalize.Framework.Objects
|
||||||
/// <param name="replacement"></param>
|
/// <param name="replacement"></param>
|
||||||
public override void rebuild(Dictionary<string, string> additionalSaveData, object replacement)
|
public override void rebuild(Dictionary<string, string> additionalSaveData, object replacement)
|
||||||
{
|
{
|
||||||
CustomObjectData data = CustomObjectData.collection[additionalSaveData["id"]];
|
//CustomObjectData data = CustomObjectData.collection[additionalSaveData["id"]];
|
||||||
BasicItemInformation info = Revitalize.ModCore.Serializer.DeserializeFromJSONString<BasicItemInformation>(additionalSaveData["ItemInfo"]);
|
//BasicItemInformation info = Revitalize.ModCore.Serializer.DeserializeFromJSONString<BasicItemInformation>(additionalSaveData["ItemInfo"]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -689,6 +696,7 @@ namespace Revitalize.Framework.Objects
|
||||||
Dictionary<string, string> serializedInfo = new Dictionary<string, string>();
|
Dictionary<string, string> serializedInfo = new Dictionary<string, string>();
|
||||||
serializedInfo.Add("id", this.ItemInfo);
|
serializedInfo.Add("id", this.ItemInfo);
|
||||||
serializedInfo.Add("ItemInfo", Revitalize.ModCore.Serializer.ToJSONString(this.info));
|
serializedInfo.Add("ItemInfo", Revitalize.ModCore.Serializer.ToJSONString(this.info));
|
||||||
|
Revitalize.ModCore.Serializer.SerializeGUID(this.guid.ToString(), this);
|
||||||
return serializedInfo;
|
return serializedInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
using Revitalize.Framework.Objects;
|
using Revitalize.Framework.Objects;
|
||||||
using StardewValley;
|
using StardewValley;
|
||||||
|
|
||||||
|
@ -14,6 +15,7 @@ namespace Revitalize.Framework.Utilities
|
||||||
public static string RequestGUIDMessage_Tile = "Revitalize.RequestGUIDObject_Tile";
|
public static string RequestGUIDMessage_Tile = "Revitalize.RequestGUIDObject_Tile";
|
||||||
public static string ReceieveGUIDMessage = "Revitalize.ReceieveGUIDObject";
|
public static string ReceieveGUIDMessage = "Revitalize.ReceieveGUIDObject";
|
||||||
public static string ReceieveGUIDMessage_Tile = "Revitalize.ReceieveGUIDObject_Tile";
|
public static string ReceieveGUIDMessage_Tile = "Revitalize.ReceieveGUIDObject_Tile";
|
||||||
|
public static string RequestALLModObjects = "Revitalize.EndOfDayRequestAllObjects";
|
||||||
public static void GetModMessage(object o, StardewModdingAPI.Events.ModMessageReceivedEventArgs e)
|
public static void GetModMessage(object o, StardewModdingAPI.Events.ModMessageReceivedEventArgs e)
|
||||||
{
|
{
|
||||||
ModCore.log("Get a mod message: "+e.Type);
|
ModCore.log("Get a mod message: "+e.Type);
|
||||||
|
@ -32,12 +34,12 @@ namespace Revitalize.Framework.Utilities
|
||||||
if (ModCore.CustomObjects.ContainsKey((v as CustomObject).guid) == false)
|
if (ModCore.CustomObjects.ContainsKey((v as CustomObject).guid) == false)
|
||||||
{
|
{
|
||||||
ModCore.CustomObjects.Add((v as CustomObject).guid, v);
|
ModCore.CustomObjects.Add((v as CustomObject).guid, v);
|
||||||
//v.forceUpdate();
|
v.updateInfo();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ModCore.CustomObjects[(v as CustomObject).guid] = v;
|
ModCore.CustomObjects[(v as CustomObject).guid] = v;
|
||||||
//v.forceUpdate();
|
v.updateInfo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,12 +57,22 @@ namespace Revitalize.Framework.Utilities
|
||||||
if (ModCore.CustomObjects.ContainsKey((v as CustomObject).guid) == false)
|
if (ModCore.CustomObjects.ContainsKey((v as CustomObject).guid) == false)
|
||||||
{
|
{
|
||||||
ModCore.CustomObjects.Add((v as CustomObject).guid, v);
|
ModCore.CustomObjects.Add((v as CustomObject).guid, v);
|
||||||
//v.forceUpdate();
|
v.updateInfo();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ModCore.CustomObjects[(v as CustomObject).guid] = v;
|
ModCore.CustomObjects[(v as CustomObject).guid] = v;
|
||||||
//v.forceUpdate();
|
v.updateInfo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.Type.Equals(RequestALLModObjects))
|
||||||
|
{
|
||||||
|
List < KeyValuePair<Guid, CustomObject> > list = ModCore.CustomObjects.ToList();
|
||||||
|
foreach(var v in list)
|
||||||
|
{
|
||||||
|
(v.Value).updateInfo();
|
||||||
|
SendGuidObject(v.Key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,6 +98,7 @@ namespace Revitalize.Framework.Utilities
|
||||||
ModCore.log("Send guid tile request!");
|
ModCore.log("Send guid tile request!");
|
||||||
//(ModCore.CustomObjects[request] as MultiTiledComponent).forceUpdate();
|
//(ModCore.CustomObjects[request] as MultiTiledComponent).forceUpdate();
|
||||||
//(ModCore.CustomObjects[request] as MultiTiledComponent).containerObject.forceUpdate();
|
//(ModCore.CustomObjects[request] as MultiTiledComponent).containerObject.forceUpdate();
|
||||||
|
(ModCore.CustomObjects[request] as MultiTiledComponent).containerObject.updateInfo();
|
||||||
ModCore.ModHelper.Multiplayer.SendMessage<string>(ModCore.Serializer.ToJSONString( (ModCore.CustomObjects[request] as MultiTiledComponent).containerObject), ReceieveGUIDMessage_Tile , new string[] { Revitalize.ModCore.Manifest.UniqueID.ToString() });
|
ModCore.ModHelper.Multiplayer.SendMessage<string>(ModCore.Serializer.ToJSONString( (ModCore.CustomObjects[request] as MultiTiledComponent).containerObject), ReceieveGUIDMessage_Tile , new string[] { Revitalize.ModCore.Manifest.UniqueID.ToString() });
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -104,5 +117,10 @@ namespace Revitalize.Framework.Utilities
|
||||||
ModCore.ModHelper.Multiplayer.SendMessage<string>(request.ToString(), RequestGUIDMessage_Tile, new string[] { ModCore.Manifest.UniqueID.ToString() });
|
ModCore.ModHelper.Multiplayer.SendMessage<string>(request.ToString(), RequestGUIDMessage_Tile, new string[] { ModCore.Manifest.UniqueID.ToString() });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void RequestALLGuidObjects()
|
||||||
|
{
|
||||||
|
ModCore.ModHelper.Multiplayer.SendMessage<string>(RequestALLModObjects, RequestALLModObjects,new string[] { ModCore.Manifest.UniqueID.ToString() });
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,19 +24,20 @@ namespace Revitalize.Framework.Utilities.Serialization.Converters
|
||||||
{
|
{
|
||||||
new Framework.Utilities.Serialization.Converters.RectangleConverter(),
|
new Framework.Utilities.Serialization.Converters.RectangleConverter(),
|
||||||
new Framework.Utilities.Serialization.Converters.Texture2DConverter(),
|
new Framework.Utilities.Serialization.Converters.Texture2DConverter(),
|
||||||
|
Serializer.NetFieldConverter
|
||||||
//new NetFieldConverter()
|
//new NetFieldConverter()
|
||||||
},
|
},
|
||||||
Formatting = Formatting.Indented,
|
Formatting = Formatting.Indented,
|
||||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||||
NullValueHandling = NullValueHandling.Include
|
NullValueHandling = NullValueHandling.Include
|
||||||
};
|
};
|
||||||
|
this.settings.ContractResolver = new ContractResolvers.NetFieldContract();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||||
{
|
{
|
||||||
string convertedString = JsonConvert.SerializeObject((Item)value, this.settings);
|
string convertedString = JsonConvert.SerializeObject((Item)value, this.settings);
|
||||||
DefaultContractResolver resolver = serializer.ContractResolver as ContractResolvers.NetFieldContract;
|
|
||||||
writer.WriteStartObject();
|
writer.WriteStartObject();
|
||||||
writer.WritePropertyName("Type");
|
writer.WritePropertyName("Type");
|
||||||
serializer.Serialize(writer, value.GetType().FullName.ToString());
|
serializer.Serialize(writer, value.GetType().FullName.ToString());
|
||||||
|
@ -63,8 +64,9 @@ namespace Revitalize.Framework.Utilities.Serialization.Converters
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
JObject jo = JObject.Load(reader);
|
JObject jo = null;
|
||||||
|
|
||||||
|
jo = JObject.Load(reader);
|
||||||
string t = jo["Type"].Value<string>();
|
string t = jo["Type"].Value<string>();
|
||||||
|
|
||||||
//See if the type has already been cached and if so return it for deserialization.
|
//See if the type has already been cached and if so return it for deserialization.
|
||||||
|
|
|
@ -1,37 +1,159 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Netcode;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
namespace Revitalize.Framework.Utilities.Serialization.Converters
|
namespace Revitalize.Framework.Utilities.Serialization.Converters
|
||||||
{
|
{
|
||||||
|
|
||||||
public class NetFieldConverter:JsonConverter
|
public class NetFieldConverter:JsonConverter
|
||||||
{
|
{
|
||||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
public static Dictionary<string, Type> AllTypes = new Dictionary<string, Type>();
|
||||||
|
|
||||||
|
JsonSerializerSettings settings;
|
||||||
|
public NetFieldConverter()
|
||||||
{
|
{
|
||||||
writer.WriteValue("NetFields");
|
this.settings = new JsonSerializerSettings()
|
||||||
|
{
|
||||||
|
Converters = new List<JsonConverter>()
|
||||||
|
{
|
||||||
|
new Framework.Utilities.Serialization.Converters.RectangleConverter(),
|
||||||
|
new Framework.Utilities.Serialization.Converters.Texture2DConverter(),
|
||||||
|
this
|
||||||
|
//new NetFieldConverter()
|
||||||
|
},
|
||||||
|
Formatting = Formatting.Indented,
|
||||||
|
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||||
|
NullValueHandling = NullValueHandling.Include
|
||||||
|
};
|
||||||
|
this.settings.ContractResolver = new ContractResolvers.NetFieldContract();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
|
|
||||||
JsonSerializer serializer)
|
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||||
{
|
{
|
||||||
|
string convertedString = JsonConvert.SerializeObject(value, this.settings);
|
||||||
|
writer.WriteStartObject();
|
||||||
|
writer.WritePropertyName("Type");
|
||||||
|
serializer.Serialize(writer, value.GetType().FullName.ToString());
|
||||||
|
writer.WritePropertyName("Item");
|
||||||
|
serializer.Serialize(writer, convertedString);
|
||||||
|
|
||||||
string str = (string)reader.Value;
|
writer.WriteEndObject();
|
||||||
//string str=jsonObject.ToObject<string>(serializer);
|
}
|
||||||
|
|
||||||
return new Netcode.NetFields();
|
/// <summary>
|
||||||
|
/// Reads the JSON representation of the object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
|
||||||
|
/// <param name="objectType">Type of the object.</param>
|
||||||
|
/// <param name="existingValue">The existing value of object being read.</param>
|
||||||
|
/// <param name="serializer">The calling serializer.</param>
|
||||||
|
/// <returns>The object value.</returns>
|
||||||
|
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
||||||
|
{
|
||||||
|
if (reader.TokenType == JsonToken.Null)
|
||||||
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool CanConvert(Type objectType)
|
JObject jo = null;
|
||||||
|
if (reader == null) return null;
|
||||||
|
if (reader.Value == null) return null;
|
||||||
|
|
||||||
|
jo = JObject.Load(reader);
|
||||||
|
string t = jo["Type"].Value<string>();
|
||||||
|
|
||||||
|
//See if the type has already been cached and if so return it for deserialization.
|
||||||
|
if (AllTypes.ContainsKey(t))
|
||||||
{
|
{
|
||||||
return objectType == typeof(Netcode.NetFields);
|
|
||||||
|
return JsonConvert.DeserializeObject(jo["Item"].ToString(), AllTypes[t], this.settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
Assembly asm = typeof(StardewValley.Object).Assembly;
|
||||||
|
Type type = null;
|
||||||
|
|
||||||
|
type = asm.GetType(t);
|
||||||
|
|
||||||
|
if (type == null)
|
||||||
|
{
|
||||||
|
asm = typeof(Revitalize.ModCore).Assembly;
|
||||||
|
type = asm.GetType(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == null)
|
||||||
|
{
|
||||||
|
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
|
||||||
|
{
|
||||||
|
asm = assembly;
|
||||||
|
type = asm.GetType(t);
|
||||||
|
if (t != null) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == null)
|
||||||
|
{
|
||||||
|
throw new Exception("Unsupported type found when Deserializing Unsure what to do so we can;t deserialize this thing!: " + t);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Cache the newly found type.
|
||||||
|
AllTypes.Add(t, type);
|
||||||
|
|
||||||
|
return JsonConvert.DeserializeObject(jo["Item"].ToString(), type, this.settings);
|
||||||
|
/*
|
||||||
|
if (t== typeof(StardewValley.Tools.Axe).FullName.ToString())
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.log("DESERIALIZE AXE!!!");
|
||||||
|
//return jo["Item"].Value<StardewValley.Tools.Axe>();
|
||||||
|
return JsonConvert.DeserializeObject<StardewValley.Tools.Axe>(jo["Item"].ToString(),this.settings);
|
||||||
|
}
|
||||||
|
else if (t == typeof(Revitalize.Framework.Objects.MultiTiledObject).FullName.ToString())
|
||||||
|
{
|
||||||
|
|
||||||
|
Revitalize.ModCore.log("DESERIALIZE Multi Tile Object!!!");
|
||||||
|
return JsonConvert.DeserializeObject<Revitalize.Framework.Objects.MultiTiledObject>(jo["Item"].ToString(), this.settings);
|
||||||
|
// return jo["Item"].Value<Revitalize.Framework.Objects.MultiTiledObject>();
|
||||||
|
}
|
||||||
|
else if (t == typeof(Revitalize.Framework.Objects.MultiTiledComponent).FullName.ToString())
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.log("DESERIALIZE Multi Tile Component!!!");
|
||||||
|
return JsonConvert.DeserializeObject<Revitalize.Framework.Objects.MultiTiledComponent>(jo["Item"].ToString(), this.settings);
|
||||||
|
// return jo["Item"].Value<Revitalize.Framework.Objects.MultiTiledObject>();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
throw new NotImplementedException("CANT DESERIALIZE: " + t.ToString());
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool CanRead => true;
|
|
||||||
public override bool CanWrite => true;
|
public override bool CanWrite => true;
|
||||||
|
public override bool CanRead => true;
|
||||||
|
|
||||||
|
public override bool CanConvert(Type objectType)
|
||||||
|
{
|
||||||
|
return this.IsSameOrSubclass(typeof(INetSerializable), objectType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// https://stackoverflow.com/questions/2742276/how-do-i-check-if-a-type-is-a-subtype-or-the-type-of-an-object
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="potentialBase"></param>
|
||||||
|
/// <param name="potentialDescendant"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant)
|
||||||
|
{
|
||||||
|
return potentialDescendant.IsSubclassOf(potentialBase)
|
||||||
|
|| potentialDescendant == potentialBase;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ using Newtonsoft.Json;
|
||||||
using Revitalize.Framework.Objects;
|
using Revitalize.Framework.Objects;
|
||||||
using Revitalize.Framework.Objects.Furniture;
|
using Revitalize.Framework.Objects.Furniture;
|
||||||
using Revitalize.Framework.Utilities.Serialization.ContractResolvers;
|
using Revitalize.Framework.Utilities.Serialization.ContractResolvers;
|
||||||
|
using Revitalize.Framework.Utilities.Serialization.Converters;
|
||||||
using StardewValley;
|
using StardewValley;
|
||||||
using StardewValley.Objects;
|
using StardewValley.Objects;
|
||||||
|
|
||||||
|
@ -38,6 +39,8 @@ namespace Revitalize.Framework.Utilities
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private JsonSerializerSettings settings;
|
private JsonSerializerSettings settings;
|
||||||
|
|
||||||
|
|
||||||
|
public static NetFieldConverter NetFieldConverter;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Constructor.
|
/// Constructor.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -49,10 +52,12 @@ namespace Revitalize.Framework.Utilities
|
||||||
this.serializer.NullValueHandling = NullValueHandling.Include;
|
this.serializer.NullValueHandling = NullValueHandling.Include;
|
||||||
|
|
||||||
this.serializer.ContractResolver = new NetFieldContract();
|
this.serializer.ContractResolver = new NetFieldContract();
|
||||||
|
NetFieldConverter = new NetFieldConverter();
|
||||||
|
|
||||||
this.addConverter(new Framework.Utilities.Serialization.Converters.RectangleConverter());
|
this.addConverter(new Framework.Utilities.Serialization.Converters.RectangleConverter());
|
||||||
this.addConverter(new Framework.Utilities.Serialization.Converters.Texture2DConverter());
|
this.addConverter(new Framework.Utilities.Serialization.Converters.Texture2DConverter());
|
||||||
this.addConverter(new Framework.Utilities.Serialization.Converters.ItemCoverter());
|
this.addConverter(new Framework.Utilities.Serialization.Converters.ItemCoverter());
|
||||||
|
this.addConverter(NetFieldConverter);
|
||||||
//this.addConverter(new Framework.Utilities.Serialization.Converters.CustomObjectDataConverter());
|
//this.addConverter(new Framework.Utilities.Serialization.Converters.CustomObjectDataConverter());
|
||||||
//this.addConverter(new Framework.Utilities.Serialization.Converters.NetFieldConverter());
|
//this.addConverter(new Framework.Utilities.Serialization.Converters.NetFieldConverter());
|
||||||
//this.addConverter(new Framework.Utilities.Serialization.Converters.Vector2Converter());
|
//this.addConverter(new Framework.Utilities.Serialization.Converters.Vector2Converter());
|
||||||
|
@ -258,7 +263,30 @@ namespace Revitalize.Framework.Utilities
|
||||||
{
|
{
|
||||||
//ModCore.log("Found a custom object in a chest!");
|
//ModCore.log("Found a custom object in a chest!");
|
||||||
string jsonString = JsonName;
|
string jsonString = JsonName;
|
||||||
string guidName = jsonString.Split(new string[] { "GUID=" }, StringSplitOptions.None)[1];
|
ModCore.log(JsonName);
|
||||||
|
string dataSplit= jsonString.Split(new string[] { "<" }, StringSplitOptions.None)[1];
|
||||||
|
string backUpGUID = dataSplit.Split('|')[0];
|
||||||
|
string[] guidArr = jsonString.Split(new string[] { "|" }, StringSplitOptions.None);
|
||||||
|
|
||||||
|
foreach(string s in guidArr)
|
||||||
|
{
|
||||||
|
ModCore.log(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
string guidName = guidArr[guidArr.Length - 1];
|
||||||
|
guidName = guidName.Substring(5);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Guid g = Guid.Parse(guidName);
|
||||||
|
}
|
||||||
|
catch (Exception err)
|
||||||
|
{
|
||||||
|
Guid d = Guid.Parse(backUpGUID);
|
||||||
|
guidName = backUpGUID;
|
||||||
|
}
|
||||||
|
ModCore.log("THE GUID IS:"+ guidName);
|
||||||
|
|
||||||
//ModCore.log(jsonString);
|
//ModCore.log(jsonString);
|
||||||
string type = jsonString.Split('|')[2];
|
string type = jsonString.Split('|')[2];
|
||||||
Item I = (Item)ModCore.Serializer.DeserializeGUID(guidName, Type.GetType(type));
|
Item I = (Item)ModCore.Serializer.DeserializeGUID(guidName, Type.GetType(type));
|
||||||
|
|
|
@ -232,12 +232,29 @@ namespace Revitalize
|
||||||
//ModHelper.Events.Display.Rendered += MenuHacks.EndOfDay_OnMenuChanged;
|
//ModHelper.Events.Display.Rendered += MenuHacks.EndOfDay_OnMenuChanged;
|
||||||
//ModHelper.Events.GameLoop.Saved += MenuHacks.EndOfDay_CleanupForNewDay;
|
//ModHelper.Events.GameLoop.Saved += MenuHacks.EndOfDay_CleanupForNewDay;
|
||||||
ModHelper.Events.Multiplayer.ModMessageReceived += MultiplayerUtilities.GetModMessage;
|
ModHelper.Events.Multiplayer.ModMessageReceived += MultiplayerUtilities.GetModMessage;
|
||||||
|
ModHelper.Events.GameLoop.DayEnding += this.GameLoop_DayEnding;
|
||||||
|
ModHelper.Events.GameLoop.Saving += this.GameLoop_Saving;
|
||||||
CustomObjects = new Dictionary<Guid, CustomObject>();
|
CustomObjects = new Dictionary<Guid, CustomObject>();
|
||||||
|
|
||||||
//Adds in recipes to the mod.
|
//Adds in recipes to the mod.
|
||||||
VanillaRecipeBook = new VanillaRecipeBook();
|
VanillaRecipeBook = new VanillaRecipeBook();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void GameLoop_Saving(object sender, StardewModdingAPI.Events.SavingEventArgs e)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
foreach(var v in CustomObjects)
|
||||||
|
{
|
||||||
|
v.Value.updateInfo();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GameLoop_DayEnding(object sender, StardewModdingAPI.Events.DayEndingEventArgs e)
|
||||||
|
{
|
||||||
|
MultiplayerUtilities.RequestALLGuidObjects();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Loads in textures to be used by the mod.
|
/// Loads in textures to be used by the mod.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue