using System; using BehaviorDesigner.Runtime; using BehaviorDesigner.Runtime.Tasks; using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public enum Inequality { NONE = 0, LESS_THEN, LESS_THEN_OR_EQUAL_TO, GREATER_THEN, GREATER_THEN_OR_EQUAL_TO } [TaskCategory("Common")] [Serializable] public class CompareSharedFloat2 : Conditional { [RequiredField] public SharedFloat variable; [Header("비교값 float 설정")] public float compareTo; [Header("부등호 설정 - Tooltip 참고")] [BehaviorDesigner.Runtime.Tasks.Tooltip("LessThen : variable < compareTo\n" + "LessThenOrEqualTo : variable <= compareTo\n" + "GreaterThen : variable > compareTo\n" + "GreaterThenOrEqualTo : variable < compareTo\n")] public Inequality inequality; /// /// 비교 값이 true면 Success, false면 Running /// public override TaskStatus OnUpdate() { return CompareInequality(variable.Value) ? TaskStatus.Success : TaskStatus.Failure; } public override void OnReset() { compareTo = 0; } /// /// 부등호 선택에 따른 bool값 리턴 /// /// private bool CompareInequality(float value) { return inequality switch { Inequality.NONE => throw new Exception("부등호 미설정 오류"), Inequality.LESS_THEN => value < compareTo, Inequality.LESS_THEN_OR_EQUAL_TO => value <= compareTo, Inequality.GREATER_THEN => value > compareTo, Inequality.GREATER_THEN_OR_EQUAL_TO => value >= compareTo, _ => throw new ArgumentOutOfRangeException() }; } } }