using System.Text; using Schema; using UnityEngine; using VOID.Generic.Dict; using VOID.Generic.Objects.Unit; namespace VOID.Generic.AI.Schema.Conditionals { [DarkIcon("Conditionals/d_IsNull")] [LightIcon("Conditionals/IsNull")] [Category(SchemaCategory.ThisUnit)] public class IsUnitInSight : Conditional { [SerializeField] private AttitudeType _attitudeType; public override bool Evaluate(object nodeMemory, SchemaAgent agent) { return (agent as UnitObjectSchemaAgent)?.unit.unitSenses.GetUnitsInSightByAttitude(_attitudeType).Count > 0; } public override GUIContent GetConditionalContent() { var sb = new StringBuilder(); if (invert) sb.Append("NOT "); sb.Append( $"{nameof(UnitObjectSenses)} has at least one {_attitudeType} in range"); return new GUIContent(sb.ToString()); } } }