| 
contrebasse@98
 | 
     1 local addonName, A = ...
 | 
| 
contrebasse@98
 | 
     2 
 | 
| 
contrebasse@98
 | 
     3 local CAMPFIRE_ID = 818
 | 
| 
contrebasse@98
 | 
     4 local COOKING_ID = 2550
 | 
| 
contrebasse@98
 | 
     5 local btn
 | 
| 
contrebasse@98
 | 
     6 local cookingName
 | 
| 
contrebasse@98
 | 
     7 
 | 
| 
contrebasse@98
 | 
     8 -- Create button
 | 
| 
contrebasse@98
 | 
     9 function A.InitialiseCampFireBtn()
 | 
| 
contrebasse@103
 | 
    10 	if not GetTradeSkillLine() or InCombatLockdown() then return end
 | 
| 
contrebasse@103
 | 
    11 
 | 
| 
contrebasse@98
 | 
    12 	-- create the frame
 | 
| 
contrebasse@98
 | 
    13 	btn = CreateFrame("Button", nil, TradeSkillFrame, "SecureActionButtonTemplate")
 | 
| 
contrebasse@98
 | 
    14 	btn:SetNormalTexture(select(3,GetSpellInfo(CAMPFIRE_ID)))
 | 
| 
contrebasse@98
 | 
    15 	btn:SetSize(24,24)
 | 
| 
contrebasse@98
 | 
    16 	btn:SetPoint("BOTTOMRIGHT",TradeSkillFrame,"BOTTOMRIGHT",-10,179)
 | 
| 
contrebasse@98
 | 
    17 
 | 
| 
contrebasse@98
 | 
    18 	-- Set the action
 | 
| 
contrebasse@98
 | 
    19 	btn:SetAttribute("type", "spell")
 | 
| 
contrebasse@98
 | 
    20 	btn:SetAttribute("spell", CAMPFIRE_ID)
 | 
| 
contrebasse@98
 | 
    21 
 | 
| 
contrebasse@98
 | 
    22 	-- Set the tooltip
 | 
| 
contrebasse@98
 | 
    23 	btn:SetScript("OnEnter",function(self)
 | 
| 
contrebasse@98
 | 
    24 		GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT")
 | 
| 
contrebasse@98
 | 
    25 		GameTooltip:SetSpellByID(CAMPFIRE_ID)
 | 
| 
contrebasse@98
 | 
    26 		GameTooltip:Show()
 | 
| 
contrebasse@98
 | 
    27 	end)
 | 
| 
contrebasse@98
 | 
    28 	btn:SetScript("OnLeave",function() GameTooltip:Hide(); end)
 | 
| 
contrebasse@98
 | 
    29 
 | 
| 
contrebasse@98
 | 
    30 	-- Add cooldown
 | 
| 
contrebasse@98
 | 
    31 	btn.cooldown = CreateFrame("Cooldown",nil,btn)
 | 
| 
contrebasse@98
 | 
    32 	btn.cooldown:SetAllPoints(btn)
 | 
| 
contrebasse@98
 | 
    33 	local CooldownFrame_SetTimer = CooldownFrame_SetTimer
 | 
| 
contrebasse@98
 | 
    34 	local GetSpellCooldown = GetSpellCooldown
 | 
| 
contrebasse@98
 | 
    35 	btn:SetScript("OnUpdate",function(self) CooldownFrame_SetTimer(self.cooldown,GetSpellCooldown(CAMPFIRE_ID)); end)
 | 
| 
contrebasse@98
 | 
    36 
 | 
| 
contrebasse@98
 | 
    37 	-- Show if needed
 | 
| 
contrebasse@98
 | 
    38 	A.ManageCampFireBtn()
 | 
| 
contrebasse@98
 | 
    39 end
 | 
| 
contrebasse@98
 | 
    40 
 | 
| 
contrebasse@98
 | 
    41 -- Hide button
 | 
| 
contrebasse@98
 | 
    42 function A.HideCampFireBtn()
 | 
| 
contrebasse@101
 | 
    43 	if btn then btn:Hide() end
 | 
| 
contrebasse@98
 | 
    44 end
 | 
| 
contrebasse@98
 | 
    45 
 | 
| 
contrebasse@98
 | 
    46 -- Show button if applicable
 | 
| 
contrebasse@98
 | 
    47 function A.ManageCampFireBtn()
 | 
| 
contrebasse@98
 | 
    48 	-- Display only if the tradeskill is Cooking
 | 
| 
contrebasse@103
 | 
    49 	if not cookingName then cookingName = GetSpellInfo(COOKING_ID) end
 | 
| 
contrebasse@103
 | 
    50 	if GetTradeSkillLine() ~= cookingName then
 | 
| 
contrebasse@103
 | 
    51 		if btn then btn:Hide() end
 | 
| 
contrebasse@98
 | 
    52 	else
 | 
| 
contrebasse@103
 | 
    53 		-- create button if necessary
 | 
| 
contrebasse@103
 | 
    54 		if not btn then
 | 
| 
contrebasse@103
 | 
    55 			A.InitialiseCampFireBtn()
 | 
| 
contrebasse@103
 | 
    56 		end
 | 
| 
contrebasse@103
 | 
    57 		-- It may not have been created
 | 
| 
contrebasse@103
 | 
    58 		if not btn then return end
 | 
| 
contrebasse@98
 | 
    59 		btn:Show()
 | 
| 
contrebasse@98
 | 
    60 	end
 | 
| 
contrebasse@98
 | 
    61 end
 |