コード例 #1
0
    //=====================================================

    public static ChestReward GetChestReward(eChestType type,
                                             eTradingCardClassification cardClassification,
                                             eTradingCardRarity cardRarity,
                                             eTradingCardCondition cardCondition)
    {
        var reward = new ChestReward();

        var rewardCard = (type == eChestType.LARGE &&
                          cardClassification != eTradingCardClassification.NULL &&
                          cardRarity != eTradingCardRarity.NULL);

        // 50% chance of awarding a card or gem
        if (rewardCard == false && Random.Range(0, 99) % 2 == 0)
        {
            rewardCard = true;
        }

        if (rewardCard == true)
        {
            reward.Card          = TradingCardItemsManager.GetCard(type, cardClassification, cardRarity, cardCondition);
            reward.CardCondition = cardCondition;
            //Debug.Log( "SceneManager: Reward card" );
        }
        else
        {
            // Small, medium or large number of gems
            var maxGems = Convert.ToInt32(SettingsManager.GetSettingsItem("AWARD_GEMS_CHEST_" + type, -1));

            reward.Gems = Random.Range(maxGems / 2, maxGems);
            //Debug.Log( "SceneManager: Reward gems" );
        }

        return(reward);
    }
コード例 #2
0
    //=====================================================

    private void SetRewardItem(eSwitchItem switchItem,
                               eTradingCardClassification cardClassification,
                               eTradingCardRarity cardRarity,
                               eTradingCardCondition cardCondition)
    {
        if (switchItem == eSwitchItem.NULL)
        {
            // Reset reward to gems or a card
            _reward = SceneManager.GetChestReward(_type, cardClassification, cardRarity, cardCondition);
        }
        else
        {
            if (_reward == null)
            {
                _reward = new ChestReward();
            }

            // Clear other reward items if switchItem is set
            _reward.Gems       = 0;
            _reward.Card       = null;
            _reward.SwitchItem = switchItem;
        }
        //Debug.Log( "Chest: " + _type + " : " + _reward );

        // Initialise chest switchItem as reward
        if (_chestReward != null && _reward != null)
        {
            _chestReward.Init(_reward);
        }
    }
コード例 #3
0
    //=====================================================

    bool HasCard(TradingCardSpreadsheetItem Card, eTradingCardCondition Condition)
    {
        int NumMint    = 0;
        int NumScuffed = 0;
        TradingCardHeldItem CurHeldCard = GameDataManager.Instance.GetHeldTradingCard(Card.id, ref NumMint, ref NumScuffed);

        switch (Condition)
        {
        case eTradingCardCondition.MINT:
            if (NumMint > 0)
            {
                return(true);
            }
            break;

        case eTradingCardCondition.SCUFFED:
            if (NumScuffed > 0)
            {
                return(true);
            }
            break;
        }

        return(false);
    }
コード例 #4
0
    //==================================================================

    public static TradingCardSpreadsheetItem GetCard(eChestType type, eTradingCardClassification cardClassification, eTradingCardRarity cardRarity, eTradingCardCondition cardCondition)
    {
        TradingCardSpreadsheetItem card = new TradingCardSpreadsheetItem();

        //if( _forceRareCardReward )
        //	type = eChestType.LARGE;

        if ((cardClassification != eTradingCardClassification.NULL) || (cardRarity != eTradingCardRarity.NULL))
        {
            // Use a specific classification/type rather than a random one
            eNPC UnlockedNPC = eNPC.NULL;
            card = GetSpecificCardType(cardClassification, cardRarity, cardCondition, ref UnlockedNPC);
            return(card);
        }

        switch (type)
        {
        case eChestType.SMALL:
            // Return common card
            //card = TradingCardItemsManager.GetRandomCard( eTradingCardRarity.COMMON , 30.0f , eTradingCardRarity.VERYCOMMON , 70.0f );
            card = GetRandomCard(eTradingCardRarity.COMMON, 30.0f, eTradingCardRarity.COMMON, 70.0f);
            break;

        case eChestType.MEDIUM:
            // Return common or uncommon card
            card = GetRandomCard(eTradingCardRarity.RARE, 100.0f, eTradingCardRarity.NULL, 0.0f);
            break;

        case eChestType.LARGE:
            // Return uncmmon or rare card
            //card = TradingCardItemsManager.GetRandomCard( eTradingCardRarity.VERYRARE , 80.0f , eTradingCardRarity.UNIQUE , 20.0f );
            card = GetRandomCard(eTradingCardRarity.VERYRARE, 80.0f, eTradingCardRarity.VERYRARE, 20.0f);
            break;
        }

        return(card);
    }
コード例 #5
0
    //==================================================================

    // Use a specific classification/type rather than a random one
    public static TradingCardSpreadsheetItem GetSpecificCardType(eTradingCardClassification CardClassification, eTradingCardRarity CardRarity, eTradingCardCondition CardCondition, ref eNPC UnlockedNPC)
    {
        UnlockedNPC = eNPC.NULL;

        if (!isItemListLoaded)
        {
            LoadItemsList();
        }

        if (CardRarity == eTradingCardRarity.TEACHER)
        {
            // If this is a 'teacher' card then unlock the next NPC in the list
            // If we can't unlock any switch it to a random 'rare' card instead

            // Get current population and find the first teacher above it

            // If teacher isn't owned then give the card
            int         PlayerPopulation = GameDataManager.Instance.PlayerPopulation;
            int         NumNPCs          = NPCItemsManager.GetNumItems();
            NPCItemData FoundNPCItem     = null;
            bool        bNPCFound        = false;

            Debug.Log("Looking for TEACHER card - current population: " + PlayerPopulation);

            for (int Idx = 0; Idx < NumNPCs; Idx++)
            {
                NPCItemData CurNPCItem = NPCItemsManager.GetNPCItem(Idx);

                // Ignore CurNPCItem.PopulationUnlock of zero (default)
                if (CurNPCItem.PopulationUnlock == 0)
                {
                    continue;
                }

                if (bNPCFound == false)
                {
                    if (PlayerPopulation >= CurNPCItem.PopulationUnlock)
                    {
                        // Do we have this card already?
                        int NumMint    = 0;
                        int NumScuffed = 0;
                        TradingCardHeldItem CurHeldCard = GameDataManager.Instance.GetHeldTradingCard(CurNPCItem.CardId, ref NumMint, ref NumScuffed);

                        if ((NumMint > 0) || (NumScuffed > 0))
                        {
                            // Has card,keep searching
                        }
                        else
                        {
                            // Doesn't have card - add it
                            bNPCFound    = true;
                            FoundNPCItem = CurNPCItem;
                            Debug.Log("Found TEACHER card: " + FoundNPCItem.Id + " " + FoundNPCItem.CardId);
                        }
                    }
                }

                //Debug.Log( CurNPCItem.PopulationUnlock );
            }


            // If no teacher card was given then use a random 'rare' card instead
            if (bNPCFound == false)
            {
                Debug.Log("No TEACHER card found - giving very rare card instead");
                CardClassification = eTradingCardClassification.NULL;
                CardRarity         = eTradingCardRarity.VERYRARE;
            }
            else
            {
                eNPC FoundNPCId = eNPC.NULL;
                try     { FoundNPCId = (eNPC)Enum.Parse(typeof(eNPC), FoundNPCItem.Id); }
                catch
                {
                    Debug.Log("Warning: FoundNPCId state not recognised!");
                }

                UnlockedNPC = FoundNPCId;                 //GameDataManager.Instance.UnlockPlayerNPC( FoundNPCId );
                return(GetTradingCardItem(FoundNPCItem.CardId));
            }
        }

        if (CardClassification == eTradingCardClassification.NULL)
        {
            // Pick a random classification
            switch (UnityEngine.Random.Range(0, 3))
            {
            case 0:
                CardClassification = eTradingCardClassification.WINX;
                break;

            case 1:
                CardClassification = eTradingCardClassification.WILD;
                break;

            case 2:
                CardClassification = eTradingCardClassification.STORY;
                break;
            }
        }
        if (CardRarity == eTradingCardRarity.NULL)
        {
            // Pick a random rarity (exclude teacher cards)
            CardRarity = (eTradingCardRarity)(UnityEngine.Random.Range((int)eTradingCardRarity.UNIQUE, (int)eTradingCardRarity.TEACHER));
        }

        // Find all cards with this specification and pick a random one
        List <TradingCardSpreadsheetItem> CardList = new List <TradingCardSpreadsheetItem>();

        foreach (TradingCardSpreadsheetItem Item in itemList)
        {
            if ((Item.classification == CardClassification) && (Item.rarity == CardRarity))
            {
                CardList.Add(Item);
            }
        }

        // Pick from card list
        int CardIdx = UnityEngine.Random.Range(0, CardList.Count);

        if (CardList.Count == 0)
        {
            Debug.LogWarning("No cards to reward player!");
            Debug.LogWarning("Classification: " + CardClassification + " Rarity: " + CardRarity + " Condition: " + CardCondition);
            return(itemList[0]);
        }
        else
        {
            return(CardList[CardIdx]);
        }
    }
コード例 #6
0
    //=====================================================

    void UpdateBuyPackConfirm()
    {
        if (BuyPackConfirmManager.instance.WasButtonPressed())
        {
            switch (BuyPackConfirmManager.instance.GetButtonPressed())
            {
            case 0:
                // OK
                BuyPackConfirmManager.instance.ShowPanel(false, 0);
                SetRoomMode(eRoomMode.BoosterPacks);

                // Buy card pack
                int PackType         = BuyPackConfirmManager.instance.GetPackType();
                int NumCardsInPack   = (PackType + 1) * 5;
                int DiamondsRequired = (PackType + 1) * 50;

                // Deduct diamonds
                GameDataManager.Instance.AddPlayerDiamonds(-DiamondsRequired);
                GameDataManager.Instance.BroadcastGuiData();

                // Analytics event
                Dictionary <string, object> EventDictionary = new Dictionary <string, object>();
                EventDictionary["cardsInPack"] = NumCardsInPack;
                Analytics.CustomEvent("BuyBoosterPack", EventDictionary);

                List <TradingCardHeldItem> CardsInPack = new List <TradingCardHeldItem>();
                for (int Idx = 0; Idx < NumCardsInPack; Idx++)
                {
                    TradingCardSpreadsheetItem RandomCard = new TradingCardSpreadsheetItem();

                    switch (UnityEngine.Random.Range(0, 3))
                    {
                    case 0:
                        // Return common card
                        //RandomCard = TradingCardItemsManager.GetRandomCard( eTradingCardRarity.COMMON , 30.0f , eTradingCardRarity.VERYCOMMON , 70.0f );
                        RandomCard = TradingCardItemsManager.GetRandomCard(eTradingCardRarity.COMMON, 30.0f, eTradingCardRarity.COMMON, 70.0f);
                        break;

                    case 1:
                        // Return common or uncommon card
                        RandomCard = TradingCardItemsManager.GetRandomCard(eTradingCardRarity.RARE, 100.0f, eTradingCardRarity.NULL, 0.0f);
                        break;

                    case 2:
                        // Return uncmmon or rare card
                        //RandomCard = TradingCardItemsManager.GetRandomCard( eTradingCardRarity.VERYRARE , 80.0f , eTradingCardRarity.UNIQUE , 20.0f );
                        RandomCard = TradingCardItemsManager.GetRandomCard(eTradingCardRarity.VERYRARE, 80.0f, eTradingCardRarity.VERYRARE, 20.0f);
                        break;
                    }

                    eTradingCardCondition CurCardCondition = eTradingCardCondition.MINT;
                    if (UnityEngine.Random.Range(0.0f, 100.0f) < 50.0f)
                    {
                        CurCardCondition = eTradingCardCondition.SCUFFED;
                    }

                    bool bSaveData = false;
                    if (Idx == (NumCardsInPack - 1))
                    {
                        bSaveData = true;
                    }

                    TradingCardHeldItem BoughtCard = GameDataManager.Instance.AddTradingCard(RandomCard.id, CurCardCondition, bSaveData);
                    BoughtCard.notifyTimer = UnityEngine.Random.Range(4.5f, 5.5f);

                    // If this is a teacher card unlock any NPC
                    UnlockNPC(RandomCard.id);

                    CardsInPack.Add(BoughtCard);
                }

                // Dismiss booster pack panel
                BoosterPacksManager.instance.ShowPanel(false);
                //BoosterPacksManager.instance.OnButtonPressed_Cancel();
                BookManager.instance.MarkDirty();

                // Show preview of cards
                BoosterPacksPreviewManager.instance.ShowPanel(true, CardsInPack);
                SetRoomMode(eRoomMode.BoosterPacksPreview);
                break;

            case 1:
                // Cancel
                BuyPackConfirmManager.instance.ShowPanel(false, 0);
                SetRoomMode(eRoomMode.BoosterPacks);
                break;
            }
        }
    }
コード例 #7
0
    //=====================================================

    void UpdateSelectedCard()
    {
        int PlayerGems     = GameDataManager.Instance.PlayerGems;
        int PlayerDiamonds = GameDataManager.Instance.PlayerDiamonds;

        if (SelectedCardManager.instance.WasButtonPressed())
        {
            if (SelectedCardManager.instance.InTransition(-1))
            {
                // Fading out
                if (SelectedCardManager.instance.IsPanelActive() == false)
                {
                    BookManager.instance.MarkDirty();
                    SetRoomMode(eRoomMode.ViewingBook);
                }
            }
            else
            {
                switch (SelectedCardManager.instance.GetButtonPressed())
                {
                case 0:
                    // Cancel
                    SelectedCardManager.instance.ShowPanel(false);
                    break;

                case 1:
                    // Buy mint
                    if (PlayerDiamonds >= SelectedCardManager.instance.GetSpreadsheetCard().value)
                    {
                        SelectedCardManager.instance.Reset();
                        BuySellCardConfirmManager.instance.ShowPanel(true, true, SelectedCardManager.instance.GetSpreadsheetCard(), eTradingCardCondition.MINT);
                        m_CurCardCondition = eTradingCardCondition.MINT;
                        SetRoomMode(eRoomMode.BuySellCardConfirm);
                    }
                    else
                    {
                        // Not enough money, show shop popup
                        SelectedCardManager.instance.Reset();
                        Instantiate(m_pfbShopPopup);
                        ShopManager.instance.OnButtonPressed_ChangeType(1);
                    }
                    break;

                case 2:
                    // Buy scuffed
                    if (PlayerDiamonds >= SelectedCardManager.instance.GetSpreadsheetCard().valueScuffed)
                    {
                        SelectedCardManager.instance.Reset();
                        BuySellCardConfirmManager.instance.ShowPanel(true, true, SelectedCardManager.instance.GetSpreadsheetCard(), eTradingCardCondition.SCUFFED);
                        m_CurCardCondition = eTradingCardCondition.SCUFFED;
                        SetRoomMode(eRoomMode.BuySellCardConfirm);
                    }
                    else
                    {
                        // Not enough money, show shop popup
                        SelectedCardManager.instance.Reset();
                        Instantiate(m_pfbShopPopup);
                        ShopManager.instance.OnButtonPressed_ChangeType(1);
                    }
                    break;

                case 3:
                    // Sell mint
                    if (HasCard(SelectedCardManager.instance.GetSpreadsheetCard(), eTradingCardCondition.MINT))
                    {
                        SelectedCardManager.instance.Reset();
                        BuySellCardConfirmManager.instance.ShowPanel(true, false, SelectedCardManager.instance.GetSpreadsheetCard(), eTradingCardCondition.MINT);
                        m_CurCardCondition = eTradingCardCondition.MINT;
                        SetRoomMode(eRoomMode.BuySellCardConfirm);
                    }
                    break;

                case 4:
                    // Sell scuffed
                    if (HasCard(SelectedCardManager.instance.GetSpreadsheetCard(), eTradingCardCondition.SCUFFED))
                    {
                        SelectedCardManager.instance.Reset();
                        BuySellCardConfirmManager.instance.ShowPanel(true, false, SelectedCardManager.instance.GetSpreadsheetCard(), eTradingCardCondition.SCUFFED);
                        m_CurCardCondition = eTradingCardCondition.SCUFFED;
                        SetRoomMode(eRoomMode.BuySellCardConfirm);
                    }
                    break;
                }
            }
        }
    }
コード例 #8
0
    //=============================================================================

    public void ShowPanel(bool bActive, bool bBuy = true, TradingCardSpreadsheetItem CurCard = null, eTradingCardCondition Condition = eTradingCardCondition.MINT)
    {
        if (bActive)
        {
            m_bButtonPressed = false;
            m_CurCard        = CurCard;
            m_MainPanel.SetActive(true);

            float fScuffedDiscount = Convert.ToSingle(SettingsManager.GetSettingsItem("TRADINGCARD_SALEPRICE_SCUFFED", -1));
            float fMintDiscount    = Convert.ToSingle(SettingsManager.GetSettingsItem("TRADINGCARD_SALEPRICE_MINT", -1));

            // Fill in description
            string txtDesc = null;
            if (bBuy)
            {
                if (Condition == eTradingCardCondition.MINT)
                {
                    txtDesc = TextManager.GetText("TRADINGCARDS_BUYMINT_CONFIRM");
                    txtDesc = txtDesc.Replace("(Price)", CurCard.value.ToString());
                }
                else
                {
                    txtDesc = TextManager.GetText("TRADINGCARDS_BUYSCUFFED_CONFIRM");
                    txtDesc = txtDesc.Replace("(Price)", CurCard.valueScuffed.ToString());
                }
            }
            else
            {
                if (Condition == eTradingCardCondition.MINT)
                {
                    txtDesc = TextManager.GetText("TRADINGCARDS_SELLMINT_CONFIRM");
                    txtDesc = txtDesc.Replace("(Price)", ((int)(CurCard.value * fMintDiscount)).ToString());
                }
                else
                {
                    txtDesc = TextManager.GetText("TRADINGCARDS_SELLSCUFFED_CONFIRM");
                    txtDesc = txtDesc.Replace("(Price)", ((int)(CurCard.valueScuffed * fScuffedDiscount)).ToString());
                }
            }

            m_txtDesc.text = txtDesc;
        }
        else
        {
            m_MainPanel.SetActive(false);
        }
    }
コード例 #9
0
    //=====================================================

    public TradingCardHeldItem(string a_id, eTradingCardCondition a_condition)
    {
        id        = a_id;
        condition = a_condition;
    }
コード例 #10
0
 public TradingCardHeldItem()
 {
     id          = string.Empty;
     condition   = eTradingCardCondition.NULL;
     notifyTimer = 0.0f;
 }