⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsm.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 H
字号:
#ifndef _FSM_H_
#define _FSM_H_

#include <windows.h>
#include <map>

using namespace std;

enum ENUM_FSM_CONDITION_ID
{
	FCID_MOVE_COMPLETE,
	FCID_ENOUGH_REST,
	FCID_TARGET_FOUND,
	FCID_TARGET_LOST,
	FCID_CLOSE_TO_TARGET,
	FCID_TARGET_IS_OUT_OF_ATTACK_RANGE,
	FCID_TARGET_CHANGE,
	FCID_HELP_REQUEST,
	FCID_DEAD
};

class State;
class NPC;
struct AI_MSG;

typedef std::map<DWORD, State*>			STATE_MAP;
typedef std::pair<DWORD, State*>		STATE_MAP_PAIR;
typedef STATE_MAP::iterator				STATE_MAP_ITER;

//=================================================================================================
/// Finite State Machine Class
/**
	@author
			Baek Sang Hyun
	@since
			2004. 9. 8
	@remarks			
			- (State ID, 惑怕 努贰胶 器牢磐)甫 pair肺 窍绰 甘阑 蜡瘤, 包府茄促.
*/
//=================================================================================================
class FSM
{
public:
	FSM();
	~FSM();

public:
	VOID				AddTransition( DWORD stateID, DWORD conditionID, DWORD outputStateID );
	VOID				RemoveAllTransition();
	VOID				Init( NPC *pNPC, DWORD stateID );
	VOID				SetInitialState( DWORD stateID );
	VOID				Transition( DWORD conditionID );
	BOOL				OnAIMsg( AI_MSG *pMsg );
	VOID				Update();

	DWORD				GetCurStateID();

private:
	VOID				Create();
	VOID				Destroy();
	VOID				AddState( DWORD stateID, State *pState );
	VOID				ChangeState();

	NPC					*m_pNPC;
	State				*m_pCurState;
	STATE_MAP			m_mapStates;
	BOOL				m_bStateChange;
	DWORD				m_dwNextStateID;

	DWORD				m_numStateChangePerSec;
	DWORD				m_dwLastStateChangeCheckedTick;
};

#endif // _FSM_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -