📄 zone.cpp
字号:
#include "StdAfx.h"
#include ".\zone.h"
#include "User.h"
#include <assert.h>
Zone::Zone(void)
{
}
Zone::~Zone(void)
{
}
VOID Zone::Init()
{
}
VOID Zone::Release()
{
m_mapUsers.clear();
}
BOOL Zone::AddUser( DWORD dwGuid, User *pUser )
{
USER_MAP_ITER it = m_mapUsers.find( dwGuid );
if( it != m_mapUsers.end() )
{
MessageOut( eCRITICAL_LOG, "Zone::AddUser[Guid:%u] Error - Already In Zone[ZT:%u][ZK:%u]", pUser->GetGUID(), m_zoneType, m_dwKey );
m_mapUsers.erase( it ); // 扁粮 单捞磐啊 乐栏搁 瘤况霖促
}
m_mapUsers.insert( USER_MAP_PAIR( dwGuid, pUser ) );
pUser->OnEnterZone( this );
MessageOut( eFULL_LOG, "Zone::AddUser[Type:%u][Key:%u][Guid:%u]", m_zoneType, m_dwKey, pUser->GetGUID() );
return TRUE;
}
VOID Zone::AddSectorUser( DWORD dwGuid, User *pUser )
{
USER_MAP_ITER it = m_mapUsers.find( dwGuid );
#ifdef _DEBUG
assert( it == m_mapUsers.end() );
#else
if( it != m_mapUsers.end() )
{
MessageOut( eCRITICAL_LOG, "Zone::AddSectorUser[Guid:%u] Error - Already In Zone[ZT:%u][ZK:%u]", pUser->GetGUID(), m_zoneType, m_dwKey );
m_mapUsers.erase( it ); // 瘤况林绊 促矫 持绰促
}
#endif
m_mapUsers.insert( USER_MAP_PAIR( dwGuid, pUser ) );
pUser->OnEnterSector( this );
}
BOOL Zone::RemoveUser( DWORD dwGuid )
{
USER_MAP_ITER it = m_mapUsers.find( dwGuid );
//assert( it != m_mapUsers.end() );
if( it != m_mapUsers.end() )
{
User *pUser = it->second;
m_mapUsers.erase( it );
if( !pUser )
{
MessageOut( eCRITICAL_LOG, "[Guid:%u]User Not In Zone[ZT:%u][ZK:%u]", dwGuid, m_zoneType, m_dwKey );
return FALSE;
}
MessageOut( eFULL_LOG, "Zone::RemoveUser [%s][Guid:%u][ZT:%u][ZK:%u]", pUser->GetCharName().c_str(), pUser->GetGUID(), m_zoneType, m_dwKey );
pUser->OnLeaveZone( this );
return TRUE;
}
return FALSE;
}
VOID Zone::RemoveSectorUser( DWORD dwGuid )
{
USER_MAP_ITER it = m_mapUsers.find( dwGuid );
//assert( it != m_mapUsers.end() );
if( it != m_mapUsers.end() )
{
User *pUser = it->second;
m_mapUsers.erase( it );
pUser->OnLeaveSector( this );
}
}
VOID Zone::SendToAll( BYTE *pMsg, WORD wSize )
{
USER_MAP_ITER it;
User *pUser;
for( it = m_mapUsers.begin(); it != m_mapUsers.end(); ++it )
{
pUser = it->second;
if( !pUser )
{
MessageOut( eCRITICAL_LOG, "Zone::SendAll : User Data Error - In Zone [%u]", m_dwKey );
continue;
}
pUser->Send( pMsg, wSize );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -