Added ability for custom objects to sync guids across the net!

This commit is contained in:
JoshuaNavarro 2019-08-26 23:32:30 -07:00
parent 9950a6d0c0
commit b5ce25d141
1 changed files with 35 additions and 8 deletions

View File

@ -94,6 +94,9 @@ namespace Revitalize.Framework.Objects
set
{
if (this.netName == null) return;
if (this.netName.Value == null) return;
if (this.netName.Value.Split('>') is string[] split && split.Length > 1)
this.netName.Value = value + ">" + split[1];
else
@ -146,16 +149,39 @@ namespace Revitalize.Framework.Objects
[JsonIgnore]
public Texture2D displayTexture => this.animationManager.getTexture();
public string ItemInfo
[JsonIgnore]
public virtual string ItemInfo
{
get
{
return Revitalize.ModCore.Serializer.ToJSONString(this.info);
return Revitalize.ModCore.Serializer.ToJSONString(this.info)+"<"+this.guid;
}
set
{
if (string.IsNullOrEmpty(value)) return;
this.info = (BasicItemInformation)Revitalize.ModCore.Serializer.DeserializeFromJSONString(value, typeof(BasicItemInformation));
string[] data = value.Split('<');
string infoString = data[0];
string guidString = data[1];
this.info = (BasicItemInformation)Revitalize.ModCore.Serializer.DeserializeFromJSONString(infoString, typeof(BasicItemInformation));
Guid oldGuid = this.guid;
this.guid = Guid.Parse(guidString);
if (ModCore.CustomObjects.ContainsKey(this.guid))
{
ModCore.CustomObjects[this.guid] = this;
}
else
{
ModCore.CustomObjects.Add(this.guid,this);
}
if (ModCore.CustomObjects.ContainsKey(oldGuid) && ModCore.CustomObjects.ContainsKey(this.guid))
{
if (ModCore.CustomObjects[oldGuid] == ModCore.CustomObjects[this.guid] && oldGuid != this.guid)
{
ModCore.CustomObjects.Remove(oldGuid);
}
}
}
}
@ -171,8 +197,9 @@ namespace Revitalize.Framework.Objects
: base(PyTKData, Vector2.Zero)
{
this.info = info;
this.initializeBasics();
this.guid = Guid.NewGuid();
this.initializeBasics();
this.Stack = Stack;
}
@ -182,8 +209,9 @@ namespace Revitalize.Framework.Objects
: base(PyTKData, TileLocation)
{
this.info = info;
this.initializeBasics();
this.guid = Guid.NewGuid();
this.initializeBasics();
this.Stack = Stack;
}
@ -204,8 +232,6 @@ namespace Revitalize.Framework.Objects
this.bigCraftable.Value = false;
this.syncObject = new PySync(this);
this.syncObject.init();
//this.initNetFields();
this.InitNetFields();
this.updateInfo();
@ -586,7 +612,7 @@ namespace Revitalize.Framework.Objects
return this.info.name;
}
public void updateInfo()
public virtual void updateInfo()
{
if (this.info == null)
{
@ -598,6 +624,7 @@ namespace Revitalize.Framework.Objects
this.ItemInfo = this.text;
this.text = this.ItemInfo;
ModCore.log("this guid is: " + this.guid);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~//