修复了事件跳转状态跳转的问题,但是目前事件跳转仍然不完善,返回使用指针跳转的状态

This commit is contained in:
zjk
2024-12-02 23:21:55 +08:00
parent ec595ac1dc
commit d9d715326a
7 changed files with 153 additions and 126 deletions
+19 -1
View File
@@ -46,7 +46,15 @@ PowerManger::PowerManger()
m_fsm.RegisterHandleFunction(&m_state3,handleState3);
// 注册状态机转换条件
// m_fsm.RegisterEvent()
// m_fsm.RegisterEvent(&m_state1, "a", &m_state2);
// m_fsm.RegisterEvent(&m_state2, "b", &m_state3);
// m_fsm.RegisterEvent(&m_state3, "c", &m_state1);
// cout << m_state1.event["a"]->name << endl;
// cout << m_state2.event["b"]->name << endl;
// cout << m_state1.event["a"]->id << endl;
// m_pmEvent = "a";
// 初始化状态机
m_pmState = m_state1;
@@ -108,6 +116,13 @@ bool PowerManger::OnConnectToServer()
bool PowerManger::Iterate()
{
m_fsm.run(m_pmState,this);
// m_fsm.run(&m_pmState,this,m_pmEvent);
cout <<"CURRENT STATE:" << m_pmState.name << " | CURRENT EVENT :" << m_pmEvent << endl;
// cout <<"____________________________________-" << m_pmState.event[m_pmEvent]->name << endl;
// cout << m_pmState.name << endl;
// cout << m_pmEvent << endl;
AppCastingMOOSApp::Iterate();
// 更新当前状态
updatePmState();
@@ -785,6 +800,7 @@ int PowerManger::handleState1(FSM_State &fsm,void* pData)
cout << fsm.name << endl;
PowerManger* pm = (PowerManger*)pData;
fsm = pm->m_fsm.getState("PM_STATE2");
// pm->m_pmEvent = "a";
return 0;
}
int PowerManger::handleState2(FSM_State &fsm,void* pData)
@@ -792,6 +808,7 @@ int PowerManger::handleState2(FSM_State &fsm,void* pData)
cout << fsm.name << endl;
PowerManger* pm = (PowerManger*)pData;
fsm = pm->m_fsm.getState("PM_STATE3");
// pm->m_pmEvent = "b";
return 0;
}
int PowerManger::handleState3(FSM_State &fsm,void* pData)
@@ -799,5 +816,6 @@ int PowerManger::handleState3(FSM_State &fsm,void* pData)
cout << fsm.name << endl;
PowerManger* pm = (PowerManger*)pData;
fsm = pm->m_fsm.getState("PM_STATE");
// pm->m_pmEvent = "c";
return 0;
}