12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /// 状态代理类
- #ifndef RUStateDelegate_h
- #define RUStateDelegate_h
- #include "RUDefine.h"
- NS_RU_BEGIN
- //状态机动作信息
- typedef struct _StateActInfo
- {
- std::string actType = "";
- std::map<std::string, std::string> actParams;
- } StateActInfo;
- class State;
- class StateDelegate
- {
- public:
- StateDelegate() = default;
- ~StateDelegate() = default;
- virtual void setUserObject(void *userObject);
- virtual void* getUserObject();
-
- virtual void entry(State* state, const std::vector<StateActInfo>& stateActInfo, std::function<void(void)> actFinishCb = nullptr);
- virtual void idle(State* state, const std::vector<StateActInfo>& stateActInfo, std::function<void(void)> actFinishCb = nullptr);
- virtual void exit(State* state, const std::vector<StateActInfo>& stateActInfo, std::function<void(void)> actFinishCb = nullptr);
-
- virtual void beforeSwitch(State* state, const std::vector<StateActInfo>& stateActInfo, StateActInfo evt, std::function<void(void)> actFinishCb = nullptr);
- virtual void afterSwitch(State* state, const std::vector<StateActInfo>& stateActInfo, StateActInfo evt, std::function<void(void)> actFinishCb = nullptr);
-
- protected:
- /// 执行单个状态动作
- /// @param state 状态
- /// @param stateActInfo 待执行的动作
- virtual void execStateAct(State* state,
- const StateActInfo* stateActInfo,
- const std::map<string, string>& eventParams,
- const std::function<void(void)>& actFinishCb = nullptr);
-
- private:
- /// 执行一系列的状态动作
- /// @param state 状态
- /// @param stateActsInfo 待执行的动作列表
- void execStateActList(State* state,
- const std::vector<StateActInfo>& stateActsInfo,
- const std::function<void(void)>& actFinishCb = nullptr);
- void execStateActList(State* state,
- const std::vector<StateActInfo>& stateActsInfo,
- const std::map<string, string>& eventParams,
- const std::function<void(void)>& actFinishCb = nullptr);
- void execStateActListRecursively(State* state,
- const std::vector<StateActInfo>& stateActsInfo,
- const std::function<void(void)>& actFinishCb = nullptr);
- void execStateActListRecursively(State* state,
- const std::vector<StateActInfo>& stateActsInfo,
- const std::map<string, string>& eventParams,
- const std::function<void(void)>& actFinishCb = nullptr);
-
-
- private:
- void *_userObject = nullptr;
- };
- NS_RU_END
- #endif /* RUStateDelegate_h */
|