예제 #1
0
        public void RestoreState(object state)
        {
            equippedItems = new Dictionary <EquipLocation, EquipableItem[]>();
            equippedStats = new Dictionary <Stat, float[]>();

            SlotRecords slotRecords = (SlotRecords)state;
            var         equippedItemsForSerialization = slotRecords.locationItems;
            var         equippedItemModifiers         = (Dictionary <EquipLocation, object[]>)slotRecords.modifiers;

            foreach (var pair in equippedItemsForSerialization)
            {
                var items = new EquipableItem[pair.Value.Length];
                for (int i = 0; i < items.Length; i++)
                {
                    EquipableItem candidate = InventoryItem.GetFromID(pair.Value[i]) as EquipableItem;
                    if (candidate != null)
                    {
                        items[i] = candidate;
                        AddEquipmentStats(items[i]);
                        items[i].SetModifiers(equippedItemModifiers[pair.Key][i]);
                    }
                }
                equippedItems[pair.Key] = items;
            }
        }
예제 #2
0
        public object CaptureState()
        {
            var equippedItemsForSerialization = new Dictionary <EquipLocation, string[]>();
            var equippedItemModifiers         = new Dictionary <EquipLocation, object[]>();

            foreach (var pair in equippedItems)
            {
                string[] s   = new string[pair.Value.Length];
                object[] obj = new object[pair.Value.Length];
                for (int i = 0; i < s.Length; i++)
                {
                    if (pair.Value[i] != null)
                    {
                        s[i]   = pair.Value[i].GetItemID();
                        obj[i] = pair.Value[i].GetModifiers();
                    }
                }
                equippedItemsForSerialization[pair.Key] = s;
                equippedItemModifiers[pair.Key]         = obj;
            }
            SlotRecords slotRecords = new SlotRecords();

            slotRecords.locationItems = equippedItemsForSerialization;
            slotRecords.modifiers     = equippedItemModifiers;
            return(slotRecords);
        }