Ejemplo n.º 1
0
        public static SpecialString ShowHeroWithMostCardsInTrash(this SpecialStringMaker maker, LinqCardCriteria additionalCriteria = null, Func <bool> showInEffectsList = null)
        {
            CardController _cardController;
            var            p1 = maker.GetType().GetField(nameof(_cardController), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

            _cardController = (CardController)p1.GetValue(maker);

            return(maker.ShowSpecialString(delegate
            {
                IEnumerable <TurnTaker> enumerable = _cardController.GameController.FindTurnTakersWhere((TurnTaker tt) => tt.IsHero && !tt.IsIncapacitatedOrOutOfGame, _cardController.BattleZone);
                List <string> list = new List <string>();
                int num = 0;
                foreach (HeroTurnTaker hero in enumerable)
                {
                    IEnumerable <Card> cardsWhere = hero.GetCardsWhere((Card c) => c.IsInTrash && c.Location.OwnerTurnTaker == hero);
                    List <Card> source = ((additionalCriteria == null) ? cardsWhere.ToList() : cardsWhere.Where(additionalCriteria.Criteria).ToList());
                    if (source.Count() > num)
                    {
                        list.RemoveAll((string htt) => true);
                        list.Add(hero.Name);
                        num = source.Count();
                    }
                    else if (source.Count() == num)
                    {
                        list.Add(hero.Name);
                    }
                }
                string text = list.Count().ToString_SingularOrPlural("Hero", "Heroes");
                string text2 = " in trash";
                string text3 = " cards";
                if (additionalCriteria != null)
                {
                    text3 = " " + additionalCriteria.GetDescription();
                }
                return (list.Count() > 0) ? string.Format("{0} with the most{3}{2}: {1}.", text, list.ToRecursiveString(), text2, text3) : "Warning: No heroes found";
            }, showInEffectsList));
        }