119 lines
2.0 KiB
C++
119 lines
2.0 KiB
C++
#include "stdafx.h"
|
|
#include "STargetMgr.h"
|
|
#include "SGameAvatarEx.h"
|
|
|
|
#include "SDebug_Util.h"
|
|
|
|
|
|
|
|
SGameTargetMgr::SGameTargetMgr(SGame * pGame)
|
|
{
|
|
m_pGame = pGame;
|
|
SetTarget(NULL);
|
|
}
|
|
|
|
SGameTargetMgr::~SGameTargetMgr()
|
|
{
|
|
|
|
}
|
|
|
|
void SGameTargetMgr::SetTarget( SGameAvatarEx* pTarget )
|
|
{
|
|
m_pTarget = pTarget;
|
|
if( m_pTarget )
|
|
{
|
|
m_TargetID = m_pTarget->GetArID();
|
|
}
|
|
else
|
|
{
|
|
m_TargetID = 0;
|
|
}
|
|
}
|
|
|
|
bool SGameTargetMgr::IsTarget( AR_HANDLE leaveID )
|
|
{
|
|
return ( m_TargetID == leaveID ) ? true : false;
|
|
}
|
|
|
|
BOOL SGameTargetMgr::CheckTarget( AR_HANDLE leaveID )
|
|
{
|
|
if( m_TargetID == leaveID )
|
|
{
|
|
SetTarget( NULL );
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
|
|
STargetMgr::STargetMgr()
|
|
{
|
|
ClearTargetList();
|
|
|
|
}
|
|
|
|
STargetMgr::~STargetMgr()
|
|
{
|
|
ClearTargetList();
|
|
}
|
|
|
|
//다음 타겟 달라
|
|
SGameAvatarEx * STargetMgr::GetNextTarget()
|
|
{
|
|
if( m_MobList.empty() )
|
|
return NULL;
|
|
else
|
|
{
|
|
SGameAvatarEx * pTarget = m_MobList[0];
|
|
m_MobList.erase( m_MobList.begin() ); //하나씩 계속 제거.
|
|
return pTarget;
|
|
}
|
|
}
|
|
|
|
void STargetMgr::ClearTargetList()
|
|
{
|
|
m_MobList.clear();
|
|
}
|
|
|
|
void STargetMgr::AddTarget( SGameAvatarEx * pTarget )
|
|
{
|
|
m_MobList.push_back( pTarget );
|
|
}
|
|
|
|
void STargetMgr::LeaveTarget( AR_HANDLE handle )
|
|
{
|
|
if( m_MobList.empty() )
|
|
return;
|
|
|
|
for( unsigned int i(0); m_MobList.size()>i; i++ )
|
|
{
|
|
if( m_MobList[i]->GetArID() == handle )
|
|
{
|
|
m_MobList.erase( m_MobList.begin()+i );
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
namespace
|
|
{
|
|
struct TargetCompareFN
|
|
{
|
|
static K3DVector vLocalPlayerPos;
|
|
bool operator() ( SGameAvatarEx *pr1, SGameAvatarEx *pr2 )
|
|
{
|
|
return ( vLocalPlayerPos - *pr1->GetPosition() ).SquareMagnitude() < ( vLocalPlayerPos - *pr2->GetPosition() ).SquareMagnitude();
|
|
}
|
|
};
|
|
|
|
K3DVector TargetCompareFN::vLocalPlayerPos;
|
|
}
|
|
|
|
void STargetMgr::SortTarget( K3DVector* pLocalPlayerPos )
|
|
{
|
|
TargetCompareFN::vLocalPlayerPos = *pLocalPlayerPos;
|
|
std::sort( m_MobList.begin(), m_MobList.end(), TargetCompareFN() );
|
|
}
|