aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorn0n4m3 <none@none>2009-12-19 18:27:27 +0100
committern0n4m3 <none@none>2009-12-19 18:27:27 +0100
commitb7e20e385fbd1155e2c14c7a9cf9c204457e9180 (patch)
tree8608f536919d26299c85e9be014275f6c6b13994 /src
parente409850500594efb36f35f458d54d3f84b35645e (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.cpp25
-rw-r--r--src/game/ChannelMgr.h2
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();