[8733] Access to chat channels by case-insensitive channel names.

But remember original case of name.
This commit is contained in:
VladimirMangos 2009-10-25 08:45:48 +03:00
parent 04911535ea
commit 9746a97174
3 changed files with 21 additions and 8 deletions

View file

@ -46,18 +46,27 @@ ChannelMgr::~ChannelMgr()
Channel *ChannelMgr::GetJoinChannel(std::string name, uint32 channel_id) 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); Channel *nchan = new Channel(name,channel_id);
channels[name] = nchan; channels[wname] = nchan;
return nchan;
} }
return channels[name]; return channels[wname];
} }
Channel *ChannelMgr::GetChannel(std::string name, Player *p, bool pkt) 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()) if(i == channels.end())
{ {
@ -76,7 +85,11 @@ Channel *ChannelMgr::GetChannel(std::string name, Player *p, bool pkt)
void ChannelMgr::LeftChannel(std::string name) 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()) if(i == channels.end())
return; return;
@ -85,7 +98,7 @@ void ChannelMgr::LeftChannel(std::string name)
if(channel->GetNumPlayers() == 0 && !channel->IsConstant()) if(channel->GetNumPlayers() == 0 && !channel->IsConstant())
{ {
channels.erase(name); channels.erase(wname);
delete channel; delete channel;
} }
} }

View file

@ -28,7 +28,7 @@
class ChannelMgr class ChannelMgr
{ {
public: public:
typedef std::map<std::string,Channel *> ChannelMap; typedef std::map<std::wstring,Channel*> ChannelMap;
ChannelMgr() {} ChannelMgr() {}
~ChannelMgr(); ~ChannelMgr();

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "8732" #define REVISION_NR "8733"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__