diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-08-25 19:12:00 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-08-25 19:12:00 +0200 |
| commit | a727a99e34a1a50b4b7589ab549751caa63282b0 (patch) | |
| tree | 65c60c621ee2a8452acc03292c28e296897fbea9 /src/server/game/Server | |
| parent | e2f133902f8a37984e462a807a30a6663448d01e (diff) | |
Core/Players: Implemented new glyph system
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/Packets/TalentPackets.cpp | 19 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/TalentPackets.h | 19 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
3 files changed, 39 insertions, 1 deletions
diff --git a/src/server/game/Server/Packets/TalentPackets.cpp b/src/server/game/Server/Packets/TalentPackets.cpp index 1069b8a89f7..c6f3b95a02f 100644 --- a/src/server/game/Server/Packets/TalentPackets.cpp +++ b/src/server/game/Server/Packets/TalentPackets.cpp @@ -70,3 +70,22 @@ WorldPacket const* WorldPackets::Talent::LearnTalentsFailed::Write() return &_worldPacket; } + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::GlyphBinding const& glyphBinding) +{ + data << uint32(glyphBinding.SpellID); + data << uint16(glyphBinding.GlyphID); + return data; +} + +WorldPacket const* WorldPackets::Talent::ActiveGlyphs::Write() +{ + _worldPacket << uint32(Glyphs.size()); + for (GlyphBinding const& glyph : Glyphs) + _worldPacket << glyph; + + _worldPacket.WriteBit(IsFullUpdate); + _worldPacket.FlushBits(); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/TalentPackets.h b/src/server/game/Server/Packets/TalentPackets.h index 57893bb94a4..92c2e1efdce 100644 --- a/src/server/game/Server/Packets/TalentPackets.h +++ b/src/server/game/Server/Packets/TalentPackets.h @@ -93,6 +93,25 @@ namespace WorldPackets int32 SpellID = 0; std::vector<uint16> Talents; }; + + struct GlyphBinding + { + GlyphBinding(uint32 spellId = 0, uint16 glyphId = 0) : SpellID(spellId), GlyphID(glyphId) { } + + uint32 SpellID; + uint16 GlyphID; + }; + + class ActiveGlyphs final : public ServerPacket + { + public: + ActiveGlyphs() : ServerPacket(SMSG_ACTIVE_GLYPHS) { } + + WorldPacket const* Write() override; + + std::vector<GlyphBinding> Glyphs; + bool IsFullUpdate = false; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 9a6d7adba71..96ce155de11 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -837,7 +837,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACHIEVEMENT_DELETED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACHIEVEMENT_EARNED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVATE_TAXI_REPLY, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVE_GLYPHS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVE_GLYPHS, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_BATTLENET_FRIEND_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_ITEM_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); |
