Core/PacketIO: updated SMSG_CONVERT_RUNE and SMSG_RESYNC_RUNES

This commit is contained in:
MitchesD
2015-07-23 22:00:40 +02:00
parent fb09d62962
commit a487ddad4e
4 changed files with 60 additions and 11 deletions

View File

@@ -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)

View File

@@ -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;
}

View File

@@ -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;
};
}
}

View File

@@ -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);