Added Arena auto hide option

This commit is contained in:
Tercio Jose
2022-05-07 15:31:01 -03:00
parent eceb99bbf2
commit 81b6edddd8
5 changed files with 142 additions and 49 deletions
+11 -12
View File
@@ -1228,21 +1228,20 @@ function DF:NewColorPickButton (parent, name, member, callback, alpha, button_te
button:SetBackdrop ({edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], edgeSize = 6,
bgFile = [[Interface\DialogFrame\UI-DialogBox-Background]], insets = {left = 0, right = 0, top = 0, bottom = 0}})
end
--textura do fundo
local background = DF:NewImage (button, nil, color_button_width, color_button_height, nil, nil, nil, "$parentBck")
--background:SetTexture ([[Interface\AddOns\Details\images\icons]])
background:SetPoint ("topleft", button.widget, "topleft", 1, -2)
background:SetPoint ("bottomright", button.widget, "bottomright", -1, 1)
background:SetTexCoord (0.337890625, 0.390625, 0.625, 0.658203125)
background:SetDrawLayer ("background", 1)
local background = button:CreateTexture(nil, "background", nil, 2)
background:SetPoint("topleft", button.widget, "topleft", 0, 0)
background:SetPoint("bottomright", button.widget, "bottomright", 0, 0)
background:SetTexture([[Interface\ITEMSOCKETINGFRAME\UI-EMPTYSOCKET]])
background:SetTexCoord(3/16, 13/16, 3/16, 13/16)
background:SetAlpha(0.3)
--textura da cor
local img = DF:NewImage (button, nil, color_button_width, color_button_height, nil, nil, "color_texture", "$parentTex")
img:SetColorTexture (1, 1, 1)
img:SetPoint ("topleft", button.widget, "topleft", 1, -2)
img:SetPoint ("bottomright", button.widget, "bottomright", -1, 1)
img:SetDrawLayer ("background", 2)
img:SetPoint ("topleft", button.widget, "topleft", 0, 0)
img:SetPoint ("bottomright", button.widget, "bottomright", 0, 0)
img:SetDrawLayer ("background", 3)
return button
+1 -1
View File
@@ -1,6 +1,6 @@
local dversion = 307
local dversion = 313
local major, minor = "DetailsFramework-1.0", dversion
local DF, oldminor = LibStub:NewLibrary (major, minor)
+99 -30
View File
@@ -5289,6 +5289,19 @@ DF.IconRowFunctions = {
return iconFrame
end,
--adds only if not existing already in the cache
AddSpecificIcon = function (self, identifierKey, spellId, borderColor, startTime, duration, forceTexture, descText, count, debuffType, caster, canStealOrPurge, spellName, isBuff)
if not identifierKey or identifierKey == "" then
return
end
if not self.AuraCache[identifierKey] then
local icon = self:SetIcon (spellId, borderColor, startTime, duration, forceTexture, descText, count, debuffType, caster, canStealOrPurge, spellName, isBuff or false)
icon.identifierKey = identifierKey
self.AuraCache[identifierKey] = true
end
end,
SetIcon = function (self, spellId, borderColor, startTime, duration, forceTexture, descText, count, debuffType, caster, canStealOrPurge, spellName, isBuff)
local actualSpellName, _, spellIcon = GetSpellInfo (spellId)
@@ -5321,7 +5334,7 @@ DF.IconRowFunctions = {
iconFrame.timeRemaining = startTime + duration - now
iconFrame.expirationTime = startTime + duration
local formattedTime = (iconFrame.timeRemaining > 0) and iconFrame.parentIconRow.FormatCooldownTime(iconFrame.timeRemaining) or ""
local formattedTime = (iconFrame.timeRemaining > 0) and self.options.decimal_timer and iconFrame.parentIconRow.FormatCooldownTimeDecimal(iconFrame.timeRemaining) or iconFrame.parentIconRow.FormatCooldownTime(iconFrame.timeRemaining) or ""
iconFrame.CountdownText:SetText (formattedTime)
iconFrame.CountdownText:SetPoint (self.options.text_anchor or "center", iconFrame, self.options.text_rel_anchor or "center", self.options.text_x_offset or 0, self.options.text_y_offset or 0)
@@ -5341,6 +5354,7 @@ DF.IconRowFunctions = {
iconFrame.CountdownText:Hide()
end
iconFrame.Cooldown:SetReverse (self.options.cooldown_reverse)
iconFrame.Cooldown:SetHideCountdownNumbers (self.options.surpress_blizzard_cd_timer)
else
iconFrame.timeRemaining = nil
@@ -5391,6 +5405,8 @@ DF.IconRowFunctions = {
iconFrame.isBuff = isBuff
iconFrame.spellName = spellName
iconFrame.identifierKey = nil -- only used for "specific" add/remove
--add the spell into the cache
self.AuraCache [spellId or -1] = true
self.AuraCache [spellName] = true
@@ -5409,7 +5425,11 @@ DF.IconRowFunctions = {
if (self.lastUpdateCooldown + 0.05) <= now then
self.timeRemaining = self.expirationTime - now
if self.timeRemaining > 0 then
self.CountdownText:SetText (self.parentIconRow.FormatCooldownTime(self.timeRemaining))
if self.parentIconRow.options.decimal_timer then
self.CountdownText:SetText (self.parentIconRow.FormatCooldownTimeDecimal(self.timeRemaining))
else
self.CountdownText:SetText (self.parentIconRow.FormatCooldownTime(self.timeRemaining))
end
else
self.CountdownText:SetText ("")
end
@@ -5430,47 +5450,98 @@ DF.IconRowFunctions = {
return formattedTime
end,
FormatCooldownTimeDecimal = function (formattedTime)
if formattedTime < 10 then
return ("%.1f"):format(formattedTime)
elseif formattedTime < 60 then
return ("%d"):format(formattedTime)
elseif formattedTime < 3600 then
return ("%d:%02d"):format(formattedTime/60%60, formattedTime%60)
elseif formattedTime < 86400 then
return ("%dh %02dm"):format(formattedTime/(3600), formattedTime/60%60)
else
return ("%dd %02dh"):format(formattedTime/86400, (formattedTime/3600) - (floor(formattedTime/86400) * 24))
end
end,
RemoveSpecificIcon = function (self, identifierKey)
if not identifierKey or identifierKey == "" then
return
end
table.wipe (self.AuraCache)
local iconPool = self.IconPool
local countStillShown = 0
for i = 1, self.NextIcon -1 do
local iconFrame = iconPool[i]
if iconFrame.identifierKey and iconFrame.identifierKey == identifierKey then
iconFrame:Hide()
iconFrame:ClearAllPoints()
iconFrame.identifierKey = nil
else
self.AuraCache [iconFrame.spellId] = true
self.AuraCache [iconFrame.spellName] = true
self.AuraCache.canStealOrPurge = self.AuraCache.canStealOrPurge or iconFrame.canStealOrPurge
self.AuraCache.hasEnrage = self.AuraCache.hasEnrage or iconFrame.debuffType == "" --yes, enrages are empty-string...
countStillShown = countStillShown + 1
end
end
self:AlignAuraIcons()
end,
ClearIcons = function (self, resetBuffs, resetDebuffs)
resetBuffs = resetBuffs ~= false
resetDebuffs = resetDebuffs ~= false
table.wipe (self.AuraCache)
local iconPool = self.IconPool
local countStillShown = 0
for i = 1, self.NextIcon -1 do
if iconPool[i].isBuff == nil then
iconPool[i]:Hide()
iconPool[i]:ClearAllPoints()
elseif resetBuffs and iconPool[i].isBuff then
iconPool[i]:Hide()
iconPool[i]:ClearAllPoints()
elseif resetDebuffs and not iconPool[i].isBuff then
iconPool[i]:Hide()
iconPool[i]:ClearAllPoints()
local iconFrame = iconPool[i]
if iconFrame.isBuff == nil then
iconFrame:Hide()
iconFrame:ClearAllPoints()
elseif resetBuffs and iconFrame.isBuff then
iconFrame:Hide()
iconFrame:ClearAllPoints()
elseif resetDebuffs and not iconFrame.isBuff then
iconFrame:Hide()
iconFrame:ClearAllPoints()
else
self.AuraCache [iconPool[i].spellId] = true
self.AuraCache [iconPool[i].spellName] = true
self.AuraCache.canStealOrPurge = self.AuraCache.canStealOrPurge or iconPool[i].canStealOrPurge
self.AuraCache.hasEnrage = self.AuraCache.hasEnrage or iconPool[i].debuffType == "" --yes, enrages are empty-string...
countStillShown = countStillShown + 1
self.AuraCache [iconFrame.spellId] = true
self.AuraCache [iconFrame.spellName] = true
self.AuraCache.canStealOrPurge = self.AuraCache.canStealOrPurge or iconFrame.canStealOrPurge
self.AuraCache.hasEnrage = self.AuraCache.hasEnrage or iconFrame.debuffType == "" --yes, enrages are empty-string...
end
end
if countStillShown == 0 then
self.NextIcon = 1
self:AlignAuraIcons()
end,
AlignAuraIcons = function (self)
local iconPool = self.IconPool
local iconAmount = #iconPool
local countStillShown = 0
table.sort (iconPool, function(i1, i2) return i1:IsShown() and not i2:IsShown() end)
if iconAmount == 0 then
self:Hide()
else
self.NextIcon = countStillShown + 1
table.sort (iconPool, function(i1, i2) return i1:IsShown() and not i2:IsShown() end)
-- re-anchor not hidden
for i = 1, countStillShown do
for i = 1, iconAmount do
local iconFrame = iconPool[i]
local anchor = self.options.anchor
local anchorTo = i == 1 and self or self.IconPool [i - 1]
local xPadding = i == 1 and self.options.left_padding or self.options.icon_padding or 1
local growDirection = self.options.grow_direction
countStillShown = countStillShown + (iconFrame:IsShown() and 1 or 0)
iconFrame:ClearAllPoints()
if (growDirection == 1) then --grow to right
if (i == 1) then
@@ -5490,6 +5561,8 @@ DF.IconRowFunctions = {
end
end
self.NextIcon = countStillShown + 1
end,
GetIconGrowDirection = function (self)
@@ -5572,6 +5645,8 @@ local default_icon_row_options = {
surpress_blizzard_cd_timer = false,
surpress_tulla_omni_cc = false,
on_tick_cooldown_update = true,
decimal_timer = false,
cooldown_reverse = false,
}
function DF:CreateIconRow (parent, name, options)
@@ -8538,13 +8613,7 @@ DF.CastFrameFunctions = {
end,
UpdateCastingInfo = function (self, unit)
local name, text, texture, startTime, endTime, isTradeSkill, castID, notInterruptible, spellID
if not IS_WOW_PROJECT_CLASSIC_TBC then
name, text, texture, startTime, endTime, isTradeSkill, castID, notInterruptible, spellID = UnitCastingInfo (unit)
else
name, text, texture, startTime, endTime, isTradeSkill, castID, spellID = UnitCastingInfo (unit)
notInterruptible = false
end
local name, text, texture, startTime, endTime, isTradeSkill, castID, notInterruptible, spellID = UnitCastingInfo (unit)
--> is valid?
if (not self:IsValid (unit, name, isTradeSkill, true)) then