#if GRAPH_DESIGNER
using UnityEngine;
using Opsive.BehaviorDesigner.Runtime.Tasks;
using Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals;
using BaseGames.Enemies;
namespace BaseGames.Enemies.AI
{
///
/// BD Conditional:敌人当前 EnemyStateType 是否与目标状态名称匹配。
/// TargetStateName 直接输入枚举名称字符串(Controlled / Hurt / Stagger / Dead),
/// 枚举值顺序变化时 BD 图不会静默失效。
///
public class BD_IsStateMatch : Conditional
{
/// 目标状态名称(Controlled / Hurt / Stagger / Dead)。
[SerializeField] private string m_TargetStateName = "Controlled";
private EnemyBase _enemy;
public override void OnStart()
{
_enemy = GetComponent();
}
public override TaskStatus OnUpdate()
{
if (_enemy == null) return TaskStatus.Failure;
if (!System.Enum.TryParse(m_TargetStateName, out var target))
{
Debug.LogError($"[BD_IsStateMatch] 未知状态名: '{m_TargetStateName}'," +
"有效值为 Controlled / Hurt / Stagger / Dead", gameObject);
return TaskStatus.Failure;
}
return _enemy.CurrentState == target
? TaskStatus.Success
: TaskStatus.Failure;
}
}
}
#endif