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

📄 partyiconmoveinfo.cpp

📁 墨香最新私服
💻 CPP
字号:
// PartyIconMoveInfo.cpp: implementation of the CPartyIconMoveInfo class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "PartyIconMoveInfo.h"
#include "MiniMapIcon.h"
#include "MoveManager.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPartyIconMoveInfo::CPartyIconMoveInfo()
{
	m_KyungGongIdx	= 0;
	m_MoveState		= eMoveMode_Walk;
	m_tgMaxIndex	= 0;
	m_tgIndex		= -1;
	m_MoveStartTime	= 0.f;
	m_MoveTime		= 0.f;
	m_Speed			= 0.f;
	m_DirectionX	= 0.f;
	m_DirectionZ	= 0.f;
}

CPartyIconMoveInfo::~CPartyIconMoveInfo()
{
}


void CPartyIconMoveInfo::Reset()
{
	m_KyungGongIdx	= 0;
	m_MoveState		= eMoveMode_Walk;
	m_tgMaxIndex	= 0;
	m_tgIndex		= -1;
	m_MoveStartTime	= 0.f;
	m_MoveTime		= 0.f;
	m_Speed			= 0.f;
	m_DirectionX	= 0.f;
	m_DirectionZ	= 0.f;
	
	memset(m_tPos, 0, sizeof(MoveCoord)*MAX_CHARTARGETPOSBUF_SIZE);
}


void CPartyIconMoveInfo::SetMoveInfo(PARTYICON_MOVEINFO* pMoveInfo)
{
	m_cPos = pMoveInfo->cPos;
	m_tgMaxIndex = pMoveInfo->tgCount;
	memset(m_tPos, 0, sizeof(MoveCoord)*MAX_CHARTARGETPOSBUF_SIZE);
	for(int i=0; i<m_tgMaxIndex; i++)
	{
		m_tPos[i].posX = pMoveInfo->tgPos[i].posX;
		m_tPos[i].posZ = pMoveInfo->tgPos[i].posZ;
	}	
	m_KyungGongIdx = pMoveInfo->KyungGongIdx;
	m_MoveState = pMoveInfo->MoveState;
	m_tgIndex = 0;
	
	SetMoveSpeed();
}

void CPartyIconMoveInfo::SetKoungGongIdx(int Index)
{
	m_KyungGongIdx = Index;
	SetMoveSpeed();		
}

void CPartyIconMoveInfo::SetMoveState(int State)
{
	m_MoveState = State;
	SetMoveSpeed();
}

void CPartyIconMoveInfo::SetMoveSpeed()
{
	if(m_KyungGongIdx)
		m_Speed = MOVEMGR->GetKyungGongSpeed(m_KyungGongIdx);
	else
	{
		if(m_MoveState == eMoveMode_Run)
			m_Speed = RUNSPEED;
		else
			m_Speed = WALKSPEED;
	}

	CalMoveUpdate();
}

void CPartyIconMoveInfo::CalMoveUpdate()
{
	if(m_tgIndex == -1)		return;

	MoveCoord TargetPos = m_tPos[m_tgIndex];

	int dx = TargetPos.posX - m_cPos.posX;
	int dz = TargetPos.posZ - m_cPos.posZ;;
	float Distance = sqrtf(dx*dx+dz*dz);

	m_MoveStartTime = gCurTime;
	m_MoveTime = Distance / m_Speed;

	m_DirectionX = dx*(m_Speed/Distance);
	m_DirectionZ = dz*(m_Speed/Distance);
}

/*
void CPartyIconMoveInfo::MoveStop()
{
	m_tgIndex = -1;
	memset(m_tPos, 0, sizeof(MoveCoord)*MAX_CHARTARGETPOSBUF_SIZE);
	m_MoveTime = 0.f;
	m_Speed = 0.f;
	m_KyungGongIdx = 0;
}
*/

void CPartyIconMoveInfo::Process()
{
	if(m_tgIndex == -1)		return;

	MoveCoord TargetPos = m_tPos[m_tgIndex];

	float fMoveTime = ((gCurTime - m_MoveStartTime)*0.001f);
	if(fMoveTime < m_MoveTime)
	{
		m_IconPos.posX = m_cPos.posX + (m_DirectionX * fMoveTime);
		m_IconPos.posZ = m_cPos.posZ + (m_DirectionZ * fMoveTime);
		
		float dx = TargetPos.posX - m_IconPos.posX;
		float dz = TargetPos.posZ - m_IconPos.posZ;;
		float Distance = sqrtf(dx*dx+dz*dz);
		
		if(Distance < 20.f)
		{
			++m_tgIndex;
			m_IconPos = TargetPos;
			m_cPos = TargetPos;
			
			if(m_tgIndex >= m_tgMaxIndex)			m_tgIndex = -1;
		}
	}
}

⌨️ 快捷键说明

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