From d644d0c4720b17749581ca85233d94c377c00b4d Mon Sep 17 00:00:00 2001 From: p3lim Date: Mon, 13 Dec 2010 00:03:28 +0100 Subject: [PATCH] Rewrite and replace animations with a texture --- Molinari.lua | 86 +++++++++++++++++++++++++++------------------------------- 1 file changed, 40 insertions(+), 46 deletions(-) diff --git a/Molinari.lua b/Molinari.lua index 7ee06d5..147b815 100644 --- a/Molinari.lua +++ b/Molinari.lua @@ -1,71 +1,65 @@ -local addonName, spells = ... -local button = CreateFrame('Button', addonName, UIParent, 'SecureActionButtonTemplate, AutoCastShineTemplate') -button:SetScript('OnEvent', function(self, event, ...) self[event](self, event, ...) end) + +local button = CreateFrame('Button', 'Molinari', UIParent, 'SecureActionButtonTemplate') +button:SetScript('OnEvent', function(self, event, ...) self[event](self, ...) end) button:RegisterEvent('PLAYER_LOGIN') -local function ScanTooltip() - for index = 1, GameTooltip:NumLines() do - local info = spells[_G['GameTooltipTextLeft'..index]:GetText()] +local function ScanTooltip(self, spells) + for index = 1, self:NumLines() do + local info = spells[_G['GameTooltipTextLeft' .. index]:GetText()] if(info) then return unpack(info) end end end -local function OnLeave(self) - if(InCombatLockdown()) then - self:RegisterEvent('PLAYER_REGEN_ENABLED') - else - AutoCastShine_AutoCastStop(self) - self:ClearAllPoints() - self:Hide() - end -end - -local function OnTooltip(self) - if(self:GetItem() and not InCombatLockdown() and IsAltKeyDown()) then - local spell, r, g, b = ScanTooltip() - - if(spell) then - local bag, slot = GetMouseFocus():GetParent(), GetMouseFocus() - button:SetAttribute('macrotext', string.format('/cast %s\n/use %s %s', spell, bag:GetID(), slot:GetID())) - AutoCastShine_AutoCastStart(button, r, g, b) - button:SetAllPoints(slot) - button:Show() - end - end -end - function button:PLAYER_LOGIN() - if(not IsSpellKnown(51005) and not IsSpellKnown(31252)) then return end - + local spells = {} if(IsSpellKnown(51005)) then spells[ITEM_MILLABLE] = {GetSpellInfo(51005), 1/2, 1, 1/2} end + if(IsSpellKnown(31252)) then - spells[ITEM_PROSPECTABLE] = {GetSpellInfo(31252), 1, 1/2, 1/2} + spells[ITEM_PROSPECTABLE] = {GetSpellInfo(31252), 1, 1/3, 1/3} end - GameTooltip:HookScript('OnTooltipSetItem', OnTooltip) + GameTooltip:HookScript('OnTooltipSetItem', function(self) + local item, link = self:GetItem() + if(item and not InCombatLockdown() and IsAltKeyDown()) then + local spell, r, g, b = ScanTooltip(self, spells) + + local bag, slot = GetMouseFocus():GetParent(), GetMouseFocus() + if(spell) then + button:SetAttribute('macrotext', string.format('/cast %s\n/use %s %s', spell, slot:GetParent():GetID(), slot:GetID())) + button:GetNormalTexture():SetVertexColor(r, g, b) + button:SetAllPoints(slot) + button:Show() + end + end + end) + self:SetFrameStrata('DIALOG') self:SetAttribute('alt-type1', 'macro') - self:SetScript('OnLeave', OnLeave) + self:SetNormalTexture([=[Interface\PaperDollInfoFrame\UI-GearManager-ItemButton-Highlight]=]) + self:GetNormalTexture():SetTexCoord(0.11, 0.66, .11, 0.66) + self:SetScript('OnLeave', self.MODIFIER_STATE_CHANGED) + self:RegisterEvent('MODIFIER_STATE_CHANGED') self:Hide() - - for _, sparks in pairs(button.sparkles) do - sparks:SetHeight(sparks:GetHeight() * 2) - sparks:SetWidth(sparks:GetWidth() * 2) - end end -function button:MODIFIER_STATE_CHANGED(event, key) - if(self:IsShown() and (key == 'LALT' or key == 'RALT')) then - OnLeave(self) +function button:MODIFIER_STATE_CHANGED(key) + if(not self:IsShown() and not key and key ~= 'LALT' and key ~= 'RALT') then return end + + if(InCombatLockdown()) then + self:RegisterEvent('PLAYER_REGEN_ENABLED') + else + self:ClearAllPoints() + self:Hide() end end -function button:PLAYER_REGEN_ENABLED(event) - self:UnregisterEvent(event) - OnLeave(self) +function button:PLAYER_REGEN_ENABLED() + self:UnregisterEvent('PLAYER_REGEN_ENABLED') + self:ClearAllPoints() + self:Hide() end -- 1.7.9.5