Core/PacketIO: Fixed SMSG_MAIL_LIST_RESULT structure

This commit is contained in:
Shauren
2016-10-01 12:16:53 +02:00
parent 7225e24932
commit 20f0db0e47
15 changed files with 60 additions and 71 deletions

View File

@@ -850,7 +850,7 @@ void AuctionEntry::BuildAuctionInfo(std::vector<WorldPackets::AuctionHouse::Auct
{
if (gemData.ItemId)
{
WorldPackets::Item::ItemGemInstanceData gem;
WorldPackets::Item::ItemGemData gem;
gem.Slot = i;
gem.Item.Initialize(&gemData);
auctionItem.Gems.push_back(gem);

View File

@@ -3219,7 +3219,7 @@ void Guild::_SendBankContentUpdate(uint8 tabId, SlotIds slots) const
{
if (gemData.ItemId)
{
WorldPackets::Item::ItemGemInstanceData gem;
WorldPackets::Item::ItemGemData gem;
gem.Slot = i;
gem.Item.Initialize(&gemData);
itemInfo.SocketEnchant.push_back(gem);
@@ -3301,7 +3301,7 @@ void Guild::SendBankList(WorldSession* session, uint8 tabId, bool fullUpdate) co
{
if (gemData.ItemId)
{
WorldPackets::Item::ItemGemInstanceData gem;
WorldPackets::Item::ItemGemData gem;
gem.Slot = i;
gem.Item.Initialize(&gemData);
itemInfo.SocketEnchant.push_back(gem);

View File

@@ -84,7 +84,7 @@ void WorldSession::SendUpdateTrade(bool trader_data /*= true*/)
{
if (gemData.ItemId)
{
WorldPackets::Item::ItemGemInstanceData gem;
WorldPackets::Item::ItemGemData gem;
gem.Slot = i;
gem.Item.Initialize(&gemData);
tradeItem.Unwrapped->Gems.push_back(gem);

View File

@@ -38,16 +38,11 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::AuctionHouse::AuctionItem
data.WriteBit(auctionItem.CensorBidInfo);
data.FlushBits();
for (auto const& gem : auctionItem.Gems)
for (WorldPackets::Item::ItemGemData const& gem : auctionItem.Gems)
data << gem;
for (WorldPackets::AuctionHouse::AuctionItem::AuctionItemEnchant const& enchant : auctionItem.Enchantments)
{
data << int32(enchant.ID);
data << uint32(enchant.Expiration);
data << int32(enchant.Charges);
data << uint8(enchant.Slot);
}
for (WorldPackets::Item::ItemEnchantData const& enchant : auctionItem.Enchantments)
data << enchant;
if (!auctionItem.CensorServerSideInfo)
{

View File

@@ -31,19 +31,10 @@ namespace WorldPackets
{
struct AuctionItem
{
struct AuctionItemEnchant
{
AuctionItemEnchant(int32 id, uint32 expiration, int32 charges, uint8 slot) : ID(id), Expiration(expiration), Charges(charges), Slot(slot) { }
int32 ID = 0;
uint32 Expiration = 0;
int32 Charges = 0;
uint8 Slot = 0;
};
Item::ItemInstance Item;
int32 Count = 0;
int32 Charges = 0;
std::vector<AuctionItemEnchant> Enchantments;
std::vector<Item::ItemEnchantData> Enchantments;
int32 Flags = 0;
int32 AuctionItemID = 0;
ObjectGuid Owner;
@@ -59,7 +50,7 @@ namespace WorldPackets
uint32 EndTime = 0;
ObjectGuid Bidder;
uint64 BidAmount = 0;
std::vector<Item::ItemGemInstanceData> Gems;
std::vector<Item::ItemGemData> Gems;
};
struct AuctionOwnerNotification

View File

@@ -624,7 +624,7 @@ WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write()
_worldPacket.WriteBit(item.Locked);
_worldPacket.FlushBits();
for (Item::ItemGemInstanceData const& socketEnchant : item.SocketEnchant)
for (Item::ItemGemData const& socketEnchant : item.SocketEnchant)
_worldPacket << socketEnchant;
}

View File

@@ -788,7 +788,7 @@ namespace WorldPackets
int32 OnUseEnchantmentID = 0;
int32 Flags = 0;
bool Locked = false;
std::vector<Item::ItemGemInstanceData> SocketEnchant;
std::vector<Item::ItemGemData> SocketEnchant;
};
struct GuildBankTabInfo

View File

@@ -76,7 +76,7 @@ WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint
{
if (gemData.ItemId)
{
WorldPackets::Item::ItemGemInstanceData gem;
WorldPackets::Item::ItemGemData gem;
gem.Slot = i;
gem.Item.Initialize(&gemData);
Gems.push_back(gem);

View File

@@ -54,7 +54,7 @@ namespace WorldPackets
uint8 Index = 0;
bool Usable = false;
std::vector<InspectEnchantData> Enchants;
std::vector<Item::ItemGemInstanceData> Gems;
std::vector<Item::ItemGemData> Gems;
};
struct InspectGuildData

View File

@@ -232,17 +232,26 @@ ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemInstance& itemI
return data;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemGemInstanceData const& itemGemInstanceData)
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemEnchantData const& itemEnchantData)
{
data << uint8(itemGemInstanceData.Slot);
data << itemGemInstanceData.Item;
data << int32(itemEnchantData.ID);
data << uint32(itemEnchantData.Expiration);
data << int32(itemEnchantData.Charges);
data << uint8(itemEnchantData.Slot);
return data;
}
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemGemInstanceData& itemGemInstanceData)
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemGemData const& itemGemData)
{
data >> itemGemInstanceData.Slot;
data >> itemGemInstanceData.Item;
data << uint8(itemGemData.Slot);
data << itemGemData.Item;
return data;
}
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemGemData& itemGemData)
{
data >> itemGemData.Slot;
data >> itemGemData.Item;
return data;
}

View File

@@ -54,7 +54,16 @@ namespace WorldPackets
bool operator!=(ItemInstance const& r) const { return !(*this == r); }
};
struct ItemGemInstanceData
struct ItemEnchantData
{
ItemEnchantData(int32 id, uint32 expiration, int32 charges, uint8 slot) : ID(id), Expiration(expiration), Charges(charges), Slot(slot) { }
int32 ID = 0;
uint32 Expiration = 0;
int32 Charges = 0;
uint8 Slot = 0;
};
struct ItemGemData
{
uint8 Slot;
ItemInstance Item;
@@ -538,7 +547,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemBonusInstanceDa
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemBonusInstanceData& itemBonusInstanceData);
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemInstance const& itemInstance);
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemInstance& itemInstance);
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemGemInstanceData const& itemGemInstanceData);
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemGemInstanceData& itemGemInstanceData);
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemEnchantData const& itemEnchantData);
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemGemData const& itemGemInstanceData);
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Item::ItemGemData& itemGemInstanceData);
#endif // ItemPackets_h__

View File

@@ -29,19 +29,15 @@ WorldPackets::Mail::MailAttachedItem::MailAttachedItem(::Item const* item, uint8
Charges = item->GetSpellCharges();
MaxDurability = item->GetUInt32Value(ITEM_FIELD_MAXDURABILITY);
Durability = item->GetUInt32Value(ITEM_FIELD_DURABILITY);
Unlocked = !item->IsLocked(); //TODO: Check
Unlocked = !item->IsLocked();
for (uint8 j = 0; j < MAX_INSPECTED_ENCHANTMENT_SLOT; j++)
{
if (!item->GetEnchantmentId((EnchantmentSlot)j))
EnchantmentSlot slot = EnchantmentSlot(j);
if (!item->GetEnchantmentId(slot))
continue;
MailAttachedItemEnchant enchant;
enchant.Enchant = item->GetEnchantmentId((EnchantmentSlot)j);
enchant.Duration = item->GetEnchantmentDuration((EnchantmentSlot)j);
enchant.Charges = item->GetEnchantmentCharges((EnchantmentSlot)j);
enchant.Slot = j;
Enchants.push_back(enchant);
Enchants.emplace_back(item->GetEnchantmentId(slot), item->GetEnchantmentDuration(slot), item->GetEnchantmentCharges(slot), j);
}
uint8 i = 0;
@@ -49,7 +45,7 @@ WorldPackets::Mail::MailAttachedItem::MailAttachedItem(::Item const* item, uint8
{
if (gemData.ItemId)
{
WorldPackets::Item::ItemGemInstanceData gem;
WorldPackets::Item::ItemGemData gem;
gem.Slot = i;
gem.Item.Initialize(&gemData);
Gems.push_back(gem);
@@ -72,15 +68,11 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailAttachedItem co
data.WriteBit(att.Unlocked);
data.FlushBits();
for (auto const& gem : att.Gems)
for (WorldPackets::Item::ItemGemData const& gem : att.Gems)
data << gem;
for (auto const& en : att.Enchants)
{
data << int32(en.Enchant);
data << uint32(en.Duration);
data << int32(en.Charges);
}
for (WorldPackets::Item::ItemEnchantData const& en : att.Enchants)
data << en;
return data;
}
@@ -122,14 +114,14 @@ WorldPackets::Mail::MailListEntry::MailListEntry(::Mail const* mail, ::Player* p
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Mail::MailListEntry const& entry)
{
data << int32(entry.MailID);
data << int8(entry.SenderType);
data << int64(entry.Cod);
data << uint8(entry.SenderType);
data << uint64(entry.Cod);
data << int32(entry.StationeryID);
data << int64(entry.SentMoney);
data << uint64(entry.SentMoney);
data << int32(entry.Flags);
data << float(entry.DaysLeft);
data << int32(entry.MailTemplateID);
data << int32(entry.Attachments.size());
data << uint32(entry.Attachments.size());
data.WriteBit(entry.SenderCharacter.is_initialized());
data.WriteBit(entry.AltSenderID.is_initialized());
data.WriteBits(entry.Subject.size(), 8);
@@ -162,7 +154,7 @@ void WorldPackets::Mail::MailGetList::Read()
WorldPacket const* WorldPackets::Mail::MailListResult::Write()
{
_worldPacket << int32(Mails.size());
_worldPacket << uint32(Mails.size());
_worldPacket << int32(TotalNumRecords);
for (auto const& mail : Mails)

View File

@@ -29,14 +29,6 @@ namespace WorldPackets
{
namespace Mail
{
struct MailAttachedItemEnchant
{
int32 Enchant = 0;
uint32 Duration = 0;
int32 Charges = 0;
uint8 Slot = 0;
};
struct MailAttachedItem
{
MailAttachedItem(::Item const* item, uint8 pos);
@@ -49,8 +41,8 @@ namespace WorldPackets
uint32 MaxDurability = 0;
int32 Durability = 0;
bool Unlocked = false;
std::vector<MailAttachedItemEnchant> Enchants;
std::vector<Item::ItemGemInstanceData> Gems;
std::vector<Item::ItemEnchantData> Enchants;
std::vector<Item::ItemGemData> Gems;
};
struct MailListEntry
@@ -61,9 +53,9 @@ namespace WorldPackets
uint8 SenderType = 0;
Optional<ObjectGuid> SenderCharacter;
Optional<uint32> AltSenderID;
int64 Cod = 0;
uint64 Cod = 0;
int32 StationeryID = 0;
int64 SentMoney = 0;
uint64 SentMoney = 0;
int32 Flags = 0;
float DaysLeft = 0.0f;
int32 MailTemplateID = 0;

View File

@@ -94,7 +94,7 @@ ByteBuffer& operator<<(ByteBuffer& buffer, WorldPackets::Trade::TradeUpdated::Un
buffer.WriteBit(unwrappedTradeItem.Lock);
buffer.FlushBits();
for (WorldPackets::Item::ItemGemInstanceData const& gem : unwrappedTradeItem.Gems)
for (WorldPackets::Item::ItemGemData const& gem : unwrappedTradeItem.Gems)
buffer << gem;
return buffer;

View File

@@ -160,7 +160,7 @@ namespace WorldPackets
bool Lock = false;
uint32 MaxDurability = 0;
uint32 Durability = 0;
std::vector<Item::ItemGemInstanceData> Gems;
std::vector<Item::ItemGemData> Gems;
};
struct TradeItem