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

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