Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

94 lines (57 sloc) 1.681 kb
///**********************
///状态机类
///************************
#ifndef stateMachine_h_h_h
#define stateMachine_h_h_h
#include "State.h"
#include <vector>
class StateMachine
{
public:
///构造函数
StateMachine();
///析构函数
virtual ~StateMachine();
/**初始化函数,一般在这个函数里注册所有的状态
*在这个函数里需要手动指定当前活动状态。同时调用活动状态的begin函数
*/
virtual void initState()=0;
/**每帧更新函数
*@param time 上一帧到当前帧的时间
*/
virtual void update(float time);
/**消除所有状态
*@remark 会删除所有状态的内存
*/
void destroyAllState();
/**查找指定类型状态
*@return 如果没找到返回空
*/
State* findState(StateType type);
/**注册一个新的状态
*@return 如果已经注册了返回false
*/
bool registerState(State* pState);
/**注销一个状态
*@return 成功返回真。失败返回假
*@remark 不会清空状态内存。注销的状态需要用户手工删除
*/
bool unregisterState(StateType type);
/**获取状态的数量*/
size_t getStateCount()const {return m_stateCollect.size();}
/**获取指定索引的状态指针
*无返回空
*/
State* getState(unsigned int index) const ;
/**返回当前活动状态*/
State* getCurrentActive()const {return m_pcurrentState;}
///设置游戏开始的状态
void setBeginState(StateType GS);
protected:
typedef std::vector<State*> StateCollect;
///所有类型状态机容器
StateCollect m_stateCollect;
//保存当前的状态类型
State* m_pcurrentState;
};
#endif
Jump to Line
Something went wrong with that request. Please try again.