aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMitchesD <majklprofik@seznam.cz>2015-07-23 22:00:40 +0200
committerMitchesD <majklprofik@seznam.cz>2015-07-23 22:00:40 +0200
commita487ddad4e2dd9099bb5b09862c17d47bb01fbef (patch)
tree054560163bbfa018ca9461a2c98f8dbf45a0ddf2 /src
parentfb09d62962185ace7f59185a9b6b1f7f088611c8 (diff)
Core/PacketIO: updated SMSG_CONVERT_RUNE and SMSG_RESYNC_RUNES
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp20
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp20
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h27
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
4 files changed, 60 insertions, 11 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 9392f8ab924..2e2fdafdf45 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -24520,22 +24520,24 @@ void Player::ConvertRune(uint8 index, RuneType newType)
{
SetCurrentRune(index, newType);
- WorldPacket data(SMSG_CONVERT_RUNE, 2);
- data << uint8(index);
- data << uint8(newType);
- GetSession()->SendPacket(&data);
+ WorldPackets::Spells::ConvertRune data;
+ data.Index = index;
+ data.Rune = newType;
+ GetSession()->SendPacket(data.Write());
}
void Player::ResyncRunes(uint8 count)
{
- WorldPacket data(SMSG_RESYNC_RUNES, 4 + count * 2);
- data << uint32(count);
+ WorldPackets::Spells::ResyncRunes data(count);
+
for (uint32 i = 0; i < count; ++i)
{
- data << uint8(GetCurrentRune(i)); // rune type
- data << uint8(255 - (GetRuneCooldown(i) * 51)); // passed cooldown time (0-255)
+ WorldPackets::Spells::ResyncRunes::ResyncRune rune;
+ rune.RuneType = GetCurrentRune(i); // rune type
+ rune.Cooldown = uint8(255 - (GetRuneCooldown(i) * 51)); // passed cooldown time (0-255)
+ data.Runes.push_back(rune);
}
- GetSession()->SendPacket(&data);
+ GetSession()->SendPacket(data.Write());
}
void Player::AddRunePower(uint8 index)
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index 00ce2593287..955888657c9 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -745,3 +745,23 @@ void WorldPackets::Spells::SpellClick::Read()
_worldPacket >> SpellClickUnitGuid;
TryAutoDismount = _worldPacket.ReadBit();
}
+
+WorldPacket const* WorldPackets::Spells::ConvertRune::Write()
+{
+ _worldPacket << uint8(Index);
+ _worldPacket << uint8(Rune);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Spells::ResyncRunes::Write()
+{
+ _worldPacket << uint32(Runes.size());
+ for (auto const& rune : Runes)
+ {
+ _worldPacket << uint8(rune.RuneType);
+ _worldPacket << uint8(rune.Cooldown);
+ }
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index b9388c02116..f5df5e32da0 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -749,6 +749,33 @@ namespace WorldPackets
ObjectGuid SpellClickUnitGuid;
bool TryAutoDismount = false;
};
+
+ class ConvertRune final : public ServerPacket
+ {
+ public:
+ ConvertRune() : ServerPacket(SMSG_CONVERT_RUNE, 1 + 1) { }
+
+ WorldPacket const* Write() override;
+
+ uint8 Index = 0;
+ uint8 Rune = 0;
+ };
+
+ class ResyncRunes final : public ServerPacket
+ {
+ public:
+ struct ResyncRune
+ {
+ uint8 RuneType = 0;
+ uint8 Cooldown = 0;
+ };
+
+ ResyncRunes(size_t size) : ServerPacket(SMSG_RESYNC_RUNES, 4 + 2 * size) { }
+
+ WorldPacket const* Write() override;
+
+ std::vector<ResyncRune> Runes;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 38248b9daf6..c911213f99e 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1033,7 +1033,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSOLE_WRITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTACT_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTROL_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONVERT_RUNE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONVERT_RUNE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_CHEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_EVENT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CORPSE_LOCATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1566,7 +1566,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_COMMS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_TOKEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESURRECT_REQUEST, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESYNC_RUNES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESYNC_RUNES, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHANGED_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHOSEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_POLL_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);