Core/PacketIO: Updated client packet structures to 7.2.0

This commit is contained in:
Shauren
2017-04-13 19:36:53 +02:00
parent 3c28435511
commit e253bb5a17
13 changed files with 78 additions and 22 deletions

View File

@@ -838,6 +838,7 @@ struct EquipmentSetInfo
uint64 Guid = 0; ///< Set Identifier
uint32 SetID = 0; ///< Index
uint32 IgnoreMask = 0; ///< Mask of EquipmentSlot
int32 AssignedSpecIndex = -1; ///< Index of character specialization that this set is automatically equipped for
std::string SetName;
std::string SetIcon;
std::array<ObjectGuid, EQUIPMENT_SLOT_END> Pieces;

View File

@@ -522,7 +522,7 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPackets::Movement::SetActiveM
TC_LOG_DEBUG("network", "HandleSetActiveMoverOpcode: incorrect mover guid: mover is %s and should be %s" , packet.ActiveMover.ToString().c_str(), _player->m_unitMovedByMe->GetGUID().ToString().c_str());
}
void WorldSession::HandleMoveKnockBackAck(WorldPackets::Movement::MovementAckMessage& movementAck)
void WorldSession::HandleMoveKnockBackAck(WorldPackets::Movement::MoveKnockBackAck& movementAck)
{
GetPlayer()->ValidateMovementInfo(&movementAck.Ack.movementInfo);

View File

@@ -115,7 +115,6 @@ void WorldPackets::BattlePet::BattlePetModifyName::Read()
_worldPacket >> PetGuid;
uint32 nameLength = _worldPacket.ReadBits(7);
bool hasDeclinedNames = _worldPacket.ReadBit();
Name = _worldPacket.ReadString(nameLength);
if (hasDeclinedNames)
{
@@ -127,6 +126,8 @@ void WorldPackets::BattlePet::BattlePetModifyName::Read()
for (uint8 i = 0; i < 5; ++i)
Declined.name[i] = _worldPacket.ReadString(declinedNameLengths[i]);
}
Name = _worldPacket.ReadString(nameLength);
}
void WorldPackets::BattlePet::BattlePetDeletePet::Read()

View File

@@ -114,8 +114,8 @@ void WorldPackets::BlackMarket::BlackMarketBidOnItem::Read()
{
_worldPacket >> Guid;
_worldPacket >> MarketID;
_worldPacket >> Item;
_worldPacket >> BidAmount;
_worldPacket >> Item;
}
WorldPacket const* WorldPackets::BlackMarket::BlackMarketBidOnItemResult::Write()

View File

@@ -24,7 +24,7 @@
void WorldPackets::Chat::ChatMessage::Read()
{
_worldPacket >> Language;
uint32 len = _worldPacket.ReadBits(8);
uint32 len = _worldPacket.ReadBits(9);
Text = _worldPacket.ReadString(len);
}
@@ -32,7 +32,7 @@ void WorldPackets::Chat::ChatMessageWhisper::Read()
{
_worldPacket >> Language;
uint32 targetLen = _worldPacket.ReadBits(9);
uint32 textLen = _worldPacket.ReadBits(8);
uint32 textLen = _worldPacket.ReadBits(9);
Target = _worldPacket.ReadString(targetLen);
Text = _worldPacket.ReadString(textLen);
}
@@ -41,7 +41,7 @@ void WorldPackets::Chat::ChatMessageChannel::Read()
{
_worldPacket >> Language;
uint32 targetLen = _worldPacket.ReadBits(9);
uint32 textLen = _worldPacket.ReadBits(8);
uint32 textLen = _worldPacket.ReadBits(9);
Target = _worldPacket.ReadString(targetLen);
Text = _worldPacket.ReadString(textLen);
}
@@ -49,7 +49,7 @@ void WorldPackets::Chat::ChatMessageChannel::Read()
void WorldPackets::Chat::ChatAddonMessage::Read()
{
uint32 prefixLen = _worldPacket.ReadBits(5);
uint32 textLen = _worldPacket.ReadBits(8);
uint32 textLen = _worldPacket.ReadBits(9);
Prefix = _worldPacket.ReadString(prefixLen);
Text = _worldPacket.ReadString(textLen);
}
@@ -58,7 +58,7 @@ void WorldPackets::Chat::ChatAddonMessageWhisper::Read()
{
uint32 targetLen = _worldPacket.ReadBits(9);
uint32 prefixLen = _worldPacket.ReadBits(5);
uint32 textLen = _worldPacket.ReadBits(8);
uint32 textLen = _worldPacket.ReadBits(9);
Target = _worldPacket.ReadString(targetLen);
Prefix = _worldPacket.ReadString(prefixLen);
Text = _worldPacket.ReadString(textLen);
@@ -68,7 +68,7 @@ void WorldPackets::Chat::ChatAddonMessageChannel::Read()
{
uint32 targetLen = _worldPacket.ReadBits(9);
uint32 prefixLen = _worldPacket.ReadBits(5);
uint32 textLen = _worldPacket.ReadBits(8);
uint32 textLen = _worldPacket.ReadBits(9);
Target = _worldPacket.ReadString(targetLen);
Prefix = _worldPacket.ReadString(prefixLen);
Text = _worldPacket.ReadString(textLen);
@@ -76,19 +76,19 @@ void WorldPackets::Chat::ChatAddonMessageChannel::Read()
void WorldPackets::Chat::ChatMessageDND::Read()
{
uint32 len = _worldPacket.ReadBits(8);
uint32 len = _worldPacket.ReadBits(9);
Text = _worldPacket.ReadString(len);
}
void WorldPackets::Chat::ChatMessageAFK::Read()
{
uint32 len = _worldPacket.ReadBits(8);
uint32 len = _worldPacket.ReadBits(9);
Text = _worldPacket.ReadString(len);
}
void WorldPackets::Chat::ChatMessageEmote::Read()
{
uint32 len = _worldPacket.ReadBits(8);
uint32 len = _worldPacket.ReadBits(9);
Text = _worldPacket.ReadString(len);
}

View File

@@ -45,10 +45,14 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write()
_worldPacket.append(equipSet->Enchants.data(), equipSet->Enchants.size());
_worldPacket.WriteBit(equipSet->AssignedSpecIndex != -1);
_worldPacket.WriteBits(equipSet->SetName.length(), 8);
_worldPacket.WriteBits(equipSet->SetIcon.length(), 9);
_worldPacket.FlushBits();
if (equipSet->AssignedSpecIndex != -1)
_worldPacket << int32(equipSet->AssignedSpecIndex);
_worldPacket.WriteString(equipSet->SetName);
_worldPacket.WriteString(equipSet->SetIcon);
}
@@ -72,9 +76,14 @@ void WorldPackets::EquipmentSet::SaveEquipmentSet::Read()
_worldPacket >> Set.Enchants[0];
_worldPacket >> Set.Enchants[1];
bool hasSpecIndex = _worldPacket.ReadBit();
uint32 setNameLength = _worldPacket.ReadBits(8);
uint32 setIconLength = _worldPacket.ReadBits(9);
if (hasSpecIndex)
_worldPacket >> Set.AssignedSpecIndex;
Set.SetName = _worldPacket.ReadString(setNameLength);
Set.SetIcon = _worldPacket.ReadString(setIconLength);
}
@@ -94,6 +103,8 @@ void WorldPackets::EquipmentSet::UseEquipmentSet::Read()
_worldPacket >> Items[i].ContainerSlot;
_worldPacket >> Items[i].Slot;
}
_worldPacket >> GUID;
}
WorldPacket const* WorldPackets::EquipmentSet::UseEquipmentSetResult::Write()

View File

@@ -83,6 +83,7 @@ namespace WorldPackets
WorldPackets::Item::InvUpdate Inv;
EquipmentSetItem Items[EQUIPMENT_SLOT_END];
uint64 GUID = 0; ///< Set Identifier
};
class UseEquipmentSetResult final : public ServerPacket

View File

@@ -39,10 +39,10 @@ void WorldPackets::Item::BuyItem::Read()
{
_worldPacket >> VendorGUID;
_worldPacket >> ContainerGUID;
_worldPacket >> Item;
_worldPacket >> Quantity;
_worldPacket >> Muid;
_worldPacket >> Slot;
_worldPacket >> Item;
ItemType = static_cast<ItemVendorType>(_worldPacket.ReadBits(2));
}

View File

@@ -641,13 +641,28 @@ WorldPacket const* WorldPackets::Movement::MoveSetActiveMover::Write()
return &_worldPacket;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MoveKnockBackSpeeds const& speeds)
{
data << float(speeds.HorzSpeed);
data << float(speeds.VertSpeed);
return data;
}
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Movement::MoveKnockBackSpeeds const& speeds)
{
data >> speeds.HorzSpeed;
data >> speeds.VertSpeed;
return data;
}
WorldPacket const* WorldPackets::Movement::MoveKnockBack::Write()
{
_worldPacket << MoverGUID;
_worldPacket << uint32(SequenceIndex);
_worldPacket << Direction;
_worldPacket << float(HorzSpeed);
_worldPacket << float(VertSpeed);
_worldPacket << Speeds;
return &_worldPacket;
}
@@ -659,6 +674,17 @@ WorldPacket const* WorldPackets::Movement::MoveUpdateKnockBack::Write()
return &_worldPacket;
}
void WorldPackets::Movement::MoveKnockBackAck::Read()
{
_worldPacket >> Ack;
bool hasSpeeds = _worldPacket.ReadBit();
if (hasSpeeds)
{
Speeds = boost::in_place();
_worldPacket >> *Speeds;
}
}
WorldPacket const* WorldPackets::Movement::MoveSetCollisionHeight::Write()
{
_worldPacket << MoverGUID;

View File

@@ -369,6 +369,12 @@ namespace WorldPackets
ObjectGuid MoverGUID;
};
struct MoveKnockBackSpeeds
{
float HorzSpeed = 0.0f;
float VertSpeed = 0.0f;
};
class MoveKnockBack final : public ServerPacket
{
public:
@@ -378,9 +384,8 @@ namespace WorldPackets
ObjectGuid MoverGUID;
G3D::Vector2 Direction;
float HorzSpeed = 0.0f;
MoveKnockBackSpeeds Speeds;
uint32 SequenceIndex = 0;
float VertSpeed = 0.0f;
};
class MoveUpdateKnockBack final : public ServerPacket
@@ -393,6 +398,17 @@ namespace WorldPackets
MovementInfo* movementInfo = nullptr;
};
class MoveKnockBackAck final : public ClientPacket
{
public:
MoveKnockBackAck(WorldPacket&& packet) : ClientPacket(CMSG_MOVE_KNOCK_BACK_ACK, std::move(packet)) { }
void Read() override;
MovementAck Ack;
Optional<MoveKnockBackSpeeds> Speeds;
};
enum UpdateCollisionHeightReason : uint8
{
UPDATE_COLLISION_HEIGHT_SCALE = 0,

View File

@@ -191,8 +191,8 @@ ByteBuffer& operator>>(ByteBuffer& data, Optional<WorldPackets::Ticket::SupportT
void WorldPackets::Ticket::SupportTicketSubmitComplaint::Read()
{
_worldPacket >> Header;
_worldPacket >> ChatLog;
_worldPacket >> TargetCharacterGUID;
_worldPacket >> ChatLog;
ComplaintType = _worldPacket.ReadBits(5);
uint32 noteLength = _worldPacket.ReadBits(10);

View File

@@ -218,9 +218,8 @@ namespace WorldPackets
ComplaintOffender Offender;
uint32 MailID = 0;
ComplaintChat Chat;
ObjectGuid EventGuid;
ObjectGuid InviteGuid;
uint64 EventGuid;
uint64 InviteGuid;
};
class ComplaintResult final : public ServerPacket

View File

@@ -453,6 +453,7 @@ namespace WorldPackets
class MoveTeleportAck;
class MovementAckMessage;
class MovementSpeedAck;
class MoveKnockBackAck;
class SetActiveMover;
class MoveSetCollisionHeightAck;
class MoveTimeSkipped;
@@ -1184,7 +1185,7 @@ class TC_GAME_API WorldSession
void HandleRepairItemOpcode(WorldPackets::Item::RepairItem& packet);
// Knockback
void HandleMoveKnockBackAck(WorldPackets::Movement::MovementAckMessage& movementAck);
void HandleMoveKnockBackAck(WorldPackets::Movement::MoveKnockBackAck& movementAck);
void HandleMoveTeleportAck(WorldPackets::Movement::MoveTeleportAck& packet);
void HandleForceSpeedChangeAck(WorldPackets::Movement::MovementSpeedAck& packet);