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)
495{
496 ASSERT(auction);
497
498 _auctionsMap[auction->Id] = auction;
499 sAuctionMgr->GetAuctionHouseSearcher()->AddAuction(auction);
500
501 sScriptMgr->OnAuctionAdd(this, auction);
502}
#define sAuctionMgr
Definition AuctionHouseMgr.h:224
#define ASSERT
Definition Errors.h:68
#define sScriptMgr
Definition ScriptMgr.h:740
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)
505{
506 bool wasInMap = _auctionsMap.erase(auction->Id);
507 sAuctionMgr->GetAuctionHouseSearcher()->RemoveAuction(auction);
508
509 sScriptMgr->OnAuctionRemove(this, auction);
510
511 // we need to delete the entry, it is not referenced any more
512 delete auction;
513 auction = nullptr;
514
515 return wasInMap;
516}

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
519{
520 time_t checkTime = GameTime::GetGameTime().count() + 60;
522
523 // If storage is empty, no need to update. next == nullptr in this case.
524 if (_auctionsMap.empty())
525 return;
526
527 CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
528
529 for (AuctionEntryMap::iterator itr, iter = _auctionsMap.begin(); iter != _auctionsMap.end(); )
530 {
531 itr = iter++;
532 AuctionEntry* auction = (*itr).second;
533
534 if (auction->expire_time > checkTime)
535 continue;
536
538 if (!auction->bidder)
539 {
540 sAuctionMgr->SendAuctionExpiredMail(auction, trans);
541 sScriptMgr->OnAuctionExpire(this, auction);
542 }
544 else
545 {
546 //we should send an "item sold" message if the seller is online
547 //we send the item to the winner
548 //we send the money to the seller
549 sAuctionMgr->SendAuctionSuccessfulMail(auction, trans);
550 sAuctionMgr->SendAuctionWonMail(auction, trans);
551 sScriptMgr->OnAuctionSuccessful(this, auction);
552 }
553
555 auction->DeleteFromDB(trans);
556
557 sAuctionMgr->RemoveAItem(auction->item_guid);
558 RemoveAuction(auction);
559 }
560 CharacterDatabase.CommitTransaction(trans);
561}
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:504
Seconds GetGameTime()
Definition GameTime.cpp:38
Definition AuctionHouseMgr.h:97
void DeleteFromDB(CharacterDatabaseTransaction trans) const
Definition AuctionHouseMgr.cpp:586
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: