using System;
namespace TEngine
{
///
/// 流程管理器接口。
///
public interface IProcedureModule
{
///
/// 获取当前流程。
///
ProcedureBase CurrentProcedure
{
get;
}
///
/// 获取当前流程持续时间。
///
float CurrentProcedureTime
{
get;
}
///
/// 初始化流程管理器。
///
/// 有限状态机管理器。
/// 流程管理器包含的流程。
void Initialize(IFsmModule fsmModule, params ProcedureBase[] procedures);
///
/// 开始流程。
///
/// 要开始的流程类型。
void StartProcedure() where T : ProcedureBase;
///
/// 开始流程。
///
/// 要开始的流程类型。
void StartProcedure(Type procedureType);
///
/// 是否存在流程。
///
/// 要检查的流程类型。
/// 是否存在流程。
bool HasProcedure() where T : ProcedureBase;
///
/// 是否存在流程。
///
/// 要检查的流程类型。
/// 是否存在流程。
bool HasProcedure(Type procedureType);
///
/// 获取流程。
///
/// 要获取的流程类型。
/// 要获取的流程。
ProcedureBase GetProcedure() where T : ProcedureBase;
///
/// 获取流程。
///
/// 要获取的流程类型。
/// 要获取的流程。
ProcedureBase GetProcedure(Type procedureType);
///
/// 重启流程。
/// 默认使用第一个流程作为启动流程。
///
/// 新的的流程。
/// 是否重启成功。
/// 重启异常。
bool RestartProcedure(params ProcedureBase[] procedures);
}
}