Access to chat channels by case-insensitive channel names. by VladimirMangos

--HG--
branch : trunk
This commit is contained in:
n0n4m3
2009-12-19 18:27:27 +01:00
parent e409850500
commit b7e20e385f
2 changed files with 20 additions and 7 deletions
+19 -6
View File
@@ -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;
}
}
+1 -1
View File
@@ -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();