OldBlueWater/BlueWater/Assets/02.Scripts/Ai/NewBehaviorTree/Variable/Set/CompareSharedFloat2.cs
NTG c61ccb46a5 $43 FieldBoss01 테스트 작업
+ FieldBoss01 BT 구현
+ FieldBoss01가 사용하는 스킬(LineRush, LavaEruption, BigLavaEruption, VolcanicEruption) 추가
+ 보스 전용 HpSlider 추가
2023-11-28 22:45:40 +09:00

65 lines
2.1 KiB
C#

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;
/// <summary>
/// 비교 값이 true면 Success, false면 Running
/// </summary>
public override TaskStatus OnUpdate()
{
return CompareInequality(variable.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
public override void OnReset()
{
compareTo = 0;
}
/// <summary>
/// 부등호 선택에 따른 bool값 리턴
/// </summary>
/// <returns></returns>
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()
};
}
}
}