AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
AuctionHouseObject Class Reference

#include "AuctionHouseMgr.h"

Public Types

typedef std::map< uint32, AuctionEntry * > AuctionEntryMap
 

Public Member Functions

 AuctionHouseObject ()
 
 ~AuctionHouseObject ()
 
uint32 Getcount () const
 
AuctionEntryMap::iterator GetAuctionsBegin ()
 
AuctionEntryMap::iterator GetAuctionsEnd ()
 
AuctionEntryMap const & GetAuctions ()
 
AuctionEntryGetAuction (uint32 id) const
 
void AddAuction (AuctionEntry *auction)
 
bool RemoveAuction (AuctionEntry *auction)
 
void Update ()
 

Private Attributes

AuctionEntryMap _auctionsMap
 
AuctionEntryMap::const_iterator _next
 

Detailed Description

Member Typedef Documentation

◆ AuctionEntryMap

Constructor & Destructor Documentation

◆ AuctionHouseObject()

AuctionHouseObject::AuctionHouseObject ( )
inline
130{ _next = _auctionsMap.begin(); }
AuctionEntryMap _auctionsMap
Definition AuctionHouseMgr.h:158
AuctionEntryMap::const_iterator _next
Definition AuctionHouseMgr.h:161

References _auctionsMap, and _next.

◆ ~AuctionHouseObject()

AuctionHouseObject::~AuctionHouseObject ( )
inline
132 {
133 for (auto& itr : _auctionsMap)
134 delete itr.second;
135 }

References _auctionsMap.

Member Function Documentation

◆ AddAuction()

void AuctionHouseObject::AddAuction ( AuctionEntry auction)
480{
481 ASSERT(auction);
482
483 _auctionsMap[auction->Id] = auction;
484 sAuctionMgr->GetAuctionHouseSearcher()->AddAuction(auction);
485
486 sScriptMgr->OnAuctionAdd(this, auction);
487}
#define sAuctionMgr
Definition AuctionHouseMgr.h:224
#define ASSERT
Definition Errors.h:68
#define sScriptMgr
Definition ScriptMgr.h:727
uint32 Id
Definition AuctionHouseMgr.h:98

References _auctionsMap, ASSERT, AuctionEntry::Id, sAuctionMgr, and sScriptMgr.

Referenced by WorldSession::HandleAuctionSellItem(), and AuctionHouseMgr::LoadAuctions().

◆ GetAuction()

AuctionEntry * AuctionHouseObject::GetAuction ( uint32  id) const
inline
146 {
147 AuctionEntryMap::const_iterator itr = _auctionsMap.find(id);
148 return itr != _auctionsMap.end() ? itr->second : nullptr;
149 }

References _auctionsMap.

Referenced by WorldSession::HandleAuctionPlaceBid(), and WorldSession::HandleAuctionRemoveItem().

◆ GetAuctions()

AuctionEntryMap const & AuctionHouseObject::GetAuctions ( )
inline

◆ GetAuctionsBegin()

AuctionEntryMap::iterator AuctionHouseObject::GetAuctionsBegin ( )
inline
141{ return _auctionsMap.begin(); }

References _auctionsMap.

◆ GetAuctionsEnd()

AuctionEntryMap::iterator AuctionHouseObject::GetAuctionsEnd ( )
inline
142{ return _auctionsMap.end(); }

References _auctionsMap.

◆ Getcount()

uint32 AuctionHouseObject::Getcount ( ) const
inline
139{ return _auctionsMap.size(); }

References _auctionsMap.

◆ RemoveAuction()

bool AuctionHouseObject::RemoveAuction ( AuctionEntry auction)
490{
491 bool wasInMap = !!_auctionsMap.erase(auction->Id);
492 sAuctionMgr->GetAuctionHouseSearcher()->RemoveAuction(auction);
493
494 sScriptMgr->OnAuctionRemove(this, auction);
495
496 // we need to delete the entry, it is not referenced any more
497 delete auction;
498 auction = nullptr;
499
500 return wasInMap;
501}

References _auctionsMap, AuctionEntry::Id, sAuctionMgr, and sScriptMgr.

Referenced by WorldSession::HandleAuctionPlaceBid(), WorldSession::HandleAuctionRemoveItem(), and Update().

◆ Update()

void AuctionHouseObject::Update ( )
  • Handle expired auctions
  • Either cancel the auction if there was no bidder
  • Or perform the transaction
  • In any case clear the auction
504{
505 time_t checkTime = GameTime::GetGameTime().count() + 60;
507
508 // If storage is empty, no need to update. next == nullptr in this case.
509 if (_auctionsMap.empty())
510 return;
511
512 CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
513
514 for (AuctionEntryMap::iterator itr, iter = _auctionsMap.begin(); iter != _auctionsMap.end(); )
515 {
516 itr = iter++;
517 AuctionEntry* auction = (*itr).second;
518
519 if (auction->expire_time > checkTime)
520 continue;
521
523 if (!auction->bidder)
524 {
525 sAuctionMgr->SendAuctionExpiredMail(auction, trans);
526 sScriptMgr->OnAuctionExpire(this, auction);
527 }
529 else
530 {
531 //we should send an "item sold" message if the seller is online
532 //we send the item to the winner
533 //we send the money to the seller
534 sAuctionMgr->SendAuctionSuccessfulMail(auction, trans);
535 sAuctionMgr->SendAuctionWonMail(auction, trans);
536 sScriptMgr->OnAuctionSuccessful(this, auction);
537 }
538
540 auction->DeleteFromDB(trans);
541
542 sAuctionMgr->RemoveAItem(auction->item_guid);
543 RemoveAuction(auction);
544 }
545 CharacterDatabase.CommitTransaction(trans);
546}
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition DatabaseEnvFwd.h:69
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
bool RemoveAuction(AuctionEntry *auction)
Definition AuctionHouseMgr.cpp:489
Seconds GetGameTime()
Definition GameTime.cpp:38
Definition AuctionHouseMgr.h:97
void DeleteFromDB(CharacterDatabaseTransaction trans) const
Definition AuctionHouseMgr.cpp:571
ObjectGuid bidder
Definition AuctionHouseMgr.h:108
time_t expire_time
Definition AuctionHouseMgr.h:107
ObjectGuid item_guid
Definition AuctionHouseMgr.h:100

References _auctionsMap, AuctionEntry::bidder, CharacterDatabase, AuctionEntry::DeleteFromDB(), AuctionEntry::expire_time, GameTime::GetGameTime(), AuctionEntry::item_guid, RemoveAuction(), sAuctionMgr, and sScriptMgr.

Referenced by AuctionHouseMgr::Update().

Member Data Documentation

◆ _auctionsMap

◆ _next

AuctionEntryMap::const_iterator AuctionHouseObject::_next
private

Referenced by AuctionHouseObject().


The documentation for this class was generated from the following files: