fix(codegen): Fixes various code gen issues. Adds better embedded serialization support (#688)

* Adds save flag support (see `ElvenGlasses` for an example)
* Updates AOSAttributes so they are code genned
* Fixes embedded object support by adding an `IRawSerializable`
* Fixes various inconsistencies in serializing with codegen
This commit is contained in:
Kamron Batman 2021-08-17 02:43:52 -07:00 committed by GitHub
parent 69af652a18
commit 2c8097f707
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
54 changed files with 787 additions and 507 deletions

View file

@ -1173,22 +1173,18 @@ namespace Server.Items
{
var flags = (SaveFlag)reader.ReadEncodedInt();
Attributes = new AosAttributes(this);
if (GetSaveFlag(flags, SaveFlag.Attributes))
{
Attributes = new AosAttributes(this, reader);
}
else
{
Attributes = new AosAttributes(this);
Attributes.Deserialize(reader);
}
ArmorAttributes = new AosArmorAttributes(this);
if (GetSaveFlag(flags, SaveFlag.ArmorAttributes))
{
ArmorAttributes = new AosArmorAttributes(this, reader);
}
else
{
ArmorAttributes = new AosArmorAttributes(this);
ArmorAttributes.Deserialize(reader);
}
if (GetSaveFlag(flags, SaveFlag.PhysicalBonus))
@ -1356,9 +1352,11 @@ namespace Server.Items
m_Meditate = (AMA)(-1);
}
SkillBonuses = new AosSkillBonuses(this);
if (GetSaveFlag(flags, SaveFlag.SkillBonuses))
{
SkillBonuses = new AosSkillBonuses(this, reader);
SkillBonuses.Deserialize(reader);
}
if (GetSaveFlag(flags, SaveFlag.PlayerConstructed))
@ -1370,8 +1368,11 @@ namespace Server.Items
}
case 4:
{
Attributes = new AosAttributes(this, reader);
ArmorAttributes = new AosArmorAttributes(this, reader);
Attributes = new AosAttributes(this);
Attributes.Deserialize(reader);
ArmorAttributes = new AosArmorAttributes(this);
ArmorAttributes.Deserialize(reader);
goto case 3;
}
case 3: