aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-08-25 19:12:00 +0200
committerShauren <shauren.trinity@gmail.com>2016-08-25 19:12:00 +0200
commita727a99e34a1a50b4b7589ab549751caa63282b0 (patch)
tree65c60c621ee2a8452acc03292c28e296897fbea9 /src/server/game/Server
parente2f133902f8a37984e462a807a30a6663448d01e (diff)
Core/Players: Implemented new glyph system
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/TalentPackets.cpp19
-rw-r--r--src/server/game/Server/Packets/TalentPackets.h19
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
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);