using System;
using System.Collections.Generic;
namespace TEngine
{
///
/// 有限状态机管理器。
///
public interface IFsmModule
{
///
/// 获取有限状态机数量。
///
int Count
{
get;
}
///
/// 检查是否存在有限状态机。
///
/// 有限状态机持有者类型。
/// 是否存在有限状态机。
bool HasFsm() where T : class;
///
/// 检查是否存在有限状态机。
///
/// 有限状态机持有者类型。
/// 是否存在有限状态机。
bool HasFsm(Type ownerType);
///
/// 检查是否存在有限状态机。
///
/// 有限状态机持有者类型。
/// 有限状态机名称。
/// 是否存在有限状态机。
bool HasFsm(string name) where T : class;
///
/// 检查是否存在有限状态机。
///
/// 有限状态机持有者类型。
/// 有限状态机名称。
/// 是否存在有限状态机。
bool HasFsm(Type ownerType, string name);
///
/// 获取有限状态机。
///
/// 有限状态机持有者类型。
/// 要获取的有限状态机。
IFsm GetFsm() where T : class;
///
/// 获取有限状态机。
///
/// 有限状态机持有者类型。
/// 要获取的有限状态机。
FsmBase GetFsm(Type ownerType);
///
/// 获取有限状态机。
///
/// 有限状态机持有者类型。
/// 有限状态机名称。
/// 要获取的有限状态机。
IFsm GetFsm(string name) where T : class;
///
/// 获取有限状态机。
///
/// 有限状态机持有者类型。
/// 有限状态机名称。
/// 要获取的有限状态机。
FsmBase GetFsm(Type ownerType, string name);
///
/// 获取所有有限状态机。
///
/// 所有有限状态机。
FsmBase[] GetAllFsms();
///
/// 获取所有有限状态机。
///
/// 所有有限状态机。
void GetAllFsms(List results);
///
/// 创建有限状态机。
///
/// 有限状态机持有者类型。
/// 有限状态机持有者。
/// 有限状态机状态集合。
/// 要创建的有限状态机。
IFsm CreateFsm(T owner, params FsmState[] states) where T : class;
///
/// 创建有限状态机。
///
/// 有限状态机持有者类型。
/// 有限状态机名称。
/// 有限状态机持有者。
/// 有限状态机状态集合。
/// 要创建的有限状态机。
IFsm CreateFsm(string name, T owner, params FsmState[] states) where T : class;
///
/// 创建有限状态机。
///
/// 有限状态机持有者类型。
/// 有限状态机持有者。
/// 有限状态机状态集合。
/// 要创建的有限状态机。
IFsm CreateFsm(T owner, List> states) where T : class;
///
/// 创建有限状态机。
///
/// 有限状态机持有者类型。
/// 有限状态机名称。
/// 有限状态机持有者。
/// 有限状态机状态集合。
/// 要创建的有限状态机。
IFsm CreateFsm(string name, T owner, List> states) where T : class;
///
/// 销毁有限状态机。
///
/// 有限状态机持有者类型。
/// 是否销毁有限状态机成功。
bool DestroyFsm() where T : class;
///
/// 销毁有限状态机。
///
/// 有限状态机持有者类型。
/// 是否销毁有限状态机成功。
bool DestroyFsm(Type ownerType);
///
/// 销毁有限状态机。
///
/// 有限状态机持有者类型。
/// 要销毁的有限状态机名称。
/// 是否销毁有限状态机成功。
bool DestroyFsm(string name) where T : class;
///
/// 销毁有限状态机。
///
/// 有限状态机持有者类型。
/// 要销毁的有限状态机名称。
/// 是否销毁有限状态机成功。
bool DestroyFsm(Type ownerType, string name);
///
/// 销毁有限状态机。
///
/// 有限状态机持有者类型。
/// 要销毁的有限状态机。
/// 是否销毁有限状态机成功。
bool DestroyFsm(IFsm fsm) where T : class;
///
/// 销毁有限状态机。
///
/// 要销毁的有限状态机。
/// 是否销毁有限状态机成功。
bool DestroyFsm(FsmBase fsm);
}
}