fix: sort cooking

This commit is contained in:
Salikh Gurgenidze
2025-12-25 01:02:44 +04:00
parent 821cbd5ba2
commit d71de1fd7f
3 changed files with 40 additions and 22 deletions
+5
View File
@@ -564,6 +564,11 @@ local function AddSortKeys(items)
-- Texture pattern for grouping similar items (especially trade goods)
item.texturePattern = GetTexturePattern(itemTexture)
-- Group Trade Goods that are meats/eggs together regardless of texture
local nameLower = item.itemName and string.lower(item.itemName) or ""
if itemType == "Trade Goods" and (string.find(nameLower, "meat") or string.find(nameLower, "egg")) then
item.texturePattern = "trade_meat_egg"
end
-- Inverted values for descending sorts
item.invertedQuality = -(tonumber(itemRarity) or 0)
+13
View File
@@ -553,6 +553,19 @@ function BagFrame:DisplayItemsByCategory(bagData, isOtherChar, charName)
if numItems > 0 then
-- Sort items in category: Subclass > Quality > Name
table.sort(items, function(a, b)
-- Group Trade Goods that are meats/eggs together
local function isMeatEgg(d)
if not d or not d.name then return false end
local t = d.type or d.class or ""
if t ~= "Trade Goods" then return false end
local n = string.lower(d.name)
return string.find(n, "meat") or string.find(n, "egg")
end
local ma = isMeatEgg(a.itemData)
local mb = isMeatEgg(b.itemData)
if ma ~= mb then
return ma and not mb
end
-- Priority: consumable restore tags (eat > drink > restore > nil)
local pa = a.itemData and a.itemData.restoreTag or nil
local pb = b.itemData and b.itemData.restoreTag or nil
+22 -22
View File
@@ -983,28 +983,28 @@ function Guda_ItemButton_OnEnter(self)
-- Debug: print hovered item's texture path to chat
-- Uses GetItemInfo on the hovered item's ID
--if self.hasItem then
-- local link = nil
-- if self.itemData and self.itemData.link then
-- link = self.itemData.link
-- else
-- -- Fallback to live bag query
-- link = GetContainerItemLink(self.bagID, self.slotID)
-- end
-- if link and addon and addon.Modules and addon.Modules.Utils and addon.Modules.Utils.ExtractItemID then
-- local itemID = addon.Modules.Utils:ExtractItemID(link)
-- if itemID and addon.Modules.Utils.GetItemInfoSafe then
-- local name, itemLink, itemRarity, itemLevel, itemCategory, itemType, itemStackCount,
-- itemSubType, itemTexture, itemEquipLoc, itemSellPrice = addon.Modules.Utils:GetItemInfoSafe(itemID)
-- if addon and addon.Print then
-- addon:Print("itemTexture: %s", tostring(itemTexture))
-- addon:Print("itemCategory: %s", tostring(itemCategory))
-- addon:Print("itemType: %s", tostring(itemType))
-- addon:Print("itemType: %s", tostring(itemType))
-- end
-- end
-- end
--end
if self.hasItem then
local link = nil
if self.itemData and self.itemData.link then
link = self.itemData.link
else
-- Fallback to live bag query
link = GetContainerItemLink(self.bagID, self.slotID)
end
if link and addon and addon.Modules and addon.Modules.Utils and addon.Modules.Utils.ExtractItemID then
local itemID = addon.Modules.Utils:ExtractItemID(link)
if itemID and addon.Modules.Utils.GetItemInfoSafe then
local name, itemLink, itemRarity, itemLevel, itemCategory, itemType, itemStackCount,
itemSubType, itemTexture, itemEquipLoc, itemSellPrice = addon.Modules.Utils:GetItemInfoSafe(itemID)
if addon and addon.Print then
addon:Print("itemTexture: %s", tostring(itemTexture))
addon:Print("itemCategory: %s", tostring(itemCategory))
addon:Print("itemType: %s", tostring(itemType))
addon:Print("itemType: %s", tostring(itemType))
end
end
end
end
-- Handle merchant sell cursor (same approach as BagShui)
if MerchantFrame:IsShown() and not self.isBank and not self.otherChar and self.hasItem then
ShowContainerSellCursor(self.bagID, self.slotID)