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); }
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>(); }
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); } } } }
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); } } } }
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>(); }
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); }