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; } }
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); }