//===================================================== 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); }
//===================================================== 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); } }
//===================================================== 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); }
//================================================================== 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); }
//================================================================== // 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]); } }
//===================================================== 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; } } }
//===================================================== 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; } } } }
//============================================================================= 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); } }
//===================================================== public TradingCardHeldItem(string a_id, eTradingCardCondition a_condition) { id = a_id; condition = a_condition; }
public TradingCardHeldItem() { id = string.Empty; condition = eTradingCardCondition.NULL; notifyTimer = 0.0f; }