using System;
namespace TEngine
{
///
/// 有限状态机基类。
///
public abstract class FsmBase
{
private string _name;
///
/// 初始化有限状态机基类的新实例。
///
public FsmBase()
{
_name = string.Empty;
}
///
/// 获取有限状态机名称。
///
public string Name
{
get => _name;
protected set => _name = value ?? string.Empty;
}
///
/// 获取有限状态机完整名称。
///
public string FullName => new TypeNamePair(OwnerType, _name).ToString();
///
/// 获取有限状态机持有者类型。
///
public abstract Type OwnerType
{
get;
}
///
/// 获取有限状态机中状态的数量。
///
public abstract int FsmStateCount
{
get;
}
///
/// 获取有限状态机是否正在运行。
///
public abstract bool IsRunning
{
get;
}
///
/// 获取有限状态机是否被销毁。
///
public abstract bool IsDestroyed
{
get;
}
///
/// 获取当前有限状态机状态名称。
///
public abstract string CurrentStateName
{
get;
}
///
/// 获取当前有限状态机状态持续时间。
///
public abstract float CurrentStateTime
{
get;
}
///
/// 有限状态机轮询。
///
/// 逻辑流逝时间,以秒为单位。
/// 当前已流逝时间,以秒为单位。
internal abstract void Update(float elapseSeconds, float realElapseSeconds);
///
/// 关闭并清理有限状态机。
///
internal abstract void Shutdown();
}
}