Exemplo n.º 1
0
        public override void Build(List <Encounter> cardPool, int deckSize, RarityCapper capper, List <Encounter> usedEncounters)
        {
            var travelManager = Object.FindObjectOfType <TravelManager>();

            var currentBiome = travelManager.CurrentBiome;

            Cards = new Queue <Encounter>();
            Size  = deckSize;

            var usedIndexes = new List <int>();

            while (Cards.Count < Size)
            {
                const int maxTries  = 4;
                var       validCard = false;
                var       numTries  = 0;

                Encounter card = null;

                while (!validCard && numTries < maxTries)
                {
                    numTries++;

                    var index = Random.Range(0, cardPool.Count);

                    if (usedIndexes.Contains(index))
                    {
                        continue;
                    }

                    usedIndexes.Add(index);

                    card = cardPool[index];

                    if (usedEncounters.Contains(card))
                    {
                        continue;
                    }

                    if (card.ValidBiome(currentBiome))
                    {
                        validCard = true;
                    }

                    // if (!capper.IsCapped(card.Rarity) && card.ValidBiome(currentBiome))
                    // {
                    //     validCard = true;
                    // }
                }

                if (!validCard)
                {
                    usedEncounters.Clear();
                }

                AddCard(card);

                usedEncounters.Add(card);
            }
        }
Exemplo n.º 2
0
 public virtual void Build(List <T> cardPool, int deckSize, RarityCapper capper, List <T> usedCards)
 {
 }