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);
}
}