diff options
Diffstat (limited to 'Thronefall_v1.0/Decompile/TargetPriority.cs')
-rw-r--r-- | Thronefall_v1.0/Decompile/TargetPriority.cs | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/Thronefall_v1.0/Decompile/TargetPriority.cs b/Thronefall_v1.0/Decompile/TargetPriority.cs new file mode 100644 index 0000000..55672c0 --- /dev/null +++ b/Thronefall_v1.0/Decompile/TargetPriority.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +[Serializable] +public class TargetPriority +{ + public List<TagManager.ETag> mustHaveTags = new List<TagManager.ETag>(); + + public List<TagManager.ETag> mayNotHaveTags = new List<TagManager.ETag>(); + + public float range; + + private List<TaggedObject> allTaggedObjects = new List<TaggedObject>(); + + private TagManager tagManager; + + public TaggedObject FindClosestTaggedObject(Vector3 _position) + { + TaggedObject taggedObject = TagManager.instance.FindClosestTaggedObjectWithTags(_position, mustHaveTags, mayNotHaveTags); + if (taggedObject == null) + { + return null; + } + float num = ((!(taggedObject.colliderForBigOjectsToMeasureDistance != null)) ? (taggedObject.transform.position - _position).magnitude : (taggedObject.colliderForBigOjectsToMeasureDistance.ClosestPoint(_position) - _position).magnitude); + if (num <= range) + { + return taggedObject; + } + return null; + } + + public TaggedObject FindHighestHealthObjectInRange(Vector3 _position) + { + tagManager = TagManager.instance; + allTaggedObjects.Clear(); + tagManager.FindAllTaggedObjectsWithTags(allTaggedObjects, mustHaveTags, mayNotHaveTags); + TaggedObject result = null; + float num = 0f; + for (int i = 0; i < allTaggedObjects.Count; i++) + { + if (!(tagManager.MeasureDistanceToTaggedObject(allTaggedObjects[i], _position) > range)) + { + Hp hp = allTaggedObjects[i].Hp; + if (hp.HpValue > num) + { + num = hp.HpValue; + result = allTaggedObjects[i]; + } + } + } + return result; + } + + public TaggedObject FindLowestHealthObjectInRange(Vector3 _position, bool _excludeFullHealthTargets = true) + { + tagManager = TagManager.instance; + allTaggedObjects.Clear(); + tagManager.FindAllTaggedObjectsWithTags(allTaggedObjects, mustHaveTags, mayNotHaveTags); + TaggedObject result = null; + float num = 100f; + for (int i = 0; i < allTaggedObjects.Count; i++) + { + if (!(tagManager.MeasureDistanceToTaggedObject(allTaggedObjects[i], _position) > range)) + { + Hp hp = allTaggedObjects[i].Hp; + if ((!_excludeFullHealthTargets || !(hp.HpPercentage >= 1f)) && hp.HpPercentage < num) + { + num = hp.HpPercentage; + result = allTaggedObjects[i]; + } + } + } + return result; + } + + public TaggedObject FindTaggedObject(Vector3 _position, out Vector3 _outPosition) + { + _outPosition = Vector3.zero; + TaggedObject taggedObject = TagManager.instance.FindClosestTaggedObjectWithTags(_position, mustHaveTags, mayNotHaveTags); + if (taggedObject == null) + { + return null; + } + float magnitude; + if (taggedObject.colliderForBigOjectsToMeasureDistance != null) + { + _outPosition = taggedObject.colliderForBigOjectsToMeasureDistance.ClosestPoint(_position); + magnitude = (_outPosition - _position).magnitude; + } + else + { + _outPosition = taggedObject.transform.position; + magnitude = (_outPosition - _position).magnitude; + } + if (magnitude <= range) + { + return taggedObject; + } + return null; + } + + public TaggedObject FindTaggedObjectCloseToHome(Vector3 _position, Vector3 _home, float _homeRange, out Vector3 _outPosition) + { + _outPosition = Vector3.zero; + TaggedObject taggedObject = TagManager.instance.FindClosestTaggedObjectWithTags(_position, mustHaveTags, mayNotHaveTags); + if (taggedObject == null) + { + return null; + } + if (taggedObject.colliderForBigOjectsToMeasureDistance != null) + { + _outPosition = taggedObject.colliderForBigOjectsToMeasureDistance.ClosestPoint(_position); + } + else + { + _outPosition = taggedObject.transform.position; + } + float magnitude = (_outPosition - _position).magnitude; + float magnitude2 = (_outPosition - _home).magnitude; + if (magnitude <= range || magnitude2 <= _homeRange) + { + return taggedObject; + } + return null; + } +} |