From b7e20e385fbd1155e2c14c7a9cf9c204457e9180 Mon Sep 17 00:00:00 2001 From: n0n4m3 Date: Sat, 19 Dec 2009 18:27:27 +0100 Subject: [PATCH] Access to chat channels by case-insensitive channel names. by VladimirMangos --HG-- branch : trunk --- src/game/ChannelMgr.cpp | 25 +++++++++++++++++++------ src/game/ChannelMgr.h | 2 +- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/game/ChannelMgr.cpp b/src/game/ChannelMgr.cpp index 09483c7fbe..16a236a1f9 100644 --- a/src/game/ChannelMgr.cpp +++ b/src/game/ChannelMgr.cpp @@ -46,18 +46,27 @@ ChannelMgr::~ChannelMgr() Channel *ChannelMgr::GetJoinChannel(std::string name, uint32 channel_id) { - if (channels.find(name) == channels.end()) + std::wstring wname; + Utf8toWStr(name,wname); + wstrToLower(wname); + + if (channels.find(wname) == channels.end()) { Channel *nchan = new Channel(name,channel_id, team); - channels[name] = nchan; + channels[wname] = nchan; + return nchan; } - return channels[name]; + return channels[wname]; } Channel *ChannelMgr::GetChannel(std::string name, Player *p, bool pkt) { - ChannelMap::const_iterator i = channels.find(name); + std::wstring wname; + Utf8toWStr(name,wname); + wstrToLower(wname); + + ChannelMap::const_iterator i = channels.find(wname); if(i == channels.end()) { @@ -76,7 +85,11 @@ Channel *ChannelMgr::GetChannel(std::string name, Player *p, bool pkt) void ChannelMgr::LeftChannel(std::string name) { - ChannelMap::const_iterator i = channels.find(name); + std::wstring wname; + Utf8toWStr(name,wname); + wstrToLower(wname); + + ChannelMap::const_iterator i = channels.find(wname); if(i == channels.end()) return; @@ -85,7 +98,7 @@ void ChannelMgr::LeftChannel(std::string name) if(channel->GetNumPlayers() == 0 && !channel->IsConstant()) { - channels.erase(name); + channels.erase(wname); delete channel; } } diff --git a/src/game/ChannelMgr.h b/src/game/ChannelMgr.h index f65a852064..a6d7c5fed6 100644 --- a/src/game/ChannelMgr.h +++ b/src/game/ChannelMgr.h @@ -36,7 +36,7 @@ class ChannelMgr { public: uint32 team; - typedef std::map ChannelMap; + typedef std::map ChannelMap; ChannelMgr() {team = 0;} ~ChannelMgr();