mirror of
https://github.com/brues-code/pfUI.git
synced 2026-11-08 19:38:56 +00:00
Action bars: glow proc and reactive spells from ClassicAPI's overlay events
A button on the action bars pulses a gold border while the spell in its slot glows: Overpower, Revenge, Execute, Riposte, Counterattack, Mongoose Bite and Hammer of Wrath while usable, and Shadow Bolt under Shadow Trance. The slot update resolves the spell, through GetMacroSpell for a macro, and reads IsSpellOverlayed, so glows lit before a /reload show. SPELL_ACTIVATION_OVERLAY_GLOW_SHOW/HIDE then update the buttons with that spell ID; every rank fires its own event. "Highlight Proc And Reactive Spells" under Action Bars turns it off. The screen alerts are left out: their art isn't in the 1.12 client.
This commit is contained in:
@@ -675,6 +675,7 @@ function pfUI:LoadConfig()
|
|||||||
pfUI:UpdateConfig("bars", nil, "oomcolor", ".2,.2,1,1")
|
pfUI:UpdateConfig("bars", nil, "oomcolor", ".2,.2,1,1")
|
||||||
pfUI:UpdateConfig("bars", nil, "showna", "1")
|
pfUI:UpdateConfig("bars", nil, "showna", "1")
|
||||||
pfUI:UpdateConfig("bars", nil, "nacolor", ".3,.3,.3,1")
|
pfUI:UpdateConfig("bars", nil, "nacolor", ".3,.3,.3,1")
|
||||||
|
pfUI:UpdateConfig("bars", nil, "procglow", "1")
|
||||||
pfUI:UpdateConfig("bars", nil, "showequipped", "1")
|
pfUI:UpdateConfig("bars", nil, "showequipped", "1")
|
||||||
pfUI:UpdateConfig("bars", nil, "eqcolor", ".2,.8,.2,.2")
|
pfUI:UpdateConfig("bars", nil, "eqcolor", ".2,.8,.2,.2")
|
||||||
pfUI:UpdateConfig("bars", nil, "shiftdrag", "1")
|
pfUI:UpdateConfig("bars", nil, "shiftdrag", "1")
|
||||||
|
|||||||
Vendored
+1
@@ -433,6 +433,7 @@ pfUI_translation["enUS"] = {
|
|||||||
["Highlight Out Of Mana Spells"] = nil,
|
["Highlight Out Of Mana Spells"] = nil,
|
||||||
["Highlight New Items"] = nil,
|
["Highlight New Items"] = nil,
|
||||||
["Highlight Out Of Range Spells"] = nil,
|
["Highlight Out Of Range Spells"] = nil,
|
||||||
|
["Highlight Proc And Reactive Spells"] = nil,
|
||||||
["Highlight Settings That Require Reload"] = nil,
|
["Highlight Settings That Require Reload"] = nil,
|
||||||
["Highlight Unusable Items"] = nil,
|
["Highlight Unusable Items"] = nil,
|
||||||
["Hold [Shift] to use item."] = nil,
|
["Hold [Shift] to use item."] = nil,
|
||||||
|
|||||||
@@ -424,6 +424,36 @@ pfUI:RegisterModule("actionbar", function ()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- the pulsing border of a spell whose proc glow is lit
|
||||||
|
local function ButtonProcShow(self, glow)
|
||||||
|
if glow then
|
||||||
|
if not self.proc:IsShown() then
|
||||||
|
self.proc:Show()
|
||||||
|
self.proc.pulse:Play()
|
||||||
|
end
|
||||||
|
elseif self.proc:IsShown() then
|
||||||
|
self.proc.pulse:Stop()
|
||||||
|
self.proc:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- the spell an action slot casts, directly or through a macro, and its
|
||||||
|
-- proc glow. The glow events name that spell.
|
||||||
|
local function ButtonProcUpdate(self)
|
||||||
|
local kind, id, spellid, _
|
||||||
|
if C.bars.procglow == "1" then
|
||||||
|
kind, id = GetActionInfo(self.id)
|
||||||
|
if kind == "spell" then
|
||||||
|
spellid = id
|
||||||
|
elseif kind == "macro" then
|
||||||
|
_, _, spellid = GetMacroSpell(id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
self.spellid = spellid
|
||||||
|
ButtonProcShow(self, spellid and IsSpellOverlayed(spellid))
|
||||||
|
end
|
||||||
|
|
||||||
local castable, autocast, token
|
local castable, autocast, token
|
||||||
local grid, sid, active, texture, _
|
local grid, sid, active, texture, _
|
||||||
local function ButtonSlotUpdate(self)
|
local function ButtonSlotUpdate(self)
|
||||||
@@ -466,6 +496,8 @@ pfUI:RegisterModule("actionbar", function ()
|
|||||||
else
|
else
|
||||||
self.macro:SetText("")
|
self.macro:SetText("")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
ButtonProcUpdate(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- icon
|
-- icon
|
||||||
@@ -710,6 +742,15 @@ pfUI:RegisterModule("actionbar", function ()
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- the spell whose glow started or ended; each rank has its own event
|
||||||
|
if event == "SPELL_ACTIVATION_OVERLAY_GLOW_SHOW" or event == "SPELL_ACTIVATION_OVERLAY_GLOW_HIDE" then
|
||||||
|
local glow = IsSpellOverlayed(arg1)
|
||||||
|
for _, button in pairs(buttoncache) do
|
||||||
|
if button.spellid == arg1 then ButtonProcShow(button, glow) end
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
-- refresh only specific slots
|
-- refresh only specific slots
|
||||||
if event == "ACTIONBAR_SLOT_CHANGED" and arg1 and arg1 ~= 0 then
|
if event == "ACTIONBAR_SLOT_CHANGED" and arg1 and arg1 ~= 0 then
|
||||||
QueueSlot(arg1)
|
QueueSlot(arg1)
|
||||||
@@ -770,6 +811,8 @@ pfUI:RegisterModule("actionbar", function ()
|
|||||||
for event in pairs(pet_events) do RegisterBarEvent(event) end
|
for event in pairs(pet_events) do RegisterBarEvent(event) end
|
||||||
bars:RegisterEvent("ACTION_RANGE_CHECK_UPDATE")
|
bars:RegisterEvent("ACTION_RANGE_CHECK_UPDATE")
|
||||||
bars:RegisterEvent("ACTION_USABLE_CHANGED")
|
bars:RegisterEvent("ACTION_USABLE_CHANGED")
|
||||||
|
bars:RegisterEvent("SPELL_ACTIVATION_OVERLAY_GLOW_SHOW")
|
||||||
|
bars:RegisterEvent("SPELL_ACTIVATION_OVERLAY_GLOW_HIDE")
|
||||||
|
|
||||||
-- refresh actionbar buttons on event
|
-- refresh actionbar buttons on event
|
||||||
bars:SetScript("OnEvent", BarsEvent)
|
bars:SetScript("OnEvent", BarsEvent)
|
||||||
@@ -1080,6 +1123,23 @@ pfUI:RegisterModule("actionbar", function ()
|
|||||||
f.active:SetAllPoints()
|
f.active:SetAllPoints()
|
||||||
f.active:Hide()
|
f.active:Hide()
|
||||||
|
|
||||||
|
-- proc glow
|
||||||
|
if bar ~= 11 and bar ~= 12 then
|
||||||
|
f.proc = CreateFrame("Frame", nil, f)
|
||||||
|
f.proc:SetBackdrop(backdrop_highlight)
|
||||||
|
f.proc:SetBackdropBorderColor(1,.8,.2,1)
|
||||||
|
f.proc:SetAllPoints()
|
||||||
|
f.proc:Hide()
|
||||||
|
|
||||||
|
f.proc.pulse = f.proc:CreateAnimationGroup()
|
||||||
|
f.proc.pulse:SetLooping("BOUNCE")
|
||||||
|
local fade = f.proc.pulse:CreateAnimation("Alpha")
|
||||||
|
fade:SetFromAlpha(1)
|
||||||
|
fade:SetToAlpha(.3)
|
||||||
|
fade:SetDuration(.5)
|
||||||
|
fade:SetSmoothing("IN_OUT")
|
||||||
|
end
|
||||||
|
|
||||||
-- add to buttoncache
|
-- add to buttoncache
|
||||||
buttoncache[id] = f
|
buttoncache[id] = f
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2326,6 +2326,7 @@ pfUI:RegisterModule("gui", function ()
|
|||||||
CreateConfig(U["bars"], T["Out Of Mana Color"], C.bars, "oomcolor", "color")
|
CreateConfig(U["bars"], T["Out Of Mana Color"], C.bars, "oomcolor", "color")
|
||||||
CreateConfig(U["bars"], T["Highlight Not Usable Spells"], C.bars, "showna", "checkbox")
|
CreateConfig(U["bars"], T["Highlight Not Usable Spells"], C.bars, "showna", "checkbox")
|
||||||
CreateConfig(U["bars"], T["Not Usable Color"], C.bars, "nacolor", "color")
|
CreateConfig(U["bars"], T["Not Usable Color"], C.bars, "nacolor", "color")
|
||||||
|
CreateConfig(U["bars"], T["Highlight Proc And Reactive Spells"], C.bars, "procglow", "checkbox")
|
||||||
CreateConfig(U["bars"], T["Lock Actionbars"], "UVAR", "LOCK_ACTIONBAR", "checkbox")
|
CreateConfig(U["bars"], T["Lock Actionbars"], "UVAR", "LOCK_ACTIONBAR", "checkbox")
|
||||||
CreateConfig(U["bars"], T["Always Allow Drag Via Shift Key"], C.bars, "shiftdrag", "checkbox")
|
CreateConfig(U["bars"], T["Always Allow Drag Via Shift Key"], C.bars, "shiftdrag", "checkbox")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user