RUStateDelegate.h 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /// 状态代理类
  2. #ifndef RUStateDelegate_h
  3. #define RUStateDelegate_h
  4. #include "RUDefine.h"
  5. NS_RU_BEGIN
  6. //状态机动作信息
  7. typedef struct _StateActInfo
  8. {
  9. std::string actType = "";
  10. std::map<std::string, std::string> actParams;
  11. } StateActInfo;
  12. class State;
  13. class StateDelegate
  14. {
  15. public:
  16. StateDelegate() = default;
  17. ~StateDelegate() = default;
  18. virtual void setUserObject(void *userObject);
  19. virtual void* getUserObject();
  20. virtual void entry(State* state, const std::vector<StateActInfo>& stateActInfo, std::function<void(void)> actFinishCb = nullptr);
  21. virtual void idle(State* state, const std::vector<StateActInfo>& stateActInfo, std::function<void(void)> actFinishCb = nullptr);
  22. virtual void exit(State* state, const std::vector<StateActInfo>& stateActInfo, std::function<void(void)> actFinishCb = nullptr);
  23. virtual void beforeSwitch(State* state, const std::vector<StateActInfo>& stateActInfo, StateActInfo evt, std::function<void(void)> actFinishCb = nullptr);
  24. virtual void afterSwitch(State* state, const std::vector<StateActInfo>& stateActInfo, StateActInfo evt, std::function<void(void)> actFinishCb = nullptr);
  25. protected:
  26. /// 执行单个状态动作
  27. /// @param state 状态
  28. /// @param stateActInfo 待执行的动作
  29. virtual void execStateAct(State* state,
  30. const StateActInfo* stateActInfo,
  31. const std::map<string, string>& eventParams,
  32. const std::function<void(void)>& actFinishCb = nullptr);
  33. private:
  34. /// 执行一系列的状态动作
  35. /// @param state 状态
  36. /// @param stateActsInfo 待执行的动作列表
  37. void execStateActList(State* state,
  38. const std::vector<StateActInfo>& stateActsInfo,
  39. const std::function<void(void)>& actFinishCb = nullptr);
  40. void execStateActList(State* state,
  41. const std::vector<StateActInfo>& stateActsInfo,
  42. const std::map<string, string>& eventParams,
  43. const std::function<void(void)>& actFinishCb = nullptr);
  44. void execStateActListRecursively(State* state,
  45. const std::vector<StateActInfo>& stateActsInfo,
  46. const std::function<void(void)>& actFinishCb = nullptr);
  47. void execStateActListRecursively(State* state,
  48. const std::vector<StateActInfo>& stateActsInfo,
  49. const std::map<string, string>& eventParams,
  50. const std::function<void(void)>& actFinishCb = nullptr);
  51. private:
  52. void *_userObject = nullptr;
  53. };
  54. NS_RU_END
  55. #endif /* RUStateDelegate_h */