diff options
author | MitchesD <majklprofik@seznam.cz> | 2015-07-23 22:00:40 +0200 |
---|---|---|
committer | MitchesD <majklprofik@seznam.cz> | 2015-07-23 22:00:40 +0200 |
commit | a487ddad4e2dd9099bb5b09862c17d47bb01fbef (patch) | |
tree | 054560163bbfa018ca9461a2c98f8dbf45a0ddf2 /src | |
parent | fb09d62962185ace7f59185a9b6b1f7f088611c8 (diff) |
Core/PacketIO: updated SMSG_CONVERT_RUNE and SMSG_RESYNC_RUNES
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 20 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.cpp | 20 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.h | 27 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 |
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); |