diff options
| author | Shauren <shauren.trinity@gmail.com> | 2020-04-20 20:36:24 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2020-04-20 20:36:24 +0200 |
| commit | aced88b09bd918b0ed17b6c5e8a6048788600d9d (patch) | |
| tree | 80f699e135bdb890f12be5db99f49caec9e373cb /src/server/game/Server/Packets | |
| parent | 7ef9acd765feeecb3752359958f717896bcbe37a (diff) | |
Core/AuctionHouse: After taking a break at the start of patch 8.3 auction house is now back in business.
Diffstat (limited to 'src/server/game/Server/Packets')
| -rw-r--r-- | src/server/game/Server/Packets/AuctionHousePackets.cpp | 98 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/AuctionHousePackets.h | 70 |
2 files changed, 86 insertions, 82 deletions
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index 283978a3b36..41cd3912eb6 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -18,11 +18,26 @@ #include "AuctionHousePackets.h" #include "AuctionHouseMgr.h" #include "ObjectGuid.h" +#include "Util.h" namespace WorldPackets { namespace AuctionHouse { +AuctionBucketKey& AuctionBucketKey::operator=(AuctionsBucketKey const& key) +{ + ItemID = key.ItemId; + ItemLevel = key.ItemLevel; + + if (key.BattlePetSpeciesId) + BattlePetSpeciesID = key.BattlePetSpeciesId; + + if (key.SuffixItemNameDescriptionId) + SuffixItemNameDescriptionID = key.SuffixItemNameDescriptionId; + + return *this; +} + ByteBuffer& operator>>(ByteBuffer& data, AuctionBucketKey& itemKey) { data.ResetBitPos(); @@ -103,7 +118,7 @@ ByteBuffer& operator>>(ByteBuffer& data, AuctionFavoriteInfo& favoriteInfo) data >> favoriteInfo.ItemID; data >> favoriteInfo.ItemLevel; data >> favoriteInfo.BattlePetSpeciesID; - data >> favoriteInfo.ItemSuffix; + data >> favoriteInfo.SuffixItemNameDescriptionID; return data; } @@ -114,16 +129,16 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionFavoriteInfo const& favoriteInfo data << uint32(favoriteInfo.ItemID); data << uint32(favoriteInfo.ItemLevel); data << uint32(favoriteInfo.BattlePetSpeciesID); - data << uint32(favoriteInfo.ItemSuffix); + data << uint32(favoriteInfo.SuffixItemNameDescriptionID); return data; } -void AuctionOwnerNotification::Initialize(::AuctionEntry const* auction, ::Item const* item) +void AuctionOwnerNotification::Initialize(::AuctionPosting const* auction) { AuctionID = auction->Id; - Item.Initialize(item); - BidAmount = auction->bid; + Item.Initialize(auction->Items[0]); + BidAmount = auction->BidAmount; } ByteBuffer& operator<<(ByteBuffer& data, AuctionOwnerNotification const& ownerNotification) @@ -234,11 +249,11 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem) return data; } -void AuctionBidderNotification::Initialize(::AuctionEntry const* auction, ::Item const* item) +void AuctionBidderNotification::Initialize(::AuctionPosting const* auction, ::Item const* item) { AuctionID = auction->Id; Item.Initialize(item); - Bidder = ObjectGuid::Create<HighGuid::Player>(auction->bidder); + Bidder = auction->Bidder; } ByteBuffer& operator<<(ByteBuffer& data, AuctionBidderNotification const& bidderNotification) @@ -327,32 +342,31 @@ void AuctionListBidderItems::Read() _worldPacket >> auctionID; } -void AuctionListItemsByBucketKey::Read() +void AuctionListBucketsByBucketKeys::Read() { _worldPacket >> Auctioneer; - _worldPacket >> Offset; - _worldPacket >> Unknown830; if (_worldPacket.ReadBit()) TaintedBy.emplace(); + BucketKeys.resize(_worldPacket.ReadBits(7)); Sorts.resize(_worldPacket.ReadBits(2)); for (AuctionSortDef& sortDef : Sorts) _worldPacket >> sortDef; - _worldPacket >> BucketKey; - if (TaintedBy) _worldPacket >> *TaintedBy; + + for (AuctionBucketKey& bucketKey : BucketKeys) + _worldPacket >> bucketKey; } -void AuctionListItemsByItemID::Read() +void AuctionListItemsByBucketKey::Read() { _worldPacket >> Auctioneer; - _worldPacket >> ItemID; - _worldPacket >> SuffixItemNameDescriptionID; _worldPacket >> Offset; + _worldPacket >> Unknown830; if (_worldPacket.ReadBit()) TaintedBy.emplace(); @@ -362,18 +376,22 @@ void AuctionListItemsByItemID::Read() for (AuctionSortDef& sortDef : Sorts) _worldPacket >> sortDef; + _worldPacket >> BucketKey; + if (TaintedBy) _worldPacket >> *TaintedBy; } -void AuctionListItemsByItemKeys::Read() +void AuctionListItemsByItemID::Read() { _worldPacket >> Auctioneer; + _worldPacket >> ItemID; + _worldPacket >> SuffixItemNameDescriptionID; + _worldPacket >> Offset; if (_worldPacket.ReadBit()) TaintedBy.emplace(); - BucketKeys.resize(_worldPacket.ReadBits(7)); Sorts.resize(_worldPacket.ReadBits(2)); for (AuctionSortDef& sortDef : Sorts) @@ -381,9 +399,6 @@ void AuctionListItemsByItemKeys::Read() if (TaintedBy) _worldPacket >> *TaintedBy; - - for (AuctionBucketKey& bucketKey : BucketKeys) - _worldPacket >> bucketKey; } void AuctionListOwnerItems::Read() @@ -505,17 +520,6 @@ WorldPacket const* AuctionClosedNotification::Write() return &_worldPacket; } -void AuctionCommandResult::InitializeAuction(::AuctionEntry const* auction) -{ - if (auction) - { - AuctionID = auction->Id; - Money = auction->bid == auction->buyout ? 0 : auction->bid; - MinIncrement = auction->bid == auction->buyout ? 0 : auction->GetAuctionOutBid(); - Guid = ObjectGuid::Create<HighGuid::Player>(auction->bidder); - } -} - WorldPacket const* AuctionCommandResult::Write() { _worldPacket << int32(AuctionID); @@ -530,7 +534,7 @@ WorldPacket const* AuctionCommandResult::Write() return &_worldPacket; } -WorldPacket const* AuctionCommodityPriceUpdate::Write() +WorldPacket const* AuctionCommodityQuote::Write() { _worldPacket.WriteBit(TotalPrice.is_initialized()); _worldPacket.WriteBit(Quantity.is_initialized()); @@ -550,6 +554,18 @@ WorldPacket const* AuctionCommodityPriceUpdate::Write() return &_worldPacket; } +WorldPacket const* AuctionFavoriteItems::Write() +{ + _worldPacket << uint32(DesiredDelay); + _worldPacket.WriteBits(Items.size(), 7); + _worldPacket.FlushBits(); + + for (AuctionFavoriteInfo const& favoriteInfo : Items) + _worldPacket << favoriteInfo; + + return &_worldPacket; +} + WorldPacket const* AuctionHelloResponse::Write() { _worldPacket << Guid; @@ -572,13 +588,13 @@ WorldPacket const* AuctionListBidderItemsResult::Write() return &_worldPacket; } -WorldPacket const* AuctionListBucketItemsResult::Write() +WorldPacket const* AuctionListBucketsResult::Write() { _worldPacket << uint32(Buckets.size()); _worldPacket << uint32(DesiredDelay); _worldPacket << int32(Unknown830_0); _worldPacket << int32(Unknown830_1); - _worldPacket.WriteBits(BrowseMode, 1); + _worldPacket.WriteBits(AsUnderlyingType(BrowseMode), 1); _worldPacket.WriteBit(HasMoreResults); _worldPacket.FlushBits(); @@ -588,25 +604,13 @@ WorldPacket const* AuctionListBucketItemsResult::Write() return &_worldPacket; } -WorldPacket const* AuctionListFavoriteItemsResult::Write() -{ - _worldPacket << uint32(DesiredDelay); - _worldPacket.WriteBits(Items.size(), 7); - _worldPacket.FlushBits(); - - for (AuctionFavoriteInfo const& favoriteInfo : Items) - _worldPacket << favoriteInfo; - - return &_worldPacket; -} - WorldPacket const* AuctionListItemsResult::Write() { _worldPacket << uint32(Items.size()); _worldPacket << uint32(Unknown830); _worldPacket << uint32(TotalCount); _worldPacket << uint32(DesiredDelay); - _worldPacket.WriteBits(ListType, 2); + _worldPacket.WriteBits(AsUnderlyingType(ListType), 2); _worldPacket.WriteBit(HasMoreResults); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h index 809655ab234..c117319f79e 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.h +++ b/src/server/game/Server/Packets/AuctionHousePackets.h @@ -24,9 +24,12 @@ #include "ItemPacketsCommon.h" #include "ObjectGuid.h" -struct AuctionEntry; -enum class AuctionHouseSortOrder : uint8; +struct AuctionsBucketKey; +struct AuctionPosting; +enum class AuctionHouseBrowseMode : uint8; enum class AuctionHouseFilterMask : uint32; +enum class AuctionHouseListType : uint8; +enum class AuctionHouseSortOrder : uint8; namespace WorldPackets { @@ -34,6 +37,12 @@ namespace WorldPackets { struct AuctionBucketKey { + AuctionBucketKey() : ItemID(0), ItemLevel(0) { } + AuctionBucketKey(AuctionsBucketKey const& key) { *this = key; } + + AuctionBucketKey& operator=(AuctionBucketKey const& key) = default; + AuctionBucketKey& operator=(AuctionsBucketKey const& key); + uint32 ItemID = 0; uint16 ItemLevel = 0; Optional<uint16> BattlePetSpeciesID; @@ -70,12 +79,12 @@ namespace WorldPackets uint32 ItemID = 0; uint32 ItemLevel = 0; uint32 BattlePetSpeciesID = 0; - uint32 ItemSuffix = 0; + uint32 SuffixItemNameDescriptionID = 0; }; struct AuctionOwnerNotification { - void Initialize(::AuctionEntry const* auction, ::Item const* item); + void Initialize(::AuctionPosting const* auction); int32 AuctionID = 0; uint64 BidAmount = 0; @@ -123,7 +132,7 @@ namespace WorldPackets struct AuctionBidderNotification { - void Initialize(::AuctionEntry const* auction, ::Item const* item); + void Initialize(::AuctionPosting const* auction, ::Item const* item); int32 AuctionID = 0; ObjectGuid Bidder; @@ -198,46 +207,46 @@ namespace WorldPackets Optional<Addon::AddOnInfo> TaintedBy; }; - class AuctionListItemsByBucketKey final : public ClientPacket + class AuctionListBucketsByBucketKeys final : public ClientPacket { public: - AuctionListItemsByBucketKey(WorldPacket&& packet) : ClientPacket(CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY, std::move(packet)) { } + AuctionListBucketsByBucketKeys(WorldPacket&& packet) : ClientPacket(CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS, std::move(packet)) { } void Read() override; ObjectGuid Auctioneer; - uint32 Offset = 0; - int8 Unknown830 = 0; Optional<Addon::AddOnInfo> TaintedBy; + Array<AuctionBucketKey, 100> BucketKeys; Array<AuctionSortDef, 2> Sorts; - AuctionBucketKey BucketKey; }; - class AuctionListItemsByItemID final : public ClientPacket + class AuctionListItemsByBucketKey final : public ClientPacket { public: - AuctionListItemsByItemID(WorldPacket&& packet) : ClientPacket(CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID, std::move(packet)) { } + AuctionListItemsByBucketKey(WorldPacket&& packet) : ClientPacket(CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY, std::move(packet)) { } void Read() override; ObjectGuid Auctioneer; - int32 ItemID = 0; - int32 SuffixItemNameDescriptionID = 0; uint32 Offset = 0; + int8 Unknown830 = 0; Optional<Addon::AddOnInfo> TaintedBy; Array<AuctionSortDef, 2> Sorts; + AuctionBucketKey BucketKey; }; - class AuctionListItemsByItemKeys final : public ClientPacket + class AuctionListItemsByItemID final : public ClientPacket { public: - AuctionListItemsByItemKeys(WorldPacket&& packet) : ClientPacket(CMSG_AUCTION_LIST_ITEMS_BY_ITEM_KEYS, std::move(packet)) { } + AuctionListItemsByItemID(WorldPacket&& packet) : ClientPacket(CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID, std::move(packet)) { } void Read() override; ObjectGuid Auctioneer; + int32 ItemID = 0; + int32 SuffixItemNameDescriptionID = 0; + uint32 Offset = 0; Optional<Addon::AddOnInfo> TaintedBy; - Array<AuctionBucketKey, 100> BucketKeys; Array<AuctionSortDef, 2> Sorts; }; @@ -320,7 +329,7 @@ namespace WorldPackets uint64 MinBid = 0; uint32 RunTime = 0; Optional<Addon::AddOnInfo> TaintedBy; - Array<AuctionItemForSale, 64> Items; + Array<AuctionItemForSale, 1> Items; }; class AuctionSetFavoriteItem final : public ClientPacket @@ -364,15 +373,6 @@ namespace WorldPackets public: AuctionCommandResult() : ServerPacket(SMSG_AUCTION_COMMAND_RESULT, 4 + 4 + 4 + 8 + 4 + 8 + 8 + 8) { } - /** - * @fn void WorldPackets::AuctionHousePackets::AuctionCommandResult::InitializeAuction(AuctionEntry* auction); - * - * @brief Initialize the following fields: AuctionId, Bid, AuctionOutBid, Bidder - * - * @param auction The relevant auction object - */ - void InitializeAuction(::AuctionEntry const* auction); - WorldPacket const* Write() override; int32 AuctionID = 0; ///< the id of the auction that triggered this notification @@ -385,10 +385,10 @@ namespace WorldPackets uint32 DesiredDelay = 0; }; - class AuctionCommodityPriceUpdate final : public ServerPacket + class AuctionCommodityQuote final : public ServerPacket { public: - AuctionCommodityPriceUpdate() : ServerPacket(SMSG_AUCTION_COMMODITY_PRICE_UPDATE, 1 + 8 + 4 + 4 + 4 + 4) { } + AuctionCommodityQuote() : ServerPacket(SMSG_AUCTION_COMMODITY_QUOTE, 1 + 8 + 4 + 4 + 4 + 4) { } WorldPacket const* Write() override; @@ -422,10 +422,10 @@ namespace WorldPackets bool HasMoreResults = false; }; - class AuctionListBucketItemsResult final : public ServerPacket + class AuctionListBucketsResult final : public ServerPacket { public: - AuctionListBucketItemsResult() : ServerPacket(SMSG_AUCTION_LIST_BUCKET_ITEMS_RESULT) { } + AuctionListBucketsResult() : ServerPacket(SMSG_AUCTION_LIST_BUCKETS_RESULT) { } WorldPacket const* Write() override; @@ -433,14 +433,14 @@ namespace WorldPackets uint32 DesiredDelay = 0; int32 Unknown830_0 = 0; int32 Unknown830_1 = 0; - int32 BrowseMode = 0; + AuctionHouseBrowseMode BrowseMode = AuctionHouseBrowseMode(0); bool HasMoreResults = false; }; - class AuctionListFavoriteItemsResult final : public ServerPacket + class AuctionFavoriteItems final : public ServerPacket { public: - AuctionListFavoriteItemsResult() : ServerPacket(SMSG_AUCTION_LIST_FAVORITE_ITEMS_RESULT, 4 + 4 + 20 * 100) { } + AuctionFavoriteItems() : ServerPacket(SMSG_AUCTION_FAVORITE_ITEMS, 4 + 4 + 20 * 100) { } WorldPacket const* Write() override; @@ -459,7 +459,7 @@ namespace WorldPackets uint32 Unknown830 = 0; uint32 TotalCount = 0; uint32 DesiredDelay = 0; - uint32 ListType = 0; + AuctionHouseListType ListType = AuctionHouseListType(0); bool HasMoreResults = false; AuctionBucketKey BucketKey; }; |
