aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Chat/Channels/Channel.cpp40
-rw-r--r--src/server/game/Server/Packets/ChannelPackets.h10
-rw-r--r--src/server/game/Server/WorldSession.h3
3 files changed, 30 insertions, 23 deletions
diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp
index 04b6eb1b5b1..2ac84063664 100644
--- a/src/server/game/Chat/Channels/Channel.cpp
+++ b/src/server/game/Chat/Channels/Channel.cpp
@@ -990,32 +990,42 @@ void Channel::MakeVoiceOff(WorldPackets::Channel::ChannelNotify& data, ObjectGui
void Channel::JoinNotify(Player const* player)
{
ObjectGuid const& guid = player->GetGUID();
- WorldPacket data(IsConstant() ? SMSG_USERLIST_ADD : SMSG_USERLIST_UPDATE, 8 + 1 + 1 + 4 + GetName().size());
- data << guid;
- data << uint8(GetPlayerFlags(guid));
- data << uint8(GetFlags());
- data << uint32(GetNumPlayers());
- data << GetName();
if (IsConstant())
- SendToAllButOne(&data, guid);
+ {
+ WorldPackets::Channel::UserlistAdd userlistAdd;
+ userlistAdd.AddedUserGUID = guid;
+ userlistAdd.ChannelFlags = GetFlags();
+ userlistAdd.UserFlags = GetPlayerFlags(guid);
+ userlistAdd.ChannelID = GetChannelId();
+ userlistAdd.ChannelName = GetName();
+ SendToAllButOne(userlistAdd.Write(), guid);
+ }
else
- SendToAll(&data);
+ {
+ WorldPackets::Channel::UserlistUpdate userlistUpdate;
+ userlistUpdate.UpdatedUserGUID = guid;
+ userlistUpdate.ChannelFlags = GetFlags();
+ userlistUpdate.UserFlags = GetPlayerFlags(guid);
+ userlistUpdate.ChannelID = GetChannelId();
+ userlistUpdate.ChannelName = GetName();
+ SendToAll(userlistUpdate.Write());
+ }
}
void Channel::LeaveNotify(Player const* player)
{
ObjectGuid const& guid = player->GetGUID();
- WorldPacket data(SMSG_USERLIST_REMOVE, 8 + 1 + 4 + GetName().size());
- data << guid;
- data << uint8(GetFlags());
- data << uint32(GetNumPlayers());
- data << GetName();
+ WorldPackets::Channel::UserlistRemove userlistRemove;
+ userlistRemove.RemovedUserGUID = guid;
+ userlistRemove.ChannelFlags = GetFlags();
+ userlistRemove.ChannelID = GetChannelId();
+ userlistRemove.ChannelName = GetName();
if (IsConstant())
- SendToAllButOne(&data, guid);
+ SendToAllButOne(userlistRemove.Write(), guid);
else
- SendToAll(&data);
+ SendToAll(userlistRemove.Write());
}
void Channel::SetModerator(ObjectGuid const& guid, bool set)
diff --git a/src/server/game/Server/Packets/ChannelPackets.h b/src/server/game/Server/Packets/ChannelPackets.h
index 6c43588e86a..8dba1e84677 100644
--- a/src/server/game/Server/Packets/ChannelPackets.h
+++ b/src/server/game/Server/Packets/ChannelPackets.h
@@ -104,8 +104,8 @@ namespace WorldPackets
ObjectGuid AddedUserGUID;
- ChannelFlags ChannelFlags = CHANNEL_FLAG_NONE;
- ChannelMemberFlags UserFlags = MEMBER_FLAG_NONE;
+ uint8 ChannelFlags = CHANNEL_FLAG_NONE;
+ uint8 UserFlags = MEMBER_FLAG_NONE;
int32 ChannelID = 0;
@@ -121,7 +121,7 @@ namespace WorldPackets
ObjectGuid RemovedUserGUID;
- ChannelFlags ChannelFlags = CHANNEL_FLAG_NONE;
+ uint8 ChannelFlags = CHANNEL_FLAG_NONE;
uint32 ChannelID = 0;
@@ -137,8 +137,8 @@ namespace WorldPackets
ObjectGuid UpdatedUserGUID;
- ChannelFlags ChannelFlags = CHANNEL_FLAG_NONE;
- ChannelMemberFlags UserFlags = MEMBER_FLAG_NONE;
+ uint8 ChannelFlags = CHANNEL_FLAG_NONE;
+ uint8 UserFlags = MEMBER_FLAG_NONE;
int32 ChannelID = 0;
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 6cfa8202af4..bd4fefdd665 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -171,9 +171,6 @@ namespace WorldPackets
class ChannelPlayerCommand;
class JoinChannel;
class LeaveChannel;
- class UserlistAdd;
- class UserlistRemove;
- class UserlistUpdate;
}
namespace Chat