Ejemplo n.º 1
0
    // 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);
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    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();
        }
    }
Ejemplo n.º 4
0
 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));
 }
Ejemplo n.º 5
0
    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);
        }
    }
Ejemplo n.º 6
0
    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);
    }
Ejemplo n.º 7
0
        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;
                }
            });
        }
Ejemplo n.º 8
0
    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);
        }
    }
Ejemplo n.º 9
0
        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;
            });
        }
Ejemplo n.º 10
0
    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);
    }
Ejemplo n.º 11
0
 public List <CardAsset> GetCardsWithRarity(RarityOptions rarity)
 {
     return(GetCards(true, false, true, rarity));
 }