using System; using System.Collections.Generic; namespace TEngine { /// /// 有限状态机接口。 /// /// 有限状态机持有者类型。 public interface IFsm where T : class { /// /// 获取有限状态机名称。 /// string Name { get; } /// /// 获取有限状态机完整名称。 /// string FullName { get; } /// /// 获取有限状态机持有者。 /// T Owner { get; } /// /// 获取有限状态机中状态的数量。 /// int FsmStateCount { get; } /// /// 获取有限状态机是否正在运行。 /// bool IsRunning { get; } /// /// 获取有限状态机是否被销毁。 /// bool IsDestroyed { get; } /// /// 获取当前有限状态机状态。 /// FsmState CurrentState { get; } /// /// 获取当前有限状态机状态持续时间。 /// float CurrentStateTime { get; } /// /// 开始有限状态机。 /// /// 要开始的有限状态机状态类型。 void Start() where TState : FsmState; /// /// 开始有限状态机。 /// /// 要开始的有限状态机状态类型。 void Start(Type stateType); /// /// 是否存在有限状态机状态。 /// /// 要检查的有限状态机状态类型。 /// 是否存在有限状态机状态。 bool HasState() where TState : FsmState; /// /// 是否存在有限状态机状态。 /// /// 要检查的有限状态机状态类型。 /// 是否存在有限状态机状态。 bool HasState(Type stateType); /// /// 获取有限状态机状态。 /// /// 要获取的有限状态机状态类型。 /// 要获取的有限状态机状态。 TState GetState() where TState : FsmState; /// /// 获取有限状态机状态。 /// /// 要获取的有限状态机状态类型。 /// 要获取的有限状态机状态。 FsmState GetState(Type stateType); /// /// 获取有限状态机的所有状态。 /// /// 有限状态机的所有状态。 FsmState[] GetAllStates(); /// /// 获取有限状态机的所有状态。 /// /// 有限状态机的所有状态。 void GetAllStates(List> results); /// /// 是否存在有限状态机数据。 /// /// 有限状态机数据名称。 /// 有限状态机数据是否存在。 bool HasData(string name); /// /// 获取有限状态机数据。 /// /// 要获取的有限状态机数据的类型。 /// 有限状态机数据名称。 /// 要获取的有限状态机数据。 TData GetData(string name); /// /// 设置有限状态机数据。 /// /// 要设置的有限状态机数据的类型。 /// 有限状态机数据名称。 /// 要设置的有限状态机数据。 void SetData(string name, TData data); /// /// 移除有限状态机数据。 /// /// 有限状态机数据名称。 /// 是否移除有限状态机数据成功。 bool RemoveData(string name); } }