FsmBase.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using System;
  8. namespace GameFramework.Fsm
  9. {
  10. /// <summary>
  11. /// 有限状态机基类。
  12. /// </summary>
  13. public abstract class FsmBase
  14. {
  15. private string m_Name;
  16. /// <summary>
  17. /// 初始化有限状态机基类的新实例。
  18. /// </summary>
  19. public FsmBase()
  20. {
  21. m_Name = string.Empty;
  22. }
  23. /// <summary>
  24. /// 获取有限状态机名称。
  25. /// </summary>
  26. public string Name
  27. {
  28. get
  29. {
  30. return m_Name;
  31. }
  32. protected set
  33. {
  34. m_Name = value ?? string.Empty;
  35. }
  36. }
  37. /// <summary>
  38. /// 获取有限状态机完整名称。
  39. /// </summary>
  40. public string FullName
  41. {
  42. get
  43. {
  44. return new TypeNamePair(OwnerType, m_Name).ToString();
  45. }
  46. }
  47. /// <summary>
  48. /// 获取有限状态机持有者类型。
  49. /// </summary>
  50. public abstract Type OwnerType
  51. {
  52. get;
  53. }
  54. /// <summary>
  55. /// 获取有限状态机中状态的数量。
  56. /// </summary>
  57. public abstract int FsmStateCount
  58. {
  59. get;
  60. }
  61. /// <summary>
  62. /// 获取有限状态机是否正在运行。
  63. /// </summary>
  64. public abstract bool IsRunning
  65. {
  66. get;
  67. }
  68. /// <summary>
  69. /// 获取有限状态机是否被销毁。
  70. /// </summary>
  71. public abstract bool IsDestroyed
  72. {
  73. get;
  74. }
  75. /// <summary>
  76. /// 获取当前有限状态机状态名称。
  77. /// </summary>
  78. public abstract string CurrentStateName
  79. {
  80. get;
  81. }
  82. /// <summary>
  83. /// 获取当前有限状态机状态持续时间。
  84. /// </summary>
  85. public abstract float CurrentStateTime
  86. {
  87. get;
  88. }
  89. /// <summary>
  90. /// 有限状态机轮询。
  91. /// </summary>
  92. /// <param name="elapseSeconds">逻辑流逝时间,以秒为单位。</param>
  93. /// <param name="realElapseSeconds">当前已流逝时间,以秒为单位。</param>
  94. internal abstract void Update(float elapseSeconds, float realElapseSeconds);
  95. /// <summary>
  96. /// 关闭并清理有限状态机。
  97. /// </summary>
  98. internal abstract void Shutdown();
  99. }
  100. }