📄 fsm.h
字号:
// FSM.h: interface for the CFSM class.
//
// 本程序是《疯狂的火星虫—面向对象状态机实践指南》的演示程序
//
// 版权所有 (C) 2004 王咏武
// http://www.contextfree.net/wangyw/
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_FSM_H__336B4996_DF5B_4CFE_BBF4_9D771F19CB23__INCLUDED_)
#define AFX_FSM_H__336B4996_DF5B_4CFE_BBF4_9D771F19CB23__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <vector>
#include "State.h"
using namespace std;
class CFSM
{
public:
CFSM() {}
virtual ~CFSM();
void Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
CString str(GetActiveLeaf());
ar << str;
}
else
{
// TODO: add loading code here
CString str;
ar >> str;
// 序列化后迁移状态
TransitTo(str);
}
}
void ActiveDefaultState();
void Active(CState * pRoot);
void TransitTo(const char * lpName);
void SendEvent(WORD wEvent, WORD wParam, DWORD lParam);
const char * GetActiveLeaf();
CState * GetState(const char * lpName);
protected:
vector<CState *> m_States; // 所有的状态
};
#endif // !defined(AFX_FSM_H__336B4996_DF5B_4CFE_BBF4_9D771F19CB23__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -