Core/AuctionHouse: Updated AuctionHouseFilterMask and implemented current expansion filter

(cherry picked from commit 5b278a4ca7)
This commit is contained in:
Shauren
2024-11-03 20:53:10 +01:00
committed by Ovahlord
parent 93832c8728
commit 86960f140e
2 changed files with 24 additions and 16 deletions

View File

@@ -961,7 +961,7 @@ void AuctionHouseObject::AddAuction(CharacterDatabaseTransaction trans, AuctionP
}
}
bucket->QualityMask |= static_cast<AuctionHouseFilterMask>(1 << (quality + 4));
bucket->QualityMask |= static_cast<AuctionHouseFilterMask>(AsUnderlyingType(AuctionHouseFilterMask::PoorQuality) << quality);
++bucket->QualityCounts[quality];
if (trans)
@@ -1063,7 +1063,7 @@ std::map<uint32, AuctionPosting>::node_type AuctionHouseObject::RemoveAuction(Ch
}
if (!--bucket->QualityCounts[quality])
bucket->QualityMask &= static_cast<AuctionHouseFilterMask>(~(1 << (quality + 4)));
bucket->QualityMask &= static_cast<AuctionHouseFilterMask>(AsUnderlyingType(AuctionHouseFilterMask::PoorQuality) << quality);
}
else
{
@@ -1223,7 +1223,7 @@ void AuctionHouseObject::BuildListBuckets(WorldPackets::AuctionHouse::AuctionLis
{
if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(bucketAppearance.first))
{
if (knownAppearanceIds.find(itemModifiedAppearance->ItemAppearanceID) == knownAppearanceIds.end())
if (!knownAppearanceIds.contains(itemModifiedAppearance->ItemAppearanceID))
{
hasAll = false;
break;
@@ -1277,6 +1277,13 @@ void AuctionHouseObject::BuildListBuckets(WorldPackets::AuctionHouse::AuctionLis
continue;
}
if (filters.HasFlag(AuctionHouseFilterMask::CurrentExpansionOnly))
{
ItemTemplate const* itemTemplate = ASSERT_NOTNULL(sObjectMgr->GetItemTemplate(bucket.first.ItemId));
if (itemTemplate->GetRequiredExpansion() != sWorld->getIntConfig(CONFIG_EXPANSION))
continue;
}
// TODO: this one needs to access loot history to know highest item level for every inventory type
//if (filters.HasFlag(AuctionHouseFilterMask::UpgradesOnly))
//{

View File

@@ -97,19 +97,20 @@ constexpr std::size_t MAX_FAVORITE_AUCTIONS = 100;
enum class AuctionHouseFilterMask : uint32
{
None = 0x0,
UncollectedOnly = 0x1,
UsableOnly = 0x2,
UpgradesOnly = 0x4,
ExactMatch = 0x8,
PoorQuality = 0x10,
CommonQuality = 0x20,
UncommonQuality = 0x40,
RareQuality = 0x80,
EpicQuality = 0x100,
LegendaryQuality = 0x200,
ArtifactQuality = 0x400,
LegendaryCraftedItemOnly = 0x800,
None = 0x0000,
UncollectedOnly = 0x0002,
UsableOnly = 0x0004,
CurrentExpansionOnly = 0x0008,
UpgradesOnly = 0x0010,
ExactMatch = 0x0020,
PoorQuality = 0x0040,
CommonQuality = 0x0080,
UncommonQuality = 0x0100,
RareQuality = 0x0200,
EpicQuality = 0x0400,
LegendaryQuality = 0x0800,
ArtifactQuality = 0x1000,
LegendaryCraftedItemOnly = 0x2000,
};
DEFINE_ENUM_FLAG(AuctionHouseFilterMask);