示例#1
0
        public static TargetSortEnum TagTargetSortEnumCheck(string tag)
        {
            TargetSortEnum result   = TargetSortEnum.Random;
            var            tagSplit = ProcessTag(tag);

            if (tagSplit.Length == 2)
            {
                if (TargetSortEnum.TryParse(tagSplit[1], out result) == false)
                {
                    return(TargetSortEnum.Random);
                }
            }

            return(result);
        }
示例#2
0
        public TargetProfile()
        {
            UseCustomTargeting = false;

            Target       = TargetTypeEnum.None;
            BlockTargets = new List <BlockTypeEnum>();

            TimeUntilTargetAcquisition = 1;
            UseTargetRefresh           = false;
            TimeUntilNextRefresh       = 60;
            TimeUntilNextEvaluation    = 1;

            MaxDistance = 12000;

            MatchAllFilters  = new List <TargetFilterEnum>();
            MatchAnyFilters  = new List <TargetFilterEnum>();
            MatchNoneFilters = new List <TargetFilterEnum>();
            GetTargetBy      = TargetSortEnum.ClosestDistance;

            Owners         = OwnerTypeEnum.None;
            Relations      = RelationTypeEnum.None;
            FactionTargets = new List <string>();

            OnlyGetFromEntityOwner      = false;
            GetFromMinorityGridOwners   = false;
            PrioritizeSpecifiedFactions = false;

            IsStatic = CheckEnum.Ignore;

            MinAltitude = -100000;
            MaxAltitude = 100000;

            NonBroadcastVisualRange = 1500;

            MinGravity = 0;
            MaxGravity = 1.1;

            MinSpeed = 0;
            MaxSpeed = 110;

            MinTargetValue = 0;
            MaxTargetValue = 1;

            ProfileSubtypeId      = "";
            BuiltUniqueFilterList = false;
            AllUniqueFilters      = new List <TargetFilterEnum>();
        }
示例#3
0
        public void InitTags(string customData)
        {
            if (string.IsNullOrWhiteSpace(customData) == false)
            {
                var descSplit = customData.Split('\n');

                foreach (var tag in descSplit)
                {
                    //UseCustomTargeting
                    if (tag.Contains("[UseCustomTargeting:") == true)
                    {
                        this.UseCustomTargeting = TagHelper.TagBoolCheck(tag);
                    }

                    //TimeUntilTargetAcquisition
                    if (tag.Contains("[TimeUntilTargetAcquisition:") == true)
                    {
                        this.TimeUntilTargetAcquisition = TagHelper.TagIntCheck(tag, this.TimeUntilTargetAcquisition);
                    }

                    //UseTargetRefresh
                    if (tag.Contains("[UseTargetRefresh:") == true)
                    {
                        this.UseTargetRefresh = TagHelper.TagBoolCheck(tag);
                    }

                    //TimeUntilNextRefresh
                    if (tag.Contains("[TimeUntilNextRefresh:") == true)
                    {
                        this.TimeUntilNextRefresh = TagHelper.TagIntCheck(tag, this.TimeUntilNextRefresh);
                    }

                    //UseTargetLastKnownPosition
                    if (tag.Contains("[UseTargetLastKnownPosition:") == true)
                    {
                        this.UseTargetLastKnownPosition = TagHelper.TagBoolCheck(tag);
                    }

                    //TimeUntilNextEvaluation
                    if (tag.Contains("[TimeUntilNextEvaluation:") == true)
                    {
                        this.TimeUntilNextEvaluation = TagHelper.TagIntCheck(tag, this.TimeUntilNextEvaluation);
                    }

                    //Target
                    if (tag.Contains("[Target:") == true)
                    {
                        this.Target = TagHelper.TagTargetTypeEnumCheck(tag);
                    }

                    //BlockTargets
                    if (tag.Contains("[BlockTargets:") == true)
                    {
                        var tempValue = TagHelper.TagBlockTargetTypesCheck(tag);

                        if (tempValue != BlockTypeEnum.None && this.BlockTargets.Contains(tempValue) == false)
                        {
                            this.BlockTargets.Add(tempValue);
                        }
                    }

                    //GetTargetBy
                    if (tag.Contains("[GetTargetBy:") == true)
                    {
                        this.GetTargetBy = TagHelper.TagTargetSortEnumCheck(tag);
                    }

                    //MaxDistance
                    if (tag.Contains("[MaxDistance:") == true)
                    {
                        this.MaxDistance = TagHelper.TagDoubleCheck(tag, this.MaxDistance);
                    }

                    //MatchAllFilters
                    if (tag.Contains("[MatchAllFilters:") == true)
                    {
                        var tempValue = TagHelper.TagTargetFilterEnumCheck(tag);

                        if (tempValue != TargetFilterEnum.None && !this.MatchAllFilters.Contains(tempValue))
                        {
                            this.MatchAllFilters.Add(tempValue);
                        }
                    }

                    //MatchAnyFilters
                    if (tag.Contains("[MatchAnyFilters:") == true)
                    {
                        var tempValue = TagHelper.TagTargetFilterEnumCheck(tag);

                        if (tempValue != TargetFilterEnum.None && !this.MatchAnyFilters.Contains(tempValue))
                        {
                            this.MatchAnyFilters.Add(tempValue);
                        }
                    }

                    //MatchNoneFilters
                    if (tag.Contains("[MatchNoneFilters:") == true)
                    {
                        var tempValue = TagHelper.TagTargetFilterEnumCheck(tag);

                        if (tempValue != TargetFilterEnum.None && !this.MatchNoneFilters.Contains(tempValue))
                        {
                            this.MatchNoneFilters.Add(tempValue);
                        }
                    }

                    //Owners
                    if (tag.Contains("[Owners:") == true)
                    {
                        var tempValue = TagHelper.TagTargetOwnerEnumCheck(tag);

                        if (!this.Owners.HasFlag(tempValue))
                        {
                            this.Owners |= tempValue;
                        }
                    }

                    //Relations
                    if (tag.Contains("[Relations:") == true)
                    {
                        var tempValue = TagHelper.TagTargetRelationEnumCheck(tag);

                        if (this.Relations.HasFlag(tempValue) == false)
                        {
                            this.Relations |= tempValue;
                        }
                    }

                    //FactionTargets
                    if (tag.Contains("[FactionTargets:") == true)
                    {
                        var tempValue = TagHelper.TagStringCheck(tag);

                        if (!string.IsNullOrWhiteSpace(tempValue) && !this.FactionTargets.Contains(tempValue))
                        {
                            this.FactionTargets.Add(tempValue);
                        }
                    }

                    //OnlyGetFromEntityOwner
                    if (tag.Contains("[OnlyGetFromEntityOwner:") == true)
                    {
                        this.OnlyGetFromEntityOwner = TagHelper.TagBoolCheck(tag);
                    }

                    //GetFromMinorityGridOwners
                    if (tag.Contains("[GetFromMinorityGridOwners:") == true)
                    {
                        this.GetFromMinorityGridOwners = TagHelper.TagBoolCheck(tag);
                    }

                    //PrioritizeSpecifiedFactions
                    if (tag.Contains("[PrioritizeSpecifiedFactions:") == true)
                    {
                        this.PrioritizeSpecifiedFactions = TagHelper.TagBoolCheck(tag);
                    }

                    //IsStatic
                    if (tag.Contains("[IsStatic:") == true)
                    {
                        this.IsStatic = TagHelper.TagCheckEnumCheck(tag);
                    }

                    //MinAltitude
                    if (tag.Contains("[MinAltitude:") == true)
                    {
                        this.MinAltitude = TagHelper.TagDoubleCheck(tag, this.MinAltitude);
                    }

                    //MaxAltitude
                    if (tag.Contains("[MaxAltitude:") == true)
                    {
                        this.MaxAltitude = TagHelper.TagDoubleCheck(tag, this.MaxAltitude);
                    }

                    //NonBroadcastVisualRange
                    if (tag.Contains("[NonBroadcastVisualRange:") == true)
                    {
                        this.NonBroadcastVisualRange = TagHelper.TagDoubleCheck(tag, this.NonBroadcastVisualRange);
                    }

                    //MinGravity
                    if (tag.Contains("[MinGravity:") == true)
                    {
                        this.MinGravity = TagHelper.TagDoubleCheck(tag, this.MinGravity);
                    }

                    //MaxGravity
                    if (tag.Contains("[MaxGravity:") == true)
                    {
                        this.MaxGravity = TagHelper.TagDoubleCheck(tag, this.MaxGravity);
                    }

                    //MinSpeed
                    if (tag.Contains("[MinSpeed:") == true)
                    {
                        this.MinSpeed = TagHelper.TagDoubleCheck(tag, this.MinSpeed);
                    }

                    //MaxSpeed
                    if (tag.Contains("[MaxSpeed:") == true)
                    {
                        this.MaxSpeed = TagHelper.TagDoubleCheck(tag, this.MaxSpeed);
                    }

                    //MinTargetValue
                    if (tag.Contains("[MinTargetValue:") == true)
                    {
                        this.MinTargetValue = TagHelper.TagFloatCheck(tag, this.MinTargetValue);
                    }

                    //MaxTargetValue
                    if (tag.Contains("[MaxTargetValue:") == true)
                    {
                        this.MaxTargetValue = TagHelper.TagFloatCheck(tag, this.MaxTargetValue);
                    }
                }
            }
        }
示例#4
0
        public void InitTags(string customData)
        {
            if (string.IsNullOrWhiteSpace(customData) == false)
            {
                var descSplit = customData.Split('\n');

                foreach (var tag in descSplit)
                {
                    //UseCustomTargeting
                    if (tag.Contains("[UseCustomTargeting:") == true)
                    {
                        UseCustomTargeting = TagHelper.TagBoolCheck(tag);
                    }

                    //TimeUntilTargetAcquisition
                    if (tag.Contains("[TimeUntilTargetAcquisition:") == true)
                    {
                        TimeUntilTargetAcquisition = TagHelper.TagIntCheck(tag, TimeUntilTargetAcquisition);
                    }

                    //UseTargetRefresh
                    if (tag.Contains("[UseTargetRefresh:") == true)
                    {
                        UseTargetRefresh = TagHelper.TagBoolCheck(tag);
                    }

                    //TimeUntilNextRefresh
                    if (tag.Contains("[TimeUntilNextRefresh:") == true)
                    {
                        TimeUntilNextRefresh = TagHelper.TagIntCheck(tag, TimeUntilNextRefresh);
                    }

                    //UseTargetLastKnownPosition
                    if (tag.Contains("[UseTargetLastKnownPosition:") == true)
                    {
                        UseTargetLastKnownPosition = TagHelper.TagBoolCheck(tag);
                    }

                    //TimeUntilNextEvaluation
                    if (tag.Contains("[TimeUntilNextEvaluation:") == true)
                    {
                        TimeUntilNextEvaluation = TagHelper.TagIntCheck(tag, TimeUntilNextEvaluation);
                    }

                    //Target
                    if (tag.Contains("[Target:") == true)
                    {
                        Target = TagHelper.TagTargetTypeEnumCheck(tag);
                    }

                    //BlockTargets
                    if (tag.Contains("[BlockTargets:") == true)
                    {
                        var tempValue = TagHelper.TagBlockTargetTypesCheck(tag);

                        if (tempValue != BlockTypeEnum.None && BlockTargets.Contains(tempValue) == false)
                        {
                            BlockTargets.Add(tempValue);
                        }
                    }

                    //GetTargetBy
                    if (tag.Contains("[GetTargetBy:") == true)
                    {
                        GetTargetBy = TagHelper.TagTargetSortEnumCheck(tag);
                    }

                    //MaxDistance
                    if (tag.Contains("[MaxDistance:") == true)
                    {
                        MaxDistance = TagHelper.TagDoubleCheck(tag, MaxDistance);
                    }

                    //MatchAllFilters
                    if (tag.Contains("[MatchAllFilters:") == true)
                    {
                        var tempValue = TagHelper.TagTargetFilterEnumCheck(tag);

                        if (tempValue != TargetFilterEnum.None && !MatchAllFilters.Contains(tempValue))
                        {
                            MatchAllFilters.Add(tempValue);
                        }
                    }

                    //MatchAnyFilters
                    if (tag.Contains("[MatchAnyFilters:") == true)
                    {
                        var tempValue = TagHelper.TagTargetFilterEnumCheck(tag);

                        if (tempValue != TargetFilterEnum.None && !MatchAnyFilters.Contains(tempValue))
                        {
                            MatchAnyFilters.Add(tempValue);
                        }
                    }

                    //MatchNoneFilters
                    if (tag.Contains("[MatchNoneFilters:") == true)
                    {
                        var tempValue = TagHelper.TagTargetFilterEnumCheck(tag);

                        if (tempValue != TargetFilterEnum.None && !MatchNoneFilters.Contains(tempValue))
                        {
                            MatchNoneFilters.Add(tempValue);
                        }
                    }

                    //Owners
                    if (tag.Contains("[Owners:") == true)
                    {
                        var tempValue = TagHelper.TagTargetOwnerEnumCheck(tag);

                        if (!Owners.HasFlag(tempValue))
                        {
                            Owners |= tempValue;
                        }
                    }

                    //Relations
                    if (tag.Contains("[Relations:") == true)
                    {
                        var tempValue = TagHelper.TagTargetRelationEnumCheck(tag);

                        if (Relations.HasFlag(tempValue) == false)
                        {
                            Relations |= tempValue;
                        }
                    }

                    //FactionTargets
                    if (tag.Contains("[FactionTargets:") == true)
                    {
                        var tempValue = TagHelper.TagStringCheck(tag);

                        if (!string.IsNullOrWhiteSpace(tempValue) && !FactionTargets.Contains(tempValue))
                        {
                            FactionTargets.Add(tempValue);
                        }
                    }

                    //OnlyGetFromEntityOwner
                    if (tag.Contains("[OnlyGetFromEntityOwner:") == true)
                    {
                        OnlyGetFromEntityOwner = TagHelper.TagBoolCheck(tag);
                    }

                    //GetFromMinorityGridOwners
                    if (tag.Contains("[GetFromMinorityGridOwners:") == true)
                    {
                        GetFromMinorityGridOwners = TagHelper.TagBoolCheck(tag);
                    }

                    //PrioritizeSpecifiedFactions
                    if (tag.Contains("[PrioritizeSpecifiedFactions:") == true)
                    {
                        PrioritizeSpecifiedFactions = TagHelper.TagBoolCheck(tag);
                    }

                    //IsStatic
                    if (tag.Contains("[IsStatic:") == true)
                    {
                        IsStatic = TagHelper.TagCheckEnumCheck(tag);
                    }

                    //MinAltitude
                    if (tag.Contains("[MinAltitude:") == true)
                    {
                        MinAltitude = TagHelper.TagDoubleCheck(tag, MinAltitude);
                    }

                    //MaxAltitude
                    if (tag.Contains("[MaxAltitude:") == true)
                    {
                        MaxAltitude = TagHelper.TagDoubleCheck(tag, MaxAltitude);
                    }

                    //NonBroadcastVisualRange
                    if (tag.Contains("[NonBroadcastVisualRange:") == true)
                    {
                        NonBroadcastVisualRange = TagHelper.TagDoubleCheck(tag, NonBroadcastVisualRange);
                    }

                    //MinGravity
                    if (tag.Contains("[MinGravity:") == true)
                    {
                        MinGravity = TagHelper.TagDoubleCheck(tag, MinGravity);
                    }

                    //MaxGravity
                    if (tag.Contains("[MaxGravity:") == true)
                    {
                        MaxGravity = TagHelper.TagDoubleCheck(tag, MaxGravity);
                    }

                    //MinSpeed
                    if (tag.Contains("[MinSpeed:") == true)
                    {
                        MinSpeed = TagHelper.TagDoubleCheck(tag, MinSpeed);
                    }

                    //MaxSpeed
                    if (tag.Contains("[MaxSpeed:") == true)
                    {
                        MaxSpeed = TagHelper.TagDoubleCheck(tag, MaxSpeed);
                    }

                    //MinTargetValue
                    if (tag.Contains("[MinTargetValue:") == true)
                    {
                        MinTargetValue = TagHelper.TagFloatCheck(tag, MinTargetValue);
                    }

                    //MaxTargetValue
                    if (tag.Contains("[MaxTargetValue:") == true)
                    {
                        MaxTargetValue = TagHelper.TagFloatCheck(tag, MaxTargetValue);
                    }

                    //MinMovementScore
                    if (tag.Contains("[MinMovementScore:") == true)
                    {
                        MinMovementScore = TagHelper.TagFloatCheck(tag, MinMovementScore);
                    }

                    //MaxMovementScore
                    if (tag.Contains("[MaxMovementScore:") == true)
                    {
                        MaxMovementScore = TagHelper.TagFloatCheck(tag, MaxMovementScore);
                    }

                    //PrioritizePlayerControlled
                    if (tag.Contains("[PrioritizePlayerControlled:") == true)
                    {
                        PrioritizePlayerControlled = TagHelper.TagBoolCheck(tag);
                    }

                    //Names
                    if (tag.Contains("[Names:") == true)
                    {
                        var tempValue = TagHelper.TagStringCheck(tag);

                        if (!string.IsNullOrWhiteSpace(tempValue) && !Names.Contains(tempValue))
                        {
                            Names.Add(tempValue);
                        }
                    }

                    //UsePartialNameMatching
                    if (tag.Contains("[UsePartialNameMatching:") == true)
                    {
                        UsePartialNameMatching = TagHelper.TagBoolCheck(tag);
                    }

                    //MaxLineOfSight
                    if (tag.Contains("[MaxLineOfSight:") == true)
                    {
                        MaxLineOfSight = TagHelper.TagDoubleCheck(tag, MaxLineOfSight);
                    }

                    //MaxMovementDetectableDistance
                    if (tag.Contains("[MaxMovementDetectableDistance:") == true)
                    {
                        MaxMovementDetectableDistance = TagHelper.TagDoubleCheck(tag, MaxMovementDetectableDistance);
                    }

                    //BroadcastOnlyAntenna
                    if (tag.Contains("[BroadcastOnlyAntenna:") == true)
                    {
                        BroadcastOnlyAntenna = TagHelper.TagBoolCheck(tag);
                    }

                    //MinUnderWaterDepth
                    if (tag.Contains("[MinUnderWaterDepth:") == true)
                    {
                        MinUnderWaterDepth = TagHelper.TagDoubleCheck(tag, MinUnderWaterDepth);
                    }

                    //MaxUnderWaterDepth
                    if (tag.Contains("[MaxUnderWaterDepth:") == true)
                    {
                        MaxUnderWaterDepth = TagHelper.TagDoubleCheck(tag, MaxUnderWaterDepth);
                    }

                    //PlayerKnownLocationFactionOverride
                    if (tag.Contains("[PlayerKnownLocationFactionOverride:") == true)
                    {
                        PlayerKnownLocationFactionOverride = TagHelper.TagStringCheck(tag);
                    }
                }
            }
        }
示例#5
0
        public TargetProfile()
        {
            UseCustomTargeting = false;

            Target       = TargetTypeEnum.None;
            BlockTargets = new List <BlockTypeEnum>();

            TimeUntilTargetAcquisition = 1;
            UseTargetRefresh           = false;
            TimeUntilNextRefresh       = 60;
            TimeUntilNextEvaluation    = 1;

            MaxDistance = 12000;

            MatchAllFilters  = new List <TargetFilterEnum>();
            MatchAnyFilters  = new List <TargetFilterEnum>();
            MatchNoneFilters = new List <TargetFilterEnum>();
            GetTargetBy      = TargetSortEnum.ClosestDistance;

            Owners         = OwnerTypeEnum.None;
            Relations      = RelationTypeEnum.None;
            FactionTargets = new List <string>();

            OnlyGetFromEntityOwner      = false;
            GetFromMinorityGridOwners   = false;
            PrioritizeSpecifiedFactions = false;

            IsStatic = CheckEnum.Ignore;

            MinAltitude = -100000;
            MaxAltitude = 100000;

            NonBroadcastVisualRange = 1500;

            MinGravity = 0;
            MaxGravity = 1.1;

            MinSpeed = 0;
            MaxSpeed = 110;

            MinTargetValue = 0;
            MaxTargetValue = 1;

            MinMovementScore = -1;
            MaxMovementScore = -1;

            MaxLineOfSight = -1;

            MaxMovementDetectableDistance = -1;

            PrioritizePlayerControlled = false;

            BroadcastOnlyAntenna = false;

            Names = new List <string>();
            UsePartialNameMatching = false;

            MinUnderWaterDepth = -1;
            MaxUnderWaterDepth = -1;

            PlayerKnownLocationFactionOverride = "";

            ProfileSubtypeId      = "";
            BuiltUniqueFilterList = false;
            AllUniqueFilters      = new List <TargetFilterEnum>();
        }
示例#6
0
        public static IMyEntity GetEntityAtDistance(Vector3D coords, List <IMyEntity> entityList, TargetSortEnum distanceEnum)
        {
            IMyEntity result          = null;
            double    closestDistance = -1;

            if (distanceEnum == TargetSortEnum.Random && entityList.Count > 0)
            {
                return(entityList[Rnd.Next(0, entityList.Count)]);
            }

            if (distanceEnum == TargetSortEnum.ClosestDistance)
            {
                foreach (var entity in entityList)
                {
                    var distance = Vector3D.Distance(coords, entity.GetPosition());

                    if (closestDistance == -1 || distance < closestDistance)
                    {
                        result          = entity;
                        closestDistance = distance;
                    }
                }
            }

            if (distanceEnum == TargetSortEnum.FurthestDistance)
            {
                foreach (var entity in entityList)
                {
                    var distance = Vector3D.Distance(coords, entity.GetPosition());

                    if (closestDistance == -1 || distance > closestDistance)
                    {
                        result          = entity;
                        closestDistance = distance;
                    }
                }
            }

            return(result);
        }