Example #1
0
    public void AnimateTankCardCountRoll(ShopMenu.ShopItem item, bool deductCount = false, bool doubleCards = false)
    {
        if (item.count != 0)
        {
            Tank tank = Manager <PlayerDataManager> .instance.variables.GetTank(item.id);

            int tankUpgradeLevel = PlayerDataManager.GetTankUpgradeLevel(tank);
            StartCoroutine(CardCountRollRoutine(doubleCards ? (item.count / 2) : item.count, PlayerDataManager.GetTankCardCount(tank) - (deductCount ? item.count : 0), Manager <PlayerDataManager> .instance.variables.GetTankLevelUpCardsCumulative(tank.rarity, tankUpgradeLevel - 1), Manager <PlayerDataManager> .instance.variables.GetTankLevelUpCardsCumulative(tank.rarity, tankUpgradeLevel), tankUpgradeLevel + 1 == Manager <PlayerDataManager> .instance.variables.tankLevelMinMax.max));
        }
    }
Example #2
0
    public void SetDoubleValues(ShopMenu.ShopItem item)
    {
        string format = "X{0}";

        if (item.type == ShopMenu.ShopItemType.Coin || item.type == ShopMenu.ShopItemType.Gem)
        {
            format = "{0}";
        }
        doubleCardContainer.SetActive(value: true);
        if (item.type == ShopMenu.ShopItemType.TankCard)
        {
            item.count /= 2;
            AnimateTankCardCountRoll(item, deductCount: true);
            item.count *= 2;
        }
        else if (item.type == ShopMenu.ShopItemType.BoosterCard)
        {
            Booster booster = PlayerDataManager.GetBooster(item.id);
            StartCoroutine(CardCountRollRoutine(item.count / 2, booster.Count - item.count / 2, booster.ThisLevelCount, booster.NextLevelCount, booster.MaxLevel));
        }
        StartCoroutine(DoubleTextCountRoutine(item.count, format));
        StartCoroutine(DoubleTextScaleRoutine());
    }
Example #3
0
    public void SetValues(ShopMenu.ShopItem item, bool animateRoll = true, bool deductCount = false, bool vip = false)
    {
        if (item.type == ShopMenu.ShopItemType.TankCard)
        {
            Tank tank = Manager <PlayerDataManager> .instance.variables.GetTank(item.id);

            SetValues(tank, vip ? (item.count / 2) : item.count, useNew: true, useStackSize: true, deductCount, useTankName: true, item.isNew);
            if (item.count > 0 && animateRoll)
            {
                AnimateTankCardCountRoll(item, deductCount, vip);
            }
        }
        else if (item.type == ShopMenu.ShopItemType.BoosterCard)
        {
            Booster booster = PlayerDataManager.GetBooster(item.id);
            image.sprite = booster.bigCard;
            if (deductCount)
            {
                booster.Count -= item.count;
            }
            levelText.text = string.Format("{0} {1}", ScriptLocalization.Get("Level"), booster.Level + 1);
            countBlueContainer.SetActive(booster.Count < booster.NextLevelCount);
            countGreenContainer.SetActive(booster.Count >= booster.NextLevelCount && !booster.MaxLevel);
            countRedContainer.SetActive(booster.MaxLevel);
            string text = $"{booster.Count - booster.ThisLevelCount}/{booster.NextLevelCount - booster.ThisLevelCount}";
            countBlueText.text  = text;
            countGreenText.text = text;
            if (booster.Count < booster.NextLevelCount && booster.NextLevelCount > booster.ThisLevelCount)
            {
                countBlueImage.fillAmount = (float)(booster.Count - booster.ThisLevelCount) / (float)(booster.NextLevelCount - booster.ThisLevelCount);
            }
            stackSizeText.text = "X" + (vip ? (item.count / 2) : item.count).ToString();
            newBorderContainer.SetActive(booster.Count == 0);
            newIconContainer.SetActive(booster.Count == 0);
            newTextContainer.SetActive(booster.Count == 0);
            footerText.gameObject.SetActive(value: true);
            footerText.text = $"{ScriptLocalization.Get(booster.tankName)}\n{ScriptLocalization.Get(booster.type.ToString())}";
            if (item.count > 0 && animateRoll)
            {
                StartCoroutine(CardCountRollRoutine(vip ? (item.count / 2) : item.count, booster.Count, booster.ThisLevelCount, booster.NextLevelCount, booster.MaxLevel));
            }
        }
        else if (item.type == ShopMenu.ShopItemType.Coin)
        {
            image.sprite = ((item.rarity == Rarity.Epic) ? MenuController.GetMenu <ShopMenu>().epicCoinsSprite : ((item.rarity == Rarity.Rare) ? MenuController.GetMenu <ShopMenu>().rareCoinsSprite : MenuController.GetMenu <ShopMenu>().commonCoinsSprite));
            countBlueContainer.transform.parent.gameObject.SetActive(value: false);
            stackSizeText.text = (vip ? (item.count / 2) : item.count).ToString();
            newIconContainer.SetActive(value: false);
            newTextContainer.SetActive(value: false);
            bottomBarText.gameObject.SetActive(value: true);
            bottomBarText.text = ScriptLocalization.Get("Coins");
            levelText.gameObject.SetActive(value: false);
            footerText.gameObject.SetActive(value: false);
        }
        else if (item.type == ShopMenu.ShopItemType.Gem)
        {
            image.sprite = ((item.count <= 2) ? MenuController.GetMenu <ShopMenu>().commonGemsSprite : ((item.count <= 3) ? MenuController.GetMenu <ShopMenu>().rareGemsSprite : MenuController.GetMenu <ShopMenu>().epicGemsSprite));
            countBlueContainer.transform.parent.gameObject.SetActive(value: false);
            stackSizeText.text = (vip ? (item.count / 2) : item.count).ToString();
            newIconContainer.SetActive(value: false);
            newTextContainer.SetActive(value: false);
            bottomBarText.gameObject.SetActive(value: true);
            bottomBarText.text = ScriptLocalization.Get("Gems");
            levelText.gameObject.SetActive(value: false);
            footerText.gameObject.SetActive(value: false);
        }
    }
Example #4
0
    private IEnumerator ChestOpenAnimationRoutine(Rarity chestRarity)
    {
        rewardingDone       = false;
        chestExploded       = false;
        currentChestRewards = Variables.instance.GenerateChestRewards(chestRarity);
        PlayerDataManager.AddChestRewards(currentChestRewards);
        contentGridLayoutGroup.enabled = true;
        for (int j = 0; j != currentChestRewards.cards.Count; j++)
        {
            CardElement       component = UnityEngine.Object.Instantiate(cardPrefab).GetComponent <CardElement>();
            Card              card      = currentChestRewards.cards[j];
            ShopMenu.ShopItem item      = new ShopMenu.ShopItem
            {
                rarity = card.rarity,
                count  = card.count,
                id     = card.id,
                type   = ((card.type == CardType.TankCard) ? ShopMenu.ShopItemType.TankCard : ShopMenu.ShopItemType.BoosterCard),
                isNew  = card.isNew
            };
            shopItems.Add(item);
            AddElement(component);
            if (card.type == CardType.TankCard)
            {
                Tank tank = Variables.instance.GetTank(card.id);
                if (card.isNew)
                {
                    newCards.Push(new KeyValuePair <Collectible, CardElement>(tank, component));
                }
            }
        }
        if (currentChestRewards.gems > 0)
        {
            CardElement       component2 = UnityEngine.Object.Instantiate(cardPrefab).GetComponent <CardElement>();
            ShopMenu.ShopItem item2      = new ShopMenu.ShopItem
            {
                rarity = Rarity.Epic,
                count  = currentChestRewards.gems,
                type   = ShopMenu.ShopItemType.Gem
            };
            shopItems.Add(item2);
            AddElement(component2);
        }
        CardElement component3 = UnityEngine.Object.Instantiate(cardPrefab).GetComponent <CardElement>();

        ShopMenu.ShopItem item3 = new ShopMenu.ShopItem
        {
            rarity = chestRarity,
            count  = currentChestRewards.coins,
            type   = ShopMenu.ShopItemType.Coin
        };
        shopItems.Add(item3);
        AddElement(component3);
        LayoutRebuilder.ForceRebuildLayoutImmediate(contentGridLayoutGroup.GetComponent <RectTransform>());
        contentGridLayoutGroup.enabled = false;
        foreach (CardElement element in elements)
        {
            element.gameObject.SetActive(value: false);
        }
        chest.gameObject.SetActive(value: true);
        Image  image = chest;
        object sprite;

        switch (chestRarity)
        {
        default:
            sprite = commonChestSprite;
            break;

        case Rarity.Rare:
            sprite = rareChestSprite;
            break;

        case Rarity.Epic:
            sprite = epicChestSprite;
            break;
        }
        image.sprite = (Sprite)sprite;
        chest.SetNativeSize();
        yield return(new WaitForSeconds(currentOptions.shakeTime));

        AudioMap.PlayClipAt(AudioMap.instance["chestShake"], Vector3.zero, AudioMap.instance.uiMixerGroup);
        LeanTween.delayedCall(currentOptions.windupTime - 0.367f, (Action) delegate
        {
            AudioMap.PlayClipAt(AudioMap.instance["chestWindup"], Vector3.zero, AudioMap.instance.uiMixerGroup);
        });
        for (float time = 0f; time <= currentOptions.windupTime; time += Time.deltaTime)
        {
            chest.transform.rotation = Quaternion.Euler(0f, 0f, 50f * (Mathf.PingPong(time / 0.2f, 0.3f) - 0.2f));
            glowImage.color          = new Color(1f, 1f, 1f, LeanTween.easeInExpo(0f, 1f, time / currentOptions.windupTime));
            yield return(null);
        }
        chest.gameObject.SetActive(value: false);
        chest.transform.rotation = Quaternion.identity;
        currentOptions.explosion.Play();
        AudioMap.PlayClipAt(AudioMap.instance["chestOpen"], Vector3.zero, AudioMap.instance.uiMixerGroup);
        if (chestRarity == Rarity.Epic)
        {
            AudioMap.PlayClipAt(AudioMap.instance["chestOpenChime"], Vector3.zero, AudioMap.instance.uiMixerGroup);
        }
        yield return(new WaitForSeconds(currentOptions.postExplosionWaitTime));

        doubleRewardsOfferButton.gameObject.SetActive(!isSubscribed);
        doubleRewardingDone = !isSubscribed;
        chestExploded       = true;
        MenuController.backButtonOverrideAction = FinishAnimation;
        int num;

        for (int i = 0; i < elements.Count; i = num)
        {
            if (!(elements[i] == null))
            {
                CardElement cardElement = elements[i];
                AudioMap.PlayClipAt(AudioMap.instance["cardReveal"], Vector3.zero, AudioMap.instance.uiMixerGroup);
                cardElement.gameObject.SetActive(value: true);
                cardElement.SetValues(shopItems[i], animateRoll: true, deductCount: true, isSubscribed);
                if (shopItems[i].type == ShopMenu.ShopItemType.TankCard && shopItems[i].isNew)
                {
                    SetNewCard(i);
                }
                if (shopItems[i].type == ShopMenu.ShopItemType.Coin)
                {
                    AnimatedCurrencyController.AnimateCoins(isSubscribed ? (shopItems[i].count / 2) : shopItems[i].count, MenuController.UICamera.WorldToViewportPoint(cardElement.transform.position), MenuController.TotalCoinsPositionViewport, 5, null, delegate(int ts)
                    {
                        MenuController.instance.topTotalCoinsText.Tick(ts);
                    });
                }
                else if (shopItems[i].type == ShopMenu.ShopItemType.Gem)
                {
                    AnimatedCurrencyController.AnimateGems(isSubscribed ? (shopItems[i].count / 2) : shopItems[i].count, MenuController.UICamera.WorldToViewportPoint(cardElement.transform.position), MenuController.TotalGemsPositionViewport, 1, null, delegate(int ts)
                    {
                        MenuController.instance.topTotalGemsText.Tick(ts);
                    });
                }
                yield return(new WaitForSeconds(0.25f));
            }
            num = i + 1;
        }
        if (isSubscribed)
        {
            doubleRewardRoutine = StartCoroutine(DoubleRewardsRoutine());
        }
        FinishAnimation();
    }
Example #5
0
    public void SetIAP(Product product)
    {
        iapItem.InitIap(product.definition.id);
        string tankId = "";

        foreach (PayoutDefinition payout in product.definition.payouts)
        {
            ShopMenu.ShopItem shopItem = ShopMenu.ShopItem.FromPayoutDefinition(payout);
            switch (shopItem.type)
            {
            case ShopMenu.ShopItemType.Coin:
                coins = shopItem.count;
                coinAmountText.text = shopItem.count.ToString();
                break;

            case ShopMenu.ShopItemType.Gem:
                gems = shopItem.count;
                gemAmountText.text = shopItem.count.ToString();
                break;

            case ShopMenu.ShopItemType.TankCard:
            {
                Tank tank = Variables.instance.GetTank(shopItem.id);
                tankName = tank.name;
                int result = 1;
                int.TryParse(tank.id.Replace("tank", ""), out result);
                int num = tankIndex = Variables.instance.tankOrder[result];
                tanks[--result].parent.SetActive(value: true);
                tanks[result].tankContainer.BulletTypeIndex = num;
                tanks[result].tankContainer.BulletDef       = Variables.instance.tanks[num].bullet;
                GarageMenu menu = MenuController.GetMenu <GarageMenu>();
                if (tank.bullet.type == BulletType.Missile || tank.bullet.type == BulletType.Laser)
                {
                    menu.StartCoroutine(menu.MissileShoot(tanks[result].tankContainer));
                }
                else if (tank.bullet.type == BulletType.Flame)
                {
                    menu.StartCoroutine(menu.FlamerShoot(tanks[result].tankContainer));
                }
                else if (tank.bullet.type == BulletType.Small)
                {
                    menu.StartCoroutine(menu.BulletShoot(tanks[result].tankContainer));
                }
                else if (tank.bullet.type == BulletType.Lightning)
                {
                    menu.StartCoroutine(menu.LightningShoot(tanks[result].tankContainer));
                }
                else
                {
                    tanks[result].tankContainer.Shoot();
                }
                tankNameText.text = ScriptLocalization.Get(tank.name);
                tankId            = tank.id;
                break;
            }
            }
        }
        iapItem.SetOnComplete(delegate
        {
            bought = true;
            MenuController.HideMenu <BundlePopup>();
            MenuController.ShowMenu <NewCardPopup>().Init(Variables.instance.GetTank(tankId));
        });
    }
    public void SetValues(int i, ShopMenu.ShopItem item)
    {
        index = i;
        chestContainer.SetActive(item.type == ShopMenu.ShopItemType.Chest);
        cardContainer.SetActive(item.type == ShopMenu.ShopItemType.TankCard || item.type == ShopMenu.ShopItemType.BoosterCard);
        currencyContainer.SetActive(item.type == ShopMenu.ShopItemType.Coin || item.type == ShopMenu.ShopItemType.Gem);
        premiumCardContainer.SetActive(item.type == ShopMenu.ShopItemType.PremiumCard);
        mainButton.interactable    = !item.bought;
        graphicButton.image.sprite = (item.bought ? MenuBase <ShopMenu> .instance.buttonDisabledSprite : MenuBase <ShopMenu> .instance.buttonEnabledSprite);
        priceText.text             = item.price.ToString();
        priceText.gameObject.SetActive(!item.bought);
        purchased.SetActive(item.bought);
        ShopMenu.ShopItemType type = item.type;
        if (type == ShopMenu.ShopItemType.TankCard || type == ShopMenu.ShopItemType.PremiumCard)
        {
            Tank tank = Manager <PlayerDataManager> .instance.variables.GetTank(item.id);

            headerText.text            = ScriptLocalization.Get(tank.name);
            cardBackgroundImage.sprite = MenuController.GetMenu <ShopMenu>().GetCardBackground(item.rarity);
            premiumCardImage.sprite    = tank.bigCard;
            cardElement.SetValues(tank, item.count, useNew: false);
            cardElement.background.sprite = MenuController.GetMenu <ShopMenu>().GetCardBackground(item.rarity, small: true);
            purchaseWithGems.SetActive(item.currency == CurrencyType.Gems);
            purchaseWithCoins.SetActive(item.currency == CurrencyType.Coins);
            if (item.discount > 0 && item.type == ShopMenu.ShopItemType.PremiumCard && !item.bought)
            {
                priceContainer.SetActive(value: false);
                premiumDiscountContainer.SetActive(value: true);
                originalPriceText.text = Variables.instance.GetTankGemValue(tank).ToString();
                newPriceText.text      = item.price.ToString();
                discountText.text      = $"-{item.discount.ToString()}%";
            }
            if (item.bought)
            {
                purchaseWithCoins.SetActive(value: false);
                purchaseWithGems.SetActive(value: false);
            }
            mainButton.onClick.RemoveAllListeners();
            mainButton.onClick.AddListener(delegate
            {
                SDKManager.Instance.ShowAd(ShowAdType.ChaPing, 1, "点击每日奖励");
                ShopMenu.TryPurchase(item.price, item.currency, delegate
                {
                    PlayerDataManager.BuyDailyOffer(index);
                    mainButton.interactable    = false;
                    graphicButton.enabled      = true;
                    graphicButton.interactable = false;
                    priceText.gameObject.SetActive(value: false);
                    purchased.SetActive(value: true);
                    purchaseWithGems.SetActive(value: false);
                    purchaseWithCoins.SetActive(value: false);
                    premiumDiscountContainer.SetActive(value: false);
                    cardElement.newTextContainer.SetActive(value: false);
                    CurrencyType currency = item.currency;
                    int price             = item.price;
                    if (currency == CurrencyType.Coins)
                    {
                        MenuController.instance.topTotalCoinsText.Tick(-price);
                        cardElement.AnimateTankCardCountRoll(item);
                    }
                    else
                    {
                        MenuController.instance.topTotalGemsText.Tick(-price);
                        cardElement.newTextContainer.SetActive(value: false);
                    }
                    AudioMap.PlayClipAt(AudioMap.instance[(item.currency == CurrencyType.Coins) ? "coinroll" : "gemCollect"], Vector3.zero, AudioMap.instance.uiMixerGroup);
                    PlayerDataManager.AddTankCards(tank, item.count, updateDailies: false);
                    TankPrefs.SaveAndSendToCloud(forced: true);
                    TankAnalytics.BoughtDailyOffer(tank, item.count, price, PlayerDataManager.GetTankUpgradeLevel(tank), currency);
                    if (currency == CurrencyType.Gems)
                    {
                        MenuController.ShowMenu <NewCardPopup>().Init(tank);
                    }
                });
            });
        }
    }