diff --git a/UI/QuestItemBarClassicAPI.lua b/UI/QuestItemBarClassicAPI.lua new file mode 100644 index 0000000..8648be5 --- /dev/null +++ b/UI/QuestItemBarClassicAPI.lua @@ -0,0 +1,37 @@ +-- Guda ClassicAPI Quest Item Bar fast path +-- Keeps the upstream UI/flyout logic but reuses BagScanner item data so the +-- quest detector does not perform a second container scan for each item. + +local addon = Guda +local QuestItemBar = addon.Modules.QuestItemBar +if not QuestItemBar then return end + +function QuestItemBar:CheckQuestItemUsable(bagID, slotID) + if not bagID or not slotID then return false, false, false end + + local itemData = nil + if addon.Modules.BagScanner and addon.Modules.BagScanner.GetBagData then + local bagData = addon.Modules.BagScanner:GetBagData() + local bag = bagData and bagData[bagID] + itemData = bag and bag.slots and bag.slots[slotID] + end + + if addon.Modules.ItemDetection and itemData then + local props = addon.Modules.ItemDetection:GetItemProperties(itemData, bagID, slotID) + if props then + return props.isQuestItem, props.isQuestStarter, props.isQuestUsable + end + end + + -- Preserve the upstream fallback if the slot is not represented in the + -- shared snapshot for any reason. + if addon.Modules.Utils and addon.Modules.Utils.IsQuestItem then + local isQuestItem, isQuestStarter = + addon.Modules.Utils:IsQuestItem(bagID, slotID, itemData and itemData.link, false, false) + return isQuestItem, isQuestStarter, isQuestItem + end + + return false, false, false +end + +addon:Debug("QuestItemBar ClassicAPI snapshot detector loaded")