コード例 #1
0
    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);
    }
コード例 #2
0
    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);
    }