예제 #1
0
        /// <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;
        }
예제 #2
0
        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);
        }