2022-01-11 00:29:17 +01:00
local type , pairs , ipairs , ceil , tonumber , mod , tostring , upper , select = type , pairs , ipairs , ceil , tonumber , mod , tostring , string.upper , select
2021-05-17 16:49:54 +02:00
local GetTime = GetTime
local CreateFrame = CreateFrame
2021-05-18 16:39:43 +02:00
local RACE_ICON_TCOORDS = {
[ " HUMAN_MALE " ] = { 0 , 0.125 , 0 , 0.25 } ,
[ " DWARF_MALE " ] = { 0.125 , 0.25 , 0 , 0.25 } ,
[ " GNOME_MALE " ] = { 0.25 , 0.375 , 0 , 0.25 } ,
[ " NIGHTELF_MALE " ] = { 0.375 , 0.5 , 0 , 0.25 } ,
[ " TAUREN_MALE " ] = { 0 , 0.125 , 0.25 , 0.5 } ,
[ " SCOURGE_MALE " ] = { 0.125 , 0.25 , 0.25 , 0.5 } ,
[ " TROLL_MALE " ] = { 0.25 , 0.375 , 0.25 , 0.5 } ,
[ " ORC_MALE " ] = { 0.375 , 0.5 , 0.25 , 0.5 } ,
[ " HUMAN_FEMALE " ] = { 0 , 0.125 , 0.5 , 0.75 } ,
[ " DWARF_FEMALE " ] = { 0.125 , 0.25 , 0.5 , 0.75 } ,
[ " GNOME_FEMALE " ] = { 0.25 , 0.375 , 0.5 , 0.75 } ,
[ " NIGHTELF_FEMALE " ] = { 0.375 , 0.5 , 0.5 , 0.75 } ,
[ " TAUREN_FEMALE " ] = { 0 , 0.125 , 0.75 , 1.0 } ,
[ " SCOURGE_FEMALE " ] = { 0.125 , 0.25 , 0.75 , 1.0 } ,
[ " TROLL_FEMALE " ] = { 0.25 , 0.375 , 0.75 , 1.0 } ,
[ " ORC_FEMALE " ] = { 0.375 , 0.5 , 0.75 , 1.0 } ,
[ " BLOODELF_MALE " ] = { 0.5 , 0.625 , 0.25 , 0.5 } ,
[ " BLOODELF_FEMALE " ] = { 0.5 , 0.625 , 0.75 , 1.0 } ,
[ " DRAENEI_MALE " ] = { 0.5 , 0.625 , 0 , 0.25 } ,
[ " DRAENEI_FEMALE " ] = { 0.5 , 0.625 , 0.5 , 0.75 } ,
}
2021-05-17 16:49:54 +02:00
local GetSpellInfo = GetSpellInfo
local Gladdy = LibStub ( " Gladdy " )
local L = Gladdy.L
2021-05-18 16:39:43 +02:00
local function getDefaultCooldown ( )
local cooldowns = { }
2021-07-29 15:53:34 +02:00
for _ , spellTable in pairs ( Gladdy : GetCooldownList ( ) ) do
for spellId , _ in pairs ( spellTable ) do
local spellName = GetSpellInfo ( spellId )
2021-05-18 16:39:43 +02:00
if spellName then
cooldowns [ tostring ( spellId ) ] = true
else
2022-01-11 00:29:30 +01:00
Gladdy : Debug ( " ERROR " , " spellid does not exist " .. spellId )
2021-05-18 16:39:43 +02:00
end
end
end
return cooldowns
end
2021-05-17 16:49:54 +02:00
local Cooldowns = Gladdy : NewModule ( " Cooldowns " , nil , {
cooldownFont = " DorisPP " ,
cooldownFontScale = 1 ,
cooldownFontColor = { r = 1 , g = 1 , b = 0 , a = 1 } ,
cooldown = true ,
2022-01-11 00:29:17 +01:00
cooldownYGrowDirection = " UP " ,
cooldownXGrowDirection = " RIGHT " ,
2021-05-17 16:49:54 +02:00
cooldownYOffset = 0 ,
cooldownXOffset = 0 ,
cooldownSize = 30 ,
cooldownWidthFactor = 1 ,
cooldownIconPadding = 1 ,
cooldownMaxIconsPerLine = 10 ,
cooldownBorderStyle = " Interface \\ AddOns \\ Gladdy \\ Images \\ Border_Gloss " ,
cooldownBorderColor = { r = 1 , g = 1 , b = 1 , a = 1 } ,
cooldownDisableCircle = false ,
2021-05-18 16:39:43 +02:00
cooldownCooldownAlpha = 1 ,
2022-01-11 00:29:17 +01:00
cooldownCooldowns = getDefaultCooldown ( ) ,
2022-01-12 20:21:53 +01:00
cooldownFrameStrata = " MEDIUM " ,
cooldownFrameLevel = 3 ,
2021-05-17 16:49:54 +02:00
} )
function Cooldowns : Initialize ( )
self.cooldownSpellIds = { }
self.spellTextures = { }
2021-07-29 15:53:34 +02:00
for _ , spellTable in pairs ( Gladdy : GetCooldownList ( ) ) do
for spellId , _ in pairs ( spellTable ) do
local spellName , _ , texture = GetSpellInfo ( spellId )
2021-05-17 16:49:54 +02:00
if spellName then
2021-07-29 15:53:34 +02:00
self.cooldownSpellIds [ spellName ] = spellId
self.spellTextures [ spellId ] = texture
2021-05-17 16:49:54 +02:00
else
2022-01-11 00:29:30 +01:00
Gladdy : Debug ( " ERROR " , " spellid does not exist " .. spellId )
2021-05-17 16:49:54 +02:00
end
end
end
self : RegisterMessage ( " ENEMY_SPOTTED " )
self : RegisterMessage ( " SPEC_DETECTED " )
self : RegisterMessage ( " UNIT_DEATH " )
2021-05-18 16:39:43 +02:00
self : RegisterMessage ( " UNIT_DESTROYED " )
2021-05-17 16:49:54 +02:00
end
function Cooldowns : CreateFrame ( unit )
local button = Gladdy.buttons [ unit ]
-- Cooldown frame
local spellCooldownFrame = CreateFrame ( " Frame " , nil , button )
2021-05-19 19:30:32 +02:00
spellCooldownFrame : EnableMouse ( false )
2021-09-24 15:51:24 +02:00
spellCooldownFrame : SetMovable ( true )
2022-01-12 20:21:53 +01:00
spellCooldownFrame : SetFrameStrata ( Gladdy.db . cooldownFrameStrata )
spellCooldownFrame : SetFrameLevel ( Gladdy.db . cooldownFrameLevel )
2021-05-17 16:49:54 +02:00
for x = 1 , 14 do
local icon = CreateFrame ( " Frame " , nil , spellCooldownFrame )
icon : EnableMouse ( false )
2022-01-12 20:21:53 +01:00
icon : SetFrameStrata ( Gladdy.db . cooldownFrameStrata )
icon : SetFrameLevel ( Gladdy.db . cooldownFrameLevel )
2021-05-17 16:49:54 +02:00
icon.texture = icon : CreateTexture ( nil , " BACKGROUND " )
2021-05-19 14:57:29 +02:00
icon.texture : SetMask ( " Interface \\ AddOns \\ Gladdy \\ Images \\ mask " )
2021-05-17 16:49:54 +02:00
icon.texture : SetAllPoints ( icon )
icon.cooldown = CreateFrame ( " Cooldown " , nil , icon , " CooldownFrameTemplate " )
icon.cooldown . noCooldownCount = true
2022-01-12 20:21:53 +01:00
icon.cooldown : SetFrameStrata ( Gladdy.db . cooldownFrameStrata )
icon.cooldown : SetFrameLevel ( Gladdy.db . cooldownFrameLevel + 1 )
2021-05-17 16:49:54 +02:00
icon.cooldown : SetReverse ( false )
icon.cooldown : SetHideCountdownNumbers ( true )
icon.cooldownFrame = CreateFrame ( " Frame " , nil , icon )
icon.cooldownFrame : ClearAllPoints ( )
icon.cooldownFrame : SetAllPoints ( icon )
2022-01-12 20:21:53 +01:00
icon.cooldownFrame : SetFrameStrata ( Gladdy.db . cooldownFrameStrata )
icon.cooldownFrame : SetFrameLevel ( Gladdy.db . cooldownFrameLevel + 2 )
2021-05-17 16:49:54 +02:00
icon.border = icon.cooldownFrame : CreateTexture ( nil , " OVERLAY " )
icon.border : SetAllPoints ( icon )
icon.border : SetTexture ( Gladdy.db . cooldownBorderStyle )
2022-01-12 23:07:23 +01:00
icon.border : SetVertexColor ( Gladdy : SetColor ( Gladdy.db . cooldownBorderColor ) )
2021-05-17 16:49:54 +02:00
icon.cooldownFont = icon.cooldownFrame : CreateFontString ( nil , " OVERLAY " )
2021-09-14 23:55:17 +02:00
icon.cooldownFont : SetFont ( Gladdy : SMFetch ( " font " , " cooldownFont " ) , Gladdy.db . cooldownSize / 2 * Gladdy.db . cooldownFontScale , " OUTLINE " )
2022-01-12 23:07:23 +01:00
icon.cooldownFont : SetTextColor ( Gladdy : SetColor ( Gladdy.db . cooldownFontColor ) )
2021-05-17 16:49:54 +02:00
icon.cooldownFont : SetAllPoints ( icon )
spellCooldownFrame [ " icon " .. x ] = icon
end
button.spellCooldownFrame = spellCooldownFrame
end
function Cooldowns : UpdateFrame ( unit )
local button = Gladdy.buttons [ unit ]
-- Cooldown frame
if ( Gladdy.db . cooldown ) then
button.spellCooldownFrame : SetHeight ( Gladdy.db . cooldownSize )
button.spellCooldownFrame : SetWidth ( 1 )
2022-01-12 20:21:53 +01:00
button.spellCooldownFrame : SetFrameStrata ( Gladdy.db . cooldownFrameStrata )
button.spellCooldownFrame : SetFrameLevel ( Gladdy.db . cooldownFrameLevel )
2021-05-17 16:49:54 +02:00
button.spellCooldownFrame : Show ( )
2022-01-11 00:29:17 +01:00
Gladdy : SetPosition ( button.spellCooldownFrame , unit , " cooldownXOffset " , " cooldownYOffset " , Cooldowns : LegacySetPosition ( button , unit ) , Cooldowns )
2021-09-24 15:51:24 +02:00
if ( unit == " arena1 " ) then
2022-01-11 00:29:17 +01:00
Gladdy : CreateMover ( button.spellCooldownFrame , " cooldownXOffset " , " cooldownYOffset " , L [ " Cooldown " ] ,
{ " TOPLEFT " , " TOPLEFT " } ,
2022-01-13 23:11:33 +01:00
Gladdy.db . cooldownSize * Gladdy.db . cooldownWidthFactor , Gladdy.db . cooldownSize , 0 , 0 , " cooldown " )
2021-09-24 15:51:24 +02:00
end
2021-05-17 16:49:54 +02:00
-- Update each cooldown icon
local o = 1
for j = 1 , 14 do
local icon = button.spellCooldownFrame [ " icon " .. j ]
2022-01-12 20:21:53 +01:00
icon : SetFrameStrata ( Gladdy.db . cooldownFrameStrata )
icon : SetFrameLevel ( Gladdy.db . cooldownFrameLevel )
icon.cooldown : SetFrameStrata ( Gladdy.db . cooldownFrameStrata )
icon.cooldown : SetFrameLevel ( Gladdy.db . cooldownFrameLevel + 1 )
icon.cooldownFrame : SetFrameStrata ( Gladdy.db . cooldownFrameStrata )
icon.cooldownFrame : SetFrameLevel ( Gladdy.db . cooldownFrameLevel + 2 )
2021-05-17 16:49:54 +02:00
icon : SetHeight ( Gladdy.db . cooldownSize )
icon : SetWidth ( Gladdy.db . cooldownSize * Gladdy.db . cooldownWidthFactor )
2021-09-14 23:55:17 +02:00
icon.cooldownFont : SetFont ( Gladdy : SMFetch ( " font " , " cooldownFont " ) , Gladdy.db . cooldownSize / 2 * Gladdy.db . cooldownFontScale , " OUTLINE " )
2022-01-12 23:07:23 +01:00
icon.cooldownFont : SetTextColor ( Gladdy : SetColor ( Gladdy.db . cooldownFontColor ) )
2021-05-17 16:49:54 +02:00
icon : ClearAllPoints ( )
2022-01-11 00:29:17 +01:00
if ( Gladdy.db . cooldownXGrowDirection == " LEFT " ) then
2021-05-17 16:49:54 +02:00
if ( j == 1 ) then
2022-01-11 00:29:17 +01:00
icon : SetPoint ( " LEFT " , button.spellCooldownFrame , " LEFT " , 0 , 0 )
2021-05-17 16:49:54 +02:00
elseif ( mod ( j - 1 , Gladdy.db . cooldownMaxIconsPerLine ) == 0 ) then
2022-01-11 00:29:17 +01:00
if ( Gladdy.db . cooldownYGrowDirection == " DOWN " ) then
2021-05-17 16:49:54 +02:00
icon : SetPoint ( " TOP " , button.spellCooldownFrame [ " icon " .. o ] , " BOTTOM " , 0 , - Gladdy.db . cooldownIconPadding )
else
icon : SetPoint ( " BOTTOM " , button.spellCooldownFrame [ " icon " .. o ] , " TOP " , 0 , Gladdy.db . cooldownIconPadding )
end
o = o + tonumber ( Gladdy.db . cooldownMaxIconsPerLine )
else
icon : SetPoint ( " RIGHT " , button.spellCooldownFrame [ " icon " .. j - 1 ] , " LEFT " , - Gladdy.db . cooldownIconPadding , 0 )
end
end
2022-01-11 00:29:17 +01:00
if ( Gladdy.db . cooldownXGrowDirection == " RIGHT " ) then
2021-05-17 16:49:54 +02:00
if ( j == 1 ) then
icon : SetPoint ( " LEFT " , button.spellCooldownFrame , " LEFT " , 0 , 0 )
elseif ( mod ( j - 1 , Gladdy.db . cooldownMaxIconsPerLine ) == 0 ) then
2022-01-11 00:29:17 +01:00
if ( Gladdy.db . cooldownYGrowDirection == " DOWN " ) then
2021-05-17 16:49:54 +02:00
icon : SetPoint ( " TOP " , button.spellCooldownFrame [ " icon " .. o ] , " BOTTOM " , 0 , - Gladdy.db . cooldownIconPadding )
else
icon : SetPoint ( " BOTTOM " , button.spellCooldownFrame [ " icon " .. o ] , " TOP " , 0 , Gladdy.db . cooldownIconPadding )
end
o = o + tonumber ( Gladdy.db . cooldownMaxIconsPerLine )
else
icon : SetPoint ( " LEFT " , button.spellCooldownFrame [ " icon " .. j - 1 ] , " RIGHT " , Gladdy.db . cooldownIconPadding , 0 )
end
end
if ( icon.active ) then
icon.active = false
icon.cooldown : SetCooldown ( GetTime ( ) , 0 )
icon.cooldownFont : SetText ( " " )
icon : SetScript ( " OnUpdate " , nil )
end
icon.spellId = nil
icon : SetAlpha ( 1 )
icon.texture : SetTexture ( " Interface \\ Icons \\ Spell_Holy_PainSupression " )
icon.cooldown : SetWidth ( icon : GetWidth ( ) - icon : GetWidth ( ) / 16 )
icon.cooldown : SetHeight ( icon : GetHeight ( ) - icon : GetHeight ( ) / 16 )
icon.cooldown : ClearAllPoints ( )
icon.cooldown : SetPoint ( " CENTER " , icon , " CENTER " )
icon.cooldown : SetAlpha ( Gladdy.db . cooldownCooldownAlpha )
2021-09-14 23:55:17 +02:00
icon.cooldownFont : SetFont ( Gladdy : SMFetch ( " font " , " cooldownFont " ) , ( icon : GetWidth ( ) / 2 - 1 ) * Gladdy.db . cooldownFontScale , " OUTLINE " )
2022-01-12 23:07:23 +01:00
icon.cooldownFont : SetTextColor ( Gladdy : SetColor ( Gladdy.db . cooldownFontColor ) )
2021-05-17 16:49:54 +02:00
icon.border : SetTexture ( Gladdy.db . cooldownBorderStyle )
2022-01-12 23:07:23 +01:00
icon.border : SetVertexColor ( Gladdy : SetColor ( Gladdy.db . cooldownBorderColor ) )
2021-05-17 16:49:54 +02:00
icon : Hide ( )
end
button.spellCooldownFrame : Show ( )
else
button.spellCooldownFrame : Hide ( )
end
if ( Gladdy.frame . testing ) then
self : Test ( unit )
end
end
function Cooldowns : Test ( unit )
2021-05-18 16:39:43 +02:00
local button = Gladdy.buttons [ unit ]
2021-06-16 14:10:09 +02:00
if Gladdy.db . cooldown then
button.spellCooldownFrame : Show ( )
button.lastCooldownSpell = 1
self : UpdateTestCooldowns ( unit )
else
button.spellCooldownFrame : Hide ( )
button.lastCooldownSpell = 1
self : UpdateTestCooldowns ( unit )
end
2021-05-17 16:49:54 +02:00
end
function Cooldowns : UpdateTestCooldowns ( unit )
local button = Gladdy.buttons [ unit ]
if ( button.testSpec and button.testSpec == Gladdy.testData [ unit ] . testSpec ) then
button.lastCooldownSpell = 1
self : UpdateCooldowns ( button )
button.spec = nil
self : DetectSpec ( unit , button.testSpec )
button.test = true
-- use class spells
2021-07-29 15:53:34 +02:00
for spellId , _ in pairs ( Gladdy : GetCooldownList ( ) [ button.class ] ) do
self : CooldownUsed ( unit , button.class , spellId )
2021-05-17 16:49:54 +02:00
end
-- use race spells
2021-07-29 15:53:34 +02:00
for spellId , _ in pairs ( Gladdy : GetCooldownList ( ) [ button.race ] ) do
self : CooldownUsed ( unit , button.race , spellId )
2021-05-17 16:49:54 +02:00
end
end
end
function Cooldowns : ENEMY_SPOTTED ( unit )
self : UpdateCooldowns ( Gladdy.buttons [ unit ] )
end
function Cooldowns : SPEC_DETECTED ( unit , spec )
self : DetectSpec ( unit , spec )
end
2022-01-12 16:18:34 +01:00
function Cooldowns : CooldownStart ( button , spellId , duration , start )
2021-05-17 16:49:54 +02:00
-- starts timer frame
if not duration or duration == nil or type ( duration ) ~= " number " then
return
end
for i = 1 , button.lastCooldownSpell + 1 do
if ( button.spellCooldownFrame [ " icon " .. i ] . spellId == spellId ) then
local frame = button.spellCooldownFrame [ " icon " .. i ]
frame.active = true
2022-01-12 16:18:34 +01:00
frame.timeLeft = start and start - GetTime ( ) + duration or duration
if ( not Gladdy.db . cooldownDisableCircle ) then frame.cooldown : SetCooldown ( start or GetTime ( ) , duration ) end
2021-05-17 16:49:54 +02:00
frame : SetScript ( " OnUpdate " , function ( self , elapsed )
self.timeLeft = self.timeLeft - elapsed
local timeLeft = ceil ( self.timeLeft )
if timeLeft >= 540 then
2021-09-14 23:55:17 +02:00
self.cooldownFont : SetFont ( Gladdy : SMFetch ( " font " , " cooldownFont " ) , Gladdy.db . cooldownSize / 3.1 * Gladdy.db . cooldownFontScale , " OUTLINE " )
2021-05-17 16:49:54 +02:00
elseif timeLeft < 540 and timeLeft >= 60 then
2021-09-14 23:55:17 +02:00
self.cooldownFont : SetFont ( Gladdy : SMFetch ( " font " , " cooldownFont " ) , Gladdy.db . cooldownSize / 2.15 * Gladdy.db . cooldownFontScale , " OUTLINE " )
2021-05-17 16:49:54 +02:00
elseif timeLeft < 60 and timeLeft > 0 then
2021-09-14 23:55:17 +02:00
self.cooldownFont : SetFont ( Gladdy : SMFetch ( " font " , " cooldownFont " ) , Gladdy.db . cooldownSize / 2.15 * Gladdy.db . cooldownFontScale , " OUTLINE " )
2021-05-17 16:49:54 +02:00
end
2021-07-26 11:27:32 +02:00
Gladdy : FormatTimer ( self.cooldownFont , self.timeLeft , self.timeLeft < 0 )
2021-05-17 16:49:54 +02:00
if ( self.timeLeft <= 0 ) then
Cooldowns : CooldownReady ( button , spellId , frame )
end
if ( self.timeLeft <= 0 ) then
Cooldowns : CooldownReady ( button , spellId , frame )
end
end )
end
end
end
function Cooldowns : CooldownReady ( button , spellId , frame )
if ( frame == false ) then
for i = 1 , button.lastCooldownSpell do
frame = button.spellCooldownFrame [ " icon " .. i ]
if ( frame.spellId == spellId ) then
frame.active = false
frame.cooldown : Hide ( )
frame.cooldownFont : SetText ( " " )
frame : SetScript ( " OnUpdate " , nil )
end
end
else
frame.active = false
frame.cooldown : Hide ( )
frame.cooldownFont : SetText ( " " )
frame : SetScript ( " OnUpdate " , nil )
end
end
2022-01-11 00:00:17 +01:00
local function notIn ( spec , list )
for _ , v in ipairs ( list ) do
if spec == v then
return false
end
end
return true
end
2021-05-17 16:49:54 +02:00
function Cooldowns : DetectSpec ( unit , spec )
local button = Gladdy.buttons [ unit ]
if ( not button or not spec or button.spec ) then
return
end
2022-01-11 00:00:17 +01:00
if button.class == " PALADIN " and notIn ( spec , { L [ " Holy " ] , L [ " Retribution " ] , L [ " Protection " ] } )
or button.class == " SHAMAN " and notIn ( spec , { L [ " Restoration " ] , L [ " Enhancement " ] , L [ " Elemental " ] } )
2022-01-14 05:51:39 +01:00
or button.class == " ROGUE " and notIn ( spec , { L [ " Subtlety " ] , L [ " Assassination " ] , L [ " Combat " ] } )
or button.class == " WARLOCK " and notIn ( spec , { L [ " Demonology " ] , L [ " Destruction " ] , L [ " Affliction " ] } )
or button.class == " PRIEST " and notIn ( spec , { L [ " Shadow " ] , L [ " Discipline " ] , L [ " Holy " ] } )
or button.class == " MAGE " and notIn ( spec , { L [ " Frost " ] , L [ " Fire " ] , L [ " Arcane " ] } )
or button.class == " DRUID " and notIn ( spec , { L [ " Restoration " ] , L [ " Feral " ] , L [ " Balance " ] } )
or button.class == " HUNTER " and notIn ( spec , { L [ " Beast Mastery " ] , L [ " Marksmanship " ] , L [ " Survival " ] } )
2022-01-11 00:00:17 +01:00
or button.class == " WARRIOR " and notIn ( spec , { L [ " Arms " ] , L [ " Protection " ] , L [ " Fury " ] } ) then
2021-08-19 18:58:05 +02:00
return
end
2021-05-17 16:49:54 +02:00
button.spec = spec
if not button.test then
Gladdy : SendMessage ( " UNIT_SPEC " , unit , spec )
end
-- update cooldown tracker
--[[
All of this could possibly be handled in a " once they're used, they show up " - manner
but I PERSONALLY prefer it this way . It also meant less work and makes spec - specific cooldowns easier
] ]
if ( Gladdy.db . cooldown ) then
local class = Gladdy.buttons [ unit ] . class
2021-05-18 16:39:43 +02:00
for k , v in pairs ( Gladdy : GetCooldownList ( ) [ class ] ) do
if Gladdy.db . cooldownCooldowns [ tostring ( k ) ] then
--if (self.db.cooldownList[k] ~= false and self.db.cooldownList[class] ~= false) then
if ( type ( v ) == " table " and ( ( v.spec ~= nil and v.spec == spec ) or ( v.notSpec ~= nil and v.notSpec ~= spec ) ) ) then
local sharedCD = false
if ( type ( v ) == " table " and v.sharedCD ~= nil and v.sharedCD . cd == nil ) then
for spellId , _ in pairs ( v.sharedCD ) do
for i = 1 , button.lastCooldownSpell do
local icon = button.spellCooldownFrame [ " icon " .. i ]
if ( icon.spellId == spellId ) then
sharedCD = true
end
2021-05-17 16:49:54 +02:00
end
end
end
2021-05-18 16:39:43 +02:00
if sharedCD then
return
end
2021-05-17 16:49:54 +02:00
2021-05-18 16:39:43 +02:00
local icon = button.spellCooldownFrame [ " icon " .. button.lastCooldownSpell ]
icon : Show ( )
icon.texture : SetTexture ( self.spellTextures [ k ] )
icon.spellId = k
button.spellCooldownFrame [ " icon " .. button.lastCooldownSpell ] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
end
2021-05-17 16:49:54 +02:00
end
end
end
----------------------
--- RACE FUNCTIONALITY
----------------------
local race = Gladdy.buttons [ unit ] . race
2021-05-18 16:39:43 +02:00
if Gladdy : GetCooldownList ( ) [ race ] then
for k , v in pairs ( Gladdy : GetCooldownList ( ) [ race ] ) do
if Gladdy.db . cooldownCooldowns [ tostring ( k ) ] then
--if (self.db.cooldownList[k] ~= false and self.db.cooldownList[class] ~= false) then
if ( type ( v ) == " table " and ( ( v.spec ~= nil and v.spec == spec ) or ( v.notSpec ~= nil and v.notSpec ~= spec ) ) ) then
local sharedCD = false
if ( type ( v ) == " table " and v.sharedCD ~= nil and v.sharedCD . cd == nil ) then
for spellId , _ in pairs ( v.sharedCD ) do
for i = 1 , button.lastCooldownSpell do
local icon = button.spellCooldownFrame [ " icon " .. i ]
if ( icon.spellId == spellId ) then
sharedCD = true
end
2021-05-17 16:49:54 +02:00
end
end
end
2021-05-18 16:39:43 +02:00
if sharedCD then
return
end
2021-05-17 16:49:54 +02:00
2021-05-18 16:39:43 +02:00
local icon = button.spellCooldownFrame [ " icon " .. button.lastCooldownSpell ]
icon : Show ( )
icon.texture : SetTexture ( self.spellTextures [ k ] )
icon.spellId = k
button.spellCooldownFrame [ " icon " .. button.lastCooldownSpell ] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
end
2021-05-17 16:49:54 +02:00
end
end
end
end
function Cooldowns : ResetUnit ( unit )
Gladdy.buttons [ unit ] . lastCooldownSpell = nil
Gladdy.buttons [ unit ] . test = nil
end
2021-05-18 16:39:43 +02:00
function Cooldowns : UNIT_DESTROYED ( unit )
end
2021-05-17 16:49:54 +02:00
function Cooldowns : UpdateCooldowns ( button )
local class = button.class
local race = button.race
if ( not button.lastCooldownSpell ) then
button.lastCooldownSpell = 1
end
if ( Gladdy.db . cooldown ) then
2021-05-18 16:39:43 +02:00
for k , v in pairs ( Gladdy : GetCooldownList ( ) [ class ] ) do
if Gladdy.db . cooldownCooldowns [ tostring ( k ) ] then
if ( type ( v ) ~= " table " or ( type ( v ) == " table " and v.spec == nil and v.notSpec == nil ) ) then
-- see if we have shared cooldowns without a cooldown defined
-- e.g. hunter traps have shared cooldowns, so only display one trap instead all of them
local sharedCD = false
if ( type ( v ) == " table " and v.sharedCD ~= nil and v.sharedCD . cd == nil ) then
for spellId , _ in pairs ( v.sharedCD ) do
for i = 1 , button.lastCooldownSpell do
local icon = button.spellCooldownFrame [ " icon " .. i ]
if ( icon.spellId == spellId ) then
sharedCD = true
end
2021-05-17 16:49:54 +02:00
end
end
end
2021-05-18 16:39:43 +02:00
if ( not sharedCD ) then
local icon = button.spellCooldownFrame [ " icon " .. button.lastCooldownSpell ]
icon : Show ( )
icon.spellId = k
icon.texture : SetTexture ( self.spellTextures [ k ] )
button.spellCooldownFrame [ " icon " .. button.lastCooldownSpell ] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
end
2021-05-17 16:49:54 +02:00
end
2021-05-18 16:39:43 +02:00
end
end
----
-- RACE FUNCTIONALITY
----
2021-05-17 16:49:54 +02:00
2021-05-18 16:39:43 +02:00
for k , v in pairs ( Gladdy : GetCooldownList ( ) [ race ] ) do
if Gladdy.db . cooldownCooldowns [ tostring ( k ) ] then
if ( type ( v ) ~= " table " or ( type ( v ) == " table " and v.spec == nil and v.notSpec == nil ) ) then
2021-05-17 16:49:54 +02:00
local icon = button.spellCooldownFrame [ " icon " .. button.lastCooldownSpell ]
icon : Show ( )
icon.spellId = k
icon.texture : SetTexture ( self.spellTextures [ k ] )
button.spellCooldownFrame [ " icon " .. button.lastCooldownSpell ] = icon
button.lastCooldownSpell = button.lastCooldownSpell + 1
end
end
end
end
end
2022-01-11 00:05:31 +01:00
function Cooldowns : CooldownUsed ( unit , unitClass , spellId , expirationTimeInSeconds )
2021-05-17 16:49:54 +02:00
local button = Gladdy.buttons [ unit ]
if not button then
return
end
-- if (self.db.cooldownList[spellId] == false) then return end
2021-05-18 16:39:43 +02:00
local cooldown = Gladdy : GetCooldownList ( ) [ unitClass ] [ spellId ]
2021-05-17 16:49:54 +02:00
local cd = cooldown
if ( type ( cooldown ) == " table " ) then
-- return if the spec doesn't have a cooldown for this spell
--if (arenaSpecs[unit] ~= nil and cooldown.notSpec ~= nil and arenaSpecs[unit] == cooldown.notSpec) then return end
if ( button.spec ~= nil and cooldown.notSpec ~= nil and button.spec == cooldown.notSpec ) then
return
end
-- check if we need to reset other cooldowns because of this spell
if ( cooldown.resetCD ~= nil ) then
2021-07-29 15:53:34 +02:00
for spellID , _ in pairs ( cooldown.resetCD ) do
self : CooldownReady ( button , spellID , false )
2021-05-17 16:49:54 +02:00
end
end
-- check if there is a special cooldown for the units spec
--if (arenaSpecs[unit] ~= nil and cooldown[arenaSpecs[unit]] ~= nil) then
if ( button.spec ~= nil and cooldown [ button.spec ] ~= nil ) then
cd = cooldown [ button.spec ]
else
cd = cooldown.cd
end
-- check if there is a shared cooldown with an other spell
if ( cooldown.sharedCD ~= nil ) then
local sharedCD = cooldown.sharedCD . cd and cooldown.sharedCD . cd or cd
2021-07-29 15:53:34 +02:00
for spellID , _ in pairs ( cooldown.sharedCD ) do
if ( spellID ~= " cd " ) then
self : CooldownStart ( button , spellID , sharedCD )
2021-05-17 16:49:54 +02:00
end
end
end
end
if ( Gladdy.db . cooldown ) then
-- start cooldown
2022-01-12 16:18:34 +01:00
self : CooldownStart ( button , spellId , cd , expirationTimeInSeconds and ( GetTime ( ) + expirationTimeInSeconds - cd ) or nil )
2021-05-17 16:49:54 +02:00
end
--[[ announcement
if ( self.db . cooldownAnnounce or self.db . cooldownAnnounceList [ spellId ] or self.db . cooldownAnnounceList [ unitClass ] ) then
self : SendAnnouncement ( string.format ( L [ " COOLDOWN USED: %s (%s) used %s - %s sec. cooldown " ] , UnitName ( unit ) , UnitClass ( unit ) , spellName , cd ) , RAID_CLASS_COLORS [ UnitClass ( unit ) ] , self.db . cooldownAnnounceList [ spellId ] and self.db . cooldownAnnounceList [ spellId ] or self.db . announceType )
end ] ]
--[[ sound file
if ( db.cooldownSoundList [ spellId ] ~= nil and db.cooldownSoundList [ spellId ] ~= " disabled " ) then
PlaySoundFile ( LSM : Fetch ( LSM.MediaType . SOUND , db.cooldownSoundList [ spellId ] ) )
end ] ]
end
function Cooldowns : GetOptions ( )
return {
headerCooldown = {
type = " header " ,
name = L [ " Cooldown " ] ,
order = 2 ,
} ,
cooldown = Gladdy : option ( {
type = " toggle " ,
2021-05-24 12:41:21 +02:00
name = L [ " Enabled " ] ,
2021-05-17 16:49:54 +02:00
desc = L [ " Enabled cooldown module " ] ,
order = 2 ,
} ) ,
group = {
type = " group " ,
childGroups = " tree " ,
2021-05-24 12:41:21 +02:00
name = L [ " Frame " ] ,
2021-05-17 16:49:54 +02:00
order = 3 ,
args = {
icon = {
type = " group " ,
name = L [ " Icon " ] ,
order = 1 ,
args = {
headerIcon = {
type = " header " ,
name = L [ " Icon " ] ,
order = 2 ,
} ,
cooldownSize = Gladdy : option ( {
type = " range " ,
name = L [ " Cooldown size " ] ,
desc = L [ " Size of each cd icon " ] ,
order = 4 ,
min = 5 ,
2021-05-22 13:41:31 +02:00
max = 50 ,
2021-06-15 09:06:05 +02:00
width = " full " ,
2021-05-17 16:49:54 +02:00
} ) ,
cooldownWidthFactor = Gladdy : option ( {
type = " range " ,
name = L [ " Icon Width Factor " ] ,
desc = L [ " Stretches the icon " ] ,
order = 5 ,
min = 0.5 ,
max = 2 ,
step = 0.05 ,
2021-06-15 09:06:05 +02:00
width = " full " ,
2021-05-17 16:49:54 +02:00
} ) ,
cooldownIconPadding = Gladdy : option ( {
type = " range " ,
name = L [ " Icon Padding " ] ,
desc = L [ " Space between Icons " ] ,
order = 6 ,
min = 0 ,
max = 10 ,
step = 0.1 ,
2021-06-15 09:06:05 +02:00
width = " full " ,
2021-05-17 16:49:54 +02:00
} ) ,
} ,
} ,
cooldown = {
type = " group " ,
name = L [ " Cooldown " ] ,
order = 2 ,
args = {
header = {
type = " header " ,
name = L [ " Cooldown " ] ,
order = 2 ,
} ,
cooldownDisableCircle = Gladdy : option ( {
type = " toggle " ,
name = L [ " No Cooldown Circle " ] ,
order = 8 ,
2021-05-24 12:41:21 +02:00
width = " full " ,
2021-05-17 16:49:54 +02:00
} ) ,
cooldownCooldownAlpha = Gladdy : option ( {
type = " range " ,
name = L [ " Cooldown circle alpha " ] ,
min = 0 ,
max = 1 ,
step = 0.1 ,
order = 9 ,
2021-06-15 09:06:05 +02:00
width = " full " ,
2021-05-17 16:49:54 +02:00
} ) ,
2021-09-18 15:00:34 +02:00
cooldownCooldownNumberAlpha = {
type = " range " ,
name = L [ " Cooldown number alpha " ] ,
min = 0 ,
max = 1 ,
step = 0.1 ,
order = 10 ,
width = " full " ,
set = function ( info , value )
Gladdy.db . cooldownFontColor.a = value
Gladdy : UpdateFrame ( )
end ,
get = function ( info )
return Gladdy.db . cooldownFontColor.a
end ,
} ,
2021-05-17 16:49:54 +02:00
} ,
} ,
font = {
type = " group " ,
name = L [ " Font " ] ,
order = 3 ,
args = {
header = {
type = " header " ,
name = L [ " Font " ] ,
order = 2 ,
} ,
cooldownFont = Gladdy : option ( {
type = " select " ,
name = L [ " Font " ] ,
desc = L [ " Font of the cooldown " ] ,
order = 11 ,
dialogControl = " LSM30_Font " ,
values = AceGUIWidgetLSMlists.font ,
} ) ,
cooldownFontScale = Gladdy : option ( {
type = " range " ,
name = L [ " Font scale " ] ,
desc = L [ " Scale of the font " ] ,
order = 12 ,
min = 0.1 ,
max = 2 ,
step = 0.1 ,
2021-06-15 09:06:05 +02:00
width = " full " ,
2021-05-17 16:49:54 +02:00
} ) ,
cooldownFontColor = Gladdy : colorOption ( {
type = " color " ,
name = L [ " Font color " ] ,
desc = L [ " Color of the text " ] ,
order = 13 ,
hasAlpha = true ,
} ) ,
} ,
} ,
position = {
type = " group " ,
name = L [ " Position " ] ,
2022-01-12 20:21:53 +01:00
order = 5 ,
2021-05-17 16:49:54 +02:00
args = {
header = {
type = " header " ,
name = L [ " Position " ] ,
order = 2 ,
} ,
2022-01-11 00:29:17 +01:00
cooldownYGrowDirection = Gladdy : option ( {
2021-05-17 16:49:54 +02:00
type = " select " ,
2022-01-11 00:29:17 +01:00
name = L [ " Vertical Grow Direction " ] ,
desc = L [ " Vertical Grow Direction of the cooldown icons " ] ,
2021-05-17 16:49:54 +02:00
order = 3 ,
values = {
2022-01-11 00:29:17 +01:00
[ " UP " ] = L [ " Up " ] ,
[ " DOWN " ] = L [ " Down " ] ,
2021-05-17 16:49:54 +02:00
} ,
} ) ,
2022-01-11 00:29:17 +01:00
cooldownXGrowDirection = Gladdy : option ( {
2021-05-17 16:49:54 +02:00
type = " select " ,
2022-01-11 00:29:17 +01:00
name = L [ " Horizontal Grow Direction " ] ,
desc = L [ " Horizontal Grow Direction of the cooldown icons " ] ,
2021-05-17 16:49:54 +02:00
order = 4 ,
values = {
2022-01-11 00:29:17 +01:00
[ " LEFT " ] = L [ " Left " ] ,
[ " RIGHT " ] = L [ " Right " ] ,
2021-05-17 16:49:54 +02:00
} ,
} ) ,
2022-01-11 00:29:17 +01:00
cooldownMaxIconsPerLine = Gladdy : option ( {
type = " range " ,
name = L [ " Max Icons per row " ] ,
order = 5 ,
min = 3 ,
max = 14 ,
step = 1 ,
width = " full " ,
} ) ,
2021-05-17 16:49:54 +02:00
headerOffset = {
type = " header " ,
name = L [ " Offset " ] ,
2022-01-11 00:29:17 +01:00
order = 10 ,
2021-05-17 16:49:54 +02:00
} ,
cooldownXOffset = Gladdy : option ( {
type = " range " ,
name = L [ " Horizontal offset " ] ,
2022-01-11 00:29:17 +01:00
order = 11 ,
2021-05-17 16:49:54 +02:00
min = - 400 ,
max = 400 ,
step = 0.1 ,
2021-06-15 09:06:05 +02:00
width = " full " ,
2021-05-17 16:49:54 +02:00
} ) ,
cooldownYOffset = Gladdy : option ( {
type = " range " ,
name = L [ " Vertical offset " ] ,
2022-01-11 00:29:17 +01:00
order = 12 ,
2021-05-17 16:49:54 +02:00
min = - 400 ,
max = 400 ,
step = 0.1 ,
2021-06-15 09:06:05 +02:00
width = " full " ,
2021-05-17 16:49:54 +02:00
} ) ,
} ,
} ,
border = {
type = " group " ,
name = L [ " Border " ] ,
2022-01-12 20:21:53 +01:00
order = 4 ,
2021-05-17 16:49:54 +02:00
args = {
header = {
type = " header " ,
name = L [ " Border " ] ,
order = 2 ,
} ,
cooldownBorderStyle = Gladdy : option ( {
type = " select " ,
name = L [ " Border style " ] ,
order = 31 ,
values = Gladdy : GetIconStyles ( )
} ) ,
cooldownBorderColor = Gladdy : colorOption ( {
type = " color " ,
name = L [ " Border color " ] ,
desc = L [ " Color of the border " ] ,
order = 32 ,
hasAlpha = true ,
} ) ,
} ,
} ,
2022-01-12 20:21:53 +01:00
frameStrata = {
type = " group " ,
name = L [ " Frame Strata and Level " ] ,
order = 6 ,
args = {
headerAuraLevel = {
type = " header " ,
name = L [ " Frame Strata and Level " ] ,
order = 1 ,
} ,
cooldownFrameStrata = Gladdy : option ( {
type = " select " ,
name = L [ " Frame Strata " ] ,
order = 2 ,
values = Gladdy.frameStrata ,
sorting = Gladdy.frameStrataSorting ,
width = " full " ,
} ) ,
cooldownFrameLevel = Gladdy : option ( {
type = " range " ,
name = L [ " Frame Level " ] ,
min = 0 ,
max = 500 ,
step = 1 ,
order = 3 ,
width = " full " ,
} ) ,
} ,
} ,
2021-05-17 16:49:54 +02:00
} ,
} ,
2021-05-18 16:39:43 +02:00
cooldowns = {
type = " group " ,
childGroups = " tree " ,
2021-05-24 12:41:21 +02:00
name = L [ " Cooldowns " ] ,
2021-05-18 16:39:43 +02:00
order = 4 ,
args = Cooldowns : GetCooldownOptions ( ) ,
} ,
2021-05-17 16:49:54 +02:00
}
end
2021-05-18 16:39:43 +02:00
function Cooldowns : GetCooldownOptions ( )
local group = { }
local p = 1
for i , class in ipairs ( Gladdy.CLASSES ) do
group [ class ] = {
type = " group " ,
name = LOCALIZED_CLASS_NAMES_MALE [ class ] ,
order = i ,
icon = " Interface \\ Glues \\ CharacterCreate \\ UI-CharacterCreate-Classes " ,
iconCoords = CLASS_ICON_TCOORDS [ class ] ,
args = { }
}
local o = 1
for spellId , cooldown in pairs ( Gladdy : GetCooldownList ( ) [ class ] ) do
group [ class ] . args [ tostring ( spellId ) ] = {
type = " toggle " ,
name = select ( 1 , GetSpellInfo ( spellId ) ) .. ( type ( cooldown ) == " table " and cooldown.spec and ( " - " .. cooldown.spec ) or " " ) ,
order = o ,
width = " full " ,
image = select ( 3 , GetSpellInfo ( spellId ) ) ,
2021-07-29 15:53:34 +02:00
get = function ( )
2021-05-18 16:39:43 +02:00
return Gladdy.db . cooldownCooldowns [ tostring ( spellId ) ]
end ,
2021-07-29 15:53:34 +02:00
set = function ( _ , value )
2021-05-18 16:39:43 +02:00
Gladdy.db . cooldownCooldowns [ tostring ( spellId ) ] = value
Gladdy : UpdateFrame ( )
end
}
o = o + 1
end
p = p + i
end
for i , race in ipairs ( Gladdy.RACES ) do
group [ race ] = {
type = " group " ,
name = L [ race ] ,
order = i + p ,
icon = " Interface \\ Glues \\ CharacterCreate \\ UI-CharacterCreate-Races " ,
iconCoords = RACE_ICON_TCOORDS [ upper ( race ) .. " _FEMALE " ] ,
args = { }
}
local o = 1
for spellId , cooldown in pairs ( Gladdy : GetCooldownList ( ) [ race ] ) do
group [ race ] . args [ tostring ( spellId ) ] = {
type = " toggle " ,
name = select ( 1 , GetSpellInfo ( spellId ) ) .. ( type ( cooldown ) == " table " and cooldown.spec and ( " - " .. cooldown.spec ) or " " ) ,
order = o ,
width = " full " ,
image = select ( 3 , GetSpellInfo ( spellId ) ) ,
2021-07-29 15:53:34 +02:00
get = function ( )
2021-05-18 16:39:43 +02:00
return Gladdy.db . cooldownCooldowns [ tostring ( spellId ) ]
end ,
2021-07-29 15:53:34 +02:00
set = function ( _ , value )
2021-05-18 16:39:43 +02:00
Gladdy.db . cooldownCooldowns [ tostring ( spellId ) ] = value
Gladdy : UpdateFrame ( )
end
}
o = o + 1
end
end
return group
end
2021-05-17 16:49:54 +02:00
function Gladdy : UpdateTestCooldowns ( i )
local unit = " arena " .. i
local button = Gladdy.buttons [ unit ]
if ( button.testSpec and button.testSpec == Gladdy.testData [ unit ] . testSpec ) then
button.lastCooldownSpell = 1
Cooldowns : UpdateCooldowns ( button )
button.spec = nil
Cooldowns : DetectSpec ( unit , button.testSpec )
-- use class spells
2021-07-29 15:53:34 +02:00
for spellID , _ in pairs ( Gladdy : GetCooldownList ( ) [ button.class ] ) do
2021-05-17 16:49:54 +02:00
--k is spellId
2021-07-29 15:53:34 +02:00
Cooldowns : CooldownUsed ( unit , button.class , spellID )
2021-05-17 16:49:54 +02:00
end
-- use race spells
2021-07-29 15:53:34 +02:00
for spellID , _ in pairs ( Gladdy : GetCooldownList ( ) [ button.race ] ) do
Cooldowns : CooldownUsed ( unit , button.race , spellID )
2021-05-17 16:49:54 +02:00
end
end
2022-01-11 00:29:17 +01:00
end
---------------------------
-- LAGACY HANDLER
---------------------------
function Cooldowns : LegacySetPosition ( button , unit )
if Gladdy.db . newLayout then
return Gladdy.db . newLayout
end
button.spellCooldownFrame : ClearAllPoints ( )
local powerBarHeight = Gladdy.db . powerBarEnabled and ( Gladdy.db . powerBarHeight + 1 ) or 0
local horizontalMargin = ( Gladdy.db . highlightInset and 0 or Gladdy.db . highlightBorderSize )
local offset = 0
if ( Gladdy.db . cooldownXPos == " RIGHT " ) then
offset = - ( Gladdy.db . cooldownSize * Gladdy.db . cooldownWidthFactor )
end
if Gladdy.db . cooldownYPos == " TOP " then
Gladdy.db . cooldownYGrowDirection = " UP "
if Gladdy.db . cooldownXPos == " RIGHT " then
Gladdy.db . cooldownXGrowDirection = " LEFT "
button.spellCooldownFrame : SetPoint ( " BOTTOMRIGHT " , button.healthBar , " TOPRIGHT " , Gladdy.db . cooldownXOffset + offset , horizontalMargin + Gladdy.db . cooldownYOffset )
else
Gladdy.db . cooldownXGrowDirection = " RIGHT "
button.spellCooldownFrame : SetPoint ( " BOTTOMLEFT " , button.healthBar , " TOPLEFT " , Gladdy.db . cooldownXOffset + offset , horizontalMargin + Gladdy.db . cooldownYOffset )
end
elseif Gladdy.db . cooldownYPos == " BOTTOM " then
Gladdy.db . cooldownYGrowDirection = " DOWN "
if Gladdy.db . cooldownXPos == " RIGHT " then
Gladdy.db . cooldownXGrowDirection = " LEFT "
button.spellCooldownFrame : SetPoint ( " TOPRIGHT " , button.healthBar , " BOTTOMRIGHT " , Gladdy.db . cooldownXOffset + offset , - horizontalMargin + Gladdy.db . cooldownYOffset - powerBarHeight )
else
Gladdy.db . cooldownXGrowDirection = " RIGHT "
button.spellCooldownFrame : SetPoint ( " TOPLEFT " , button.healthBar , " BOTTOMLEFT " , Gladdy.db . cooldownXOffset + offset , - horizontalMargin + Gladdy.db . cooldownYOffset - powerBarHeight )
end
elseif Gladdy.db . cooldownYPos == " LEFT " then
Gladdy.db . cooldownYGrowDirection = " DOWN "
local anchor = Gladdy : GetAnchor ( unit , " LEFT " )
if anchor == Gladdy.buttons [ unit ] . healthBar then
Gladdy.db . cooldownXGrowDirection = " LEFT "
button.spellCooldownFrame : SetPoint ( " RIGHT " , anchor , " LEFT " , - ( horizontalMargin + Gladdy.db . padding ) + Gladdy.db . cooldownXOffset + offset , Gladdy.db . cooldownYOffset )
else
Gladdy.db . cooldownXGrowDirection = " LEFT "
button.spellCooldownFrame : SetPoint ( " RIGHT " , anchor , " LEFT " , - Gladdy.db . padding + Gladdy.db . cooldownXOffset + offset , Gladdy.db . cooldownYOffset )
end
elseif Gladdy.db . cooldownYPos == " RIGHT " then
Gladdy.db . cooldownYGrowDirection = " DOWN "
local anchor = Gladdy : GetAnchor ( unit , " RIGHT " )
if anchor == Gladdy.buttons [ unit ] . healthBar then
Gladdy.db . cooldownXGrowDirection = " RIGHT "
button.spellCooldownFrame : SetPoint ( " LEFT " , anchor , " RIGHT " , horizontalMargin + Gladdy.db . padding + Gladdy.db . cooldownXOffset + offset , Gladdy.db . cooldownYOffset )
else
Gladdy.db . cooldownXGrowDirection = " RIGHT "
button.spellCooldownFrame : SetPoint ( " LEFT " , anchor , " RIGHT " , Gladdy.db . padding + Gladdy.db . cooldownXOffset + offset , Gladdy.db . cooldownYOffset )
end
end
LibStub ( " AceConfigRegistry-3.0 " ) : NotifyChange ( " Gladdy " )
return Gladdy.db . newLayout
2021-05-18 16:39:43 +02:00
end