731{
733
734
736
737 std::vector<AuctionEntry*> auctionShortlist;
738
739
740 if (itemClass == 0xffffffff && itemSubClass == 0xffffffff && inventoryType == 0xffffffff && quality == 0xffffffff && levelmin == 0x00 && levelmax == 0x00 && usable == 0x00 && wsearchedname.empty())
741 {
744 {
745 auctionShortlist.push_back(itr->second);
746 }
747 }
748 else
749 {
751
754
756 {
758 {
759 if ((itrcounter++) % 100 == 0)
760 {
762 {
763 return false;
764 }
765 }
766 }
767
769
771 {
772 continue;
773 }
774
776 if (!item)
777 {
778 continue;
779 }
780
782 if (itemClass != 0xffffffff && proto->
Class != itemClass)
783 {
784 continue;
785 }
786
787 if (itemSubClass != 0xffffffff && proto->
SubClass != itemSubClass)
788 {
789 continue;
790 }
791
792 if (inventoryType != 0xffffffff && proto->
InventoryType != inventoryType)
793 {
794
796 {
797 continue;
798 }
799 }
800
801 if (quality != 0xffffffff && proto->
Quality < quality)
802 {
803 continue;
804 }
805
807 {
808 continue;
809 }
810
811 if (usable != 0x00)
812 {
814 {
815 continue;
816 }
817
818
820 {
821 continue;
822 }
823 }
824
825
826
827 if (!wsearchedname.empty())
828 {
829 std::string name = proto->
Name1;
830 if (name.empty())
831 {
832 continue;
833 }
834
835
836 if (loc_idx >= 0)
839
840
841
842
844
845 if (propRefID)
846 {
847
848
849
850 std::array<char const*, 16> const* suffix = nullptr;
851
852 if (propRefID < 0)
853 {
855 if (itemRandEntry)
856 suffix = &itemRandEntry->
Name;
857 }
858 else
859 {
861 if (itemRandEntry)
862 suffix = &itemRandEntry->
Name;
863 }
864
865
866 if (suffix)
867 {
868
869
870 name += ' ';
871 name += (*suffix)[locdbc_idx >= 0 ? locdbc_idx :
LOCALE_enUS];
872 }
873 }
874
875
877 {
878 continue;
879 }
880 }
881
882 auctionShortlist.push_back(Aentry);
883 }
884 }
885
886 if (auctionShortlist.empty())
887 {
888 return true;
889 }
890
891
892 if (!sortOrder.empty())
893 {
896 {
897
898 if (listfrom + 50 <= auctionShortlist.size())
899 {
900 std::partial_sort(auctionShortlist.begin(), auctionShortlist.begin() + listfrom + 50, auctionShortlist.end(),
902 }
903 else
904 {
905 std::sort(auctionShortlist.begin(), auctionShortlist.end(), std::bind(
SortAuction, std::placeholders::_1, std::placeholders::_2, sortOrder,
907 }
908 }
909 }
910
911 for (auto auction : auctionShortlist)
912 {
913
914 if (count < 50 && totalcount >= listfrom)
915 {
917 if (!item)
918 {
919 continue;
920 }
921
922 ++count;
923 auction->BuildAuctionInfo(data);
924 }
925 ++totalcount;
926 }
927
928 return true;
929}
@ LOCALE_enUS
Definition: Common.h:75
std::int32_t int32
Definition: Define.h:104
std::uint32_t uint32
Definition: Define.h:108
Milliseconds GetTimeMS()
Definition: Timer.h:84
Milliseconds GetMSTimeDiff(Milliseconds oldMSTime, Milliseconds newMSTime)
Definition: Timer.h:91
bool Utf8FitTo(std::string_view str, std::wstring_view search)
Definition: Util.cpp:477
static bool SortAuction(AuctionEntry *left, AuctionEntry *right, AuctionSortOrderVector &sortOrder, Player *player, bool checkMinBidBuyout)
Definition: AuctionHouseMgr.cpp:38
@ AUCTION_SORT_BID
Definition: AuctionHouseMgr.h:83
@ AUCTION_SORT_MINLEVEL
Definition: AuctionHouseMgr.h:75
@ AUCTION_SORT_UNK4
Definition: AuctionHouseMgr.h:79
@ AUCTION_SORT_MAX
Definition: AuctionHouseMgr.h:87
#define sAuctionMgr
Definition: AuctionHouseMgr.h:228
DBCStorage< ItemRandomSuffixEntry > sItemRandomSuffixStore(ItemRandomSuffixfmt)
DBCStorage< ItemRandomPropertiesEntry > sItemRandomPropertiesStore(ItemRandomPropertiesfmt)
@ EQUIP_ERR_OK
Definition: Item.h:41
@ INVTYPE_ROBE
Definition: ItemTemplate.h:285
@ INVTYPE_CHEST
Definition: ItemTemplate.h:270
@ ITEM_SPELLTRIGGER_LEARN_SPELL_ID
Definition: ItemTemplate.h:89
#define sObjectMgr
Definition: ObjectMgr.h:1640
WorldUpdateTime sWorldUpdateTime
Definition: UpdateTime.cpp:24
Milliseconds GetGameTimeMS()
Definition: GameTime.cpp:43
Seconds GetGameTime()
Definition: GameTime.cpp:38
Definition: AuctionHouseMgr.h:91
AuctionSortOrder sortOrder
Definition: AuctionHouseMgr.h:94
Definition: AuctionHouseMgr.h:101
time_t expire_time
Definition: AuctionHouseMgr.h:111
ObjectGuid item_guid
Definition: AuctionHouseMgr.h:104
AuctionEntryMap::iterator GetAuctionsEnd()
Definition: AuctionHouseMgr.h:145
AuctionEntryMap const & GetAuctions()
Definition: AuctionHouseMgr.h:146
AuctionEntryMap::iterator GetAuctionsBegin()
Definition: AuctionHouseMgr.h:144
int32 GetItemRandomPropertyId() const
Definition: Item.h:286
ItemTemplate const * GetTemplate() const
Definition: Item.cpp:546
uint32 SpellTrigger
Definition: ItemTemplate.h:601
int32 SpellId
Definition: ItemTemplate.h:600
Definition: ItemTemplate.h:628
uint32 Quality
Definition: ItemTemplate.h:635
_Spell Spells[MAX_ITEM_PROTO_SPELLS]
Definition: ItemTemplate.h:671
uint32 RequiredLevel
Definition: ItemTemplate.h:645
std::string Name1
Definition: ItemTemplate.h:633
uint32 Class
Definition: ItemTemplate.h:630
uint32 InventoryType
Definition: ItemTemplate.h:641
uint32 SubClass
Definition: ItemTemplate.h:631
uint32 ItemId
Definition: ItemTemplate.h:629
Definition: ItemTemplate.h:841
WorldSession * GetSession() const
Definition: Player.h:1948
bool HasSpell(uint32 spell) const override
Definition: Player.cpp:3818
InventoryResult CanUseItem(Item *pItem, bool not_loading=true) const
Definition: PlayerStorage.cpp:2245
static std::string_view GetLocaleString(std::vector< std::string > const &data, size_t locale)
Definition: ObjectMgr.h:1416
static bool IsAuctionListingAllowed()
Definition: AsyncAuctionListing.h:73
LocaleConstant GetSessionDbLocaleIndex() const
Definition: WorldSession.h:497
LocaleConstant GetSessionDbcLocale() const
Definition: WorldSession.h:496
uint32 GetAverageUpdateTime() const
Definition: UpdateTime.cpp:38
Definition: DBCStructure.h:1186
std::array< char const *, 16 > Name
Definition: DBCStructure.h:1191
Definition: DBCStructure.h:1196
std::array< char const *, 16 > Name
Definition: DBCStructure.h:1198