Fixed more serialization issues. Now to figure out how to get items back to player inventories....
This commit is contained in:
parent
b24420d368
commit
c7770cb8d7
|
@ -92,6 +92,33 @@ namespace Revitalize.Framework.Objects.Extras
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void recreate()
|
||||||
|
{
|
||||||
|
Dictionary<Vector2, Guid> guids = new Dictionary<Vector2, Guid>();
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in this.childrenGuids)
|
||||||
|
{
|
||||||
|
guids.Add(pair.Key, pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
||||||
|
{
|
||||||
|
this.childrenGuids.Remove(pair.Key);
|
||||||
|
ArcadeCabinetTile component = Revitalize.ModCore.Serializer.DeserializeGUID<ArcadeCabinetTile>(pair.Value.ToString());
|
||||||
|
component.InitNetFields();
|
||||||
|
this.removeComponent(pair.Key);
|
||||||
|
this.addComponent(pair.Key, component);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
this.InitNetFields();
|
||||||
|
|
||||||
|
if (!Revitalize.ModCore.ObjectGroups.ContainsKey(this.guid.ToString()))
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.ObjectGroups.Add(this.guid.ToString(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -105,6 +105,33 @@ namespace Revitalize.Framework.Objects.Furniture
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void recreate()
|
||||||
|
{
|
||||||
|
Dictionary<Vector2, Guid> guids = new Dictionary<Vector2, Guid>();
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in this.childrenGuids)
|
||||||
|
{
|
||||||
|
guids.Add(pair.Key, pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
||||||
|
{
|
||||||
|
this.childrenGuids.Remove(pair.Key);
|
||||||
|
ChairTileComponent component = Revitalize.ModCore.Serializer.DeserializeGUID<ChairTileComponent>(pair.Value.ToString());
|
||||||
|
component.InitNetFields();
|
||||||
|
this.removeComponent(pair.Key);
|
||||||
|
this.addComponent(pair.Key, component);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
this.InitNetFields();
|
||||||
|
|
||||||
|
if (!Revitalize.ModCore.ObjectGroups.ContainsKey(this.guid.ToString()))
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.ObjectGroups.Add(this.guid.ToString(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,33 @@ namespace Revitalize.Framework.Objects.Furniture
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void recreate()
|
||||||
|
{
|
||||||
|
Dictionary<Vector2, Guid> guids = new Dictionary<Vector2, Guid>();
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in this.childrenGuids)
|
||||||
|
{
|
||||||
|
guids.Add(pair.Key, pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
||||||
|
{
|
||||||
|
this.childrenGuids.Remove(pair.Key);
|
||||||
|
ChairTileComponent component = Revitalize.ModCore.Serializer.DeserializeGUID<ChairTileComponent>(pair.Value.ToString());
|
||||||
|
component.InitNetFields();
|
||||||
|
this.removeComponent(pair.Key);
|
||||||
|
this.addComponent(pair.Key, component);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
this.InitNetFields();
|
||||||
|
|
||||||
|
if (!Revitalize.ModCore.ObjectGroups.ContainsKey(this.guid.ToString()))
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.ObjectGroups.Add(this.guid.ToString(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -92,6 +92,33 @@ namespace Revitalize.Framework.Objects.Furniture
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void recreate()
|
||||||
|
{
|
||||||
|
Dictionary<Vector2, Guid> guids = new Dictionary<Vector2, Guid>();
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in this.childrenGuids)
|
||||||
|
{
|
||||||
|
guids.Add(pair.Key, pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
||||||
|
{
|
||||||
|
this.childrenGuids.Remove(pair.Key);
|
||||||
|
LampTileComponent component = Revitalize.ModCore.Serializer.DeserializeGUID<LampTileComponent>(pair.Value.ToString());
|
||||||
|
component.InitNetFields();
|
||||||
|
this.removeComponent(pair.Key);
|
||||||
|
this.addComponent(pair.Key, component);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
this.InitNetFields();
|
||||||
|
|
||||||
|
if (!Revitalize.ModCore.ObjectGroups.ContainsKey(this.guid.ToString()))
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.ObjectGroups.Add(this.guid.ToString(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -94,6 +94,33 @@ namespace Revitalize.Framework.Objects.Furniture
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void recreate()
|
||||||
|
{
|
||||||
|
Dictionary<Vector2, Guid> guids = new Dictionary<Vector2, Guid>();
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in this.childrenGuids)
|
||||||
|
{
|
||||||
|
guids.Add(pair.Key, pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
||||||
|
{
|
||||||
|
this.childrenGuids.Remove(pair.Key);
|
||||||
|
RugTileComponent component = Revitalize.ModCore.Serializer.DeserializeGUID<RugTileComponent>(pair.Value.ToString());
|
||||||
|
component.InitNetFields();
|
||||||
|
this.removeComponent(pair.Key);
|
||||||
|
this.addComponent(pair.Key, component);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
this.InitNetFields();
|
||||||
|
|
||||||
|
if (!Revitalize.ModCore.ObjectGroups.ContainsKey(this.guid.ToString()))
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.ObjectGroups.Add(this.guid.ToString(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -92,7 +92,32 @@ namespace Revitalize.Framework.Objects.Furniture
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void recreate()
|
||||||
|
{
|
||||||
|
Dictionary<Vector2, Guid> guids = new Dictionary<Vector2, Guid>();
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in this.childrenGuids)
|
||||||
|
{
|
||||||
|
guids.Add(pair.Key, pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
||||||
|
{
|
||||||
|
this.childrenGuids.Remove(pair.Key);
|
||||||
|
StorageFurnitureTile component = Revitalize.ModCore.Serializer.DeserializeGUID<StorageFurnitureTile>(pair.Value.ToString());
|
||||||
|
component.InitNetFields();
|
||||||
|
this.removeComponent(pair.Key);
|
||||||
|
this.addComponent(pair.Key, component);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
this.InitNetFields();
|
||||||
|
|
||||||
|
if (!Revitalize.ModCore.ObjectGroups.ContainsKey(this.guid.ToString()))
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.ObjectGroups.Add(this.guid.ToString(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
||||||
{
|
{
|
||||||
return base.canBePlacedHere(l, tile);
|
return base.canBePlacedHere(l, tile);
|
||||||
|
|
|
@ -93,6 +93,32 @@ namespace Revitalize.Framework.Objects.Furniture
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void recreate()
|
||||||
|
{
|
||||||
|
Dictionary<Vector2, Guid> guids = new Dictionary<Vector2, Guid>();
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in this.childrenGuids)
|
||||||
|
{
|
||||||
|
guids.Add(pair.Key, pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
||||||
|
{
|
||||||
|
this.childrenGuids.Remove(pair.Key);
|
||||||
|
TableTileComponent component = Revitalize.ModCore.Serializer.DeserializeGUID<TableTileComponent>(pair.Value.ToString());
|
||||||
|
component.InitNetFields();
|
||||||
|
this.removeComponent(pair.Key);
|
||||||
|
this.addComponent(pair.Key, component);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
this.InitNetFields();
|
||||||
|
|
||||||
|
if (!Revitalize.ModCore.ObjectGroups.ContainsKey(this.guid.ToString()))
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.ObjectGroups.Add(this.guid.ToString(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -290,10 +290,9 @@ namespace Revitalize.Framework.Objects
|
||||||
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
||||||
{
|
{
|
||||||
obj.childrenGuids.Remove(pair.Key);
|
obj.childrenGuids.Remove(pair.Key);
|
||||||
//Revitalize.ModCore.log("DESERIALIZE: " + pair.Value.ToString());
|
|
||||||
MultiTiledComponent component = Revitalize.ModCore.Serializer.DeserializeGUID<MultiTiledComponent>(pair.Value.ToString());
|
MultiTiledComponent component = Revitalize.ModCore.Serializer.DeserializeGUID<MultiTiledComponent>(pair.Value.ToString());
|
||||||
component.InitNetFields();
|
component.InitNetFields();
|
||||||
|
obj.removeComponent(pair.Key);
|
||||||
obj.addComponent(pair.Key, component);
|
obj.addComponent(pair.Key, component);
|
||||||
|
|
||||||
|
|
||||||
|
@ -313,14 +312,40 @@ namespace Revitalize.Framework.Objects
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recreate the data from data already stored on the object.
|
||||||
|
/// </summary>
|
||||||
|
public virtual void recreate()
|
||||||
|
{
|
||||||
|
Dictionary<Vector2, Guid> guids = new Dictionary<Vector2, Guid>();
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in this.childrenGuids)
|
||||||
|
{
|
||||||
|
guids.Add(pair.Key, pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
||||||
|
{
|
||||||
|
this.childrenGuids.Remove(pair.Key);
|
||||||
|
MultiTiledComponent component = Revitalize.ModCore.Serializer.DeserializeGUID<MultiTiledComponent>(pair.Value.ToString());
|
||||||
|
component.InitNetFields();
|
||||||
|
this.removeComponent(pair.Key);
|
||||||
|
this.addComponent(pair.Key, component);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
this.InitNetFields();
|
||||||
|
|
||||||
|
if (!Revitalize.ModCore.ObjectGroups.ContainsKey(this.guid.ToString()))
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.ObjectGroups.Add(this.guid.ToString(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override Dictionary<string, string> getAdditionalSaveData()
|
public override Dictionary<string, string> getAdditionalSaveData()
|
||||||
{
|
{
|
||||||
Dictionary<string, string> saveData = base.getAdditionalSaveData();
|
Dictionary<string, string> saveData = base.getAdditionalSaveData();
|
||||||
|
|
||||||
Revitalize.ModCore.log("Serialize: " + this.guid.ToString());
|
|
||||||
|
|
||||||
saveData.Add("GUID", this.guid.ToString());
|
saveData.Add("GUID", this.guid.ToString());
|
||||||
|
|
||||||
Revitalize.ModCore.Serializer.SerializeGUID(this.guid.ToString(), this);
|
Revitalize.ModCore.Serializer.SerializeGUID(this.guid.ToString(), this);
|
||||||
return saveData;
|
return saveData;
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,6 +104,33 @@ namespace Revitalize.Framework.Objects.Resources.OreVeins
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void recreate()
|
||||||
|
{
|
||||||
|
Dictionary<Vector2, Guid> guids = new Dictionary<Vector2, Guid>();
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in this.childrenGuids)
|
||||||
|
{
|
||||||
|
guids.Add(pair.Key, pair.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (KeyValuePair<Vector2, Guid> pair in guids)
|
||||||
|
{
|
||||||
|
this.childrenGuids.Remove(pair.Key);
|
||||||
|
OreVeinTile component = Revitalize.ModCore.Serializer.DeserializeGUID<OreVeinTile>(pair.Value.ToString());
|
||||||
|
component.InitNetFields();
|
||||||
|
this.removeComponent(pair.Key);
|
||||||
|
this.addComponent(pair.Key, component);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
this.InitNetFields();
|
||||||
|
|
||||||
|
if (!Revitalize.ModCore.ObjectGroups.ContainsKey(this.guid.ToString()))
|
||||||
|
{
|
||||||
|
Revitalize.ModCore.ObjectGroups.Add(this.guid.ToString(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -396,6 +396,59 @@ namespace Revitalize
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach(GameLocation loc in Game1.locations)
|
||||||
|
{
|
||||||
|
foreach(StardewValley.Object c in loc.Objects.Values)
|
||||||
|
{
|
||||||
|
if (c is Chest)
|
||||||
|
{
|
||||||
|
List<Item> toRemove=new List<Item>();
|
||||||
|
List<Item> toAdd=new List<Item>();
|
||||||
|
foreach (Item o in (c as Chest).items)
|
||||||
|
{
|
||||||
|
if (o is Chest && o.Name != "Chest")
|
||||||
|
{
|
||||||
|
ModCore.log("Found a custom object in a chest!");
|
||||||
|
string jsonString = o.Name;
|
||||||
|
string guidName = jsonString.Split(new string[] { "GUID=" },StringSplitOptions.None)[1];
|
||||||
|
ModCore.log(jsonString);
|
||||||
|
string type = jsonString.Split('|')[2];
|
||||||
|
Item I=(Item)Serializer.DeserializeGUID(guidName, Type.GetType(type));
|
||||||
|
|
||||||
|
if(I is MultiTiledObject)
|
||||||
|
{
|
||||||
|
(I as MultiTiledObject).recreate();
|
||||||
|
}
|
||||||
|
|
||||||
|
toAdd.Add(I);
|
||||||
|
toRemove.Add(o);
|
||||||
|
//Item i = Serializer.DeserializeFromJSONString<Item>(jsonString);
|
||||||
|
//ModCore.log("Deserialized item is: "+i.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(Item i in toRemove)
|
||||||
|
{
|
||||||
|
(c as Chest).items.Remove(i);
|
||||||
|
}
|
||||||
|
foreach(Item I in toAdd)
|
||||||
|
{
|
||||||
|
(c as Chest).items.Add(I);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(c is StorageFurnitureTile)
|
||||||
|
{
|
||||||
|
foreach (Item o in (c as StorageFurnitureTile).info.inventory.items)
|
||||||
|
{
|
||||||
|
if (o is Chest&& o.Name != "Chest")
|
||||||
|
{
|
||||||
|
ModCore.log("Found a custom object in a chest!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Game1.player.addItemToInventory(GetObjectFromPool("Omegasis.BigTiledTest"));
|
// Game1.player.addItemToInventory(GetObjectFromPool("Omegasis.BigTiledTest"));
|
||||||
Game1.player.addItemToInventory(ObjectManager.getChair("Omegasis.Revitalize.Furniture.Chairs.OakChair"));
|
Game1.player.addItemToInventory(ObjectManager.getChair("Omegasis.Revitalize.Furniture.Chairs.OakChair"));
|
||||||
//Game1.player.addItemToInventory(GetObjectFromPool("Omegasis.Revitalize.Furniture.Rugs.RugTest"));
|
//Game1.player.addItemToInventory(GetObjectFromPool("Omegasis.Revitalize.Furniture.Rugs.RugTest"));
|
||||||
|
|
Loading…
Reference in New Issue