namespace GFramework.Core.Abstractions.state;
///
/// 状态机接口,用于管理状态的注册、切换和验证
///
public interface IStateMachine
{
///
/// 获取当前激活的状态
///
IState? Current { get; }
///
/// 注册一个状态到状态机中
///
/// 要注册的状态实例
void Register(IState state);
///
/// 从状态机中注销指定类型的状态
///
/// 要注销的状态类型,必须实现IState接口
void Unregister() where T : IState;
///
/// 检查是否可以切换到指定类型的状态
///
/// 目标状态类型,必须实现IState接口
/// 如果可以切换则返回true,否则返回false
bool CanChangeTo() where T : IState;
///
/// 切换到指定类型的状态
///
/// 要切换到的状态类型,必须实现IState接口
void ChangeTo() where T : IState;
}