public static List <DReward> GetDRewardFromReward(Reward reward) { Type typeFromHandle = typeof(IList); List <DReward> list = new List <DReward>(); foreach (IRewardable item in reward) { if (!item.IsEmpty()) { if (item is ConsumableInstanceReward) { ConsumableInstanceReward consumableInstanceReward = (ConsumableInstanceReward)item; using (Dictionary <string, int> .Enumerator enumerator2 = consumableInstanceReward.Consumables.GetEnumerator()) { while (enumerator2.MoveNext()) { DReward dReward = new DReward(); dReward.Category = RewardCategory.consumables; dReward.UnlockID = GetConsumableIdByServerName(enumerator2.Current.Key); list.Add(dReward); } } } else if (item is EquipmentInstanceReward) { EquipmentInstanceReward equipmentInstanceReward = (EquipmentInstanceReward)item; for (int i = 0; i < equipmentInstanceReward.EquipmentInstances.Count; i++) { DReward dReward = new DReward(); dReward.Category = RewardCategory.equipmentInstances; dReward.EquipmentRequest = equipmentInstanceReward.EquipmentInstances[i]; list.Add(dReward); } } else if (item is DecorationInstanceReward) { DecorationInstanceReward decorationInstanceReward = (DecorationInstanceReward)item; using (Dictionary <int, int> .Enumerator enumerator3 = decorationInstanceReward.Decorations.GetEnumerator()) { while (enumerator3.MoveNext()) { DReward dReward = new DReward(); dReward.Category = RewardCategory.decorationInstances; dReward.UnlockID = enumerator3.Current.Key; list.Add(dReward); } } } else if (item is StructureInstanceReward) { StructureInstanceReward structureInstanceReward = (StructureInstanceReward)item; using (Dictionary <int, int> .Enumerator enumerator3 = structureInstanceReward.Decorations.GetEnumerator()) { while (enumerator3.MoveNext()) { DReward dReward = new DReward(); dReward.Category = RewardCategory.structureInstances; dReward.UnlockID = enumerator3.Current.Key; list.Add(dReward); } } } else if (Enum.IsDefined(typeof(RewardCategory), item.RewardType) && typeFromHandle.IsAssignableFrom(item.Reward.GetType())) { IList list2 = item.Reward as IList; if (list2 != null) { for (int i = 0; i < list2.Count; i++) { DReward dReward = new DReward(); dReward.UnlockID = list2[i]; dReward.Category = (RewardCategory)Enum.Parse(typeof(RewardCategory), item.RewardType); list.Add(dReward); } } } } } return(list); }
private void onRewardItemLoaded(string path, GameObject prefab) { List <DReward> list = new List <DReward>(); foreach (IRewardable item in chestReward) { if (!item.IsEmpty() && Enum.IsDefined(typeof(RewardCategory), item.RewardType)) { RewardCategory category = (RewardCategory)Enum.Parse(typeof(RewardCategory), item.RewardType); Type type = item.Reward.GetType(); if (item is EquipmentInstanceReward) { EquipmentInstanceReward equipmentInstanceReward = (EquipmentInstanceReward)item; for (int i = 0; i < equipmentInstanceReward.EquipmentInstances.Count; i++) { DReward dReward = new DReward(); dReward.Category = RewardCategory.equipmentInstances; dReward.EquipmentRequest = equipmentInstanceReward.EquipmentInstances[i]; list.Add(dReward); } } else if (typeof(IList).IsAssignableFrom(type)) { IList list2 = item.Reward as IList; if (list2 != null && list2.Count > 0) { for (int j = 0; j < list2.Count; j++) { DReward dReward2 = new DReward(); dReward2.UnlockID = list2[j]; dReward2.Category = category; list.Add(dReward2); } } } else if (typeof(IDictionary).IsAssignableFrom(type)) { IDictionary dictionary = item.Reward as IDictionary; if (dictionary != null && dictionary.Count > 0) { IDictionaryEnumerator enumerator2 = dictionary.GetEnumerator(); while (enumerator2.MoveNext()) { DReward dReward2 = new DReward(); dReward2.UnlockID = enumerator2.Key; dReward2.Data = enumerator2.Value; dReward2.Category = category; list.Add(dReward2); } } } } } for (int j = 0; j < list.Count; j++) { createRewardItem(list[j], prefab); } float num = (list.Count > 2) ? ExtraItemCellSize : defaultCellSize; RewardContainer.GetComponent <GridLayoutGroup>().cellSize = new Vector2(num, num); logRewardBI(list); }