aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server/Packets
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-04-20 20:36:24 +0200
committerShauren <shauren.trinity@gmail.com>2020-04-20 20:36:24 +0200
commitaced88b09bd918b0ed17b6c5e8a6048788600d9d (patch)
tree80f699e135bdb890f12be5db99f49caec9e373cb /src/server/game/Server/Packets
parent7ef9acd765feeecb3752359958f717896bcbe37a (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.cpp98
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.h70
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;
};