[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); AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap(auctionHouseEntry);
// Sort // Sort
AuctionHouseObject::AuctionEntryMap *aucs = auctionHouse->GetAuctions(); AuctionHouseObject::AuctionEntryMap const& aucs = auctionHouse->GetAuctions();
std::list<AuctionEntry*> auctions; std::vector<AuctionEntry*> auctions;
for (AuctionHouseObject::AuctionEntryMap::const_iterator itr = aucs->begin(); itr != aucs->end(); ++itr) auctions.reserve(aucs.size());
for (AuctionHouseObject::AuctionEntryMap::const_iterator itr = aucs.begin(); itr != aucs.end(); ++itr)
auctions.push_back(itr->second); auctions.push_back(itr->second);
AuctionSorter sorter(Sort, GetPlayer()); AuctionSorter sorter(Sort, GetPlayer());
auctions.sort(sorter); std::sort(auctions.begin(), auctions.end(), sorter);
// remove fake death // remove fake death
if (GetPlayer()->hasUnitState(UNIT_STAT_DIED)) 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 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) uint32 levelmax, uint32 usable, uint32 inventoryType, uint32 itemClass, uint32 itemSubClass, uint32 quality, uint32& count, uint32& totalcount, bool isFull)
{ {
int loc_idx = _player->GetSession()->GetSessionDbLocaleIndex(); 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; AuctionEntry *Aentry = *itr;
if (Aentry->moneyDeliveryTime) if (Aentry->moneyDeliveryTime)

View file

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

View file

@ -358,7 +358,7 @@ class MANGOS_DLL_SPEC WorldSession
void SendAuctionRemovedNotification(AuctionEntry* auction); void SendAuctionRemovedNotification(AuctionEntry* auction);
static void SendAuctionOutbiddedMail(AuctionEntry *auction); static void SendAuctionOutbiddedMail(AuctionEntry *auction);
void SendAuctionCancelledToBidderMail(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); uint32 levelmax, uint32 usable, uint32 inventoryType, uint32 itemClass, uint32 itemSubClass, uint32 quality, uint32& count, uint32& totalcount, bool isFull);
AuctionHouseEntry const* GetCheckedAuctionHouseForAuctioneer(ObjectGuid guid); AuctionHouseEntry const* GetCheckedAuctionHouseForAuctioneer(ObjectGuid guid);

View file

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