马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
[table][tr][td](转帖)最近写的游戏老是有switch + call function.
于是使用表格把它们包起来,但是写得多了,还是做了个简单的封装:
class CTestState
{
public:
friend class CStateMachine;
enum MYSTATE
{
EM_S1 = 0,
EM_S2 = 1
};
CTestState () { m_state.SetCaller(this); }//: m_state(this) {}
CStateMachine m_state; //状态机对象
void Run();
void OnEvent();
private:
void MainState ( const EM_MACHINE_STATE &state ) {}
void MainState2( const EM_MACHINE_STATE &state );
};
CStateMachine::MYDATA CStateMachine::s_info[] = {
{CTestState::EM_S1, &CTestState::MainState, false},
{CTestState::EM_S2, &CTestState::MainState2,true}
};
<p>void CTestState::MainState2 (const EM_MACHINE_STATE &state )
{
switch (state)
{
case EM_MS_INIT:
cout |