DragonNest/Server/DNGameServer/DnPrivateChatManager.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

95 lines
No EOL
2.6 KiB
C++

#include "Stdafx.h"
#include "DNPrivateChatChannel.h"
#include "dnPrivateChatManager.h"
//
#if defined( PRE_PRIVATECHAT_CHANNEL )
CDNPrivateChatManager* g_pPrivateChatChannelManager = NULL;
CDNPrivateChatManager::CDNPrivateChatManager()
{
m_bFirst = false;
for(int i=0;i<PrivateChatChannel::Common::MAXWORLDCOUNT;i++)
{
m_mChannelInfo[i].clear();
m_cWorldNumber[i] = 0;
}
}
CDNPrivateChatManager::~CDNPrivateChatManager()
{
for(int i=0;i<PrivateChatChannel::Common::MAXWORLDCOUNT;i++)
{
for(std::map<INT64,CDNPrivateChaChannel*>::iterator itor = m_mChannelInfo[i].begin();itor!= m_mChannelInfo[i].end();itor++)
{
SAFE_DELETE((*itor).second);
}
m_mChannelInfo[i].clear();
}
}
bool CDNPrivateChatManager::AddPrivateChatChannel( char cWorldSetID, const TPrivateChatChannelInfo &ChannelInfo )
{
ScopeLock <CSyncLock> Lock(m_Sync);
char cWorldIndex = GetWorldIndex(cWorldSetID);
std::map<INT64,CDNPrivateChaChannel*>::iterator itor = m_mChannelInfo[cWorldIndex].find(ChannelInfo.nPrivateChatChannelID);
if(itor != m_mChannelInfo[cWorldIndex].end() )
{
g_Log.Log(LogType::_NORMAL, L"AddPrivateChatChannel Exist Channel\r\n");
return false;
}
CDNPrivateChaChannel* PrivateChatChannel = new CDNPrivateChaChannel;
if(PrivateChatChannel)
{
PrivateChatChannel->SetPrivateChannelInfo( ChannelInfo );
ScopeLock <CSyncLock> Lock(m_Sync);
m_mChannelInfo[cWorldIndex].insert(std::make_pair(ChannelInfo.nPrivateChatChannelID,PrivateChatChannel));
}
else
return false;
return true;
}
CDNPrivateChaChannel* CDNPrivateChatManager::GetPrivateChannelInfo( char cWorldSetID, INT64 nChannelID )
{
ScopeLock <CSyncLock> Lock(m_Sync);
char cWorldIndex = GetWorldIndex(cWorldSetID);
std::map<INT64,CDNPrivateChaChannel*>::iterator itor = m_mChannelInfo[cWorldIndex].find(nChannelID);
if(itor != m_mChannelInfo[cWorldIndex].end())
return (*itor).second;
return NULL;
}
INT64 CDNPrivateChatManager::GetPrivateChatChannelId( char cWorldSetID, WCHAR* wszChannelName )
{
if( !wszChannelName )
return 0;
ScopeLock <CSyncLock> Lock(m_Sync);
char cWorldIndex = GetWorldIndex(cWorldSetID);
for(std::map<INT64,CDNPrivateChaChannel*>::iterator itor = m_mChannelInfo[cWorldIndex].begin();itor != m_mChannelInfo[cWorldIndex].end();itor++)
{
if (wcscmp((*itor).second->GetChannelName(), wszChannelName) == 0)
{
return itor->first;
}
}
return -1;
}
char CDNPrivateChatManager::GetWorldIndex(char cWorldSetID)
{
for(int i=0;i<PrivateChatChannel::Common::MAXWORLDCOUNT;i++)
{
if(m_cWorldNumber[i] == 0)
{
m_cWorldNumber[i] = cWorldSetID;
return i;
}
else if(m_cWorldNumber[i] == cWorldSetID)
return i;
}
return 0;
}
#endif