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); } }
public virtual void Build(List <T> cardPool, int deckSize, RarityCapper capper, List <T> usedCards) { }