From 5256b47e39abede7bb75509b911c9164fbd7f603 Mon Sep 17 00:00:00 2001 From: pschifferer Date: Thu, 26 Feb 2009 00:55:22 +0000 Subject: [PATCH] Addressed an issue with the reagent filter not showing skills if *some* reagents were possessed. Added a tooltip hook for SetTradeskillItem() to display if a reagent is "key" or "vendor". --- CauldronMain.lua | 27 +++++++++++++++++++++++++- CauldronMain.xml | 4 ++-- CauldronTradeskill.lua | 48 ++++++++++++++++++++++++++++++++++++++++------ Locale/Cauldron-enUS.lua | 4 ++++ 4 files changed, 74 insertions(+), 9 deletions(-) diff --git a/CauldronMain.lua b/CauldronMain.lua index d9982b5..039cf93 100644 --- a/CauldronMain.lua +++ b/CauldronMain.lua @@ -735,7 +735,7 @@ function Cauldron:HookTooltips() -- self:SecureHook(GameTooltip, "SetInventoryItem"); -- self:SecureHook(GameTooltip, "SetLootItem"); -- self:SecureHook(GameTooltip, "SetHyperlink"); --- self:SecureHook(GameTooltip, "SetTradeSkillItem"); + self:SecureHook(GameTooltip, "SetTradeSkillItem"); -- self:SecureHook(GameTooltip, "SetMerchantItem"); -- self:SecureHook(GameTooltip, "SetAuctionItem"); -- self:SecureHook(GameTooltip, "SetTrainerService"); @@ -748,6 +748,31 @@ function Cauldron:HookTooltips() end ---------------------------------------------------------------------- +-- Tooltip hook functions +---------------------------------------------------------------------- + +function Cauldron:SetTradeSkillItem(tooltip, itemIndex, reagentIndex) + local link; + local name; + if reagentIndex then + local skillInfo = Cauldron:GetSkillInfoByIndex(itemIndex); + local reagentInfo = Cauldron:GetReagentInfoByIndex(itemIndex, reagentIndex); + + -- let the user know if the reagent is a "non-key" reagent + if reagentInfo.key then + tooltip:AddLine(L["Type: "]..L["Key"]); + else + tooltip:AddLine(L["Type: "]..L["Vendor"]); + end + else +-- link = GetTradeSkillItemLink(itemIndex); +-- name = Cauldron:GetIdFromLink(link); + end + + tooltip:Show(); +end + +---------------------------------------------------------------------- -- Property functions ---------------------------------------------------------------------- diff --git a/CauldronMain.xml b/CauldronMain.xml index 3cdf6b8..7aec0a2 100644 --- a/CauldronMain.xml +++ b/CauldronMain.xml @@ -286,7 +286,7 @@ + text="(name)" justifyH="LEFT" justifyV="CENTER"> @@ -297,7 +297,7 @@ + text="(info)" justifyH="LEFT" justifyV="CENTER"> diff --git a/CauldronTradeskill.lua b/CauldronTradeskill.lua index 68b86e7..8e4bf28 100644 --- a/CauldronTradeskill.lua +++ b/CauldronTradeskill.lua @@ -339,14 +339,13 @@ function Cauldron:GetSkillList(playername, skillName) end end elseif self.db.realm.userdata[playername].skills[skillName].window.filter.haveAnyReagents then - -- check if the reagent count for any reagent is 0 - local count = 0; + -- check if the reagent count for any reagent is > 0 + add = false; for rname, rinfo in pairs(recipe.reagents) do -- check possession count - count = count + GetItemCount(rname); - end - if count == 0 then - add = false; + if GetItemCount(rname) > 0 then + add = true; + end end end @@ -467,6 +466,43 @@ function Cauldron:GetSkillInfoForItem(item) return nil; end +function Cauldron:GetSkillInfoByIndex(itemIndex) + + for tradeskill, list in pairs(self.db.realm.userdata[self.vars.playername].skills) do + -- skip linked skills + if not (string.find(tradeskill, "Linked-")) then + for _, recipeInfo in pairs(list.recipes) do + if recipeInfo.index == itemIndex then + return recipeInfo; + end + end + end + end + + return nil; +end + +function Cauldron:GetReagentInfoByIndex(item, reagentIndex) + + local skillInfo = nil; + + if type(item) == "table" then + skillInfo = item; + elseif type(item) == "number" then + skillInfo = self:GetSkillInfoByIndex(tonumber(item)); + end + + if skillInfo then + for i, reagentInfo in ipairs(skillInfo.reagents) do + if reagentInfo.index == reagentIndex then + return reagentInfo; + end + end + end + + return nil; +end + function Cauldron:GetRequiredItems(skillInfo, amount) local intermediates = {}; diff --git a/Locale/Cauldron-enUS.lua b/Locale/Cauldron-enUS.lua index e54feee..993e8ff 100644 --- a/Locale/Cauldron-enUS.lua +++ b/Locale/Cauldron-enUS.lua @@ -105,6 +105,10 @@ L["Decrease the amount of this item"] = true L["Remove this item from the shopping list"] = true +L["Type: "] = true +L["Vendor"] = true +L["Key"] = true + -- error messages L["Crafting %1$s requires the %2$s skill."] = true -- 1.7.9.5