mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 06:40:13 -05:00
- Added option to not show GCD when casting a spell longer than the GCD. Defaults to the previous behavior of always showing GCD. (ticket #120)
This commit is contained in:
@ -1,6 +1,8 @@
|
|||||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
local GlobalCoolDown = IceCore_CreateClass(IceBarElement)
|
local GlobalCoolDown = IceCore_CreateClass(IceBarElement)
|
||||||
|
|
||||||
|
local maxSpellCastSkipTimeMs = 1500
|
||||||
|
|
||||||
-- Constructor --
|
-- Constructor --
|
||||||
function GlobalCoolDown.prototype:init()
|
function GlobalCoolDown.prototype:init()
|
||||||
GlobalCoolDown.super.prototype.init(self, "GlobalCoolDown")
|
GlobalCoolDown.super.prototype.init(self, "GlobalCoolDown")
|
||||||
@ -53,6 +55,7 @@ function GlobalCoolDown.prototype:GetDefaultSettings()
|
|||||||
settings["barVisible"]["bg"] = false
|
settings["barVisible"]["bg"] = false
|
||||||
settings["usesDogTagStrings"] = false
|
settings["usesDogTagStrings"] = false
|
||||||
settings["bHideMarkerSettings"] = true
|
settings["bHideMarkerSettings"] = true
|
||||||
|
settings["showDuringCast"] = true
|
||||||
|
|
||||||
return settings
|
return settings
|
||||||
end
|
end
|
||||||
@ -65,6 +68,22 @@ function GlobalCoolDown.prototype:GetOptions()
|
|||||||
opts["textSettings"] = nil
|
opts["textSettings"] = nil
|
||||||
opts.alwaysFullAlpha = nil
|
opts.alwaysFullAlpha = nil
|
||||||
|
|
||||||
|
opts["showDuringCast"] = {
|
||||||
|
type = 'toggle',
|
||||||
|
name = L["Show during cast"],
|
||||||
|
desc = L["Whether to show this bar when a spellcast longer than the global cooldown is being cast."],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.showDuringCast
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
self.moduleSettings.showDuringCast = v
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled
|
||||||
|
end,
|
||||||
|
order = 21,
|
||||||
|
}
|
||||||
|
|
||||||
return opts
|
return opts
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -72,11 +91,37 @@ function GlobalCoolDown.prototype:IsFull(scale)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function GlobalCoolDown.prototype:GetSpellCastTime(spell)
|
||||||
|
if not spell then
|
||||||
|
return nil, nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local spellname, castTime, _
|
||||||
|
if IceHUD.WowVer < 60000 then
|
||||||
|
spellName, _, _, _, _, _, castTime = GetSpellInfo(spell)
|
||||||
|
else
|
||||||
|
spellName, _, _, castTime = GetSpellInfo(spell)
|
||||||
|
end
|
||||||
|
|
||||||
|
if spellName == nil or spellName == "" then
|
||||||
|
return nil, nil
|
||||||
|
else
|
||||||
|
return castTime
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function GlobalCoolDown.prototype:CooldownStateChanged(event, unit, spell)
|
function GlobalCoolDown.prototype:CooldownStateChanged(event, unit, spell)
|
||||||
if unit ~= "player" or not spell then
|
if unit ~= "player" or not spell then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if not self.moduleSettings.showDuringCast then
|
||||||
|
local castTime = self:GetSpellCastTime(spell)
|
||||||
|
if castTime and castTime > maxSpellCastSkipTimeMs then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local start, dur = GetSpellCooldown(self.CDSpellId)
|
local start, dur = GetSpellCooldown(self.CDSpellId)
|
||||||
|
|
||||||
if start and dur ~= nil and dur > 0 and dur <= 1.5 then
|
if start and dur ~= nil and dur > 0 and dur <= 1.5 then
|
||||||
|
Reference in New Issue
Block a user