aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarbenium <carbenium@outlook.com>2016-02-02 20:55:48 +0100
committerCarbenium <carbenium@outlook.com>2016-02-02 20:55:48 +0100
commitaa5c9475555a8febb130d98f392546a00e1ebbb2 (patch)
tree1cd6e5833dff41b476ce92bb244a28461a846b1d /src
parent20a6b54bb635d107a0de639a29be92ef4526a9be (diff)
Core/PacketIO: Updated and enabled CMSG_SET_PARTY_ASSIGNMENT
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/GroupHandler.cpp16
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/PartyPackets.h12
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/WorldSession.h3
5 files changed, 28 insertions, 14 deletions
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index 49a10b61ed5..297cd9c3124 100644
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -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;
}
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
index 01a2da40c7b..2d5a85d4fd0 100644
--- a/src/server/game/Server/Packets/PartyPackets.cpp
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -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;
diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h
index 85742d09f7e..1c31ba25879 100644
--- a/src/server/game/Server/Packets/PartyPackets.h
+++ b/src/server/game/Server/Packets/PartyPackets.h
@@ -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:
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 1cc7e63a25c..5a25ee63a70 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -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 );
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 869c2b7304f..7d6d2f310db 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -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);