fix: Code gens items. Fixes code genning of ore (#684)

### THIS IS A BREAKING CHANGE IF YOU ARE ALREADY USING CODEGEN. IF YOUR WORLD HAS ERRORS LOADING PLEASE CONTACT ME ON DISCORD. ORE MIGHT FAIL TO LOAD.
 
### Changes
* Fixes Components from addons not marking dirty
* Code gens BaseAddonContainer
* Code gens Ingots
* Fixes code gen deserialization for Ore
* Code gens dyetubs
* Code gens reagents
* Code gens tailor commodities
* Code gens fish
This commit is contained in:
Kamron Batman 2021-08-14 22:16:42 -07:00 committed by GitHub
parent 2de4717390
commit 25fa9b397b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
163 changed files with 1128 additions and 2494 deletions

View file

@ -3,8 +3,11 @@ using Server.Multis;
namespace Server.Items
{
public abstract class BaseAddonContainer : BaseContainer, IChoppable, IAddon
[Serializable(1, false)]
public abstract partial class BaseAddonContainer : BaseContainer, IChoppable, IAddon
{
[SerializableField(0, setter: "private")]
private List<AddonContainerComponent> _components;
private CraftResource m_Resource;
public BaseAddonContainer(int itemID) : base(itemID)
@ -14,10 +17,6 @@ namespace Server.Items
Components = new List<AddonContainerComponent>();
}
public BaseAddonContainer(Serial serial) : base(serial)
{
}
public override bool DisplayWeight => false;
[Hue, CommandProperty(AccessLevel.GameMaster)]
@ -41,6 +40,7 @@ namespace Server.Items
}
}
[SerializableField(1)]
[CommandProperty(AccessLevel.GameMaster)]
public CraftResource Resource
{
@ -63,8 +63,6 @@ namespace Server.Items
public virtual Point3D WallPosition => Point3D.Zero;
public virtual BaseAddonContainerDeed Deed => null;
public List<AddonContainerComponent> Components { get; private set; }
Item IAddon.Deed => Deed;
public bool CouldFit(IPoint3D p, Map map)
@ -186,25 +184,16 @@ namespace Server.Items
}
}
public override void Serialize(IGenericWriter writer)
// Handles v0 with old Enum -> Int casting
private void Deserialize(IGenericReader reader, int version)
{
base.Serialize(writer);
writer.Write(0); // version
writer.Write(Components);
writer.Write((int)m_Resource);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
Components = reader.ReadEntityList<AddonContainerComponent>();
m_Resource = (CraftResource)reader.ReadInt();
}
[AfterDeserialization]
private void AfterDeserialization()
{
AddonComponent.ApplyLightTo(this);
}
@ -223,7 +212,7 @@ namespace Server.Items
return;
}
Components.Add(c);
this.Add(Components, c);
c.Addon = this;
c.Offset = new Point3D(x, y, z);