📄 stopidlestate.cpp
字号:
#include "stdafx.h"
#include "StopIdleState.h"
#include "Field.h"
#include <Timer.h>
#include "AIParamParser.h"
StopIdleState::StopIdleState()
{
m_pSearchTimer = new util::Timer;
}
StopIdleState::~StopIdleState()
{
SAFE_DELETE( m_pSearchTimer );
}
VOID StopIdleState::Init()
{
}
VOID StopIdleState::OnEnter( LPARAM param1, LPARAM param2, LPARAM param3 )
{
State::OnEnter( param1, param2, param3 );
AIParamInfo& stAIParamInfo = AIParamParser::Instance()->GetInfo();
m_pSearchTimer->SetTimer( stAIParamInfo.m_wSEARCH_PERIOD );
// 鸥百捞 乐栏搁 傍拜规过阑 茫绰促. 弊贰具 傍拜荤芭府甫 备且 荐啊 乐促.
if( m_pNPC->GetTargetChar() )
m_pNPC->SelectSkill();
}
VOID StopIdleState::OnExit()
{
State::OnExit();
}
VOID StopIdleState::OnUpdate( DWORD dwDeltaTick )
{
__UNUSED(dwDeltaTick);
if( m_pSearchTimer->IsExpired() )
{
// 鸥百捞 绝栏搁 矫具郴狼 利焙阑 茫绰促.
Character* pTargetChar = m_pNPC->GetTargetChar();
if( !pTargetChar )
{
pTargetChar = m_pNPC->SearchTarget();
if( pTargetChar )
{
m_pNPC->SetTargetChar( pTargetChar );
m_pNPC->SelectSkill();
}
}
// 鸥百捞 乐栏搁
if( pTargetChar )
{
// 傍拜 规过 急琶登绢 乐瘤 臼栏搁 急琶
if( m_pNPC->GetSelectedSkill() == SKILLCODE_INVALID )
{
m_pNPC->SelectSkill();
}
AIParamInfo& stAIParamInfo = AIParamParser::Instance()->GetInfo();
// 鸥百捞 傍拜 荤芭府 郴俊 甸绢乐栏搁 Attack 惑怕肺 傈捞
if( m_pNPC->GetDistToTarget() > (m_pNPC->GetAttackRange()+stAIParamInfo.m_fRANGE_TOLERANCE) )
return;
// 弊缝狼 老盔捞搁 糕滚甸俊霸 利 惯斑 皋技瘤甫 焊辰促.
if( m_pNPC->IsMemberOfGroup() )
{
AI_MSG_ENEMY_FOUND aiMsg;
aiMsg.dwTargetObjectKey = pTargetChar->GetObjectKey();
m_pNPC->SendAIMessageToGroupExceptMe( &aiMsg, sizeof(aiMsg) );
}
m_pNPC->ChangeState( STATE_ID_ATTACK );
}
}
}
VOID StopIdleState::OnMsgAttacked( AI_MSG *pMsg )
{
State::OnMsgAttacked( pMsg );
AI_MSG_ATTACKED *pAttackMsg = (AI_MSG_ATTACKED*)pMsg;
Field* pField = m_pNPC->GetField();
if( !pField ) return;
Character* pAttacker = pField->FindCharacter( pAttackMsg->dwAttackerKey );
if( !pAttacker ) return;
// 惑措啊 利焙捞搁 傍拜 惑怕肺 傈捞
if( !m_pNPC->IsFriend( pAttacker ) )
{
m_pNPC->SetTargetChar( pAttacker );
m_pNPC->ChangeState( STATE_ID_TRACK );
}
}
VOID StopIdleState::OnMsgLeaveField( AI_MSG *pMsg )
{
AI_MSG_LEAVE_FIELD *pLeaveMsg = (AI_MSG_LEAVE_FIELD*)pMsg;
m_pNPC->RemoveEnemy( pLeaveMsg->dwObjectKey );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -