📄 fallapartstate.cpp
字号:
#include "stdafx.h"
#include <Timer.h>
#include "FallApartState.h"
#include "Field.h"
#include <PacketStruct_CG.h>
#include <SinTable.h>
#include <3DEngine/3DTerrain/PathExplorer.h>
#include <math.h>
#include "BattleRecord.h"
#include "AIParamParser.h"
FallApartState::FallApartState()
{
m_bFindDestPos = FALSE;
}
FallApartState::~FallApartState()
{
}
VOID FallApartState::Init()
{
}
VOID FallApartState::OnEnter( LPARAM param1, LPARAM param2, LPARAM param3 )
{
m_bFindDestPos = FALSE;
State::OnEnter( param1, param2, param3 );
}
VOID FallApartState::OnExit()
{
State::OnExit();
}
VOID FallApartState::OnUpdate( DWORD dwDeltaTick )
{
__UNUSED(dwDeltaTick);
// 格利瘤甫 茫疽栏搁
if( m_bFindDestPos )
{
// 捞悼捞 场朝 锭鳖瘤 扁促赴促.
if( !m_pNPC->IsMoving() )
{
if( m_pNPC->GetTargetChar() )
{
m_pNPC->ChangeState( STATE_ID_ATTACK );
}
else
{
m_pNPC->ChangeState( STATE_ID_IDLE );
}
}
}
// 给 茫疽栏搁 促矫 矫档茄促.
else
{
FallApart();
}
}
VOID FallApartState::FallApart()
{
// 鸥百捞 绝栏搁 Idle惑怕肺 倒酒埃促.
Character* pTargetChar = m_pNPC->GetTargetChar();
if( !pTargetChar )
{
SUNLOG( eFULL_LOG, "[FallApart] m_pTargetChar is NULL!" );
m_pNPC->ChangeState( STATE_ID_IDLE );
return;
}
AIParamInfo& stAIParamInfo = AIParamParser::Instance()->GetInfo();
WzVector vTargetPos, vMovement, vTrackPos;
pTargetChar->GetPos( &vTargetPos );
int iAngle = rand() % 360;
float fDistance = random( stAIParamInfo.m_fFALLAPART_MIN_ATTACK_RANGE_LIMIT*110, stAIParamInfo.m_fFALLAPART_MIN_ATTACK_RANGE_LIMIT*150 ) / 100.f;
vMovement.x = (float)( fDistance * FCOS(iAngle) );
vMovement.y = (float)( fDistance * FSIN(iAngle) );
vMovement.z = 0.0f;
vTrackPos = vTargetPos + vMovement;
if( m_pNPC->MoveAndBroadcast( &vTrackPos, CMS_RUN ) )
{
m_bFindDestPos = TRUE;
}
}
// 饭明绊 公矫
VOID FallApartState::OnMsgLetsGo( AI_MSG *pMsg )
{
}
// 利惯斑 公矫
VOID FallApartState::OnMsgEnemyFound( AI_MSG *pMsg )
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -