Ejemplo n.º 1
0
        public Hero GetAllyHero(ParallelQuery<Hero> allies)
        {
            switch (Type)
            {
                case GetHeroType.ModifierSource:
                    return allies.FirstOrDefault(x => x.Equals(Source));
                case GetHeroType.LowestHealthPct:
                    return
                        allies.Where(x => x.HasModifier(Modifier.Name))
                            .OrderByDescending(x => x.Equals(Hero))
                            .ThenBy(x => x.Health / x.MaximumHealth)
                            .FirstOrDefault();
                case GetHeroType.LowestHealth:
                    return
                        allies.Where(x => x.HasModifier(Modifier.Name))
                            .OrderByDescending(x => x.Equals(Hero))
                            .ThenBy(x => x.Health)
                            .FirstOrDefault();
                case GetHeroType.ClosestToSource:
                    return
                        allies.Where(x => x.Distance2D(Source) <= MaximumDistanceToSource)
                            .OrderBy(x => x.Distance2D(Source))
                            .FirstOrDefault();
            }

            return null;
        }