2 * Copyright (C) 2005-2010 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
19 #include "ObjectMgr.h" // for normalizePlayerName
20 #include "ChannelMgr.h"
22 void WorldSession::HandleJoinChannel(WorldPacket
& recvPacket
)
24 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
27 uint8 unknown1
, unknown2
;
28 std::string channelname
, pass
;
30 recvPacket
>> channel_id
>> unknown1
>> unknown2
;
31 recvPacket
>> channelname
;
33 if(channelname
.empty())
37 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
38 if(Channel
*chn
= cMgr
->GetJoinChannel(channelname
, channel_id
))
39 chn
->Join(_player
->GetGUID(), pass
.c_str());
42 void WorldSession::HandleLeaveChannel(WorldPacket
& recvPacket
)
44 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
45 //recvPacket.hexlike();
48 std::string channelname
;
49 recvPacket
>> unk
; // channel id?
50 recvPacket
>> channelname
;
52 if(channelname
.empty())
55 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
57 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
58 chn
->Leave(_player
->GetGUID(), true);
59 cMgr
->LeftChannel(channelname
);
63 void WorldSession::HandleChannelList(WorldPacket
& recvPacket
)
65 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
66 //recvPacket.hexlike();
67 std::string channelname
;
68 recvPacket
>> channelname
;
70 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
71 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
75 void WorldSession::HandleChannelPassword(WorldPacket
& recvPacket
)
77 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
78 //recvPacket.hexlike();
79 std::string channelname
, pass
;
80 recvPacket
>> channelname
;
84 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
85 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
86 chn
->Password(_player
->GetGUID(), pass
.c_str());
89 void WorldSession::HandleChannelSetOwner(WorldPacket
& recvPacket
)
91 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
92 //recvPacket.hexlike();
93 std::string channelname
, newp
;
94 recvPacket
>> channelname
;
98 if(!normalizePlayerName(newp
))
101 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
102 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
103 chn
->SetOwner(_player
->GetGUID(), newp
.c_str());
106 void WorldSession::HandleChannelOwner(WorldPacket
& recvPacket
)
108 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
109 //recvPacket.hexlike();
110 std::string channelname
;
111 recvPacket
>> channelname
;
112 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
113 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
114 chn
->SendWhoOwner(_player
->GetGUID());
117 void WorldSession::HandleChannelModerator(WorldPacket
& recvPacket
)
119 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
120 //recvPacket.hexlike();
121 std::string channelname
, otp
;
122 recvPacket
>> channelname
;
126 if(!normalizePlayerName(otp
))
129 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
130 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
131 chn
->SetModerator(_player
->GetGUID(), otp
.c_str());
134 void WorldSession::HandleChannelUnmoderator(WorldPacket
& recvPacket
)
136 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
137 //recvPacket.hexlike();
138 std::string channelname
, otp
;
139 recvPacket
>> channelname
;
143 if(!normalizePlayerName(otp
))
146 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
147 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
148 chn
->UnsetModerator(_player
->GetGUID(), otp
.c_str());
151 void WorldSession::HandleChannelMute(WorldPacket
& recvPacket
)
153 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
154 //recvPacket.hexlike();
155 std::string channelname
, otp
;
156 recvPacket
>> channelname
;
160 if(!normalizePlayerName(otp
))
163 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
164 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
165 chn
->SetMute(_player
->GetGUID(), otp
.c_str());
168 void WorldSession::HandleChannelUnmute(WorldPacket
& recvPacket
)
170 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
171 //recvPacket.hexlike();
173 std::string channelname
, otp
;
174 recvPacket
>> channelname
;
178 if(!normalizePlayerName(otp
))
181 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
182 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
183 chn
->UnsetMute(_player
->GetGUID(), otp
.c_str());
186 void WorldSession::HandleChannelInvite(WorldPacket
& recvPacket
)
188 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
189 //recvPacket.hexlike();
190 std::string channelname
, otp
;
191 recvPacket
>> channelname
;
195 if(!normalizePlayerName(otp
))
198 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
199 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
200 chn
->Invite(_player
->GetGUID(), otp
.c_str());
203 void WorldSession::HandleChannelKick(WorldPacket
& recvPacket
)
205 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
206 //recvPacket.hexlike();
207 std::string channelname
, otp
;
208 recvPacket
>> channelname
;
211 if(!normalizePlayerName(otp
))
214 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
215 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
216 chn
->Kick(_player
->GetGUID(), otp
.c_str());
219 void WorldSession::HandleChannelBan(WorldPacket
& recvPacket
)
221 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
222 //recvPacket.hexlike();
223 std::string channelname
, otp
;
224 recvPacket
>> channelname
;
228 if(!normalizePlayerName(otp
))
231 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
232 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
233 chn
->Ban(_player
->GetGUID(), otp
.c_str());
236 void WorldSession::HandleChannelUnban(WorldPacket
& recvPacket
)
238 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
239 //recvPacket.hexlike();
241 std::string channelname
, otp
;
242 recvPacket
>> channelname
;
246 if(!normalizePlayerName(otp
))
249 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
250 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
251 chn
->UnBan(_player
->GetGUID(), otp
.c_str());
254 void WorldSession::HandleChannelAnnouncements(WorldPacket
& recvPacket
)
256 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
257 //recvPacket.hexlike();
258 std::string channelname
;
259 recvPacket
>> channelname
;
260 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
261 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
262 chn
->Announce(_player
->GetGUID());
265 void WorldSession::HandleChannelModerate(WorldPacket
& recvPacket
)
267 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
268 //recvPacket.hexlike();
269 std::string channelname
;
270 recvPacket
>> channelname
;
271 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
272 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
273 chn
->Moderate(_player
->GetGUID());
276 void WorldSession::HandleChannelDisplayListQuery(WorldPacket
&recvPacket
)
278 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
279 //recvPacket.hexlike();
280 std::string channelname
;
281 recvPacket
>> channelname
;
282 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
283 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
287 void WorldSession::HandleGetChannelMemberCount(WorldPacket
&recvPacket
)
289 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
290 //recvPacket.hexlike();
291 std::string channelname
;
292 recvPacket
>> channelname
;
293 if(ChannelMgr
* cMgr
= channelMgr(_player
->GetTeam()))
295 if(Channel
*chn
= cMgr
->GetChannel(channelname
, _player
))
297 WorldPacket
data(SMSG_CHANNEL_MEMBER_COUNT
, chn
->GetName().size()+1+1+4);
298 data
<< chn
->GetName();
299 data
<< uint8(chn
->GetFlags());
300 data
<< uint32(chn
->GetNumPlayers());
306 void WorldSession::HandleSetChannelWatch(WorldPacket
&recvPacket
)
308 sLog
.outDebug("Opcode %u", recvPacket
.GetOpcode());
309 //recvPacket.hexlike();
310 std::string channelname
;
311 recvPacket
>> channelname
;
312 /*if(ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
313 if(Channel *chn = cMgr->GetChannel(channelname, _player))
314 chn->JoinNotify(_player->GetGUID());*/