|
|
|
|
--[[
|
|
|
|
|
|
|
|
|
|
This file is part of 'Masque', an add-on for World of Warcraft. For bug reports,
|
|
|
|
|
suggestions and license information, please visit https://github.com/SFX-WoW/Masque.
|
|
|
|
|
|
|
|
|
|
* File...: Core\Regions\SpellAlert.lua
|
|
|
|
|
* Author.: StormFX
|
|
|
|
|
|
|
|
|
|
'SpellAlert' Region
|
|
|
|
|
|
|
|
|
|
* TODO: Improve the textures.
|
|
|
|
|
|
|
|
|
|
]]
|
|
|
|
|
|
|
|
|
|
local _, Core = ...
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- Lua API
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
local error, type = error, type
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- Locals
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
local Alerts = {
|
|
|
|
|
Square = {
|
|
|
|
|
Glow = [[Interface\SpellActivationOverlay\IconAlert]],
|
|
|
|
|
Ants = [[Interface\SpellActivationOverlay\IconAlertAnts]],
|
|
|
|
|
},
|
|
|
|
|
Circle = {
|
|
|
|
|
Glow = [[Interface\AddOns\Masque\Textures\SpellAlert\IconAlert-Circle]],
|
|
|
|
|
Ants = [[Interface\AddOns\Masque\Textures\SpellAlert\IconAlertAnts-Circle]],
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- Update
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
-- Hook to update the 'SpellAlert' animation.
|
|
|
|
|
local function UpdateSpellAlert(Button)
|
|
|
|
|
local Overlay = Button.overlay
|
|
|
|
|
|
|
|
|
|
if not Overlay or not Overlay.spark then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local Shape = Button.__MSQ_Shape
|
|
|
|
|
|
|
|
|
|
if Overlay.__MSQ_Shape ~= Shape then
|
|
|
|
|
local Glow, Ants
|
|
|
|
|
|
|
|
|
|
if Shape and Alerts[Shape] then
|
|
|
|
|
Glow = Alerts[Shape].Glow or Alerts.Square.Glow
|
|
|
|
|
Ants = Alerts[Shape].Ants or Alerts.Square.Ants
|
|
|
|
|
else
|
|
|
|
|
Glow = Alerts.Square.Glow
|
|
|
|
|
Ants = Alerts.Square.Ants
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Overlay.innerGlow:SetTexture(Glow)
|
|
|
|
|
Overlay.innerGlowOver:SetTexture(Glow)
|
|
|
|
|
Overlay.outerGlow:SetTexture(Glow)
|
|
|
|
|
Overlay.outerGlowOver:SetTexture(Glow)
|
|
|
|
|
Overlay.spark:SetTexture(Glow)
|
|
|
|
|
Overlay.ants:SetTexture(Ants)
|
|
|
|
|
|
|
|
|
|
Overlay.__MSQ_Shape = Shape
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- @ FrameXML\ActionButton.lua
|
|
|
|
|
hooksecurefunc("ActionButton_ShowOverlayGlow", UpdateSpellAlert)
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- Core
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Core.UpdateSpellAlert = UpdateSpellAlert
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- API
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
local API = Core.API
|
|
|
|
|
|
|
|
|
|
-- Wrapper for the Update function.
|
|
|
|
|
-- * Allows add-ons to call the function when not using the native API.
|
|
|
|
|
function API:UpdateSpellAlert(Button)
|
|
|
|
|
if type(Button) ~= "table" then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
UpdateSpellAlert(Button)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Adds or overwrites a 'SpellAlert' texture set.
|
|
|
|
|
function API:AddSpellAlert(Shape, Glow, Ants)
|
|
|
|
|
if type(Shape) ~= "string" then
|
|
|
|
|
if Core.Debug then
|
|
|
|
|
error("Bad argument to API method 'AddSpellAlert'. 'Shape' must be a string.", 2)
|
|
|
|
|
end
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local Overlay = Alerts[Shape] or {}
|
|
|
|
|
|
|
|
|
|
if type(Glow) == "string" then
|
|
|
|
|
Overlay.Glow = Glow
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if type(Ants) == "string" then
|
|
|
|
|
Overlay.Ants = Ants
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Alerts[Shape] = Overlay
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Retrieves a 'SpellAlert' texture set.
|
|
|
|
|
function API:GetSpellAlert(Shape)
|
|
|
|
|
if type(Shape) ~= "string" then
|
|
|
|
|
if Core.Debug then
|
|
|
|
|
error("Bad argument to API method 'GetSpellAlert'. 'Shape' must be a string.", 2)
|
|
|
|
|
end
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local Overlay = Alerts[Shape]
|
|
|
|
|
|
|
|
|
|
if Overlay then
|
|
|
|
|
return Overlay.Glow, Overlay.Ants
|
|
|
|
|
end
|
|
|
|
|
end
|