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

📄 state.h

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

#include <windows.h>
#include <map>
#include "AITypes.h"
#include "NPC.h"

using namespace std;

enum ENUM_STATD_ID
{
	STATE_ID_UNKNOWN	= 0,
	STATE_ID_WANDER,
	STATE_ID_IDLE,
	STATE_ID_TRACK,
	STATE_ID_ATTACK,
	STATE_ID_HELP,
	STATE_ID_THRUST,
	STATE_ID_DEAD,
	STATE_ID_FLYING,
	STATE_ID_KNOCKDOWN,
	STATE_ID_JUMP,
	STATE_ID_FALL_APART,
	STATE_ID_RETURN,
	STATE_ID_RETREAT,
	STATE_ID_RUNAWAY,
	STATE_ID_CHAOS,
	STATE_ID_SUMMON_IDLE,
	STATE_ID_PATROL,
	STATE_ID_SPAWN_IDLE,
	STATE_ID_STOP_IDLE,
	STATE_ID_TRACK_AREA,
};

typedef std::map<DWORD, DWORD>		TRANSITION_MAP;
typedef std::pair<DWORD, DWORD>		TRANSITION_PAIR;
typedef TRANSITION_MAP::iterator	TRANSITION_ITER;

class NPC;

//=================================================================================================
// AI 惑怕 努贰胶
//	- 漂沥 炼扒俊 狼茄 惑怕 傈捞甸阑 眠啊窍绊 FSM俊 殿废茄促.
//	- 3俺狼 啊惑窃荐 OnEnter(), OnLeave(), OnUpdate()甫 犁沥狼茄促.
//=================================================================================================
class State
{
public:
	State();
	virtual ~State();

	virtual VOID			SetNPC( NPC *pNPC ) { m_pNPC = pNPC; }

	virtual VOID			Init() = 0;
	virtual VOID			OnEnter( LPARAM param1 = 0, LPARAM param2 = 0, LPARAM param3 = 0 );
	virtual VOID			OnExit();
	virtual VOID			OnUpdate( DWORD dwDeltaTick ) = 0;
	virtual VOID			OnAIMsg( AI_MSG *pMsg );

	inline	VOID			SetStateID( DWORD dwStateID )	{ m_dwStateID = dwStateID; }
	inline DWORD			GetStateID()	{ return m_dwStateID; }

protected:
	// State狼 备眉 努贰胶甸篮 鞘夸窍搁 皋技瘤 贸府 窃荐甸阑 坷滚扼捞爹 秦辑 荤侩窍档废...
	virtual VOID			OnMsgForceAttack( AI_MSG *pMsg );
	virtual VOID			OnMsgAttacked( AI_MSG *pMsg );
	virtual VOID			OnMsgHelpRequest( AI_MSG *pMsg );
	virtual VOID			OnMsgLeaveField( AI_MSG *pMsg );
	virtual VOID			OnMsgThrust( AI_MSG *pMsg );
	virtual VOID			OnMsgFlying( AI_MSG *pMsg );
	virtual VOID			OnMsgKnockDown( AI_MSG *pMsg );
	virtual VOID			OnMsgStun( AI_MSG *pMsg );
	virtual VOID			OnMsgGroupAttacked( AI_MSG *pMsg );
	virtual VOID			OnMsgLetsGo( AI_MSG *pMsg );
	virtual VOID			OnMsgEnemyFound( AI_MSG *pMsg );
	virtual VOID			OnMsgRunAway( AI_MSG *pMsg );
	virtual VOID			OnMsgChaos( AI_MSG *pMsg );
	virtual VOID			OnMsgChangeState( AI_MSG *pMsg );
	virtual VOID			OnMsgCommandFollow( AI_MSG *pMsg );
	virtual VOID			OnMsgUseSkill( AI_MSG *pMsg );

	// Group Command 包访
	virtual VOID			OnMsgGroupCommand( AI_MSG *pMsg );
	virtual VOID			OnMsgGroupCommand_Attack( DWORD dwTargetKey );
	virtual VOID			OnMsgGroupCommand_StopAttack();

	NPC						*m_pNPC;

	// test
	DWORD					m_dwPrevTick;
	DWORD					m_dwStateID;
};


#endif










⌨️ 快捷键说明

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