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

📄 returnstate.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
字号:
#include "stdafx.h"
#include <Timer.h>
#include "ReturnState.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"
#include "StatusManager.h"
#include "Monster.h"


ReturnState::ReturnState()
{
	m_bRegenPosSelected = FALSE;
}

ReturnState::~ReturnState()
{
}

VOID ReturnState::Init()
{	
}

VOID ReturnState::OnEnter( LPARAM param1, LPARAM param2, LPARAM param3 )
{
	State::OnEnter( param1, param2, param3 );

	if( m_pMonster->MoveAndBroadcast( &m_pMonster->GetRegenPos(), CMS_RUN ) )
	{
		m_bRegenPosSelected = TRUE;
	}
	else
	{
		m_bRegenPosSelected = FALSE;
	}
	
	m_pMonster->GetStatusManager()->AllocStatus( eCHAR_STATE_ETC_RETURNING );
}

VOID ReturnState::OnExit()
{
	State::OnExit();

	// 客快贸烦 HP full肺 盲况林绰 巴档 亮瘤 臼阑鳖;;

	// 傈捧沥焊 檬扁拳
	//m_pMonster->GetBattleRecord().Init();

	m_pMonster->GetStatusManager()->Remove( eCHAR_STATE_ETC_RETURNING );
}

VOID ReturnState::OnUpdate( DWORD dwDeltaTick )
{
	__UNUSED(dwDeltaTick);

	// 捞悼捞 场唱搁 促矫 RegenPos肺 框流牢促.
	if( !m_pMonster->IsMoving() )
	{
		// 格利瘤俊 档崔窍搁 Idle惑怕肺 傈捞
		if( m_bRegenPosSelected )
		{
			m_pMonster->ChangeState( STATE_ID_IDLE );
			return;
		}
		// 格利瘤俊 档崔且 锭鳖瘤 促矫 捞悼
		else
		{
			DoReturn();
		}
	}
}

VOID ReturnState::DoReturn()
{
	WzVector wvCurPos, wvDestPos, wvMovement, wvNormal;
	m_pMonster->GetPos( &wvCurPos );

	// 捞悼且 芭府甫 备茄促.
	AIParamInfo& stAIParamInfo = AIParamParser::Instance()->GetInfo();
	float MOVE_DISTANCE = random( stAIParamInfo.m_fMIN_MOVE_DISTANCE*10, stAIParamInfo.m_fMAX_MOVE_DISTANCE*10 ) / 10.f;
	float fDistFromRegenPos = VectorLength( &(m_pMonster->GetRegenPos() - wvCurPos) );
	if( MOVE_DISTANCE >= fDistFromRegenPos )
	{
		MOVE_DISTANCE = fDistFromRegenPos;
		m_bRegenPosSelected = TRUE;
	}

	// RegenPos甫 氢秦 炼陛究 辨茫扁茄促.
	VectorNormalize( &wvNormal, &( m_pMonster->GetRegenPos() - wvCurPos ) );
	wvMovement = wvNormal * MOVE_DISTANCE;

	wvDestPos = wvCurPos + wvMovement;

	// 捞悼啊瓷 咯何甫 眉农饶 菩哦阑 朝赴促.
	if(!m_pMonster->MoveAndBroadcast( &wvDestPos, CMS_RUN ) )
	{
		// 捞悼捞 角菩窍搁 流立 府哩谅钎肺 捞悼秦夯促.
		if( !m_pMonster->MoveAndBroadcast( &m_pMonster->GetRegenPos(), CMS_RUN ) )
		{
			// 弊贰档 角菩窍搁 府哩谅钎甫 泅犁 谅钎肺 悸泼秦 滚赴促!
			m_pMonster->SetRegenPos( wvCurPos );
			m_pMonster->ChangeState( STATE_ID_IDLE );
		}
	}
}

// 饭明绊 公矫
VOID ReturnState::OnMsgLetsGo( AI_MSG *pMsg )
{
}

// 利 惯斑 公矫
VOID ReturnState::OnMsgEnemyFound( AI_MSG *pMsg )
{
}



















⌨️ 快捷键说明

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