void ChannelMgr::LeftChannel(std::string const& name) { std::wstring channelName; if (!Utf8toWStr(name, channelName)) return; wstrToLower(channelName); auto itr = _customChannels.find(channelName); if (itr == _customChannels.end()) return; Channel* channel = itr->second; if (!channel->GetNumPlayers()) { _customChannels.erase(itr); delete channel; } }
void ChannelMgr::LeftChannel(std::string name) { std::wstring wname; Utf8toWStr(name,wname); wstrToLower(wname); ChannelMap::const_iterator i = channels.find(wname); if(i == channels.end()) return; Channel* channel = i->second; if(channel->GetNumPlayers() == 0 && !channel->IsConstant()) { channels.erase(wname); delete channel; } }
void ChannelMgr::LeftChannel(uint32 channelId, AreaTableEntry const* zoneEntry) { ChatChannelsEntry const* channelEntry = sChatChannelsStore.AssertEntry(channelId); uint32 zoneId = zoneEntry ? zoneEntry->ID : 0; if (channelEntry->flags & (CHANNEL_DBC_FLAG_GLOBAL | CHANNEL_DBC_FLAG_CITY_ONLY)) zoneId = 0; std::pair<uint32, uint32> key = std::make_pair(channelId, zoneId); auto itr = _channels.find(key); if (itr == _channels.end()) return; Channel* channel = itr->second; if (!channel->GetNumPlayers()) { _channels.erase(itr); delete channel; } }