using System; using System.Collections.Generic; using UnityEngine; namespace TEngine { /// /// 有限状态机模块。 /// [DisallowMultipleComponent] public sealed class FsmModule : Module { private IFsmManager _fsmManager = null; /// /// 获取有限状态机数量。 /// public int Count => _fsmManager.Count; /// /// 游戏框架模块初始化。 /// protected override void Awake() { base.Awake(); _fsmManager = ModuleImpSystem.GetModule(); if (_fsmManager == null) { Log.Fatal("FSM manager is invalid."); return; } } /// /// 检查是否存在有限状态机。 /// /// 有限状态机持有者类型。 /// 是否存在有限状态机。 public bool HasFsm() where T : class { return _fsmManager.HasFsm(); } /// /// 检查是否存在有限状态机。 /// /// 有限状态机持有者类型。 /// 是否存在有限状态机。 public bool HasFsm(Type ownerType) { return _fsmManager.HasFsm(ownerType); } /// /// 检查是否存在有限状态机。 /// /// 有限状态机持有者类型。 /// 有限状态机名称。 /// 是否存在有限状态机。 public bool HasFsm(string name) where T : class { return _fsmManager.HasFsm(name); } /// /// 检查是否存在有限状态机。 /// /// 有限状态机持有者类型。 /// 有限状态机名称。 /// 是否存在有限状态机。 public bool HasFsm(Type ownerType, string name) { return _fsmManager.HasFsm(ownerType, name); } /// /// 获取有限状态机。 /// /// 有限状态机持有者类型。 /// 要获取的有限状态机。 public IFsm GetFsm() where T : class { return _fsmManager.GetFsm(); } /// /// 获取有限状态机。 /// /// 有限状态机持有者类型。 /// 要获取的有限状态机。 public FsmBase GetFsm(Type ownerType) { return _fsmManager.GetFsm(ownerType); } /// /// 获取有限状态机。 /// /// 有限状态机持有者类型。 /// 有限状态机名称。 /// 要获取的有限状态机。 public IFsm GetFsm(string name) where T : class { return _fsmManager.GetFsm(name); } /// /// 获取有限状态机。 /// /// 有限状态机持有者类型。 /// 有限状态机名称。 /// 要获取的有限状态机。 public FsmBase GetFsm(Type ownerType, string name) { return _fsmManager.GetFsm(ownerType, name); } /// /// 获取所有有限状态机。 /// public FsmBase[] GetAllFsms() { return _fsmManager.GetAllFsms(); } /// /// 获取所有有限状态机。 /// /// 所有有限状态机。 public void GetAllFsms(List results) { _fsmManager.GetAllFsms(results); } /// /// 创建有限状态机。 /// /// 有限状态机持有者类型。 /// 有限状态机持有者。 /// 有限状态机状态集合。 /// 要创建的有限状态机。 public IFsm CreateFsm(T owner, params FsmState[] states) where T : class { return _fsmManager.CreateFsm(owner, states); } /// /// 创建有限状态机。 /// /// 有限状态机持有者类型。 /// 有限状态机名称。 /// 有限状态机持有者。 /// 有限状态机状态集合。 /// 要创建的有限状态机。 public IFsm CreateFsm(string name, T owner, params FsmState[] states) where T : class { return _fsmManager.CreateFsm(name, owner, states); } /// /// 创建有限状态机。 /// /// 有限状态机持有者类型。 /// 有限状态机持有者。 /// 有限状态机状态集合。 /// 要创建的有限状态机。 public IFsm CreateFsm(T owner, List> states) where T : class { return _fsmManager.CreateFsm(owner, states); } /// /// 创建有限状态机。 /// /// 有限状态机持有者类型。 /// 有限状态机名称。 /// 有限状态机持有者。 /// 有限状态机状态集合。 /// 要创建的有限状态机。 public IFsm CreateFsm(string name, T owner, List> states) where T : class { return _fsmManager.CreateFsm(name, owner, states); } /// /// 销毁有限状态机。 /// /// 有限状态机持有者类型。 /// 是否销毁有限状态机成功。 public bool DestroyFsm() where T : class { return _fsmManager.DestroyFsm(); } /// /// 销毁有限状态机。 /// /// 有限状态机持有者类型。 /// 是否销毁有限状态机成功。 public bool DestroyFsm(Type ownerType) { return _fsmManager.DestroyFsm(ownerType); } /// /// 销毁有限状态机。 /// /// 有限状态机持有者类型。 /// 要销毁的有限状态机名称。 /// 是否销毁有限状态机成功。 public bool DestroyFsm(string name) where T : class { return _fsmManager.DestroyFsm(name); } /// /// 销毁有限状态机。 /// /// 有限状态机持有者类型。 /// 要销毁的有限状态机名称。 /// 是否销毁有限状态机成功。 public bool DestroyFsm(Type ownerType, string name) { return _fsmManager.DestroyFsm(ownerType, name); } /// /// 销毁有限状态机。 /// /// 有限状态机持有者类型。 /// 要销毁的有限状态机。 /// 是否销毁有限状态机成功。 public bool DestroyFsm(IFsm fsm) where T : class { return _fsmManager.DestroyFsm(fsm); } /// /// 销毁有限状态机。 /// /// 要销毁的有限状态机。 /// 是否销毁有限状态机成功。 public bool DestroyFsm(FsmBase fsm) { return _fsmManager.DestroyFsm(fsm); } } }