private static DirectorCard SelectCard(WeightedSelection <DirectorCard> deck, int maxCost) { WeightedSelection <DirectorCard> cardSelector = new WeightedSelection <DirectorCard>(8); cardSelector.Clear(); int i = 0; int count = deck.Count; while (i < count) { WeightedSelection <DirectorCard> .ChoiceInfo choice = deck.GetChoice(i); if (choice.value.cost <= maxCost) { cardSelector.AddChoice(choice); } i++; } if (cardSelector.Count == 0) { return(null); } return(cardSelector.Evaluate(new Xoroshiro128Plus((ulong)Run.instance.stageRng.nextUint).nextNormalizedFloat)); }