修复了事件跳转状态跳转的问题,但是目前事件跳转仍然不完善,返回使用指针跳转的状态
This commit is contained in:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user