18#ifndef _AUCTION_HOUSE_MGR_H
19#define _AUCTION_HOUSE_MGR_H
30#include <unordered_map>
38 namespace AuctionHouse
152 std::array<uint64, MAX_ITEM_SUBCLASS_TOTAL>
InvTypes = { };
155 std::array<SubclassFilter, MAX_ITEM_CLASS>
Classes = { };
206 std::array<std::wstring, TOTAL_LOCALES>
FullName = { };
286 uint32 GetAuctionHouseId()
const;
288 std::map<uint32, AuctionPosting>::iterator
GetAuctionsBegin() {
return _itemsByAuctionId.begin(); }
289 std::map<uint32, AuctionPosting>::iterator
GetAuctionsEnd() {
return _itemsByAuctionId.end(); }
296 std::map<uint32, AuctionPosting>::iterator* auctionItr =
nullptr);
302 std::span<uint8 const> knownPetBits,
uint8 maxKnownPetLevel,
303 uint32 offset, std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
305 std::span<WorldPackets::AuctionHouse::AuctionBucketKey const> keys,
306 std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
308 uint32 offset, std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
310 uint32 offset, std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
312 uint32 offset, std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
314 uint32 offset, std::span<WorldPackets::AuctionHouse::AuctionSortDef const> sorts)
const;
318 uint64 CalculateAuctionHouseCut(
uint64 bidAmount)
const;
337 std::map<AuctionsBucketKey, AuctionsBucketData>
_buckets;
370 ItemContext context, std::vector<int32>
const& bonusListIds);
383 void AddAItem(
Item* item);
386 std::size_t PendingAuctionCount(
Player const* player)
const;
387 void PendingAuctionProcess(
Player* player);
388 void UpdatePendingAuctions();
391 uint32 GenerateReplicationId();
412 std::size_t LastAuctionsSize = 0;
431#define sAuctionMgr AuctionHouseMgr::instance()
uint32 constexpr MIN_AUCTION_TIME
@ LegendaryCraftedItemOnly
@ AuctionHouseUnavailable
@ CommodityPurchaseFailed
constexpr std::size_t MAX_FAVORITE_AUCTIONS
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
std::chrono::system_clock::time_point SystemTimePoint
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::chrono::steady_clock::time_point TimePoint
time_point shorthand typedefs
std::chrono::minutes Minutes
Minutes shorthand typedef.
#define DEFINE_ENUM_FLAG(enumType)
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()
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