Files
2022-10-26 12:25:11 +08:00

244 lines
5.5 KiB
C++

//------------------------------------------------------------------------------
// uiPartyMan_info.cpp
// (C) 2005 ckbang
//------------------------------------------------------------------------------
#include "SunClientPrecompiledHeader.h"
#include "uiPartyMan.h"
#pragma warning ( push )
#pragma warning(disable : 4800)
//------------------------------------------------------------------------------
/**
*/
bool
uiPartyMan::IsPartyMember(DWORD dwObjKey)
{
if (!this->IsParty())
return false;
for (size_t i=0; i<m_vParty.size(); ++i)
{
if (m_vParty[i].CompKeySimple(dwObjKey))
return true;
}
return false;
}
//------------------------------------------------------------------------------
/**
*/
DWORD
uiPartyMan::IsPartyMemberForName(const TCHAR* character_name)
{
if (!this->IsParty())
{
return 0;
}
for (size_t i=0; i<m_vParty.size(); ++i)
{
DWORD member_key = m_vParty[i].CompareName(character_name);
if (member_key != 0)
{
return member_key;
}
}
return 0;
}
//------------------------------------------------------------------------------
/**
오브젝트 키값으로 파티원정보얻기 없다면 NULL
*/
uicPartyMemberInfoPlus*
uiPartyMan::GetPartyMemberInfo(DWORD dwObjKey)
{
if (!this->IsParty())
return NULL;
for (size_t i=0; i<m_vParty.size(); ++i)
{
if (m_vParty[i].CompKeySimple(dwObjKey))
return &(m_vParty[i]);
}
return NULL;
}
//------------------------------------------------------------------------------
/**
*/
uicPartyMemberInfoPlus*
uiPartyMan::GetPartyMemberInfoFromIndex(DWORD index)
{
if (!this->IsParty())
{
return NULL;
}
if(index < m_vParty.size())
{
return &(m_vParty[index]);
}
return NULL;
}
//------------------------------------------------------------------------------
/**
*/
void
uiPartyMan::ClearParty()
{
this->m_vParty.clear();
this->uiClearAll(); // 파티 정보 UI 클리어
this->m_bImTheLeader = false;
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
is_disconnected_uesr_kick_ = false;
ZeroMemory(kick_player_name_,sizeof(kick_player_name_));
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
}
//------------------------------------------------------------------------------
/**
*/
bool
uiPartyMan::IsParty()
{
return (bool)this->m_vParty.size();
}
//------------------------------------------------------------------------------
/**
*/
short
uiPartyMan::GetPartyNum()
{
return this->m_vParty.size();
}
//------------------------------------------------------------------------------
int uiPartyMan::GetPartyIndexByObjectKey(DWORD object_key)
{
for ( size_t i = 0; i< m_vParty.size(); ++i)
{
uicPartyMemberInfoPlus& member_info = m_vParty[i];
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
if (member_info.IsConnected() == true)
#else
if (member_info.IsUnexpectedTerminate() == false)
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
{
if (member_info.Get().m_dwMemberKey == object_key)
{
return i;
}
}
}
return -1;
}
//------------------------------------------------------------------------------
int uiPartyMan::GetPartyIndex(TCHAR* character_name)
{
for ( size_t i = 0; i< m_vParty.size(); ++i)
{
uicPartyMemberInfoPlus& member_info = m_vParty[i];
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
if (member_info.IsConnected() == true)
#else
if (member_info.IsUnexpectedTerminate() == false)
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
{
if (StrnCmp(member_info.Get().m_szCharName, character_name, MAX_CHARNAME_LENGTH) == 0)
{
return i;
}
}
}
return -1;
}
//------------------------------------------------------------------------------
/**
*/
const uicPartyMemberInfoPlus&
uiPartyMan::GetParty(short idx)
{
if ((idx < 0) || (idx >= static_cast<int>(m_vParty.size())))
{
assert (static_cast<size_t>(idx) < m_vParty.size());
return m_vParty[0];
}
return this->m_vParty[idx];
}
//------------------------------------------------------------------------------
/**
*/
const uicPartyMemberInfoPlus*
uiPartyMan::GetPartyLeader()
{
if (!this->IsParty())
{
return NULL;
}
for (int i=0; i<this->GetPartyNum(); ++i)
{
if (m_vParty[i].Get().m_dwMemberKey == GetMasterKey())
{
return &this->m_vParty[i];
}
}
return NULL;
}
//------------------------------------------------------------------------------
/**
*/
STLX_VECTOR<uicPartyMemberInfoPlus>
uiPartyMan::GetPartyList()
{
return this->m_vParty;
}
//------------------------------------------------------------------------------
/**
*/
void
uiPartyMan::SetPartyList(const STLX_VECTOR<uicPartyMemberInfoPlus>& partyList)
{
this->m_vParty = partyList;
}
#pragma warning ( pop )
//------------------------------------------------------------------------------
/**
*/
#ifdef _DH_BATTLEZONE2_
int uiPartyMan::GetPartyIndexFromObjectkey(DWORD object_key)
{
//오브젝트키로 파티원 인덱스 구해오기
if (this->IsParty() == false)
{
return false;
}
for (size_t i = 0; i< m_vParty.size(); ++i)
{
if (m_vParty[i].CompKeySimple(object_key))
return i;
}
return -1;
}
#endif //_DH_BATTLEZONE2_
//------------------------------------------------------------------------------
// EOF
//------------------------------------------------------------------------------