using System;
using System.Collections.Generic;
namespace BaseGames.AI
{
/// 一个状态:进入/每帧/退出钩子 + 出边转换列表(按优先级有序,首个命中即转)。
public sealed class AiState
{
readonly List _transitions = new List();
public string Name { get; }
public Action OnEnter { get; internal set; }
public Action OnTick { get; internal set; } // (ctx, dt)
public Action OnExit { get; internal set; }
public IReadOnlyList Transitions => _transitions;
///
/// 是否为终态:进入后不再离开是设计意图,而非漏挂出边。
/// 由 标记,供 Build() 的死角校验放行。
///
public bool IsTerminal { get; internal set; }
internal void AddTransition(Transition t) => _transitions.Add(t);
public AiState(string name) => Name = name;
}
}