You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
470 lines
20 KiB
470 lines
20 KiB
local PA, ACL, ACH = unpack(_G.ProjectAzilroka)
|
|
local LSM = PA.Libs.LSM
|
|
|
|
--Lua functions
|
|
local next, floor, tinsert, mod = next, floor, tinsert, mod
|
|
|
|
--WoW API / Variables
|
|
local GetTime, CreateFrame, hooksecurefunc = GetTime, CreateFrame, hooksecurefunc
|
|
|
|
local ICON_SIZE = 36 --the normal size for an icon (don't change this)
|
|
local FONT_SIZE = 20 --the base font size to use at a scale of 1
|
|
local MIN_SCALE = 0.5 --the minimum scale we want to show cooldown counts at, anything below this will be hidden
|
|
local MIN_DURATION = 1.5 --the minimum duration to show cooldown text for
|
|
|
|
PA.TimeColors = {} -- 0:days 1:hours 2:minutes 3:seconds 4:expire 5:mmss 6:hhmm 7:modRate 8:targetAura 9:expiringAura 10-14:targetAura
|
|
PA.TimeIndicatorColors = {} -- same color indexes
|
|
PA.TimeThreshold = 3
|
|
|
|
for i = 0, 14 do
|
|
PA.TimeColors[i] = { r = 1, g = 1, b = 1 }
|
|
PA.TimeIndicatorColors[i] = '|cffffffff'
|
|
end
|
|
|
|
PA.TimeFormats = { -- short / indicator color
|
|
-- special options (3, 4): rounding
|
|
[0] = {'%dd', '%d%sd|r', '%.0fd', '%.0f%sd|r'},
|
|
[1] = {'%dh', '%d%sh|r', '%.0fh', '%.0f%sh|r'},
|
|
[2] = {'%dm', '%d%sm|r', '%.0fm', '%.0f%sm|r'},
|
|
-- special options (3, 4): show seconds
|
|
[3] = {'%d', '%d', '%ds', '%d%ss|r'},
|
|
[4] = {'%.1f', '%.1f', '%.1fs', '%.1f%ss|r'},
|
|
|
|
[5] = {'%d:%02d', '%d%s:|r%02d'}, -- mmss
|
|
}
|
|
|
|
PA.TimeFormats[6] = PA:CopyTable({}, PA.TimeFormats[5]) -- hhmm
|
|
PA.TimeFormats[7] = PA:CopyTable({}, PA.TimeFormats[3]) -- modRate
|
|
|
|
do
|
|
local YEAR, DAY, HOUR, MINUTE = 31557600, 86400, 3600, 60
|
|
function PA:GetTimeInfo(sec, threshold, hhmm, mmss, modRate)
|
|
if sec < MINUTE then
|
|
if modRate then
|
|
return sec, 7, 0.5 / modRate
|
|
elseif sec > threshold then
|
|
return sec, 3, 0.5
|
|
else
|
|
return sec, 4, 0.1
|
|
end
|
|
elseif mmss and sec < mmss then
|
|
return sec / MINUTE, 5, 1, mod(sec, MINUTE)
|
|
elseif hhmm and sec < (hhmm * MINUTE) then
|
|
return sec / HOUR, 6, 30, mod(sec, HOUR) / MINUTE
|
|
elseif sec < HOUR then
|
|
local mins = mod(sec, HOUR) / MINUTE
|
|
return mins, 2, mins > 2 and 30 or 1
|
|
elseif sec < DAY then
|
|
local hrs = mod(sec, DAY) / HOUR
|
|
return hrs, 1, hrs > 1 and 60 or 30
|
|
else
|
|
local days = mod(sec, YEAR) / DAY
|
|
return days, 0, days > 1 and 120 or 60
|
|
end
|
|
end
|
|
end
|
|
|
|
function PA:Cooldown_UnbuggedTime(timer)
|
|
if timer.buggedTime then
|
|
return time() - GetTime()
|
|
else
|
|
return GetTime()
|
|
end
|
|
end
|
|
|
|
function PA:Cooldown_TextThreshold(cd, now)
|
|
if cd.parent and cd.parent.textThreshold and cd.endTime then
|
|
return (cd.endTime - now) >= cd.parent.textThreshold
|
|
end
|
|
end
|
|
|
|
function PA:Cooldown_BelowScale(cd)
|
|
if cd.parent then
|
|
if cd.parent.hideText then return true end
|
|
if cd.parent.skipScale then return end
|
|
end
|
|
|
|
return cd.fontScale and (cd.fontScale < MIN_SCALE)
|
|
end
|
|
|
|
function PA:Cooldown_OnUpdate(elapsed)
|
|
local forced = elapsed == -1
|
|
if forced then
|
|
self.nextUpdate = 0
|
|
elseif self.nextUpdate > 0 then
|
|
self.nextUpdate = self.nextUpdate - elapsed
|
|
return
|
|
end
|
|
|
|
if not PA:Cooldown_TimerEnabled(self) then
|
|
PA:Cooldown_TimerStop(self)
|
|
return 2
|
|
else
|
|
local now = PA:Cooldown_UnbuggedTime(self)
|
|
if self.endCooldown and now >= self.endCooldown then
|
|
PA:Cooldown_TimerStop(self)
|
|
elseif PA:Cooldown_BelowScale(self) then
|
|
self.text:SetText('')
|
|
if not forced then
|
|
self.nextUpdate = 500
|
|
end
|
|
elseif self.endTime then
|
|
local timeLeft = (self.endTime - now) / (self.modRate or 1)
|
|
if PA:Cooldown_TextThreshold(self, timeLeft) then
|
|
self.text:SetText('')
|
|
if not forced then
|
|
self.nextUpdate = 1
|
|
end
|
|
else
|
|
local value, id, nextUpdate, remainder = PA:GetTimeInfo(timeLeft, self.threshold, self.hhmmThreshold, self.mmssThreshold, self.modRate ~= 1 and self.modRate)
|
|
if not forced then self.nextUpdate = nextUpdate end
|
|
|
|
local style = PA.TimeFormats[id]
|
|
if style then
|
|
local opt = (id < 3 and self.roundTime) or ((id == 3 or id == 4 or id == 7) and self.showSeconds)
|
|
local which = (self.textColors and 2 or 1) + (opt and 2 or 0)
|
|
if self.textColors then
|
|
self.text:SetFormattedText(style[which], value, self.textColors[id], remainder)
|
|
else
|
|
self.text:SetFormattedText(style[which], value, remainder)
|
|
end
|
|
end
|
|
|
|
local color = not self.skipTextColor and self.timeColors[id]
|
|
if color then self.text:SetTextColor(color.r, color.g, color.b) end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function PA:Cooldown_OnSizeChanged(cd, width, force)
|
|
local scale = width and (floor(width + 0.5) / ICON_SIZE)
|
|
|
|
-- dont bother updating when the fontScale is the same, unless we are passing the force arg
|
|
if scale and (scale == cd.fontScale) and (force ~= true) then return end
|
|
cd.fontScale = scale
|
|
|
|
-- this is needed because of skipScale variable, we wont allow a font size under the minscale
|
|
if cd.fontScale and (cd.fontScale < MIN_SCALE) then
|
|
scale = MIN_SCALE
|
|
end
|
|
|
|
if cd.customFont then -- override font
|
|
cd.text:SetFont(cd.customFont, (scale * cd.customFontSize), cd.customFontOutline)
|
|
elseif scale then -- default, no override
|
|
cd.text:SetFont(PA.Libs.LSM:Fetch('font', PA.Libs.LSM:GetDefault('font')), (scale * FONT_SIZE), 'OUTLINE')
|
|
end
|
|
end
|
|
|
|
function PA:Cooldown_TimerEnabled(cd)
|
|
if cd.forceEnabled then
|
|
return true
|
|
elseif cd.forceDisabled then
|
|
return false
|
|
elseif cd.reverseToggle ~= nil then
|
|
return cd.reverseToggle
|
|
else
|
|
return PA.db.Cooldown.Enable
|
|
end
|
|
end
|
|
|
|
function PA:Cooldown_TimerUpdate(cd)
|
|
PA.Cooldown_OnUpdate(cd, -1)
|
|
cd:Show()
|
|
end
|
|
|
|
function PA:Cooldown_TimerStop(cd)
|
|
cd:Hide()
|
|
end
|
|
|
|
function PA:Cooldown_Options(timer, db, parent)
|
|
local threshold, colors, icolors, hhmm, mmss, fonts
|
|
if parent and db.override then
|
|
threshold = db.threshold
|
|
icolors = db.useIndicatorColor and PA.TimeIndicatorColors[parent.CooldownOverride]
|
|
colors = PA.TimeColors[parent.CooldownOverride]
|
|
end
|
|
|
|
if db.checkSeconds then
|
|
hhmm, mmss = db.hhmmThreshold, db.mmssThreshold
|
|
end
|
|
|
|
timer.timeColors = colors or PA.TimeColors
|
|
timer.threshold = threshold or PA.db.Cooldown.threshold or PA.TimeThreshold
|
|
timer.textColors = icolors or (PA.db.Cooldown.useIndicatorColor and PA.TimeIndicatorColors)
|
|
timer.hhmmThreshold = hhmm or (PA.db.Cooldown.checkSeconds and PA.db.Cooldown.hhmmThreshold)
|
|
timer.mmssThreshold = mmss or (PA.db.Cooldown.checkSeconds and PA.db.Cooldown.mmssThreshold)
|
|
timer.hideBlizzard = db.hideBlizzard or PA.db.Cooldown.hideBlizzard
|
|
timer.roundTime = PA.db.Cooldown.roundTime
|
|
timer.showModRate = db.showModRate
|
|
|
|
if db.reverse ~= nil then
|
|
timer.reverseToggle = (PA.db.Cooldown.Enable and not db.reverse) or (db.reverse and not PA.db.Cooldown.Enable)
|
|
else
|
|
timer.reverseToggle = nil
|
|
end
|
|
|
|
if (db ~= PA.db.Cooldown) and db.fonts and db.fonts.enable then
|
|
fonts = db.fonts -- custom fonts override default fonts
|
|
elseif PA.db.Cooldown.fonts and PA.db.Cooldown.fonts.enable then
|
|
fonts = PA.db.Cooldown.fonts -- default global font override
|
|
end
|
|
|
|
if fonts and fonts.enable then
|
|
timer.customFont = LSM:Fetch('font', fonts.font)
|
|
timer.customFontSize = fonts.fontSize
|
|
timer.customFontOutline = fonts.fontOutline
|
|
else
|
|
timer.customFont = nil
|
|
timer.customFontSize = nil
|
|
timer.customFontOutline = nil
|
|
end
|
|
end
|
|
|
|
function PA:CreateCooldownTimer(parent)
|
|
local timer = CreateFrame('Frame', nil, parent)
|
|
timer:Hide()
|
|
timer:SetAllPoints()
|
|
timer.parent = parent
|
|
parent.timer = timer
|
|
|
|
local text = timer:CreateFontString(nil, 'OVERLAY')
|
|
text:SetPoint('CENTER', 1, 1)
|
|
text:SetJustifyH('CENTER')
|
|
timer.text = text
|
|
|
|
-- can be used to modify elements created from this function
|
|
if parent.CooldownPreHook then
|
|
parent.CooldownPreHook(parent)
|
|
end
|
|
|
|
-- cooldown override settings
|
|
local db = (parent.CooldownOverride and PA.db[parent.CooldownOverride]) or PA.db
|
|
if db and db.Cooldown then
|
|
PA:Cooldown_Options(timer, db.Cooldown, parent)
|
|
end
|
|
|
|
PA:ToggleBlizzardCooldownText(parent, timer)
|
|
|
|
-- keep an eye on the size so we can rescale the font if needed
|
|
PA:Cooldown_OnSizeChanged(timer, parent:GetWidth())
|
|
parent:SetScript('OnSizeChanged', function(_, width)
|
|
PA:Cooldown_OnSizeChanged(timer, width)
|
|
end)
|
|
|
|
-- keep this after Cooldown_OnSizeChanged
|
|
timer:SetScript('OnUpdate', PA.Cooldown_OnUpdate)
|
|
|
|
return timer
|
|
end
|
|
|
|
PA.RegisteredCooldowns = {}
|
|
function PA:OnSetCooldown(start, duration, modRate)
|
|
if (not self.forceDisabled) and (start and duration) and (duration > MIN_DURATION) then
|
|
local timer = self.timer or PA:CreateCooldownTimer(self)
|
|
timer.start = start
|
|
timer.modRate = timer.showModRate and modRate or 1
|
|
timer.duration = duration * (not timer.showModRate and modRate or 1)
|
|
|
|
local now = GetTime()
|
|
if start <= (now + 1) then -- this second is for Target Aura
|
|
timer.endTime = start + duration
|
|
timer.buggedTime = nil
|
|
else -- https://github.com/Stanzilla/WoWUIBugs/issues/47
|
|
local startup = time() - now
|
|
local cdtime = (2 ^ 32) * 0.001 - start
|
|
local startTime = startup - cdtime
|
|
timer.endTime = startTime + duration
|
|
timer.buggedTime = true
|
|
end
|
|
|
|
timer.endCooldown = timer.endTime - 0.05
|
|
timer.paused = nil -- a new cooldown was called
|
|
|
|
PA:Cooldown_TimerUpdate(timer)
|
|
elseif self.timer then
|
|
PA:Cooldown_TimerStop(self.timer)
|
|
end
|
|
end
|
|
|
|
function PA:RegisterCooldown(cooldown)
|
|
if not cooldown.isHooked then
|
|
hooksecurefunc(cooldown, 'SetCooldown', PA.OnSetCooldown)
|
|
cooldown.isHooked = true
|
|
end
|
|
|
|
if not cooldown.isRegisteredCooldown then
|
|
local module = (cooldown.CooldownOverride or 'global')
|
|
if not PA.RegisteredCooldowns[module] then PA.RegisteredCooldowns[module] = {} end
|
|
|
|
tinsert(PA.RegisteredCooldowns[module], cooldown)
|
|
cooldown.isRegisteredCooldown = true
|
|
end
|
|
end
|
|
|
|
function PA:ToggleBlizzardCooldownText(cd, timer, request)
|
|
-- we should hide the blizzard cooldown text when ours are enabled
|
|
if timer and cd and cd.SetHideCountdownNumbers then
|
|
local forceHide = cd.hideText or timer.hideBlizzard
|
|
if request then
|
|
return forceHide or PA:Cooldown_TimerEnabled(timer)
|
|
else
|
|
cd:SetHideCountdownNumbers(forceHide or PA:Cooldown_TimerEnabled(timer))
|
|
end
|
|
end
|
|
end
|
|
|
|
function PA:UpdateCooldownOverride(module)
|
|
local cooldowns = (module and PA.RegisteredCooldowns[module])
|
|
if (not cooldowns) or not next(cooldowns) then return end
|
|
|
|
for _, parent in next, cooldowns do
|
|
local db = (parent.CooldownOverride and PA.db[parent.CooldownOverride]) or PA.db
|
|
if db and db.Cooldown then
|
|
local timer = parent.isHooked and parent.isRegisteredCooldown and parent.timer
|
|
local cd = timer or parent
|
|
|
|
-- cooldown override settings
|
|
PA:Cooldown_Options(cd, db.Cooldown, parent)
|
|
|
|
-- update font on cooldowns
|
|
if timer and cd then -- has a parent, these are timers from RegisterCooldown
|
|
PA:Cooldown_OnSizeChanged(cd, parent:GetWidth(), true)
|
|
|
|
PA:ToggleBlizzardCooldownText(parent, cd)
|
|
elseif cd.text and cd.customFont then
|
|
cd.text:SetFont(cd.customFont, cd.customFontSize, cd.customFontOutline)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local function RGB(db) return PA:CopyTable({r = 1, g = 1, b = 1}, db) end
|
|
local function HEX(db) return PA:RGBToHex(db.r, db.g, db.b) end
|
|
|
|
function PA:GetCooldownColors(db)
|
|
if not db then db = E.db.cooldown end -- just incase someone calls this without a first arg use the global
|
|
|
|
return
|
|
--> time colors (0 - 7) <-- 7 is mod rate, which is different from text colors (as mod rate has no indicator)
|
|
RGB(db.daysColor), RGB(db.hoursColor), RGB(db.minutesColor), RGB(db.secondsColor), RGB(db.expiringColor), RGB(db.mmssColor), RGB(db.hhmmColor), RGB(db.modRateColor),
|
|
--> text colors (0 - 7) <--
|
|
HEX(db.daysIndicator), HEX(db.hoursIndicator), HEX(db.minutesIndicator), HEX(db.secondsIndicator), HEX(db.expireIndicator), HEX(db.mmssColorIndicator), HEX(db.hhmmColorIndicator)
|
|
end
|
|
end
|
|
|
|
function PA:UpdateCooldownSettings(module)
|
|
local db, timeColors, textColors, _ = PA.db.Cooldown, PA.TimeColors, PA.TimeIndicatorColors
|
|
|
|
-- update the module timecolors if the config called it but ignore 'global' and 'all':
|
|
-- global is the main call from config, all is the core file calls
|
|
local isModule = module and (module ~= 'global' and module ~= 'all') and PA.db[module] and PA.db[module].cooldown
|
|
if isModule then
|
|
if not timeColors[module] then timeColors[module] = {} end
|
|
if not textColors[module] then textColors[module] = {} end
|
|
db, timeColors, textColors = E.db[module].cooldown, timeColors[module], textColors[module]
|
|
end
|
|
|
|
--> color for TIME that has X remaining <--
|
|
timeColors[0], timeColors[1], timeColors[2], timeColors[3], timeColors[4], timeColors[5], timeColors[6], timeColors[7], -- daysColor, hoursColor, minutesColor, secondsColor, expiringColor, mmssColor [MM:SS], hhmmColor [HH:MM], modRateColor
|
|
--> color for TEXT that has X remaining <--
|
|
textColors[0], textColors[1], textColors[2], textColors[3], textColors[4], textColors[5], textColors[6], -- daysIndicator, hoursIndicator, minutesIndicator, secondsIndicator, expireIndicator, mmssColorIndicator, hhmmColorIndicator
|
|
_ = PA:GetCooldownColors(db)
|
|
|
|
if isModule then
|
|
PA:UpdateCooldownOverride(module)
|
|
elseif module == 'global' then -- this is only a call from the config change
|
|
for key in next, PA.RegisteredCooldowns do
|
|
PA:UpdateCooldownOverride(key)
|
|
end
|
|
end
|
|
|
|
-- okay update the other override settings if it was one of the core file calls
|
|
if module and (module == 'all') then
|
|
PA:UpdateCooldownSettings('OzCooldowns')
|
|
PA:UpdateCooldownSettings('iFilger')
|
|
end
|
|
end
|
|
|
|
local function profile(db)
|
|
return (db == 'global' and PA.db.Cooldown) or PA.db[db].Cooldown
|
|
end
|
|
|
|
local function group(order, db, label)
|
|
local main = ACH:Group(label, nil, order, nil, function(info) local t = (profile(db))[info[#info]] return t.r, t.g, t.b, t.a end, function(info, r, g, b) local t = (profile(db))[info[#info]] t.r, t.g, t.b = r, g, b PA:UpdateCooldownSettings(db) end)
|
|
PA.Options.args.Cooldown.args[db] = main
|
|
|
|
local mainArgs = main.args
|
|
mainArgs.showModRate = ACH:Toggle(ACL["Display Modified Rate"], nil, 1, nil, nil, nil, function(info) return (profile(db))[info[#info]] end, function(info, value) (profile(db))[info[#info]] = value PA:UpdateCooldownSettings(db) end)
|
|
mainArgs.reverse = ACH:Toggle(ACL["Reverse Toggle"], ACL["Reverse Toggle will enable Cooldown Text on this module when the global setting is disabled and disable them when the global setting is enabled."], 5, nil, nil, nil, function(info) return (profile(db))[info[#info]] end, function(info, value) (profile(db))[info[#info]] = value PA:UpdateCooldownSettings(db) end)
|
|
mainArgs.hideBlizzard = ACH:Toggle(ACL["Force Hide Blizzard Text"], ACL["This option will force hide Blizzard's cooldown text if it is enabled at [Interface > ActionBars > Show Numbers on Cooldown]."], 6, nil, nil, nil, function(info) return (profile(db))[info[#info]] end, function(info, value) (profile(db))[info[#info]] = value PA:UpdateCooldownSettings(db) end, nil, function() if db == 'global' then return PA.db.Cooldown.Enable else return (PA.db.Cooldown.Enable and not profile(db).reverse) or (not PA.db.Cooldown.Enable and profile(db).reverse) end end)
|
|
|
|
local seconds = ACH:Group(ACL["Text Threshold"], nil, 3, nil, function(info) return (profile(db))[info[#info]] end, function(info, value) (profile(db))[info[#info]] = value PA:UpdateCooldownSettings(db) end, function() return not (profile(db)).checkSeconds end)
|
|
seconds.inline = true
|
|
seconds.args.checkSeconds = ACH:Toggle(ACL["Enable"], ACL["This will override the global cooldown settings."], 1, nil, nil, nil, nil, nil, false)
|
|
seconds.args.mmssThreshold = ACH:Range(ACL["MM:SS Threshold"], ACL["Threshold (in seconds) before text is shown in the MM:SS format. Set to -1 to never change to this format."], 2, { min = -1, max = 10800, step = 1 })
|
|
seconds.args.hhmmThreshold = ACH:Range(ACL["HH:MM Threshold"], ACL["Threshold (in minutes) before text is shown in the HH:MM format. Set to -1 to never change to this format."], 3, { min = -1, max = 1440, step = 1 })
|
|
mainArgs.secondsGroup = seconds
|
|
|
|
local fonts = ACH:Group(ACL["Fonts"], nil, 4, nil, function(info) return (profile(db)).fonts[info[#info]] end, function(info, value) (profile(db)).fonts[info[#info]] = value PA:UpdateCooldownSettings(db) end, function() return not (profile(db)).fonts.enable end)
|
|
fonts.inline = true
|
|
fonts.args.enable = ACH:Toggle(ACL["Enable"], ACL["This will override the global cooldown settings."], 1, nil, nil, nil, nil, nil, false)
|
|
fonts.args.font = ACH:SharedMediaFont(ACL["Font"], nil, 2)
|
|
fonts.args.fontSize = ACH:Range(ACL["Font Size"], nil, 3, { min = 10, max = 50, step = 1 })
|
|
fonts.args.fontOutline = ACH:FontFlags(ACL["Font Outline"], nil, 4)
|
|
mainArgs.fontGroup = fonts
|
|
|
|
local colors = ACH:Group(ACL["Color Override"], nil, 5, nil, nil, nil, function() return not (profile(db)).override end)
|
|
colors.inline = true
|
|
colors.args.override = ACH:Toggle(ACL["Enable"], ACL["This will override the global cooldown settings."], 1, nil, nil, nil, function(info) return (profile(db))[info[#info]] end, function(info, value) (profile(db))[info[#info]] = value PA:UpdateCooldownSettings(db) end, false)
|
|
colors.args.threshold = ACH:Range(ACL["Low Threshold"], ACL["Threshold before text turns red and is in decimal form. Set to -1 for it to never turn red"], 2, { min = -1, max = 20, step = 1 }, nil, function(info) return (profile(db))[info[#info]] end, function(info, value) (profile(db))[info[#info]] = value PA:UpdateCooldownSettings(db) end)
|
|
mainArgs.colorGroup = colors
|
|
|
|
local tColors = ACH:Group(ACL["Threshold Colors"], nil, 3)
|
|
tColors.args.modRateColor = ACH:Color(ACL["Modified Rate"], ACL["Color when the text is using a modified timer rate."], 2, nil, nil, nil, nil, nil, not PA.Retail)
|
|
tColors.args.expiringColor = ACH:Color(ACL["Expiring"], ACL["Color when the text is about to expire."], 3)
|
|
tColors.args.secondsColor = ACH:Color(ACL["Seconds"], ACL["Color when the text is in the seconds format."], 4)
|
|
tColors.args.minutesColor = ACH:Color(ACL["Minutes"], ACL["Color when the text is in the minutes format."], 5)
|
|
tColors.args.hoursColor = ACH:Color(ACL["Hours"], ACL["Color when the text is in the hours format."], 6)
|
|
tColors.args.daysColor = ACH:Color(ACL["Days"], ACL["Color when the text is in the days format."], 7)
|
|
tColors.args.mmssColor = ACH:Color(ACL["MM:SS"], nil, 8)
|
|
tColors.args.hhmmColor = ACH:Color(ACL["HH:MM"], nil, 9)
|
|
mainArgs.colorGroup.args.timeColors = tColors
|
|
|
|
local iColors = ACH:Group(ACL["Time Indicator Colors"], nil, 4, nil, nil, nil, function() return not (profile(db)).useIndicatorColor end)
|
|
iColors.args.useIndicatorColor = ACH:Toggle(ACL["Use Indicator Color"], nil, 0, nil, nil, nil, function(info) return (profile(db))[info[#info]] end, function(info, value) (profile(db))[info[#info]] = value PA:UpdateCooldownSettings(db) end, false)
|
|
iColors.args.expireIndicator = ACH:Color(ACL["Expiring"], ACL["Color when the text is about to expire"], 1)
|
|
iColors.args.secondsIndicator = ACH:Color(ACL["Seconds"], ACL["Color when the text is in the seconds format."], 2)
|
|
iColors.args.minutesIndicator = ACH:Color(ACL["Minutes"], ACL["Color when the text is in the minutes format."], 3)
|
|
iColors.args.hoursIndicator = ACH:Color(ACL["Hours"], ACL["Color when the text is in the hours format."], 4)
|
|
iColors.args.daysIndicator = ACH:Color(ACL["Days"], ACL["Color when the text is in the days format."], 5)
|
|
iColors.args.hhmmColorIndicator = ACH:Color(ACL["MM:SS"], nil, 6)
|
|
iColors.args.mmssColorIndicator = ACH:Color(ACL["HH:MM"], nil, 7)
|
|
mainArgs.colorGroup.args.indicatorColors = iColors
|
|
|
|
if db == 'global' then
|
|
mainArgs.reverse = nil
|
|
mainArgs.colorGroup.args.override = nil
|
|
mainArgs.colorGroup.disabled = nil
|
|
mainArgs.colorGroup.name = ACL["COLORS"]
|
|
|
|
mainArgs.roundTime = ACH:Toggle(ACL["Round Timers"], nil, 2, nil, nil, nil, function(info) return (profile(db))[info[#info]] end, function(info, value) (profile(db))[info[#info]] = value PA:UpdateCooldownSettings(db) end)
|
|
|
|
-- keep these two in this order
|
|
PA.Options.args.Cooldown.args.hideBlizzard = mainArgs.hideBlizzard
|
|
mainArgs.hideBlizzard = nil
|
|
else
|
|
mainArgs.reverse = nil
|
|
mainArgs.hideBlizzard = nil
|
|
mainArgs.fontGroup = nil
|
|
end
|
|
end
|
|
|
|
PA.Options.args.Cooldown = ACH:Group('Cooldown Text', nil, 0, 'tab', function(info) return PA.db.Cooldown[info[#info]] end, function(info, value) PA.db.Cooldown[info[#info]] = value PA:UpdateCooldownSettings('global') end)
|
|
PA.Options.args.Cooldown.args.intro = ACH:Description(ACL['Adjust Cooldown Settings.'], 0)
|
|
PA.Options.args.Cooldown.args.Enable = ACH:Toggle(ACL["Enable"], ACL["Display cooldown text on anything with the cooldown spiral."], 1)
|
|
|
|
group(5, 'global', ACL["Global"])
|
|
group(6, 'OzCooldowns', ACL.OzCooldowns)
|
|
group(7, 'iFilger', ACL.iFilger)
|
|
|