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