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