Updated implementation of userlist packets SMSG_USERLIST_ADD, SMSG_USERLIST_UPDATE, and SMSG_USERLIST_REMOVE

This commit is contained in:
HenryG
2015-05-18 18:11:12 -04:00
parent 18302a1f70
commit dfded990da
3 changed files with 30 additions and 23 deletions

View File

@@ -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)

View File

@@ -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;

View File

@@ -171,9 +171,6 @@ namespace WorldPackets
class ChannelPlayerCommand;
class JoinChannel;
class LeaveChannel;
class UserlistAdd;
class UserlistRemove;
class UserlistUpdate;
}
namespace Chat