summaryrefslogtreecommitdiff
path: root/Thronefall_v1.0/Decompile/TargetPriority.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Thronefall_v1.0/Decompile/TargetPriority.cs')
-rw-r--r--Thronefall_v1.0/Decompile/TargetPriority.cs127
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;
+ }
+}