diff options
| author | HenryG <alternative@masschaos-gm.com> | 2015-05-18 18:11:12 -0400 |
|---|---|---|
| committer | HenryG <alternative@masschaos-gm.com> | 2015-05-18 18:11:12 -0400 |
| commit | dfded990da79ffcfb9fd4bf83f52539271b3f16e (patch) | |
| tree | 7e85a59c7c9590bc84a1cd748e5215817986f660 /src/server/game/Chat | |
| parent | 18302a1f70c2b1b208641ed3b2ffe5a313771d52 (diff) | |
Updated implementation of userlist packets SMSG_USERLIST_ADD, SMSG_USERLIST_UPDATE, and SMSG_USERLIST_REMOVE
Diffstat (limited to 'src/server/game/Chat')
| -rw-r--r-- | src/server/game/Chat/Channels/Channel.cpp | 40 |
1 files changed, 25 insertions, 15 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) |
