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.
287 lines
10 KiB
287 lines
10 KiB
|
|
local Details = Details
|
|
local GameTooltip = GameTooltip
|
|
local unpack = unpack
|
|
local CreateFrame = CreateFrame
|
|
local GetSpellInfo = GetSpellInfo
|
|
|
|
local auras_tab_create = function(tab, frame)
|
|
local DF = DetailsFramework
|
|
local scroll_line_amount = 22
|
|
local scroll_width = 410
|
|
local scrollHeight = 445
|
|
local scroll_line_height = 19
|
|
local text_size = 10
|
|
|
|
local debuffScrollStartX = 445
|
|
|
|
local headerOffsetsBuffs = {
|
|
--buff label, uptime, applications, refreshes, wa
|
|
6, 190, 290, 336, 380
|
|
}
|
|
|
|
local headerOffsetsDebuffs = {
|
|
--debuff label, uptime, applications, refreshes, wa
|
|
426, 630, 729, 775, 820
|
|
}
|
|
|
|
local line_onenter = function(self)
|
|
GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT")
|
|
Details:GameTooltipSetSpellByID (self.spellID)
|
|
GameTooltip:Show()
|
|
self:SetBackdropColor(1, 1, 1, .2)
|
|
end
|
|
|
|
local line_onleave = function(self)
|
|
GameTooltip:Hide()
|
|
self:SetBackdropColor(unpack(self.BackgroundColor))
|
|
end
|
|
|
|
local line_onclick = function(self)
|
|
|
|
end
|
|
|
|
--buff scroll
|
|
--icon - name - applications - refreshes - uptime
|
|
--
|
|
|
|
--local wa_button = function(self, mouseButton, spellID, auraType)
|
|
-- local spellName, _, spellIcon = GetSpellInfo(spellID)
|
|
-- Details:OpenAuraPanel (spellID, spellName, spellIcon, nil, auraType == "BUFF" and 4 or 2, 1)
|
|
--end
|
|
|
|
local scroll_createline = function(self, index)
|
|
local line = CreateFrame("button", "$parentLine" .. index, self,"BackdropTemplate")
|
|
line:SetPoint("topleft", self, "topleft", 1, -((index-1)*(scroll_line_height+1)))
|
|
line:SetSize(scroll_width -2, scroll_line_height)
|
|
line:SetScript("OnEnter", line_onenter)
|
|
line:SetScript("OnLeave", line_onleave)
|
|
line:SetScript("OnClick", line_onclick)
|
|
|
|
line:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
|
|
line:SetBackdropColor(0, 0, 0, 0.2)
|
|
|
|
local icon = line:CreateTexture("$parentIcon", "overlay")
|
|
icon:SetSize(scroll_line_height -2 , scroll_line_height - 2)
|
|
local name = line:CreateFontString("$parentName", "overlay", "GameFontNormal")
|
|
local uptime = line:CreateFontString("$parentName", "overlay", "GameFontNormal")
|
|
local apply = line:CreateFontString("$parentName", "overlay", "GameFontNormal")
|
|
local refresh = line:CreateFontString("$parentName", "overlay", "GameFontNormal")
|
|
|
|
--local waButton = DF:CreateButton(line, wa_button, 18, 18)
|
|
--waButton:SetIcon ([[Interface\AddOns\WeakAuras\Media\Textures\icon]])
|
|
|
|
DF:SetFontSize(name, text_size)
|
|
DF:SetFontSize(uptime, text_size)
|
|
DF:SetFontSize(apply, text_size)
|
|
DF:SetFontSize(refresh, text_size)
|
|
|
|
icon:SetPoint("left", line, "left", 2, 0)
|
|
name:SetPoint("left", icon, "right", 2, 0)
|
|
uptime:SetPoint("left", line, "left", 186, 0)
|
|
apply:SetPoint("left", line, "left", 276, 0)
|
|
refresh:SetPoint("left", line, "left", 322, 0)
|
|
--waButton:SetPoint("left", line, "left", 372, 0)
|
|
|
|
line.Icon = icon
|
|
line.Name = name
|
|
line.Uptime = uptime
|
|
line.Apply = apply
|
|
line.Refresh = refresh
|
|
--line.WaButton = waButton
|
|
|
|
name:SetJustifyH("left")
|
|
uptime:SetJustifyH("left")
|
|
|
|
apply:SetJustifyH("center")
|
|
refresh:SetJustifyH("center")
|
|
apply:SetWidth(26)
|
|
refresh:SetWidth(26)
|
|
|
|
return line
|
|
end
|
|
|
|
local line_bg_color = {{1, 1, 1, .1}, {1, 1, 1, 0}}
|
|
|
|
local scroll_buff_refresh = function(self, data, offset, total_lines)
|
|
|
|
local haveWA = false --_G.WeakAuras
|
|
|
|
for i = 1, total_lines do
|
|
local index = i + offset
|
|
local aura = data [index]
|
|
|
|
if (aura) then
|
|
local line = self:GetLine (i)
|
|
line.spellID = aura.spellID
|
|
line.Icon:SetTexture(aura [1])
|
|
|
|
line.Icon:SetTexCoord(.1, .9, .1, .9)
|
|
|
|
line.Name:SetText(aura [2])
|
|
line.Uptime:SetText(DF:IntegerToTimer(aura [3]) .. " (|cFFBBAAAA" .. math.floor(aura [6]) .. "%|r)")
|
|
line.Apply:SetText(aura [4])
|
|
line.Refresh:SetText(aura [5])
|
|
|
|
--if (haveWA) then
|
|
-- line.WaButton:SetClickFunction(wa_button, aura.spellID, line.AuraType)
|
|
--else
|
|
-- line.WaButton:Disable()
|
|
--end
|
|
|
|
if (i%2 == 0) then
|
|
line:SetBackdropColor(unpack(line_bg_color [1]))
|
|
line.BackgroundColor = line_bg_color [1]
|
|
else
|
|
line:SetBackdropColor(unpack(line_bg_color [2]))
|
|
line.BackgroundColor = line_bg_color [2]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local create_titledesc_frame = function(anchorWidget, desc)
|
|
local f = CreateFrame("frame", nil, frame)
|
|
f:SetSize(40, 20)
|
|
f:SetPoint("center", anchorWidget, "center")
|
|
f:SetScript("OnEnter", function()
|
|
GameTooltip:SetOwner(f, "ANCHOR_TOPRIGHT")
|
|
GameTooltip:AddLine(desc)
|
|
GameTooltip:Show()
|
|
end)
|
|
f:SetScript("OnLeave", function()
|
|
GameTooltip:Hide()
|
|
end)
|
|
return f
|
|
end
|
|
|
|
|
|
|
|
local buffLabel = DF:CreateLabel(frame, "Buff Name")
|
|
buffLabel:SetPoint(headerOffsetsBuffs[1], -10)
|
|
local uptimeLabel = DF:CreateLabel(frame, "Uptime")
|
|
uptimeLabel:SetPoint(headerOffsetsBuffs[2], -10)
|
|
|
|
local appliedLabel = DF:CreateLabel(frame, "A")
|
|
appliedLabel:SetPoint(headerOffsetsBuffs[3], -10)
|
|
create_titledesc_frame (appliedLabel.widget, "applications")
|
|
|
|
local refreshedLabel = DF:CreateLabel(frame, "R")
|
|
refreshedLabel:SetPoint(headerOffsetsBuffs[4], -10)
|
|
create_titledesc_frame (refreshedLabel.widget, "refreshes")
|
|
|
|
--local waLabel = DF:CreateLabel(frame, "WA")
|
|
--waLabel:SetPoint(headerOffsetsBuffs[5], -10)
|
|
--create_titledesc_frame (waLabel.widget, "create weak aura")
|
|
|
|
local buffScroll = DF:CreateScrollBox (frame, "$parentBuffUptimeScroll", scroll_buff_refresh, {}, scroll_width, scrollHeight, scroll_line_amount, scroll_line_height)
|
|
buffScroll:SetPoint("topleft", frame, "topleft", 5, -30)
|
|
for i = 1, scroll_line_amount do
|
|
local line = buffScroll:CreateLine (scroll_createline)
|
|
line.AuraType = "BUFF"
|
|
end
|
|
DF:ReskinSlider(buffScroll)
|
|
tab.BuffScroll = buffScroll
|
|
|
|
--debuff scroll
|
|
--icon - name - applications - refreshes - uptime
|
|
--
|
|
|
|
local debuffLabel = DF:CreateLabel(frame, "Debuff Name")
|
|
debuffLabel:SetPoint(headerOffsetsDebuffs[1], -10)
|
|
local uptimeLabel2 = DF:CreateLabel(frame, "Uptime")
|
|
uptimeLabel2:SetPoint(headerOffsetsDebuffs[2], -10)
|
|
|
|
local appliedLabel2 = DF:CreateLabel(frame, "A")
|
|
appliedLabel2:SetPoint(headerOffsetsDebuffs[3], -10)
|
|
create_titledesc_frame (appliedLabel2.widget, "applications")
|
|
|
|
local refreshedLabel2 = DF:CreateLabel(frame, "R")
|
|
refreshedLabel2:SetPoint(headerOffsetsDebuffs[4], -10)
|
|
create_titledesc_frame (refreshedLabel2.widget, "refreshes")
|
|
|
|
--local waLabel2 = DF:CreateLabel(frame, "WA")
|
|
--waLabel2:SetPoint(headerOffsetsDebuffs[5], -10)
|
|
--create_titledesc_frame (waLabel2.widget, "create weak aura")
|
|
|
|
local debuffScroll = DF:CreateScrollBox (frame, "$parentDebuffUptimeScroll", scroll_buff_refresh, {}, scroll_width, scrollHeight, scroll_line_amount, scroll_line_height)
|
|
debuffScroll:SetPoint("topleft", frame, "topleft", debuffScrollStartX, -30)
|
|
for i = 1, scroll_line_amount do
|
|
local line = debuffScroll:CreateLine (scroll_createline)
|
|
line.AuraType = "DEBUFF"
|
|
end
|
|
DF:ReskinSlider(debuffScroll)
|
|
|
|
tab.DebuffScroll = debuffScroll
|
|
|
|
if (not frame.__background) then
|
|
DetailsFramework:ApplyStandardBackdrop(frame)
|
|
frame.__background:SetAlpha(0.6)
|
|
end
|
|
end
|
|
|
|
local auras_tab_fill = function(tab, player, combat)
|
|
local miscActor = combat:GetActor(4, player:name())
|
|
local combatTime = combat:GetCombatTime()
|
|
|
|
do --buffs
|
|
local newAuraTable = {}
|
|
if (miscActor and miscActor.buff_uptime_spells) then
|
|
for spellID, spellObject in pairs(miscActor.buff_uptime_spells._ActorTable) do
|
|
local spellName, _, spellIcon = GetSpellInfo(spellID)
|
|
if (not spellObject.uptime) then
|
|
--print(_GetSpellInfo(spellID))
|
|
--dumpt(spellObject)
|
|
end
|
|
table.insert(newAuraTable, {spellIcon, spellName, spellObject.uptime, spellObject.appliedamt, spellObject.refreshamt, spellObject.uptime/combatTime*100, spellID = spellID})
|
|
end
|
|
end
|
|
table.sort (newAuraTable, Details.Sort3)
|
|
tab.BuffScroll:SetData (newAuraTable)
|
|
tab.BuffScroll:Refresh()
|
|
end
|
|
|
|
do --debuffs
|
|
local newAuraTable = {}
|
|
if (miscActor and miscActor.debuff_uptime_spells) then
|
|
for spellID, spellObject in pairs(miscActor.debuff_uptime_spells._ActorTable) do
|
|
local spellName, _, spellIcon = GetSpellInfo(spellID)
|
|
table.insert(newAuraTable, {spellIcon, spellName, spellObject.uptime, spellObject.appliedamt, spellObject.refreshamt, spellObject.uptime/combatTime*100, spellID = spellID})
|
|
end
|
|
end
|
|
table.sort (newAuraTable, Details.Sort3)
|
|
tab.DebuffScroll:SetData (newAuraTable)
|
|
tab.DebuffScroll:Refresh()
|
|
end
|
|
end
|
|
|
|
local iconTableAuras = {
|
|
texture = [[Interface\AddOns\Details\images\icons]],
|
|
coords = {257/512, 278/512, 0/512, 19/512},
|
|
width = 16,
|
|
height = 16,
|
|
}
|
|
|
|
function Details:InitializeAurasTab()
|
|
--check if the tab is already created
|
|
for i = 1, #_detalhes.player_details_tabs do
|
|
local tabButton = _detalhes.player_details_tabs[i]
|
|
if (tabButton.tabname == "Auras") then
|
|
return
|
|
end
|
|
end
|
|
|
|
Details:CreatePlayerDetailsTab("Auras", --[1] tab name
|
|
"Auras", --[2] localized name
|
|
function(tabOBject, playerObject) --[3] condition
|
|
return true
|
|
end,
|
|
|
|
auras_tab_fill, --[4] fill function
|
|
|
|
nil, --[5] onclick
|
|
|
|
auras_tab_create, --[6] oncreate
|
|
iconTableAuras --icon table
|
|
)
|
|
end
|