Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / role / IState.cs
@小李xl 小李xl on 18 Nov 2022 1 KB Ai状态机调整
  1. using System;/// <summary>
  2. /// 状态接口
  3. /// </summary>
  4. public interface IState<T, S> where T : ActivityObject where S : Enum
  5. {
  6. /// <summary>
  7. /// 当前状态对象对应的状态枚举类型
  8. /// </summary>
  9. S StateType { get; }
  10.  
  11. /// <summary>
  12. /// 当前状态对象挂载的角色对象
  13. /// </summary>
  14. T Master { get; set; }
  15.  
  16. /// <summary>
  17. /// 当前状态对象所处的状态机对象
  18. /// </summary>
  19. StateController<T, S> StateController { get; set; }
  20.  
  21. /// <summary>
  22. /// 当从其他状态进入到当前状态时调用
  23. /// </summary>
  24. /// <param name="prev">上一个状态类型</param>
  25. /// <param name="args">切换当前状态时附带的参数</param>
  26. void Enter(S prev, params object[] args);
  27.  
  28. /// <summary>
  29. /// 物理帧每帧更新
  30. /// </summary>
  31. void PhysicsProcess(float delta);
  32.  
  33. /// <summary>
  34. /// 是否允许切换至下一个状态
  35. /// </summary>
  36. /// <param name="next">下一个状态类型</param>
  37. bool CanChangeState(S next);
  38.  
  39. /// <summary>
  40. /// 从当前状态退出时调用
  41. /// </summary>
  42. /// <param name="next">下一个状态类型</param>
  43. void Exit(S next);
  44. }