[11734] Use vector instead of list for sorting auction items

This commit is contained in:
zergtmn 2011-07-12 03:41:17 +06:00
parent 202a6b0a70
commit a1ca1d71d8
5 changed files with 12 additions and 10 deletions

View file

@ -658,12 +658,15 @@ void WorldSession::HandleAuctionListItems(WorldPacket & recv_data)
AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap(auctionHouseEntry);
// Sort
AuctionHouseObject::AuctionEntryMap *aucs = auctionHouse->GetAuctions();
std::list<AuctionEntry*> auctions;
for (AuctionHouseObject::AuctionEntryMap::const_iterator itr = aucs->begin(); itr != aucs->end(); ++itr)
AuctionHouseObject::AuctionEntryMap const& aucs = auctionHouse->GetAuctions();
std::vector<AuctionEntry*> auctions;
auctions.reserve(aucs.size());
for (AuctionHouseObject::AuctionEntryMap::const_iterator itr = aucs.begin(); itr != aucs.end(); ++itr)
auctions.push_back(itr->second);
AuctionSorter sorter(Sort, GetPlayer());
auctions.sort(sorter);
std::sort(auctions.begin(), auctions.end(), sorter);
// remove fake death
if (GetPlayer()->hasUnitState(UNIT_STAT_DIED))

View file

@ -803,12 +803,12 @@ bool AuctionSorter::operator()(const AuctionEntry *auc1, const AuctionEntry *auc
return false; // "equal" by all sorts
}
void WorldSession::BuildListAuctionItems(std::list<AuctionEntry*> &auctions, WorldPacket& data, std::wstring const& wsearchedname, uint32 listfrom, uint32 levelmin,
void WorldSession::BuildListAuctionItems(std::vector<AuctionEntry*> const& auctions, WorldPacket& data, std::wstring const& wsearchedname, uint32 listfrom, uint32 levelmin,
uint32 levelmax, uint32 usable, uint32 inventoryType, uint32 itemClass, uint32 itemSubClass, uint32 quality, uint32& count, uint32& totalcount, bool isFull)
{
int loc_idx = _player->GetSession()->GetSessionDbLocaleIndex();
for (std::list<AuctionEntry*>::const_iterator itr = auctions.begin(); itr != auctions.end();++itr)
for (std::vector<AuctionEntry*>::const_iterator itr = auctions.begin(); itr != auctions.end(); ++itr)
{
AuctionEntry *Aentry = *itr;
if (Aentry->moneyDeliveryTime)

View file

@ -104,8 +104,7 @@ class AuctionHouseObject
uint32 GetCount() { return AuctionsMap.size(); }
AuctionEntryMap *GetAuctions() { return &AuctionsMap; }
AuctionEntryMap const& GetAuctions() const { return AuctionsMap; }
AuctionEntryMapBounds GetAuctionsBounds() const {return AuctionEntryMapBounds(AuctionsMap.begin(), AuctionsMap.end()); }
void AddAuction(AuctionEntry *ah)

View file

@ -358,7 +358,7 @@ class MANGOS_DLL_SPEC WorldSession
void SendAuctionRemovedNotification(AuctionEntry* auction);
static void SendAuctionOutbiddedMail(AuctionEntry *auction);
void SendAuctionCancelledToBidderMail(AuctionEntry *auction);
void BuildListAuctionItems(std::list<AuctionEntry*> &auctions, WorldPacket& data, std::wstring const& searchedname, uint32 listfrom, uint32 levelmin,
void BuildListAuctionItems(std::vector<AuctionEntry*> const& auctions, WorldPacket& data, std::wstring const& searchedname, uint32 listfrom, uint32 levelmin,
uint32 levelmax, uint32 usable, uint32 inventoryType, uint32 itemClass, uint32 itemSubClass, uint32 quality, uint32& count, uint32& totalcount, bool isFull);
AuctionHouseEntry const* GetCheckedAuctionHouseForAuctioneer(ObjectGuid guid);

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "11733"
#define REVISION_NR "11734"
#endif // __REVISION_NR_H__