2 * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 #ifndef MANGOSSERVER_CHANNELMGR_H
19 #define MANGOSSERVER_CHANNELMGR_H
22 #include "Policies/Singleton.h"
31 typedef std::map
<std::string
,Channel
*> ChannelMap
;
35 for(ChannelMap::const_iterator itr
= channels
.begin();itr
!=channels
.end(); ++itr
)
39 Channel
*GetJoinChannel(const std::string
& name
, uint32 channel_id
)
41 if (channels
.find(name
) == channels
.end())
43 Channel
*nchan
= new Channel(name
,channel_id
);
44 channels
[name
] = nchan
;
46 return channels
[name
];
48 Channel
*GetChannel(const std::string
& name
, Player
*p
)
50 ChannelMap::const_iterator i
= channels
.find(name
);
52 if(i
== channels
.end())
55 MakeNotOnPacket(&data
,name
);
56 p
->GetSession()->SendPacket(&data
);
62 void LeftChannel(const std::string
& name
)
64 ChannelMap::const_iterator i
= channels
.find(name
);
66 if(i
== channels
.end())
69 Channel
* channel
= i
->second
;
71 if(channel
->GetNumPlayers() == 0 && !channel
->IsConstant())
79 void MakeNotOnPacket(WorldPacket
*data
, const std::string
& name
)
81 data
->Initialize(SMSG_CHANNEL_NOTIFY
, (1+10)); // we guess size
82 (*data
) << (uint8
)0x05 << name
;
86 class AllianceChannelMgr
: public ChannelMgr
{};
87 class HordeChannelMgr
: public ChannelMgr
{};
89 inline ChannelMgr
* channelMgr(uint32 team
)
91 if (sWorld
.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL
))
92 //For Test,No Seprate Faction
93 return &MaNGOS::Singleton
<AllianceChannelMgr
>::Instance();
96 return &MaNGOS::Singleton
<AllianceChannelMgr
>::Instance();
98 return &MaNGOS::Singleton
<HordeChannelMgr
>::Instance();