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