private static int addWeightedRandomSpinReward(Reward spinReward, CellPhoneDailySpinActivityDefinition dailySpinDefinition, ClubPenguin.Net.Offline.DailySpinData dailySpinData, CellPhoneDailySpinActivityDefinition.ChestDefinition chestDefinition)
    {
        int num = 0;
        List <KeyValuePair <int, int> > list       = new List <KeyValuePair <int, int> >();
        Dictionary <int, Reward>        dictionary = new Dictionary <int, Reward>();
        int num2 = dailySpinDefinition.InitialRespinWeight + dailySpinDefinition.RespinWeightIncreasePerSpin * dailySpinData.NumSpinsSinceReceivedExtraSpin;

        dictionary.Add(dailySpinDefinition.RespinSpinOutcomeId, dailySpinDefinition.RespinReward.ToReward());
        list.Add(new KeyValuePair <int, int>(dailySpinDefinition.RespinSpinOutcomeId, num2));
        num += num2;
        if (isChestValidSpinReward(dailySpinData, chestDefinition))
        {
            int num3 = dailySpinDefinition.InitialChestWeight + dailySpinDefinition.ChestWeightIncreasePerSpin * dailySpinData.NumSpinsSinceReceivedChest;
            dictionary.Add(dailySpinDefinition.ChestSpinOutcomeId, new Reward());
            list.Add(new KeyValuePair <int, int>(dailySpinDefinition.ChestSpinOutcomeId, num3));
            num += num3;
        }
        foreach (CellPhoneDailySpinActivityDefinition.SpinReward spinReward2 in dailySpinDefinition.SpinRewards)
        {
            CellPhoneDailySpinActivityDefinition.SpinReward current = spinReward2;
            dictionary.Add(current.SpinOutcomeId, current.Reward.ToReward());
            list.Add(new KeyValuePair <int, int>(current.SpinOutcomeId, current.Weight));
            num += current.Weight;
        }
        int num4 = UnityEngine.Random.Range(0, num);
        int num5 = 0;

        foreach (KeyValuePair <int, int> item in list)
        {
            num5 += item.Value;
            if (num5 > num4)
            {
                spinReward.AddReward(dictionary[item.Key]);
                return(item.Key);
            }
        }
        return(-1);
    }
Пример #2
0
        private void initItems()
        {
            float num = 360f / (float)numItems;

            for (int i = 0; i < numItems; i++)
            {
                DailySpinWheelItem component = UnityEngine.Object.Instantiate(itemPrefab, ItemContainer.transform, worldPositionStays: false).GetComponent <DailySpinWheelItem>();
                component.transform.localRotation = Quaternion.Euler(0f, 0f, num * (float)i);
                wheelItems.Add(component);
            }
            CellPhoneDailySpinActivityDefinition.SpinReward spinReward = default(CellPhoneDailySpinActivityDefinition.SpinReward);
            spinReward.SpinOutcomeId = widgetData.ChestSpinOutcomeId;
            wheelItems[widgetData.ChestWheelPosition].SetReward(spinReward, widgetData, currentChestId);
            CellPhoneDailySpinActivityDefinition.SpinReward spinReward2 = default(CellPhoneDailySpinActivityDefinition.SpinReward);
            spinReward2.SpinOutcomeId = widgetData.RespinSpinOutcomeId;
            wheelItems[widgetData.RespinWheelPosition].SetReward(spinReward2, widgetData, currentChestId);
            for (int i = 0; i < widgetData.SpinRewards.Count; i++)
            {
                wheelItems[widgetData.SpinRewards[i].WheelPosition].SetReward(widgetData.SpinRewards[i], widgetData, currentChestId);
                wheelItems[widgetData.SpinRewards[i].WheelPosition].SetSliceImage(SliceImages[widgetData.SpinRewards[i].WheelPosition]);
            }
            SetOverlayState(currentOverlayState);
        }
Пример #3
0
        public void SetReward(CellPhoneDailySpinActivityDefinition.SpinReward spinReward, CellPhoneDailySpinActivityDefinition widgetData, int currentChestId)
        {
            CoinXPContainer.SetActive(value: false);
            ChestContainer.SetActive(value: false);
            RespinContainer.SetActive(value: false);
            ItemRewardId = spinReward.SpinOutcomeId;
            ChestSpriteSelector.Select(currentChestId);
            CoinReward rewardable;

            if (spinReward.Reward != null)
            {
                Reward         reward = spinReward.Reward.ToReward();
                MascotXPReward rewardable2;
                if (reward.TryGetValue <CoinReward>(out rewardable) && rewardable.Coins > 0)
                {
                    ValueText.text = rewardable.Coins.ToString();
                    CoinsXpSpriteSelector.SelectSprite(4);
                }
                else if (reward.TryGetValue <MascotXPReward>(out rewardable2))
                {
                    using (Dictionary <string, int> .Enumerator enumerator = rewardable2.XP.GetEnumerator())
                    {
                        if (enumerator.MoveNext())
                        {
                            KeyValuePair <string, int> current = enumerator.Current;
                            ValueText.text = current.Value.ToString();
                            int index = 0;
                            if (Service.Get <ProgressionService>().IsMascotMaxLevel(current.Key))
                            {
                                index          = 5;
                                ValueText.text = "1";
                            }
                            else
                            {
                                if (current.Key == "AuntArctic")
                                {
                                    index = 0;
                                }
                                if (current.Key == "Rockhopper")
                                {
                                    index = 1;
                                }
                                if (current.Key == "Rookie")
                                {
                                    index = 2;
                                }
                                if (current.Key == "DJCadence")
                                {
                                    index = 3;
                                }
                            }
                            CoinsXpSpriteSelector.SelectSprite(index);
                        }
                    }
                }
                CoinXPContainer.SetActive(value: true);
            }
            else if (spinReward.SpinOutcomeId == widgetData.ChestSpinOutcomeId)
            {
                ChestContainer.SetActive(value: true);
            }
            else if (spinReward.SpinOutcomeId == widgetData.RespinSpinOutcomeId)
            {
                if (widgetData.RespinReward.ToReward().TryGetValue <CoinReward>(out rewardable))
                {
                    RespinValueText.text = rewardable.Coins.ToString();
                }
                RespinContainer.SetActive(value: true);
            }
        }