Пример #1
0
        public static List<TargetInfo> GetAllTargetsExcluding(List<TargetInfo> excluding, MissileFire mf)
        {
            List<TargetInfo> finalTargets = new List<TargetInfo>();
            BDArmorySettings.BDATeams team = BoolToTeam(mf.team);

            foreach(var target in TargetDatabase[team])
            {
                if(target && target.Vessel && mf.CanSeeTarget(target.Vessel) && !excluding.Contains(target))
                {
                    finalTargets.Add(target);
                }
            }

            return finalTargets;
        }
Пример #2
0
        public static TargetInfo GetClosestMissileTarget(MissileFire mf)
        {
            BDArmorySettings.BDATeams team = BoolToTeam(mf.team);
            TargetInfo finalTarget = null;

            foreach(var target in TargetDatabase[team])
            {
                if(target && target.Vessel && mf.CanSeeTarget(target.Vessel) && target.isMissile)
                {
                    bool isHostile = false;
                    if(target.isThreat)
                    {
                        isHostile = true;
                    }

                    if(isHostile && (finalTarget == null || target.IsCloser(finalTarget, mf)))
                    {
                        finalTarget = target;
                    }
                }
            }

            return finalTarget;
        }
Пример #3
0
        public static TargetInfo GetUnengagedMissileTarget(MissileFire mf)
        {
            BDArmorySettings.BDATeams team = mf.team ? BDArmorySettings.BDATeams.B : BDArmorySettings.BDATeams.A;

            foreach(var target in TargetDatabase[team])
            {
                if(target && target.Vessel && mf.CanSeeTarget(target.Vessel) && target.isMissile)
                {
                    bool isHostile = false;
                    if(target.isThreat)
                    {
                        isHostile = true;
                    }

                    if(isHostile && target.numFriendliesEngaging == 0)
                    {
                        return target;
                    }
                }
            }

            return null;
        }
Пример #4
0
        public static TargetInfo GetMissileTarget(MissileFire mf)
        {
            BDArmorySettings.BDATeams team = mf.team ? BDArmorySettings.BDATeams.B : BDArmorySettings.BDATeams.A;
            TargetInfo finalTarget = null;

            foreach(var target in TargetDatabase[team])
            {
                if(target && target.Vessel && mf.CanSeeTarget(target.Vessel) && target.isMissile)
                {
                    bool isHostile = false;
                    if(target.missileModule && target.missileModule.targetMf && target.missileModule.targetMf.team == mf.team)
                    {
                        isHostile = true;
                    }

                    if(isHostile && ((finalTarget == null && target.numFriendliesEngaging < 2) || target.numFriendliesEngaging < finalTarget.numFriendliesEngaging))
                    {
                        finalTarget = target;
                    }
                }
            }

            return finalTarget;
        }
Пример #5
0
        public static TargetInfo GetLeastEngagedTarget(MissileFire mf)
        {
            BDArmorySettings.BDATeams team = mf.team ? BDArmorySettings.BDATeams.B : BDArmorySettings.BDATeams.A;
            TargetInfo finalTarget = null;

            foreach(var target in TargetDatabase[team])
            {
                if(target && target.Vessel && mf.CanSeeTarget(target.Vessel) && !target.isMissile)
                {
                    if(finalTarget == null || target.numFriendliesEngaging < finalTarget.numFriendliesEngaging)
                    {
                        finalTarget = target;
                    }
                }
            }

            return finalTarget;
        }
Пример #6
0
        public static TargetInfo GetClosestTarget(MissileFire mf)
        {
            BDArmorySettings.BDATeams team = mf.team ? BDArmorySettings.BDATeams.B : BDArmorySettings.BDATeams.A;
            TargetInfo finalTarget = null;

            foreach(var target in TargetDatabase[team])
            {
                if(target && target.Vessel && mf.CanSeeTarget(target.Vessel) && !target.isMissile)
                {
                    if(finalTarget == null || (target.IsCloser(finalTarget, mf)))
                    {
                        finalTarget = target;
                    }
                }
            }

            return finalTarget;
        }
Пример #7
0
        public static TargetInfo GetMissileTarget(MissileFire mf, bool targetingMeOnly = false)
        {
            BDArmorySettings.BDATeams team = mf.team ? BDArmorySettings.BDATeams.B : BDArmorySettings.BDATeams.A;
            TargetInfo finalTarget = null;

            foreach(var target in TargetDatabase[team])
            {
                if(target && target.Vessel && target.isMissile && target.isThreat && mf.CanSeeTarget(target.Vessel) )
                {
                    if(target.missileModule)
                    {
                        if(targetingMeOnly)
                        {
                            if(Vector3.SqrMagnitude(target.missileModule.targetPosition - mf.vessel.CoM) > 60 * 60)
                            {
                                continue;
                            }
                        }
                    }
                    else
                    {
                        Debug.LogWarning("checking target missile -  doesn't have missile module");
                    }

                    if(((finalTarget == null && target.numFriendliesEngaging < 2) || target.numFriendliesEngaging < finalTarget.numFriendliesEngaging))
                    {
                        finalTarget = target;
                    }
                }
            }

            return finalTarget;
        }