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

📄 movemng.cpp

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

#include "stdafx.h"
#include "MoveMng.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GLOBALTON(CMoveMng)

CMoveMng::CMoveMng()
{

}

CMoveMng::~CMoveMng()
{

}

void CMoveMng::Init()
{
}

void CMoveMng::Exit()
{
///	Reset();
}

void CMoveMng::Reset()
{
	RemoveAllMonster();
}

void CMoveMng::NetworkMsgParse( BYTE Protocol, void* pMsg )
{
	switch( Protocol )
	{
	case MP_MOVE_TARGET:
		{
			MOVE_TARGETPOS* pmsg = (MOVE_TARGETPOS*)pMsg;

			if( pmsg->dwMoverID >= 100000 )
			{
				MOVE_INFO info;
				pmsg->GetTargetInfo(&info);
												
				SetPosition( pmsg->dwMoverID, *info.GetTargetPosition(info.GetMaxTargetPosIdx()-1) );
			}
		}
		break;

	case MP_MOVE_STOP:
		{
			MOVE_POS* pmsg = (MOVE_POS*)pMsg;

//			if( IsMonster( pmsg->dwMoverID ) )
			{
				VECTOR3 pos;
				pmsg->cpos.Decompress(&pos);

				SetPosition( pmsg->dwMoverID, pos );
			}
		}
		break;
	case MP_MOVE_MONSTERMOVE_NOTIFY:
		{
		}
		break;
	}
}

void CMoveMng::AddMonster( SEND_MONSTER_TOTALINFO info )
{
	SEND_MONSTER_TOTALINFO temp = info;

	m_mapMonster.insert( make_pair( temp.BaseObjectInfo.dwObjectID, info ) );
}

void CMoveMng::RemoveMonster( int key )
{
	mi = m_mapMonster.find( key );
	if( mi != m_mapMonster.end() )
		m_mapMonster.erase( mi );
}

void CMoveMng::RemoveAllMonster()
{
//	mi = m_mapMonster.begin();
//	while( mi != m_mapMonster.end() )
//	{
//		m_mapMonster.erase( mi );
//		++mi;
//	}
	m_mapMonster.clear();
}

SEND_MONSTER_TOTALINFO CMoveMng::FindNearMonster( VECTOR3 pos )
{
	SEND_MONSTER_TOTALINFO info;
	memset( &info, 0, sizeof(SEND_MONSTER_TOTALINFO) );
/*	VECTOR3 monpos, minpos;
	FLOAT distance = 100000.0f;
	FLOAT dis = 0.0f;	

	mi = m_mapMonster.begin();
	while( mi != m_mapMonster.end() )
	{
		monpos = (*mi).second.BaseMoveInfo.CurPosition;
		dis = CalcDistanceXZ( &pos, &monpos );
		if( dis <= distance )
		{
			distance = dis;
			info = (*mi).second;
		}
		++mi;
	}
*/
	return info;
}

SEND_MONSTER_TOTALINFO CMoveMng::FindMonster( DWORD dwID )
{
	SEND_MONSTER_TOTALINFO info;
	memset( &info, 0, sizeof(SEND_MONSTER_TOTALINFO) );

	mi = m_mapMonster.find( dwID );
	if( mi != m_mapMonster.end() )
	{
		info = (*mi).second;
		return info;
	}

	return info;
}

void CMoveMng::SetPosition( DWORD dwID, VECTOR3 pos )
{
/*	mi = m_mapMonster.find( dwID );
	if( mi != m_mapMonster.end() )
		(*mi).second.BaseMoveInfo.CurPosition = pos;	
		*/
}

BOOL CMoveMng::IsMonster( DWORD dwID, VECTOR3 heropos )
{
/*	mi = m_mapMonster.find( dwID );
	if( mi != m_mapMonster.end() )
	{
		SEND_MONSTER_TOTALINFO info = FindMonster( dwID );
		VECTOR3 dist;
		dist.x = sqrt( (info.BaseMoveInfo.CurPosition.x - heropos.x)*(info.BaseMoveInfo.CurPosition.x - heropos.x) );
		dist.z = sqrt( (info.BaseMoveInfo.CurPosition.z - heropos.z)*(info.BaseMoveInfo.CurPosition.z - heropos.z) );

		if( sqrt( dist.x*dist.x + dist.z*dist.z) <= 500 )
			return TRUE;
		else
			return FALSE;
	}
*/
	return FALSE;
}

VECTOR3 CMoveMng::GetMonsterPosition( DWORD dwID )
{
	VECTOR3 pos;
	pos.x = 0;
	pos.y = 0;
	pos.z = 0;

/*	SEND_MONSTER_TOTALINFO info;
	memset( &info, 0, sizeof(SEND_MONSTER_TOTALINFO) );

	mi = m_mapMonster.find( dwID );
	if( mi != m_mapMonster.end() )
	{
		info = (*mi).second;
		pos = info.BaseMoveInfo.CurPosition;
	}
*/
	return pos;	
}

⌨️ 快捷键说明

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