Core/PacketIO: Updated and enabled CMSG_SET_PARTY_ASSIGNMENT

This commit is contained in:
Carbenium
2016-02-02 20:55:48 +01:00
parent 20a6b54bb6
commit aa5c947555
5 changed files with 28 additions and 14 deletions

View File

@@ -524,10 +524,8 @@ void WorldSession::HandleSetAssistantLeaderOpcode(WorldPackets::Party::SetAssist
group->SetGroupMemberFlag(packet.Target, packet.Apply, MEMBER_FLAG_ASSISTANT);
}
void WorldSession::HandlePartyAssignmentOpcode(WorldPacket& recvData)
void WorldSession::HandleSetPartyAssignment(WorldPackets::Party::SetPartyAssignment& packet)
{
TC_LOG_DEBUG("network", "WORLD: Received MSG_PARTY_ASSIGNMENT");
Group* group = GetPlayer()->GetGroup();
if (!group)
return;
@@ -536,21 +534,15 @@ void WorldSession::HandlePartyAssignmentOpcode(WorldPacket& recvData)
if (!group->IsLeader(senderGuid) && !group->IsAssistant(senderGuid))
return;
uint8 assignment;
bool apply;
ObjectGuid guid;
recvData >> assignment >> apply;
recvData >> guid;
switch (assignment)
switch (packet.Assignment)
{
case GROUP_ASSIGN_MAINASSIST:
group->RemoveUniqueGroupMemberFlag(MEMBER_FLAG_MAINASSIST);
group->SetGroupMemberFlag(guid, apply, MEMBER_FLAG_MAINASSIST);
group->SetGroupMemberFlag(packet.Target, packet.Set, MEMBER_FLAG_MAINASSIST);
break;
case GROUP_ASSIGN_MAINTANK:
group->RemoveUniqueGroupMemberFlag(MEMBER_FLAG_MAINTANK); // Remove main assist flag from current if any.
group->SetGroupMemberFlag(guid, apply, MEMBER_FLAG_MAINTANK);
group->SetGroupMemberFlag(packet.Target, packet.Set, MEMBER_FLAG_MAINTANK);
default:
break;
}

View File

@@ -163,6 +163,15 @@ void WorldPackets::Party::SetPartyLeader::Read()
_worldPacket >> TargetGUID;
}
void WorldPackets::Party::SetPartyAssignment::Read()
{
_worldPacket >> PartyIndex;
_worldPacket >> Assignment;
_worldPacket >> Target;
Set = _worldPacket.ReadBit();
}
void WorldPackets::Party::SetRole::Read()
{
_worldPacket >> PartyIndex;

View File

@@ -362,6 +362,18 @@ namespace WorldPackets
bool Apply = false;
};
class SetPartyAssignment final : public ClientPacket
{
public:
SetPartyAssignment(WorldPacket&& packet) : ClientPacket(CMSG_SET_PARTY_ASSIGNMENT, std::move(packet)) { }
void Read() override;
uint8 Assignment = 0;
uint8 PartyIndex = 0;
ObjectGuid Target;
bool Set = false;
};
class DoReadyCheck final : public ClientPacket
{
public:

View File

@@ -691,7 +691,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_LFG_BONUS_FACTION_ID, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_LOOT_METHOD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::SetLootMethod, &WorldSession::HandleSetLootMethodOpcode);
DEFINE_HANDLER(CMSG_SET_LOOT_SPECIALIZATION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Loot::SetLootSpecialization, &WorldSession::HandleSetLootSpecialization);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_PARTY_ASSIGNMENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyAssignmentOpcode );
DEFINE_HANDLER(CMSG_SET_PARTY_ASSIGNMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::SetPartyAssignment, &WorldSession::HandleSetPartyAssignment);
DEFINE_HANDLER(CMSG_SET_PARTY_LEADER, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::SetPartyLeader, &WorldSession::HandleSetPartyLeaderOpcode);
DEFINE_HANDLER(CMSG_SET_PET_SLOT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_PLAYER_DECLINED_NAMES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetPlayerDeclinedNames );

View File

@@ -450,6 +450,7 @@ namespace WorldPackets
class RequestPartyMemberStats;
class PartyMemberStats;
class SetPartyLeader;
class SetPartyAssignment;
class SetRole;
class RoleChangedInform;
class SetLootMethod;
@@ -1227,7 +1228,7 @@ class WorldSession
void HandleChangeSubGroupOpcode(WorldPackets::Party::ChangeSubGroup& packet);
void HandleSwapSubGroupsOpcode(WorldPackets::Party::SwapSubGroups& packet);
void HandleSetAssistantLeaderOpcode(WorldPackets::Party::SetAssistantLeader& packet);
void HandlePartyAssignmentOpcode(WorldPacket& recvData);
void HandleSetPartyAssignment(WorldPackets::Party::SetPartyAssignment& packet);
void HandleInitiateRolePoll(WorldPackets::Party::InitiateRolePoll& packet);
void HandleSetEveryoneIsAssistant(WorldPackets::Party::SetEveryoneIsAssistant& packet);
void HandleClearRaidMarker(WorldPackets::Party::ClearRaidMarker& packet);