diff options
author | n0n4m3 <none@none> | 2009-12-19 18:27:27 +0100 |
---|---|---|
committer | n0n4m3 <none@none> | 2009-12-19 18:27:27 +0100 |
commit | b7e20e385fbd1155e2c14c7a9cf9c204457e9180 (patch) | |
tree | 8608f536919d26299c85e9be014275f6c6b13994 /src | |
parent | e409850500594efb36f35f458d54d3f84b35645e (diff) |
Access to chat channels by case-insensitive channel names. by VladimirMangos
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/ChannelMgr.cpp | 25 | ||||
-rw-r--r-- | 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 09483c7fbe0..16a236a1f95 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 f65a8520648..a6d7c5fed69 100644 --- a/src/game/ChannelMgr.h +++ b/src/game/ChannelMgr.h @@ -36,7 +36,7 @@ class ChannelMgr { public: uint32 team; - typedef std::map<std::string,Channel *> ChannelMap; + typedef std::map<std::wstring,Channel*> ChannelMap; ChannelMgr() {team = 0;} ~ChannelMgr(); |