18#ifndef _AUCTION_HOUSE_MGR_H
19#define _AUCTION_HOUSE_MGR_H
30#include <unordered_map>
38 namespace AuctionHouse
150 std::array<uint64, MAX_ITEM_SUBCLASS_TOTAL>
InvTypes = { };
153 std::array<SubclassFilter, MAX_ITEM_CLASS>
Classes = { };
204 std::array<std::wstring, TOTAL_LOCALES>
FullName = { };
284 uint32 GetAuctionHouseId()
const;
286 std::map<uint32, AuctionPosting>::iterator
GetAuctionsBegin() {
return _itemsByAuctionId.begin(); }
287 std::map<uint32, AuctionPosting>::iterator
GetAuctionsEnd() {
return _itemsByAuctionId.end(); }
299 std::span<uint8 const> knownPetBits,
uint8 maxKnownPetLevel,
300 uint32 offset, std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
302 std::span<WorldPackets::AuctionHouse::AuctionBucketKey const> keys,
303 std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
305 uint32 offset, std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
307 uint32 offset, std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
309 uint32 offset, std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
311 uint32 offset, std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
315 uint64 CalculateAuctionHouseCut(
uint64 bidAmount)
const;
334 std::map<AuctionsBucketKey, AuctionsBucketData>
_buckets;
367 ItemContext context, std::vector<int32>
const& bonusListIds);
380 void AddAItem(
Item* item);
383 std::size_t PendingAuctionCount(
Player const* player)
const;
384 void PendingAuctionProcess(
Player* player);
385 void UpdatePendingAuctions();
388 uint32 GenerateReplicationId();
409 std::size_t LastAuctionsSize = 0;
428#define sAuctionMgr AuctionHouseMgr::instance()
uint32 constexpr MIN_AUCTION_TIME
DEFINE_ENUM_FLAG(AuctionHouseFilterMask)
@ LegendaryCraftedItemOnly
@ AuctionHouseUnavailable
@ CommodityPurchaseFailed
constexpr std::size_t MAX_FAVORITE_AUCTIONS
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
std::chrono::system_clock::time_point SystemTimePoint
std::chrono::steady_clock::time_point TimePoint
time_point shorthand typedefs
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::chrono::minutes Minutes
Minutes shorthand typedef.
std::unordered_set< ObjectGuid > GuidUnorderedSet
std::optional< T > Optional
Optional helper class to wrap optional values within.
AuctionHouseMgr(AuctionHouseMgr &&)=delete
AuctionHouseMgr & operator=(AuctionHouseMgr &&)=delete
TimePoint _playerThrottleObjectsCleanupTime
AuctionHouseMgr(AuctionHouseMgr const &)=delete
AuctionHouseObject mGoblinAuctions
uint32 _replicateIdGenerator
AuctionHouseObject mNeutralAuctions
AuctionHouseObject mHordeAuctions
AuctionHouseObject mAllianceAuctions
std::unordered_map< ObjectGuid, PlayerThrottleObject > _playerThrottleObjects
AuctionHouseMgr & operator=(AuctionHouseMgr const &)=delete
std::unordered_map< ObjectGuid, PlayerPendingAuctions > _pendingAuctionsByPlayer
std::unordered_map< ObjectGuid, Item * > _itemsByGuid
std::map< uint32, AuctionPosting >::iterator GetAuctionsEnd()
std::unordered_multimap< ObjectGuid, uint32 > _playerBidderAuctions
std::unordered_map< ObjectGuid, CommodityQuote > _commodityQuotes
std::map< uint32, AuctionPosting > _itemsByAuctionId
std::unordered_multimap< ObjectGuid, uint32 > _playerOwnedAuctions
AuctionHouseObject(AuctionHouseObject &&)=delete
std::map< AuctionsBucketKey, AuctionsBucketData > _buckets
AuctionHouseObject(AuctionHouseObject const &)=delete
std::unordered_map< ObjectGuid, PlayerReplicateThrottleData > _replicateThrottleMap
AuctionHouseObject & operator=(AuctionHouseObject &&)=delete
AuctionHouseObject & operator=(AuctionHouseObject const &)=delete
AuctionHouseEntry const * _auctionHouse
std::unordered_map< uint32, AuctionPosting > _soldItemsById
std::map< uint32, AuctionPosting >::iterator GetAuctionsBegin()
void Update(VignetteData &vignette, WorldObject const *owner)
std::vector< PendingAuctionInfo > Auctions
bool IsReplicationInProgress() const
void BuildAuctionItem(WorldPackets::AuctionHouse::AuctionItem *auctionItem, bool alwaysSendItem, bool sendKey, bool censorServerInfo, bool censorBidInfo) const
std::vector< Item * > Items
AuctionsBucketData * Bucket
EnumFlag< AuctionPostingServerFlag > ServerFlags
SystemTimePoint StartTime
uint32 GetTotalItemCount() const
GuidUnorderedSet BidderHistory
uint64 CalculateMinIncrement() const
std::array< uint64, MAX_ITEM_SUBCLASS_TOTAL > InvTypes
Milliseconds DelayUntilNext
std::array< std::wstring, TOTAL_LOCALES > FullName
AuctionHouseFilterMask QualityMask
std::array< std::pair< uint32, uint32 >, 4 > ItemModifiedAppearanceId
void BuildBucketInfo(WorldPackets::AuctionHouse::BucketInfo *bucketInfo, Player const *player) const
std::vector< AuctionPosting * > Auctions
std::array< uint32, MAX_ITEM_QUALITY > QualityCounts
uint16 SuffixItemNameDescriptionId
AuctionsBucketKey(uint32 itemId, uint16 itemLevel, uint16 battlePetSpeciesId, uint16 suffixItemNameDescriptionId)
bool operator==(AuctionsBucketKey const &right) const =default
static AuctionsBucketKey ForCommodity(ItemTemplate const *itemTemplate)
static AuctionsBucketKey ForItem(Item const *item)
friend std::strong_ordering operator<=>(AuctionsBucketKey const &left, AuctionsBucketKey const &right)=default
AuctionsBucketKey()=default
static std::size_t Hash(AuctionsBucketKey const &key)
uint16 BattlePetSpeciesId
size_t operator()(AuctionsBucketKey const &key) const noexcept