Quantcast

Moved some frame creation out of a do block.

torhal [12-07-09 - 11:43]
Moved some frame creation out of a do block.
In addon:Scan(): If the player knows the current profession (not linked), update the cached skill level.
In the NPC tooltip hook: Check to see if the character has equal or greater skill level to that required by the recipe - if not, don't show it. Also added the required skill level next to the recipe name in the tooltip.
Filename
ARLFrame.lua
AckisRecipeList.lua
diff --git a/ARLFrame.lua b/ARLFrame.lua
index 7159dad..f9d9fc9 100644
--- a/ARLFrame.lua
+++ b/ARLFrame.lua
@@ -2575,33 +2575,35 @@ end	-- do
 -------------------------------------------------------------------------------
 -- Create MainPanel.progress_bar and set its scripts
 -------------------------------------------------------------------------------
+MainPanel.progress_bar = CreateFrame("StatusBar", nil, MainPanel)
+MainPanel.progress_bar:SetWidth(195)
+MainPanel.progress_bar:SetHeight(14)
+
+MainPanel.progress_bar:ClearAllPoints()
+MainPanel.progress_bar:SetPoint("BOTTOMLEFT", MainPanel, 17, 7)
+
+MainPanel.progress_bar:SetStatusBarTexture("Interface\\Addons\\AckisRecipeList\\img\\progressbar")
+MainPanel.progress_bar:SetOrientation("HORIZONTAL")
+MainPanel.progress_bar:SetStatusBarColor(0.25, 0.25, 0.75)
+
+MainPanel.progress_bar.text = MainPanel.progress_bar:CreateFontString(nil, "ARTWORK")
+MainPanel.progress_bar.text:SetWidth(195)
+MainPanel.progress_bar.text:SetHeight(14)
+MainPanel.progress_bar.text:SetFontObject("GameFontHighlightSmall")
+
+MainPanel.progress_bar.text:ClearAllPoints()
+MainPanel.progress_bar.text:SetPoint("CENTER", MainPanel.progress_bar, "CENTER", 0, 0)
+MainPanel.progress_bar.text:SetJustifyH("CENTER")
+
+-- Default values for the progressbar
 do
-	-- Default values for the progressbar
 	local pbMin = 0
 	local pbMax = 100
 	local pbCur = 50

-	MainPanel.progress_bar = CreateFrame("StatusBar", nil, MainPanel)
-	MainPanel.progress_bar:SetWidth(195)
-	MainPanel.progress_bar:SetHeight(14)
-
-	MainPanel.progress_bar:ClearAllPoints()
-	MainPanel.progress_bar:SetPoint("BOTTOMLEFT", MainPanel, 17, 7)
-
-	MainPanel.progress_bar:SetStatusBarTexture("Interface\\Addons\\AckisRecipeList\\img\\progressbar")
-	MainPanel.progress_bar:SetOrientation("HORIZONTAL")
-	MainPanel.progress_bar:SetStatusBarColor(0.25, 0.25, 0.75)
 	MainPanel.progress_bar:SetMinMaxValues(pbMin, pbMax)
 	MainPanel.progress_bar:SetValue(pbCur)

-	MainPanel.progress_bar.text = MainPanel.progress_bar:CreateFontString(nil, "ARTWORK")
-	MainPanel.progress_bar.text:SetWidth(195)
-	MainPanel.progress_bar.text:SetHeight(14)
-	MainPanel.progress_bar.text:SetFontObject("GameFontHighlightSmall")
-
-	MainPanel.progress_bar.text:ClearAllPoints()
-	MainPanel.progress_bar.text:SetPoint("CENTER", MainPanel.progress_bar, "CENTER", 0, 0)
-	MainPanel.progress_bar.text:SetJustifyH("CENTER")
 	MainPanel.progress_bar.text:SetFormattedText("%d / %d - %d%%", pbCur, pbMax, floor(pbCur / pbMax * 100))
 end	-- do

diff --git a/AckisRecipeList.lua b/AckisRecipeList.lua
index d76dcb2..b3590a9 100644
--- a/AckisRecipeList.lua
+++ b/AckisRecipeList.lua
@@ -515,7 +515,7 @@ function addon:OnInitialize()
 					       if not recipe["Known"] or shifted then
 						       local _, _, _, hex = GetItemQualityColor(recipe["Rarity"])

-						       self:AddLine("Drops: "..hex..recipe["Name"].."|r")
+						       self:AddLine("Drops: "..hex..recipe["Name"].."|r ("..recipe["Level"]..")")
 					       end
 				       end
 				       return
@@ -525,11 +525,13 @@ function addon:OnInitialize()
 			       if vendor and vendor["SellList"] then
 				       for spell_id in pairs(vendor["SellList"]) do
 					       local recipe = RecipeList[spell_id]
+					       local skill_level = Player["Professions"][GetSpellInfo(recipe["Profession"])]
+					       local has_skill = skill_level and skill_level >= recipe["Level"]

-					       if (not recipe["Known"] or shifted) and Player:IsCorrectFaction(recipe["Flags"]) then
+					       if ((not recipe["Known"] and has_skill) or shifted) and Player:IsCorrectFaction(recipe["Flags"]) then
 						       local _, _, _, hex = GetItemQualityColor(recipe["Rarity"])

-						       self:AddLine("Sells: "..hex..recipe["Name"].."|r")
+						       self:AddLine("Sells: "..hex..recipe["Name"].."|r ("..recipe["Level"]..")")
 					       end
 				       end
 				       return
@@ -539,11 +541,13 @@ function addon:OnInitialize()
 			       if trainer and trainer["TrainList"] then
 				       for spell_id in pairs(trainer["TrainList"]) do
 					       local recipe = RecipeList[spell_id]
+					       local skill_level = Player["Professions"][GetSpellInfo(recipe["Profession"])]
+					       local has_skill = skill_level and skill_level >= recipe["Level"]

-					       if (not recipe["Known"] or shifted) and Player:IsCorrectFaction(recipe["Flags"]) then
+					       if ((not recipe["Known"] and has_skill) or shifted) and Player:IsCorrectFaction(recipe["Flags"]) then
 						       local _, _, _, hex = GetItemQualityColor(recipe["Rarity"])

-						       self:AddLine("Trains: "..hex..recipe["Name"].."|r")
+						       self:AddLine("Trains: "..hex..recipe["Name"].."|r ("..recipe["Level"]..")")
 					       end
 				       end
 				       return
@@ -1455,7 +1459,16 @@ do
 			self:Print(L["OpenTradeSkillWindow"])
 			return
 		end
-		Player["Profession"], Player["ProfessionLevel"] = GetTradeSkillLine()
+		local current_prof, prof_level = GetTradeSkillLine()
+
+		-- Set the current profession and its level, and update the cached data.
+		Player["Profession"] = current_prof
+		Player["ProfessionLevel"] = prof_level
+
+		-- Make sure we're only updating a profession the character actually knows - this could be a scan from a tradeskill link.
+		if not IsTradeSkillLinked() and Player["Professions"][current_prof] then
+			Player["Professions"][current_prof] = prof_level
+		end

 		-- Get the current profession Specialty
 		local specialty = SpecialtyTable[Player["Profession"]]