📄 state.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 + -