// Returns a list with assets of cards that we have to show on page with pageIndex that. Selects cards that satisfy all the other parameters (rarity, manaCost, etc...) private List <CardAsset> PageSelection(bool showingCardsPlayerDoesNotOwn = false, int pageIndex = 0, bool includeAllRarities = true, bool includeAllCharacters = true, RarityOptions rarity = RarityOptions.Basic, CharacterAsset asset = null, string keyword = "", int manaCost = -1, bool includeTokenCards = false) { List <CardAsset> returnList = new List <CardAsset>(); // obtain cards from collection that satisfy all the selected criteria List <CardAsset> cardsToChooseFrom = CardCollection.Instance.GetCards(showingCardsPlayerDoesNotOwn, includeAllRarities, includeAllCharacters, rarity, asset, keyword, manaCost, includeTokenCards); // if there are enough cards so that we can show some cards on page with pageIndex // otherwise an empty list will be returned if (cardsToChooseFrom.Count > pageIndex * Slots.Length) { // the following for loop has 2 conditions for counter i: // 1) i < cardsToChooseFrom.Count - pageIndex * Slots.Length checks that we did not run out on cards on the last page // (for example, there are 10 slots on the page, but we only have to show 5 cards) // 2) i < Slots.Length checks that we have reached the limit of cards to display on one page (filled the whole page) for (int i = 0; (i < cardsToChooseFrom.Count - pageIndex * Slots.Length && i < Slots.Length); i++) { returnList.Add(cardsToChooseFrom[pageIndex * Slots.Length + i]); } } return(returnList); }
private GameObject CardFromPack(RarityOptions rarity) { List <CardAsset> CardsOfThisRarity = CardCollection.Instance.GetCardsWithRarity(rarity); CardAsset a = CardsOfThisRarity[Random.Range(0, CardsOfThisRarity.Count)]; CardCollection.Instance.QuantityOfEachCard[a]++; GameObject card; if (a.TypeOfCard == TypesOfCards.Creature) { card = Instantiate(CreatureCardFromPackPrefab) as GameObject; } else { card = Instantiate(SpellCardFromPackPrefab) as GameObject; } card.transform.rotation = Quaternion.Euler(0f, 180f, 0f); OneCardManager manager = card.GetComponent <OneCardManager>(); manager.CardAsset = a; manager.ReadCardFromAsset(); return(card); }
private void ShowCards(bool showingCardsPlayerDoesNotOwn = false, int pageIndex = 0, bool includeAllRarities = true, bool includeAllCharacters = true, RarityOptions rarity = RarityOptions.Basic, CharacterAsset asset = null, string keyword = "", int manaCost = -1, bool includeTokenCards = false) { // saving the information about the cards that we are showing to players on this page _showingCardsPlayerDoesNotOwn = showingCardsPlayerDoesNotOwn; _pageIndex = pageIndex; _includeAllRarities = includeAllRarities; _includeAllCharacters = includeAllCharacters; _rarity = rarity; _asset = asset; _keyword = keyword; _manaCost = manaCost; _includeTokenCards = includeTokenCards; List <CardAsset> CardsOnThisPage = PageSelection(showingCardsPlayerDoesNotOwn, pageIndex, includeAllRarities, includeAllCharacters, rarity, asset, keyword, manaCost, includeTokenCards); // clear created cards list ClearCreatedCards(); if (CardsOnThisPage.Count == 0) { return; } // Debug.Log(CardsOnThisPage.Count); for (int i = 0; i < CardsOnThisPage.Count; i++) { GameObject newMenuCard; if (CardsOnThisPage[i].TypeOfCard == TypesOfCards.Creature) { // it is a creature card newMenuCard = Instantiate(CreatureMenuPrefab, Slots[i].position, Quaternion.identity) as GameObject; } else { // it is a spell card newMenuCard = Instantiate(SpellMenuPrefab, Slots[i].position, Quaternion.identity) as GameObject; } newMenuCard.transform.SetParent(this.transform); CreatedCards.Add(newMenuCard); OneCardManager manager = newMenuCard.GetComponent <OneCardManager>(); manager.cardAsset = CardsOnThisPage[i]; manager.ReadCardFromAsset(); AddCardToDeck addCardComponent = newMenuCard.GetComponent <AddCardToDeck>(); addCardComponent.SetCardAsset(CardsOnThisPage[i]); addCardComponent.UpdateQuantity(); } }
public List <CardAsset> GetCardsWithRarity(RarityOptions rarity) { /* * // get neutral cards * var cards = from card in allCardsArray * where card.Rarity == rarity * select card; * * var returnList = cards.ToList<CardAsset>(); * returnList.Sort(); * * return returnList; */ return(GetCards(true, false, true, rarity)); }
public void ShowPackOpening(Vector3 cardsInitialPosition) { // ShopManager.Instance.PacksCreated--; // Allow To Drag Another Pack Only After DoneButton Is pressed // 1) Determine rarity of all cards RarityOptions[] rarities = new RarityOptions[SlotsForCards.Length]; bool AtLeastOneRareGiven = false; for (int i = 0; i < rarities.Length; i++) { // determine rarity of this card float prob = Random.Range(0f, 1f); if (prob < LegendaryProbability) { rarities[i] = RarityOptions.Legendary; AtLeastOneRareGiven = true; } else if (prob < EpicProbability) { rarities[i] = RarityOptions.Epic; AtLeastOneRareGiven = true; } else if (prob < RareProbability) { rarities[i] = RarityOptions.Rare; AtLeastOneRareGiven = true; } else { rarities[i] = RarityOptions.Common; } } if (AtLeastOneRareGiven == false && giveAtLeastOneRare) { rarities[Random.Range(0, rarities.Length)] = RarityOptions.Rare; } for (int i = 0; i < rarities.Length; i++) { GameObject card = CardFromPack(rarities[i]); CardsFromPackCreated.Add(card); card.transform.position = cardsInitialPosition; card.transform.DOMove(SlotsForCards[i].position, 0.5f); } }
private List <CardAsset> PageSelection(bool showingCardsPlayerDoesNotOwn = false, int pageIndex = 0, bool includeAllRarities = true, bool includeAllCharacters = true, RarityOptions rarity = RarityOptions.Basic, CharacterAsset asset = null, string keyword = "", int manaCost = -1, bool includeTokenCards = false) { List <CardAsset> returnList = new List <CardAsset>(); List <CardAsset> cardsToChooseFrom = CardCollection.Instance.GetCards(showingCardsPlayerDoesNotOwn, includeAllRarities, includeAllCharacters, rarity, asset, keyword, manaCost, includeTokenCards); if (cardsToChooseFrom.Count > pageIndex * Slots.Length) { for (int i = 0; (i < cardsToChooseFrom.Count - pageIndex * Slots.Length && i < Slots.Length); i++) { returnList.Add(cardsToChooseFrom[pageIndex * Slots.Length + i]); } } return(returnList); }
public Action <Equipment, AffixManager, CurrencyModifiers> SetRarity(RarityOptions rarityOption) { return((item, affixManager, currencyModifier) => { switch (rarityOption) { case RarityOptions.Normal: item.Rarity = EquipmentRarity.Normal; break; case RarityOptions.Magic: item.Rarity = EquipmentRarity.Magic; break; case RarityOptions.Rare: item.Rarity = EquipmentRarity.Rare; break; } }); }
public void ShowPackOpening(Vector3 cardsInitialPosition) { RarityOptions[] rarities = new RarityOptions[SlotsForCards.Length]; bool AtLeastOneRareGiven = false; for (int i = 0; i < rarities.Length; i++) { float prob = Random.Range(0f, 1f); if (prob < LegendaryProbability) { rarities[i] = RarityOptions.Legendary; AtLeastOneRareGiven = true; } else if (prob < EpicProbability) { rarities[i] = RarityOptions.Epic; AtLeastOneRareGiven = true; } else if (prob < RareProbability) { rarities[i] = RarityOptions.Rare; AtLeastOneRareGiven = true; } else { rarities[i] = RarityOptions.Common; } } if (AtLeastOneRareGiven == false && giveAtLeastOneRare) { rarities[Random.Range(0, rarities.Length)] = RarityOptions.Rare; } for (int i = 0; i < rarities.Length; i++) { GameObject card = CardFromPack(rarities[i]); CardsFromPackCreated.Add(card); card.transform.position = cardsInitialPosition; card.transform.DOMove(SlotsForCards[i].position, 0.5f); } }
public Func <Equipment, bool> ValidateRarity(RarityOptions rarityOptions) { return((item) => { if (item.Rarity == EquipmentRarity.Normal && rarityOptions == RarityOptions.Normal) { return true; } if (item.Rarity == EquipmentRarity.Magic && rarityOptions == RarityOptions.Magic) { return true; } if (item.Rarity == EquipmentRarity.Rare && rarityOptions == RarityOptions.Rare) { return true; } return false; }); }
public List <CardAsset> GetCards(bool showingCardsPlayerDoesNotOwn = false, bool includeAllRarities = true, bool includeAllCharacters = true, RarityOptions rarity = RarityOptions.Basic, CharacterAsset asset = null, string keyword = "", int manaCost = -1, bool includeTokenCards = false) { var cards = from card in allCardsArray select card; if (!showingCardsPlayerDoesNotOwn) { cards = cards.Where(card => QuantityOfEachCard[card] > 0); } if (!includeTokenCards) { cards = cards.Where(card => card.TokenCard == false); } if (!includeAllRarities) { cards = cards.Where(card => card.Rarity == rarity); } if (!includeAllCharacters) { cards = cards.Where(card => card.CharacterAsset == asset); } if (!string.IsNullOrEmpty(keyword)) { cards = cards.Where(card => (card.name.ToLower().Contains(keyword.ToLower()) || (card.Tags.ToLower().Contains(keyword.ToLower()) && !keyword.ToLower().Contains(" ")))); } if (manaCost == 7) { cards = cards.Where(card => card.ManaCost >= 7); } else if (manaCost != -1) { cards = cards.Where(card => card.ManaCost == manaCost); } var returnList = cards.ToList <CardAsset>(); returnList.Sort(); return(returnList); }
public List <CardAsset> GetCardsWithRarity(RarityOptions rarity) { return(GetCards(true, false, true, rarity)); }