예제 #1
0
        /// <summary>
        ///     Gets minions in a similiar way to <see cref="E:MinionManager" />
        /// </summary>
        /// <param name="from">The from</param>
        /// <param name="range">The range to take minions from</param>
        /// <param name="team">The team</param>
        /// <param name="type">The minion type</param>
        /// <returns></returns>
        public static List <Obj_AI_Base> GetMinions(Vector2 from, float range, ObjectTeam team = ObjectTeam.Enemy, MinionType type = MinionType.Minion)
        {
            var container = new List <Obj_AI_Base>(Obj_AI_MinionList.Count);

            if (type.HasFlag(MinionType.Minion))
            {
                container.AddRange(Minions);
            }
            if (type.HasFlag(MinionType.Ward))
            {
                container.AddRange(Wards);
            }
            if (type.HasFlag(MinionType.Pet))
            {
                container.AddRange(Pets);
            }
            if (type.HasFlag(MinionType.Jungle))
            {
                container.AddRange(JungleMinions);
            }
            if (type.HasFlag(MinionType.Other))
            {
                container.AddRange(OtherMinions);
            }

            if (from.IsZero)
            {
                from = Player.ServerPosition.ToVector2();
            }

            var infinity = float.IsPositiveInfinity(range *= range);

            return(Selector(container, team, true, true, @base => infinity || Vector2.DistanceSquared(@base.ServerPosition.ToVector2(), from) <= range));
        }
예제 #2
0
        /// <summary>
        ///     Gets the minions of the specified type and team
        /// </summary>
        /// <param name="type">The minion type flags</param>
        /// <param name="team">The requested team</param>
        /// <param name="inrange">The function determining whether this instance is in range</param>
        /// <returns></returns>
        public static List <Obj_AI_Minion> GetMinions(ObjectTeam team = ObjectTeam.Enemy, MinionType type = MinionType.Minion, Predicate <Obj_AI_Minion> inrange = null)
        {
            var container = new List <Obj_AI_Minion>(Obj_AI_MinionList.Count);

            if (type.HasFlag(MinionType.Minion))
            {
                container.AddRange(Minions);
            }
            if (type.HasFlag(MinionType.Ward))
            {
                container.AddRange(Wards);
            }
            if (type.HasFlag(MinionType.Pet))
            {
                container.AddRange(Pets);
            }
            if (type.HasFlag(MinionType.Jungle))
            {
                container.AddRange(JungleMinions);
            }
            if (type.HasFlag(MinionType.Other))
            {
                container.AddRange(OtherMinions);
            }

            return(Selector(container, team, true, true, inrange));
        }