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

@ -4036,22 +4036,18 @@ namespace Server.Items
m_Resource = CraftResource.Iron;
}
Attributes = new AosAttributes(this);
if (GetSaveFlag(flags, SaveFlag.xAttributes))
{
Attributes = new AosAttributes(this, reader);
}
else
{
Attributes = new AosAttributes(this);
Attributes.Deserialize(reader);
}
WeaponAttributes = new AosWeaponAttributes(this);
if (GetSaveFlag(flags, SaveFlag.xWeaponAttributes))
{
WeaponAttributes = new AosWeaponAttributes(this, reader);
}
else
{
WeaponAttributes = new AosWeaponAttributes(this);
WeaponAttributes.Deserialize(reader);
}
if (UseSkillMod && m_AccuracyLevel != WeaponAccuracyLevel.Regular && parentMobile != null)
@ -4077,13 +4073,11 @@ namespace Server.Items
PlayerConstructed = true;
}
SkillBonuses = new AosSkillBonuses(this);
if (GetSaveFlag(flags, SaveFlag.SkillBonuses))
{
SkillBonuses = new AosSkillBonuses(this, reader);
}
else
{
SkillBonuses = new AosSkillBonuses(this);
SkillBonuses.Deserialize(reader);
}
if (GetSaveFlag(flags, SaveFlag.Slayer2))
@ -4091,13 +4085,11 @@ namespace Server.Items
m_Slayer2 = (SlayerName)reader.ReadInt();
}
AosElementDamages = new AosElementAttributes(this);
if (GetSaveFlag(flags, SaveFlag.ElementalDamages))
{
AosElementDamages = new AosElementAttributes(this, reader);
}
else
{
AosElementDamages = new AosElementAttributes(this);
AosElementDamages.Deserialize(reader);
}
if (GetSaveFlag(flags, SaveFlag.EngravedText))