Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / role / IState.cs
@小李xl 小李xl on 18 Nov 2022 1 KB Ai状态机调整
using System;/// <summary>
/// 状态接口
/// </summary>
public interface IState<T, S> where T : ActivityObject where S : Enum
{
    /// <summary>
    /// 当前状态对象对应的状态枚举类型
    /// </summary>
    S StateType { get; }

    /// <summary>
    /// 当前状态对象挂载的角色对象
    /// </summary>
    T Master { get; set; }

    /// <summary>
    /// 当前状态对象所处的状态机对象
    /// </summary>
    StateController<T, S> StateController { get; set; }

    /// <summary>
    /// 当从其他状态进入到当前状态时调用
    /// </summary>
    /// <param name="prev">上一个状态类型</param>
    /// <param name="args">切换当前状态时附带的参数</param>
    void Enter(S prev, params object[] args);

    /// <summary>
    /// 物理帧每帧更新
    /// </summary>
    void PhysicsProcess(float delta);

    /// <summary>
    /// 是否允许切换至下一个状态
    /// </summary>
    /// <param name="next">下一个状态类型</param>
    bool CanChangeState(S next);

    /// <summary>
    /// 从当前状态退出时调用
    /// </summary>
    /// <param name="next">下一个状态类型</param>
    void Exit(S next);
}