/// <summary> /// Initializes from save object. /// </summary> /// <param name="saveObject">The save object.</param> public void InitFromSaveObject(EquipmentSave saveObject) { foreach (EquipItemSave save in saveObject.Equipped) { EquippableItem eq = save.CreateObjectFromID(); eq.InitFromSaveObject(save); equipped.Add(save.EquipTypeSave.Restore(), eq); } statBonuses.Clear(); foreach (EquipmentSave.EquipBonus bonus in saveObject.Bonuses) { StatType type = bonus.Stat.Restore(); int count = bonus.Bonus; this.statBonuses.Add(type, count); } foreach (EquipmentSave.EquipBuff eb in saveObject.Buffs) { BuffSave bs = eb.Buff; EquipType et = eb.EquipType.Restore(); Buff buff = CharacterBuffsSave.SetupBuffCasterFromSave(bs, partyMembers); itemBuffs.Add(et, buff); } partyMembers = null; }
public void EquipmentIsSerializable() { Equipment equips = new Equipment(); Inventory inv = new Inventory(); inv.Add(new PoisonArmor()); equips.AddEquip(inv, new BuffParams(new Stats(1, 2, 3, 4, 5), 2), new PoisonArmor()); EquipmentSave initialSaveObject = equips.GetSaveObject(); initialSaveObject.Buffs.ForEach(b => b.Buff.SetupAsCasterNotInParty()); string json = ToJson(initialSaveObject); EquipmentSave newSaveObject = FromJson <EquipmentSave>(json); Equipment newObject = Util.TypeToObject <Equipment>(equips.GetType()); newObject.InitFromSaveObject(newSaveObject); Assert.AreEqual(equips, newObject); CollectionAssert.AreEquivalent(equips, newObject); }