aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2014-11-19 21:09:30 +0100
committerjoschiwald <joschiwald.trinity@gmail.com>2014-11-19 21:09:30 +0100
commitabff9de719ac189fc82da87f077a24dba69cfdbb (patch)
tree52285d02eb93b1b1e12663a913d05670bcdf836e /src/server/game/Server
parent13bca49e5f05e6c4a33460070d793e1c0fc5ab57 (diff)
Core/Packets: updated EquipmentSet save packets
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/EquipmentSetPackets.cpp43
-rw-r--r--src/server/game/Server/Packets/EquipmentSetPackets.h25
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp34
-rw-r--r--src/server/game/Server/Packets/MovementPackets.h2
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h8
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp7
-rw-r--r--src/server/game/Server/WorldSession.h7
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);