Exemplo n.º 1
0
        internal void TriggerShopItemClicked(ShopItem clickedItem)
        {
            if (clickedItem.CurrentState == ShopItemState.IN_USE)
            {
                // Item is already brought and in use. Do nothing
                return;
            }

            if (clickedItem.CurrentState == ShopItemState.NORMAL)
            {
                RequestItemPurchase();
            }
            else if (clickedItem.CurrentState == ShopItemState.OWNED)
            {
                UseClickedItem();
                SoundManager.Instance.PlaySoundBySoundType(SoundType.BUTTON_PRESS);
            }

            #region Local_Function

            void RequestItemPurchase()
            {
                if (CurrencyManager.Instance.GemCount < CORE_PRICE)
                {
                    // TODO: Warn about insufficent gem count to purchase
                    Debug.LogWarning("Not enough gems!");
                    return;
                }

                // TODO: Ask for purchase confirmation?
                CurrencyManager.Instance.ModifyGemValue(-CORE_PRICE);
                SoundManager.Instance.PlaySoundBySoundType(SoundType.PURCHASE);
                UseClickedItem();
                IncrementPurchaseAchievement();
            }

            void IncrementPurchaseAchievement()
            {
                GooglePlayServiceManager.Instance.IncrementCoreAchievements();
            }

            void UseClickedItem()
            {
                clickedItem.SetShopItemState(ShopItemState.IN_USE);

                var previouslyUsedItem = itemNameShopItems[GlobalProperties.CurrentlyUsingSkinName_Local];

                SwapCurrentlyUsedItemOnLocalData(previouslyUsedItem);
                SwapCurrentlyUsedItemOnFileData(previouslyUsedItem);
            }

            void SwapCurrentlyUsedItemOnLocalData(ShopItem previouslyUsedItem)
            {
                previouslyUsedItem.SetShopItemState(ShopItemState.OWNED);
                GlobalProperties.CurrentlyUsingSkinName_Local = clickedItem.ItemName;
            }

            void SwapCurrentlyUsedItemOnFileData(ShopItem previouslyUsedItem)
            {
                CoreSkinData previousItem = new CoreSkinData(previouslyUsedItem.ItemName, ShopItemState.OWNED);
                CoreSkinData currentItem  = new CoreSkinData(clickedItem.ItemName, ShopItemState.IN_USE);

                CoreSkinDataManager.OverrideCoreSkinData(new CoreSkinData[] {
                    previousItem, currentItem
                });
            }

            #endregion
        }