diff options
| author | joschiwald <joschiwald.trinity@gmail.com> | 2014-11-19 21:09:30 +0100 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2014-11-19 21:09:30 +0100 |
| commit | abff9de719ac189fc82da87f077a24dba69cfdbb (patch) | |
| tree | 52285d02eb93b1b1e12663a913d05670bcdf836e /src/server/game/Server | |
| parent | 13bca49e5f05e6c4a33460070d793e1c0fc5ab57 (diff) | |
Core/Packets: updated EquipmentSet save packets
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/Packets/EquipmentSetPackets.cpp | 43 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/EquipmentSetPackets.h | 25 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/MovementPackets.cpp | 34 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/MovementPackets.h | 2 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/QuestPackets.h | 8 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/SpellPackets.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 7 |
8 files changed, 94 insertions, 34 deletions
diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp index ea8df38bcd1..07cab20debf 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp +++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp @@ -17,24 +17,49 @@ #include "EquipmentSetPackets.h" +WorldPacket const* WorldPackets::EquipmentSet::EquipmentSetID::Write() +{ + _worldPacket << uint64(GUID); + _worldPacket << uint32(SetID); + + return &_worldPacket; +} + WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write() { _worldPacket << uint32(SetData.size()); - for (EquipmentSetData const& equipSet : SetData) + for (EquipmentSetInfo::EquipmentSetData const* equipSet : SetData) { - _worldPacket << uint64(equipSet.Guid); - _worldPacket << uint32(equipSet.SetID); - _worldPacket << uint32(equipSet.IgnoreMask); + _worldPacket << uint64(equipSet->Guid); + _worldPacket << uint32(equipSet->SetID); + _worldPacket << uint32(equipSet->IgnoreMask); - for (ObjectGuid const& guid : equipSet.Pieces) + for (ObjectGuid const& guid : equipSet->Pieces) _worldPacket << guid; - _worldPacket.WriteBits(equipSet.SetName.length(), 8); - _worldPacket.WriteBits(equipSet.SetIcon.length(), 9); - _worldPacket.WriteString(equipSet.SetName); - _worldPacket.WriteString(equipSet.SetIcon); + _worldPacket.WriteBits(equipSet->SetName.length(), 8); + _worldPacket.WriteBits(equipSet->SetIcon.length(), 9); + _worldPacket.WriteString(equipSet->SetName); + _worldPacket.WriteString(equipSet->SetIcon); + _worldPacket.FlushBits(); } return &_worldPacket; } + +void WorldPackets::EquipmentSet::SaveEquipmentSet::Read() +{ + _worldPacket >> Set.Guid; + _worldPacket >> Set.SetID; + _worldPacket >> Set.IgnoreMask; + + for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i) + _worldPacket >> Set.Pieces[i]; + + uint32 setNameLength = _worldPacket.ReadBits(8); + uint32 setIconLength = _worldPacket.ReadBits(9); + + Set.SetName = _worldPacket.ReadString(setNameLength); + Set.SetIcon = _worldPacket.ReadString(setIconLength); +} diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.h b/src/server/game/Server/Packets/EquipmentSetPackets.h index 530a8b0efad..b01c483f5ac 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.h +++ b/src/server/game/Server/Packets/EquipmentSetPackets.h @@ -24,14 +24,15 @@ namespace WorldPackets { namespace EquipmentSet { - struct EquipmentSetData + class EquipmentSetID final : public ServerPacket { - uint64 Guid = 0; ///< Set Identifier + public: + EquipmentSetID() : ServerPacket(SMSG_EQUIPMENT_SET_SAVED, 8 + 4) { } + + WorldPacket const* Write() override; + + uint64 GUID = 0; ///< Set Identifier uint32 SetID = 0; ///< Index - uint32 IgnoreMask = 0; - std::string SetName; - std::string SetIcon; - ObjectGuid Pieces[EQUIPMENT_SLOT_END]; }; class LoadEquipmentSet final : public ServerPacket @@ -41,7 +42,17 @@ namespace WorldPackets WorldPacket const* Write() override; - std::vector<EquipmentSetData> SetData; + std::vector<EquipmentSetInfo::EquipmentSetData const*> SetData; + }; + + class SaveEquipmentSet final : public ClientPacket + { + public: + SaveEquipmentSet(WorldPacket&& packet) : ClientPacket(CMSG_EQUIPMENT_SET_SAVE, std::move(packet)) { } + + void Read() override; + + EquipmentSetInfo::EquipmentSetData Set; }; } } diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 010631c0529..659b3eaaf2b 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -18,14 +18,16 @@ #include "MovementPackets.h" #include "MovementTypedefs.h" -ByteBuffer& operator << (ByteBuffer& data, const G3D::Vector3& v) +ByteBuffer& operator<<(ByteBuffer& data, G3D::Vector3 const& v) { data << v.x << v.y << v.z; + return data; } -ByteBuffer& operator >> (ByteBuffer& data, G3D::Vector3& v) +ByteBuffer& operator>>(ByteBuffer& data, G3D::Vector3& v) { data >> v.x >> v.y >> v.z; + return data; } ByteBuffer& operator<<(ByteBuffer& data, MovementInfo& movementInfo) @@ -53,8 +55,6 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo& movementInfo) data << ObjectGuid; }*/ - data.FlushBits(); - data.WriteBits(movementInfo.flags, 30); data.WriteBits(movementInfo.flags2, 15); @@ -86,8 +86,6 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo& movementInfo) data << movementInfo.jump.fallTime; data << movementInfo.jump.zspeed; - data.FlushBits(); - data.WriteBit(hasFallDirection); if (hasFallDirection) { @@ -98,6 +96,8 @@ ByteBuffer& operator<<(ByteBuffer& data, MovementInfo& movementInfo) } data.FlushBits(); + + return data; } ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo) @@ -161,6 +161,8 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo) data >> movementInfo.jump.xyspeed; } } + + return data; } void WorldPackets::Movement::ClientPlayerMovement::Read() @@ -172,6 +174,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineFi { data << monsterSplineFilterKey.Idx; data << monsterSplineFilterKey.Speed; + + return data; } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineFilter& monsterSplineFilter) @@ -183,8 +187,10 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineFi for (WorldPackets::Movement::MonsterSplineFilterKey& filterKey : monsterSplineFilter.FilterKeys) data << filterKey; data << monsterSplineFilter.AddedToStart; - data.FlushBits(); data.WriteBits(monsterSplineFilter.FilterFlags, 2); + data.FlushBits(); + + return data; } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementSpline& movementSpline) @@ -202,13 +208,14 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementSpline& data << movementSpline.TransportGUID; data << movementSpline.VehicleSeat; data << int32(movementSpline.PackedDeltas.size()); - for (G3D::Vector3& pos : movementSpline.Points) + for (G3D::Vector3 const& pos : movementSpline.Points) data << pos; - for (G3D::Vector3& pos : movementSpline.PackedDeltas) + for (G3D::Vector3 const& pos : movementSpline.PackedDeltas) data.appendPackXYZ(pos.x, pos.y, pos.z); - data.FlushBits(); data.WriteBits(movementSpline.Face, 2); data.WriteBit(movementSpline.SplineFilter.HasValue); + data.FlushBits(); + switch (movementSpline.Face) { case MONSTER_MOVE_FACING_SPOT: @@ -222,8 +229,11 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementSpline& data << movementSpline.FaceDirection; break; } + if (movementSpline.SplineFilter.HasValue) data << movementSpline.SplineFilter.value; + + return data; } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementMonsterSpline& movementMonsterSpline) @@ -231,8 +241,10 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MovementMonster data << movementMonsterSpline.ID; data << movementMonsterSpline.Destination; data << movementMonsterSpline.Move; - data.FlushBits(); data.WriteBit(movementMonsterSpline.CrzTeleport); + data.FlushBits(); + + return data; } WorldPacket const* WorldPackets::Movement::MonsterMove::Write() diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index 8aebb1db9fc..ee8a4d12c01 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -148,7 +148,7 @@ namespace WorldPackets } } -ByteBuffer& operator<<(ByteBuffer& data, const G3D::Vector3& v); +ByteBuffer& operator<<(ByteBuffer& data, G3D::Vector3 const& v); ByteBuffer& operator>>(ByteBuffer& data, G3D::Vector3& v); ByteBuffer& operator>>(ByteBuffer& data, MovementInfo& movementInfo); diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index c656662761d..8fc5fe000f1 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -41,11 +41,15 @@ namespace WorldPackets public: QuestGiverStatusMultipleQuery(WorldPacket&& packet) : ClientPacket(CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY, std::move(packet)) { } - void Read() override {}; + void Read() override { } }; struct QuestGiverInfo { + QuestGiverInfo() { } + QuestGiverInfo(ObjectGuid const& guid, uint32 status) + : Guid(guid), Status(status) { } + ObjectGuid Guid; uint32 Status = DIALOG_STATUS_NONE; }; @@ -53,7 +57,7 @@ namespace WorldPackets class QuestGiverStatus final : public ServerPacket { public: - QuestGiverStatus() : ServerPacket(SMSG_QUESTGIVER_STATUS, 12) { } + QuestGiverStatus() : ServerPacket(SMSG_QUESTGIVER_STATUS, 22) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 37738f4033c..2e345d5b9a4 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -78,5 +78,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spell::SpellCastLogData& data.WriteBit(false); // data << float // Unk data if bit is true data.FlushBits(); + + return data; } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index ab4b768cfd4..de9b3d0746b 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -23,6 +23,7 @@ #include "Packets/ChatPackets.h" #include "Packets/ClientConfigPackets.h" #include "Packets/CombatPackets.h" +#include "Packets/EquipmentSetPackets.h" #include "Packets/GuildPackets.h" #include "Packets/MiscPackets.h" #include "Packets/MovementPackets.h" @@ -278,7 +279,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_ENABLETAXI, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodes ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ENABLE_NAGLE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess ); DEFINE_OPCODE_HANDLER_OLD(CMSG_EQUIPMENT_SET_DELETE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetDelete ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_EQUIPMENT_SET_SAVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetSave ); + DEFINE_HANDLER(CMSG_EQUIPMENT_SET_SAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::EquipmentSet::SaveEquipmentSet, &WorldSession::HandleEquipmentSetSave); DEFINE_OPCODE_HANDLER_OLD(CMSG_EQUIPMENT_SET_USE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetUse ); DEFINE_OPCODE_HANDLER_OLD(CMSG_FACTION_BONUS_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_FAR_SIGHT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleFarSightOpcode ); @@ -889,8 +890,8 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENABLE_BARBER_SHOP, STATUS_UNHANDLED); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCHANTMENTLOG, STATUS_UNHANDLED); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTALDAMAGELOG, STATUS_UNHANDLED); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_LIST, STATUS_UNHANDLED); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_SAVED, STATUS_UNHANDLED); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_LIST, STATUS_NEVER); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_SAVED, STATUS_NEVER); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_USE_RESULT, STATUS_UNHANDLED); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED); DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_UNHANDLED); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index c176bf5a3b1..eae081f2b74 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -126,6 +126,11 @@ namespace WorldPackets class AttackStop; } + namespace EquipmentSet + { + class SaveEquipmentSet; + } + namespace Guild { class QueryGuildInfo; @@ -1095,7 +1100,7 @@ class WorldSession void HandleRemoveGlyph(WorldPacket& recvData); void HandleQueryInspectAchievements(WorldPacket& recvData); void HandleGuildAchievementProgressQuery(WorldPacket& recvData); - void HandleEquipmentSetSave(WorldPacket& recvData); + void HandleEquipmentSetSave(WorldPackets::EquipmentSet::SaveEquipmentSet& packet); void HandleEquipmentSetDelete(WorldPacket& recvData); void HandleEquipmentSetUse(WorldPacket& recvData); void HandleWorldStateUITimerUpdate(WorldPacket& recvData); |
