Skip to content

Commit 279cc45

Browse files
committed
refactor(Packet): Add nice CMSG_JOIN_CHANNEL
1 parent 6c9fb07 commit 279cc45

7 files changed

Lines changed: 35 additions & 10 deletions

File tree

src/game/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ set (game_SRCS
196196
PlayerBots/PlayerBotAI.cpp
197197
PlayerBots/PlayerBotMgr.cpp
198198
Server/Protocol/Opcodes.cpp
199+
Server/Packets/Channel.cpp
199200
Server/Packets/Character.cpp
200201
Server/Packets/Group.cpp
201202
Server/Packets/Guild.cpp
@@ -424,6 +425,7 @@ set (game_SRCS
424425
PlayerBots/PlayerBotMgr.h
425426
Server/Protocol/Opcodes.h
426427
Server/Packet.h
428+
Server/Packets/Channel.h
427429
Server/Packets/Character.h
428430
Server/Packets/Group.h
429431
Server/Packets/Guild.h

src/game/Commands/CharacterCommands.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5425,9 +5425,9 @@ bool ChatHandler::HandlePetInfoCommand(char* args)
54255425

54265426
bool ChatHandler::HandleChannelJoinCommand(char* c)
54275427
{
5428-
WorldPacket pkt(CMSG_JOIN_CHANNEL, 4);
5429-
pkt << c;
5430-
pkt << ""; // Pass
5428+
WorldPackets::Channel::JoinChannel pkt;
5429+
pkt.channelName = c;
5430+
pkt.channelPassword = "";
54315431
m_session->HandleJoinChannelOpcode(pkt);
54325432
PSendSysMessage("Joined channel \"%s\"", c);
54335433
return true;

src/game/Handlers/ChannelHandler.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424
#include "Chat.h"
2525
#include "World.h"
2626

27-
void WorldSession::HandleJoinChannelOpcode(WorldPacket& recvPacket)
27+
void WorldSession::HandleJoinChannelOpcode(WorldPackets::Channel::JoinChannel const& packet)
2828
{
29-
std::string channelname, pass;
30-
recvPacket >> channelname;
29+
std::string channelname = packet.channelName;
30+
std::string pass = packet.channelPassword;
3131

3232
// Channel name must begin with a letter.
3333
if (channelname.empty() || (uint8(channelname[0]) <= 127 && !isalpha(channelname[0])))
@@ -39,8 +39,6 @@ void WorldSession::HandleJoinChannelOpcode(WorldPacket& recvPacket)
3939
return;
4040
}
4141

42-
recvPacket >> pass;
43-
4442
PlayerPointer player = GetPlayerPointer();
4543
if (ChannelMgr* cMgr = channelMgr(player->GetTeam()))
4644
{
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#include "Channel.h"
2+
3+
void WorldPackets::Channel::JoinChannel::ReadFromWorldPacket(WorldPacket& recv_data)
4+
{
5+
recv_data >> channelName;
6+
}

src/game/Server/Packets/Channel.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#ifndef MANGOS_PACKETS_CHANNEL_H
2+
#define MANGOS_PACKETS_CHANNEL_H
3+
4+
#include "Packet.h"
5+
6+
namespace WorldPackets { namespace Channel
7+
{
8+
class JoinChannel final : public ClientPacket
9+
{
10+
public:
11+
std::string channelName;
12+
std::string channelPassword;
13+
14+
void ReadFromWorldPacket(WorldPacket& recv_data) override;
15+
};
16+
}} // namespace WorldPackets::Channel
17+
18+
#endif // MANGOS_PACKETS_CHANNEL_H

src/game/Server/Protocol/Opcodes.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ constexpr Handlers BuildOpcodeList()
227227
LEGACY_HANDLER(MSG_UPDATE_GUILD, STATUS_NEVER, PACKET_PROCESS_MAX_TYPE, &WorldSession::Handle_NULL);
228228
LEGACY_HANDLER(CMSG_MESSAGECHAT, STATUS_LOGGEDIN, PACKET_PROCESS_WORLD, &WorldSession::HandleMessagechatOpcode);
229229
LEGACY_HANDLER(SMSG_MESSAGECHAT, STATUS_NEVER, PACKET_PROCESS_MAX_TYPE, &WorldSession::Handle_ServerSide);
230-
LEGACY_HANDLER(CMSG_JOIN_CHANNEL, STATUS_LOGGEDIN, PACKET_PROCESS_CHANNEL, &WorldSession::HandleJoinChannelOpcode);
230+
DEFINE_HANDLER(CMSG_JOIN_CHANNEL, STATUS_LOGGEDIN, PACKET_PROCESS_CHANNEL, &WorldSession::HandleJoinChannelOpcode);
231231
LEGACY_HANDLER(CMSG_LEAVE_CHANNEL, STATUS_LOGGEDIN, PACKET_PROCESS_CHANNEL, &WorldSession::HandleLeaveChannelOpcode);
232232
LEGACY_HANDLER(SMSG_CHANNEL_NOTIFY, STATUS_NEVER, PACKET_PROCESS_MAX_TYPE, &WorldSession::Handle_ServerSide);
233233
LEGACY_HANDLER(CMSG_CHANNEL_LIST, STATUS_LOGGEDIN, PACKET_PROCESS_CHANNEL, &WorldSession::HandleChannelListOpcode);

src/game/Server/WorldSession.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include "PacketProcessing.h"
3737
#include "UpdateData.h"
3838
#include "LockedQueue.h"
39+
#include "Packets/Channel.h"
3940
#include "Packets/Character.h"
4041
#include "Packets/Group.h"
4142
#include "Packets/Guild.h"
@@ -717,7 +718,7 @@ class WorldSession
717718
void HandleResurrectResponseOpcode(WorldPacket& recvPacket);
718719
void HandleSummonResponseOpcode(WorldPacket& recv_data);
719720

720-
void HandleJoinChannelOpcode(WorldPacket& recvPacket);
721+
void HandleJoinChannelOpcode(WorldPackets::Channel::JoinChannel const& packet);
721722
void HandleLeaveChannelOpcode(WorldPacket& recvPacket);
722723
void HandleChannelListOpcode(WorldPacket& recvPacket);
723724
void HandleChannelPasswordOpcode(WorldPacket& recvPacket);

0 commit comments

Comments
 (0)