Files
coa-details/frames/window_playerbreakdown.lua
T
Tercio Jose 8be58e717b v9213
Fixed an issue where after reloading, overall data won't show the players nickname.
Fixed overkill damage on death log tooltip.
Fixed the percent bars for the healing done target on the player breakdown window.
Fixed an issue with resource tooltips.
And more...
2021-12-10 16:57:26 -03:00

5948 lines
210 KiB
Lua

--errors ~pet
local _detalhes = _G._detalhes
local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" )
local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0")
local gump = _detalhes.gump
local _
--lua locals
--local _string_len = string.len
local _math_floor = math.floor
local _ipairs = ipairs
local _pairs = pairs
local _type = type
--api locals
local _CreateFrame = CreateFrame
local _GetTime = GetTime
local _GetSpellInfo = _detalhes.getspellinfo
local _GetCursorPosition = GetCursorPosition
local _unpack = unpack
local atributos = _detalhes.atributos
local sub_atributos = _detalhes.sub_atributos
local info = _detalhes.playerDetailWindow
local classe_icones = _G.CLASS_ICON_TCOORDS
local container3_bars_pointFunc
local SummaryWidgets = {}
local CurrentTab = "Summary"
local IconTexCoord = {5/64, 59/64, 5/64, 59/64}
local CONST_BAR_HEIGHT = 20
local CONST_TARGET_HEIGHT = 18
local PLAYER_DETAILS_WINDOW_WIDTH = 890
local PLAYER_DETAILS_WINDOW_HEIGHT = 574
local PLAYER_DETAILS_STATUSBAR_HEIGHT = 20
local PLAYER_DETAILS_STATUSBAR_ALPHA = 1
local containerSettings = {
spells = {
width = 419,
height = 290,
point = {"TOPLEFT", DetailsPlayerDetailsWindow, "TOPLEFT", 2, -76},
scrollHeight = 264,
},
targets = {
width = 418,
height = 150,
point = {"BOTTOMLEFT", DetailsPlayerDetailsWindow, "BOTTOMLEFT", 2, 6 + PLAYER_DETAILS_STATUSBAR_HEIGHT},
},
}
local spellInfoSettings = {
width = 430,
amount = 6,
}
_detalhes.player_details_tabs = {}
info.currentTabsInUse = {}
------------------------------------------------------------------------------------------------------------------------------
--self = instancia
--jogador = classe_damage ou classe_heal
function Details:GetBreakdownTabsInUse()
return info.currentTabsInUse
end
function Details:GetBreakdownTabByName(tabName, tablePool)
tablePool = tablePool or _detalhes.player_details_tabs
for index = 1, #tablePool do
local tab = tablePool[index]
if (tab.tabname == tabName) then
return tab, index
end
end
end
--return the combat being used to show the data in the opened breakdown window
function Details:GetCombatFromBreakdownWindow()
return info.instancia and info.instancia.showing
end
--return the window that requested to open the player breakdown window
function Details:GetActiveWindowFromBreakdownWindow()
return info.instancia
end
--return if the breakdown window is showing damage or heal
function Details:GetDisplayTypeFromBreakdownWindow()
return info.atributo, info.sub_atributo
end
--return the actor object in use by the breakdown window
function Details:GetPlayerObjectFromBreakdownWindow()
return info.jogador
end
--english alias
--window object from Details:GetWindow(n) and playerObject from Details:GetPlayer(playerName, attribute)
function Details:OpenPlayerBreakdown (windowObject, playerObject)
windowObject:AbreJanelaInfo (playerObject)
end
function _detalhes:AbreJanelaInfo (jogador, from_att_change, refresh, ShiftKeyDown, ControlKeyDown)
--print (debugstack())
if (not _detalhes.row_singleclick_overwrite [self.atributo] or not _detalhes.row_singleclick_overwrite [self.atributo][self.sub_atributo]) then
_detalhes:FechaJanelaInfo()
return
elseif (_type (_detalhes.row_singleclick_overwrite [self.atributo][self.sub_atributo]) == "function") then
if (from_att_change) then
_detalhes:FechaJanelaInfo()
return
end
return _detalhes.row_singleclick_overwrite [self.atributo][self.sub_atributo] (_, jogador, self, ShiftKeyDown, ControlKeyDown)
end
if (self.modo == _detalhes._detalhes_props["MODO_RAID"]) then
_detalhes:FechaJanelaInfo()
return
end
--> _detalhes.info_jogador armazena o jogador que esta sendo mostrado na janela de detalhes
if (info.jogador and info.jogador == jogador and self and info.atributo and self.atributo == info.atributo and self.sub_atributo == info.sub_atributo and not refresh) then
_detalhes:FechaJanelaInfo() --> se clicou na mesma barra ento fecha a janela de detalhes
return
elseif (not jogador) then
_detalhes:FechaJanelaInfo()
return
end
if (info.barras1) then
for index, barra in ipairs (info.barras1) do
barra.other_actor = nil
end
end
if (info.barras2) then
for index, barra in ipairs (info.barras2) do
barra.icone:SetTexture (nil)
barra.icone:SetTexCoord (0, 1, 0, 1)
end
end
--> passar os parmetros para dentro da tabela da janela.
info.ativo = true --> sinaliza o addon que a janela esta aberta
info.atributo = self.atributo --> instancia.atributo -> grava o atributo (damage, heal, etc)
info.sub_atributo = self.sub_atributo --> instancia.sub_atributo -> grava o sub atributo (damage done, dps, damage taken, etc)
info.jogador = jogador --> de qual jogador (objeto classe_damage)
info.instancia = self --> salva a referncia da instncia que pediu o info
info.target_text = Loc ["STRING_TARGETS"] .. ":"
info.target_member = "total"
info.target_persecond = false
info.mostrando = nil
local nome = info.jogador.nome --> nome do jogador
local atributo_nome = sub_atributos[info.atributo].lista [info.sub_atributo] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] --> // nome do atributo // precisa ser o sub atributo correto???
--> removendo o nome da realm do jogador
if (nome:find ("-")) then
nome = nome:gsub (("-.*"), "")
end
if (info.instancia.atributo == 1 and info.instancia.sub_atributo == 6) then --> enemy
atributo_nome = sub_atributos [info.atributo].lista [1] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"]
end
info.nome:SetText (nome)
info.atributo_nome:SetText (atributo_nome)
local serial = jogador.serial
local avatar
if (serial ~= "") then
avatar = NickTag:GetNicknameTable (serial)
end
if (avatar and avatar [1]) then
info.nome:SetText ((not _detalhes.ignore_nicktag and avatar [1]) or nome)
end
if (avatar and avatar [2]) then
info.avatar:SetTexture (avatar [2])
info.avatar_bg:SetTexture (avatar [4])
if (avatar [5]) then
info.avatar_bg:SetTexCoord (unpack (avatar [5]))
end
if (avatar [6]) then
info.avatar_bg:SetVertexColor (unpack (avatar [6]))
end
info.avatar_nick:SetText (avatar [1] or nome)
info.avatar_attribute:SetText (atributo_nome)
info.avatar_attribute:SetPoint ("CENTER", info.avatar_nick, "CENTER", 0, 14)
info.avatar:Show()
info.avatar_bg:Show()
info.avatar_bg:SetAlpha (.65)
info.avatar_nick:Show()
info.avatar_attribute:Show()
info.nome:Hide()
info.atributo_nome:Hide()
else
info.avatar:Hide()
info.avatar_bg:Hide()
info.avatar_nick:Hide()
info.avatar_attribute:Hide()
info.nome:Show()
info.atributo_nome:Show()
end
info.atributo_nome:SetPoint ("CENTER", info.nome, "CENTER", 0, 14)
info.no_targets:Hide()
info.no_targets.text:Hide()
gump:TrocaBackgroundInfo (info)
gump:HidaAllBarrasInfo()
gump:HidaAllBarrasAlvo()
gump:HidaAllDetalheInfo()
gump:JI_AtualizaContainerBarras (-1)
local classe = jogador.classe
if (not classe) then
classe = "monster"
end
--info.classe_icone:SetTexture ("Interface\\AddOns\\Details\\images\\"..classe:lower()) --> top left
info.classe_icone:SetTexture ("Interface\\AddOns\\Details\\images\\classes") --> top left
info.SetClassIcon (jogador, classe)
if (_detalhes.player_details_window.skin == "WoWClassic") then
if (jogador.grupo and IsInRaid() and not avatar) then
for i = 1, GetNumGroupMembers() do
local playerName, realmName = UnitName ("raid" .. i)
if (realmName and realmName ~= "") then
playerName = playerName .. "-" .. realmName
end
if (playerName == jogador.nome) then
SetPortraitTexture (info.classe_icone, "raid" .. i)
info.classe_icone:SetTexCoord (0, 1, 0, 1)
break
end
end
end
end
--info:ShowTabs()
Details.FadeHandler.Fader(info, 0)
Details:UpdateBreakdownPlayerList()
--check which tab was selected and reopen that tab
-- if (info.selectedTab == "Summary") then
-- return jogador:MontaInfo()
-- else
--open tab
local tabsShown = {}
local tabsReplaced = {}
local tabReplacedAmount = 0
table.wipe(info.currentTabsInUse)
for index = 1, #_detalhes.player_details_tabs do
local tab = _detalhes.player_details_tabs[index]
tab.replaced = nil
tabsShown[#tabsShown+1] = tab
end
for index = 1, #tabsShown do
--get the tab
local tab = tabsShown[index]
if (tab.replaces) then
local attributeList = tab.replaces.attributes
if (attributeList[info.atributo]) then
if (attributeList[info.atributo][info.sub_atributo]) then
local tabReplaced, tabIndex = Details:GetBreakdownTabByName(tab.replaces.tabNameToReplace, tabsShown)
if (tabReplaced and tabIndex < index) then
tabReplaced:Hide()
tabReplaced.frame:Hide()
tinsert(tabsReplaced, tabReplaced)
tremove(tabsShown, tabIndex)
tinsert(tabsShown, tabIndex, tab)
if (tabReplaced.tabname == info.selectedTab) then
info.selectedTab = tab.tabname
end
tabReplaced.replaced = true
tabReplacedAmount = tabReplacedAmount + 1
end
end
end
end
end
local newTabsShown = {}
local tabAlreadyInUse = {}
for index = 1, #tabsShown do
if (not tabAlreadyInUse[tabsShown[index].tabname]) then
tabAlreadyInUse[tabsShown[index].tabname] = true
tinsert(newTabsShown, tabsShown[index])
end
end
tabsShown = newTabsShown
info.currentTabsInUse = newTabsShown
info:ShowTabs()
local shownTab
for index = 1, #tabsShown do
local tab = tabsShown[index]
if (tab:condition(info.jogador, info.atributo, info.sub_atributo)) then
if (info.selectedTab == tab.tabname) then
tabsShown[index]:Click()
tabsShown[index]:OnShowFunc()
shownTab = tabsShown[index]
end
end
end
shownTab:Click()
end
-- for beta todo: info background need a major rewrite
function gump:TrocaBackgroundInfo()
info.bg3_sec_texture:Hide()
info.bg2_sec_texture:Hide()
info.apoio_icone_esquerdo:Show()
info.apoio_icone_direito:Show()
info.report_direita:Hide()
for i = 1, spellInfoSettings.amount do
info ["right_background" .. i]:Show()
end
if (info.atributo == 1) then --> DANO
if (info.sub_atributo == 1 or info.sub_atributo == 2) then --> damage done / dps
info.bg1_sec_texture:SetTexture (nil)
info.tipo = 1
if (info.sub_atributo == 2) then
info.targets:SetText (Loc ["STRING_TARGETS"] .. " " .. Loc ["STRING_ATTRIBUTE_DAMAGE_DPS"] .. ":")
info.target_persecond = true
else
info.targets:SetText (Loc ["STRING_TARGETS"] .. ":")
end
elseif (info.sub_atributo == 3) then --> damage taken
--info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_damagetaken]])
info.bg1_sec_texture:SetColorTexture (.05, .05, .05, .4)
info.bg3_sec_texture:Show()
info.bg2_sec_texture:Show()
info.tipo = 2
for i = 1, spellInfoSettings.amount do
info ["right_background" .. i]:Hide()
end
info.targets:SetText (Loc ["STRING_TARGETS"] .. ":")
info.no_targets:Show()
info.no_targets.text:Show()
info.apoio_icone_esquerdo:Hide()
info.apoio_icone_direito:Hide()
info.report_direita:Show()
elseif (info.sub_atributo == 4) then --> friendly fire
--info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_damagetaken]])
info.bg1_sec_texture:SetColorTexture (.05, .05, .05, .4)
info.bg3_sec_texture:Show()
info.bg2_sec_texture:Show()
info.tipo = 3
for i = 1, spellInfoSettings.amount do
info ["right_background" .. i]:Hide()
end
info.targets:SetText (Loc ["STRING_SPELLS"] .. ":")
info.apoio_icone_esquerdo:Hide()
info.apoio_icone_direito:Hide()
info.report_direita:Show()
elseif (info.sub_atributo == 6) then --> enemies
--info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_damagetaken]])
info.bg1_sec_texture:SetColorTexture (.05, .05, .05, .4)
info.bg3_sec_texture:Show()
info.bg2_sec_texture:Show()
info.tipo = 3
for i = 1, spellInfoSettings.amount do
info ["right_background" .. i]:Hide()
end
info.targets:SetText (Loc ["STRING_DAMAGE_TAKEN_FROM"])
end
elseif (info.atributo == 2) then --> HEALING
if (info.sub_atributo == 1 or info.sub_atributo == 2 or info.sub_atributo == 3) then --> damage done / dps
info.bg1_sec_texture:SetTexture (nil)
info.tipo = 1
if (info.sub_atributo == 3) then
info.targets:SetText (Loc ["STRING_OVERHEALED"] .. ":")
info.target_member = "overheal"
info.target_text = Loc ["STRING_OVERHEALED"] .. ":"
elseif (info.sub_atributo == 2) then
info.targets:SetText (Loc ["STRING_TARGETS"] .. " " .. Loc ["STRING_ATTRIBUTE_HEAL_HPS"] .. ":")
info.target_persecond = true
else
info.targets:SetText (Loc ["STRING_TARGETS"] .. ":")
end
elseif (info.sub_atributo == 4) then --> Healing taken
info.bg1_sec_texture:SetColorTexture (.05, .05, .05, .4)
info.bg3_sec_texture:Show()
info.bg2_sec_texture:Show()
info.tipo = 2
for i = 1, spellInfoSettings.amount do
info ["right_background" .. i]:Hide()
end
info.targets:SetText (Loc ["STRING_TARGETS"] .. ":")
info.no_targets:Show()
info.no_targets.text:Show()
info.apoio_icone_esquerdo:Hide()
info.apoio_icone_direito:Hide()
info.report_direita:Show()
end
elseif (info.atributo == 3) then --> REGEN
info.bg1_sec_texture:SetTexture (nil)
info.tipo = 2
info.targets:SetText ("Vindo de:")
elseif (info.atributo == 4) then --> MISC
info.bg1_sec_texture:SetTexture (nil)
info.tipo = 2
info.targets:SetText (Loc ["STRING_TARGETS"] .. ":")
end
end
--> self qualquer coisa que chamar esta funo
------------------------------------------------------------------------------------------------------------------------------
-- chamado pelo click no X e pelo reset do historico
function _detalhes:FechaJanelaInfo (fromEscape)
if (info.ativo) then --> se a janela tiver aberta
--playerDetailWindow:Hide()
if (fromEscape) then
Details.FadeHandler.Fader (info, "in")
else
Details.FadeHandler.Fader (info, 1)
end
info.ativo = false --> sinaliza o addon que a janela esta agora fechada
--_detalhes.info_jogador.detalhes = nil
info.jogador = nil
info.atributo = nil
info.sub_atributo = nil
info.instancia = nil
info.nome:SetText ("")
info.atributo_nome:SetText ("")
gump:JI_AtualizaContainerBarras (-1) --> reseta o frame das barras
end
end
--> esconde todas as barras das skills na janela de info
------------------------------------------------------------------------------------------------------------------------------
function gump:HidaAllBarrasInfo()
local barras = _detalhes.playerDetailWindow.barras1
for index = 1, #barras, 1 do
barras [index]:Hide()
barras [index].textura:SetStatusBarColor (1, 1, 1, 1)
barras [index].on_focus = false
end
end
--> esconde todas as barras dos alvos do jogador
------------------------------------------------------------------------------------------------------------------------------
function gump:HidaAllBarrasAlvo()
local barras = _detalhes.playerDetailWindow.barras2
for index = 1, #barras, 1 do
barras [index]:Hide()
end
end
--> esconde as 5 barras a direita na janela de info
------------------------------------------------------------------------------------------------------------------------------
function gump:HidaAllDetalheInfo()
for i = 1, spellInfoSettings.amount do
gump:HidaDetalheInfo (i)
end
for _, barra in _ipairs (info.barras3) do
barra:Hide()
end
_detalhes.playerDetailWindow.spell_icone:SetTexture ("")
end
--> seta os scripts da janela de informaes
local mouse_down_func = function (self, button)
if (button == "LeftButton") then
info:StartMoving()
info.isMoving = true
elseif (button == "RightButton" and not self.isMoving) then
_detalhes:FechaJanelaInfo()
end
end
local mouse_up_func = function (self, button)
if (info.isMoving) then
info:StopMovingOrSizing()
info.isMoving = false
end
end
------------------------------------------------------------------------------------------------------------------------------
local function seta_scripts (este_gump)
--> Janela
este_gump:SetScript ("OnMouseDown", mouse_down_func)
este_gump:SetScript ("OnMouseUp", mouse_up_func)
este_gump.container_barras.gump:SetScript ("OnMouseDown", mouse_down_func)
este_gump.container_barras.gump:SetScript ("OnMouseUp", mouse_up_func)
este_gump.container_detalhes:SetScript ("OnMouseDown", mouse_down_func)
este_gump.container_detalhes:SetScript ("OnMouseUp", mouse_up_func)
este_gump.container_alvos.gump:SetScript ("OnMouseDown", mouse_down_func)
este_gump.container_alvos.gump:SetScript ("OnMouseUp", mouse_up_func)
--> boto fechar
este_gump.close_button:SetScript ("OnClick", function (self)
_detalhes:FechaJanelaInfo()
end)
end
------------------------------------------------------------------------------------------------------------------------------
function gump:HidaDetalheInfo (index)
local info = _detalhes.playerDetailWindow.grupos_detalhes [index]
info.nome:SetText ("")
info.nome2:SetText ("")
info.dano:SetText ("")
info.dano_porcento:SetText ("")
info.dano_media:SetText ("")
info.dano_dps:SetText ("")
info.bg:Hide()
end
--> cria a barra de detalhes a direita da janela de informaes
------------------------------------------------------------------------------------------------------------------------------
local detalhe_infobg_onenter = function (self)
Details.FadeHandler.Fader (self.overlay, "OUT")
Details.FadeHandler.Fader (self.reportar, "OUT")
end
local detalhe_infobg_onleave = function (self)
Details.FadeHandler.Fader (self.overlay, "IN")
Details.FadeHandler.Fader (self.reportar, "IN")
end
local detalhes_inforeport_onenter = function (self)
Details.FadeHandler.Fader (self:GetParent().overlay, "OUT")
Details.FadeHandler.Fader (self, "OUT")
end
local detalhes_inforeport_onleave = function (self)
Details.FadeHandler.Fader (self:GetParent().overlay, "IN")
Details.FadeHandler.Fader (self, "IN")
end
function gump:CriaDetalheInfo (index)
local info = {}
info.bg = _CreateFrame ("StatusBar", "DetailsPlayerDetailsWindow_DetalheInfoBG" .. index, _detalhes.playerDetailWindow.container_detalhes, "BackdropTemplate")
info.bg:SetStatusBarTexture ("Interface\\AddOns\\Details\\images\\bar_detalhes2")
info.bg:SetStatusBarColor (1, 1, 1, .84)
info.bg:SetMinMaxValues (0, 100)
info.bg:SetValue (100)
info.bg:SetSize (320, 47)
info.nome = info.bg:CreateFontString (nil, "OVERLAY", "GameFontNormal")
info.nome2 = info.bg:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano = info.bg:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano_porcento = info.bg:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano_media = info.bg:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano_dps = info.bg:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.bg.overlay = info.bg:CreateTexture ("DetailsPlayerDetailsWindow_DetalheInfoBG_Overlay" .. index, "ARTWORK")
info.bg.overlay:SetTexture ("Interface\\AddOns\\Details\\images\\overlay_detalhes")
info.bg.overlay:SetWidth (341)
info.bg.overlay:SetHeight (61)
info.bg.overlay:SetPoint ("TOPLEFT", info.bg, "TOPLEFT", -7, 6)
Details.FadeHandler.Fader (info.bg.overlay, 1)
info.bg.reportar = gump:NewDetailsButton (info.bg, nil, nil, _detalhes.Reportar, _detalhes.playerDetailWindow, 10+index, 16, 16,
"Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", nil, "DetailsJanelaInfoReport1")
info.bg.reportar:SetPoint ("BOTTOMLEFT", info.bg.overlay, "BOTTOMRIGHT", -33, 10)
Details.FadeHandler.Fader (info.bg.reportar, 1)
info.bg:SetScript ("OnEnter", detalhe_infobg_onenter)
info.bg:SetScript ("OnLeave", detalhe_infobg_onleave)
info.bg.reportar:SetScript ("OnEnter", detalhes_inforeport_onenter)
info.bg.reportar:SetScript ("OnLeave", detalhes_inforeport_onleave)
info.bg_end = info.bg:CreateTexture ("DetailsPlayerDetailsWindow_DetalheInfoBG_bg_end" .. index, "BACKGROUND")
info.bg_end:SetHeight (47)
info.bg_end:SetTexture ("Interface\\AddOns\\Details\\images\\bar_detalhes2_end")
_detalhes.playerDetailWindow.grupos_detalhes [index] = info
end
function info:SetDetailInfoConfigs (texture, color, x, y)
for i = 1, spellInfoSettings.amount do
if (texture) then
info.grupos_detalhes [i].bg:SetStatusBarTexture (texture)
end
if (color) then
local texture = info.grupos_detalhes [i].bg:GetStatusBarTexture()
texture:SetVertexColor (unpack (color))
end
if (x or y) then
gump:SetaDetalheInfoAltura (i, x, y)
end
end
end
--> determina qual a pociso que a barra de detalhes vai ocupar
------------------------------------------------------------------------------------------------------------------------------
function gump:SetaDetalheInfoAltura (index, xmod, ymod)
local info = _detalhes.playerDetailWindow.grupos_detalhes [index]
local janela = _detalhes.playerDetailWindow.container_detalhes
local altura = {-10, -63, -118, -173, -228, -279}
local x1 = 64 + (xmod or 0)
local x2 = 00 + (ymod or 0)
altura = altura [index]
local background
local y = -74 - ((index-1) * 79.5)
if (index == 1) then
_detalhes.playerDetailWindow.right_background1:SetPoint ("topleft", _detalhes.playerDetailWindow, "topleft", 357 + (xmod or 0), y)
background = _detalhes.playerDetailWindow.right_background1
elseif (index == 2) then
_detalhes.playerDetailWindow.right_background2:SetPoint ("topleft", _detalhes.playerDetailWindow, "topleft", 357 + (xmod or 0), y)
background = _detalhes.playerDetailWindow.right_background2
elseif (index == 3) then
_detalhes.playerDetailWindow.right_background3:SetPoint ("topleft", _detalhes.playerDetailWindow, "topleft", 357 + (xmod or 0), y)
background = _detalhes.playerDetailWindow.right_background3
elseif (index == 4) then
_detalhes.playerDetailWindow.right_background4:SetPoint ("topleft", _detalhes.playerDetailWindow, "topleft", 357 + (xmod or 0), y)
background = _detalhes.playerDetailWindow.right_background4
elseif (index == 5) then
_detalhes.playerDetailWindow.right_background5:SetPoint ("topleft", _detalhes.playerDetailWindow, "topleft", 357 + (xmod or 0), y)
background = _detalhes.playerDetailWindow.right_background5
elseif (index == 6) then
_detalhes.playerDetailWindow.right_background6:SetPoint ("topleft", _detalhes.playerDetailWindow, "topleft", 357 + (xmod or 0), y)
background = _detalhes.playerDetailWindow.right_background6
end
background:SetHeight (75)
--3 textos da esquerda e direita
local y = -3
local x = 3
local right = -1
info.nome:SetPoint ("TOPLEFT", background, "TOPLEFT", x, y + (-2))
info.dano:SetPoint ("TOPLEFT", background, "TOPLEFT", x, y + (-24))
info.dano_media:SetPoint ("TOPLEFT", background, "TOPLEFT", x, y + (-44))
info.nome2:SetPoint ("TOPRIGHT", background, "TOPRIGHT", -x + right, y + (-2))
info.dano_porcento:SetPoint ("TOPRIGHT", background, "TOPRIGHT", -x + right, y + (-24))
info.dano_dps:SetPoint ("TOPRIGHT", background, "TOPRIGHT", -x + right, y + (-44))
info.bg:SetPoint ("TOPLEFT", background, "TOPLEFT", 1, -1)
info.bg:SetHeight (background:GetHeight() - 2)
info.bg:SetWidth (background:GetWidth())
info.bg_end:SetPoint ("LEFT", info.bg, "LEFT", info.bg:GetValue()*2.19, 0)
info.bg_end:SetHeight (background:GetHeight()+2)
info.bg_end:SetWidth (6)
info.bg_end:SetAlpha (.75)
info.bg.overlay:SetWidth (background:GetWidth() + 24)
info.bg.overlay:SetHeight (background:GetHeight() + 16)
info.bg:Hide()
end
--> seta o contedo da barra de detalhes
------------------------------------------------------------------------------------------------------------------------------
function gump:SetaDetalheInfoTexto (index, p, arg1, arg2, arg3, arg4, arg5, arg6)
local info = _detalhes.playerDetailWindow.grupos_detalhes [index]
if (p) then
if (_type (p) == "table") then
info.bg:SetValue (p.p)
info.bg:SetStatusBarColor (p.c[1], p.c[2], p.c[3], p.c[4] or 1)
else
info.bg:SetValue (p)
info.bg:SetStatusBarColor (1, 1, 1, .5)
end
info.bg_end:Show()
info.bg_end:SetPoint ("LEFT", info.bg, "LEFT", (info.bg:GetValue() * (info.bg:GetWidth( ) / 100)) - 3, 0) -- 2.19
info.bg:Show()
end
if (info.IsPet) then
info.bg.PetIcon:Hide()
info.bg.PetText:Hide()
info.bg.PetDps:Hide()
Details.FadeHandler.Fader (info.bg.overlay, "IN")
info.IsPet = false
end
if (arg1) then
info.nome:SetText (arg1)
end
if (arg2) then
info.dano:SetText (arg2)
end
if (arg3) then
info.dano_porcento:SetText (arg3)
end
if (arg4) then
info.dano_media:SetText (arg4)
end
if (arg5) then
info.dano_dps:SetText (arg5)
end
if (arg6) then
info.nome2:SetText (arg6)
end
info.nome:Show()
info.dano:Show()
info.dano_porcento:Show()
info.dano_media:Show()
info.dano_dps:Show()
info.nome2:Show()
end
--> cria as 5 caixas de detalhes infos que sero usados
------------------------------------------------------------------------------------------------------------------------------
local function cria_barras_detalhes()
_detalhes.playerDetailWindow.grupos_detalhes = {}
for i = 1, spellInfoSettings.amount do
gump:CriaDetalheInfo (i)
gump:SetaDetalheInfoAltura (i)
end
end
--> cria os textos em geral da janela info
------------------------------------------------------------------------------------------------------------------------------
local function cria_textos (este_gump, SWW)
este_gump.nome = este_gump:CreateFontString (nil, "OVERLAY", "QuestFont_Large")
este_gump.nome:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 105, -54)
este_gump.atributo_nome = este_gump:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
este_gump.targets = SWW:CreateFontString (nil, "OVERLAY", "QuestFont_Large")
este_gump.targets:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 24, -273)
este_gump.targets:SetText (Loc ["STRING_TARGETS"] .. ":")
este_gump.avatar = este_gump:CreateTexture (nil, "overlay")
este_gump.avatar_bg = este_gump:CreateTexture (nil, "overlay")
este_gump.avatar_attribute = este_gump:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
este_gump.avatar_nick = este_gump:CreateFontString (nil, "overlay", "QuestFont_Large")
este_gump.avatar:SetDrawLayer ("overlay", 3)
este_gump.avatar_bg:SetDrawLayer ("overlay", 2)
este_gump.avatar_nick:SetDrawLayer ("overlay", 4)
este_gump.avatar:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 60, -10)
este_gump.avatar_bg:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 60, -12)
este_gump.avatar_bg:SetSize (275, 60)
este_gump.avatar_nick:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 195, -54)
este_gump.avatar:Hide()
este_gump.avatar_bg:Hide()
este_gump.avatar_nick:Hide()
end
--> esquerdo superior
local function cria_container_barras (este_gump, SWW)
local container_barras_window = _CreateFrame ("ScrollFrame", "Details_Info_ContainerBarrasScroll", SWW, "BackdropTemplate")
local container_barras = _CreateFrame ("Frame", "Details_Info_ContainerBarras", container_barras_window, "BackdropTemplate")
container_barras:SetAllPoints (container_barras_window)
container_barras:SetWidth (300)
container_barras:SetHeight (150)
container_barras:EnableMouse (true)
container_barras:SetMovable (true)
container_barras_window:SetWidth (300)
container_barras_window:SetHeight (145)
container_barras_window:SetScrollChild (container_barras)
container_barras_window:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 21, -76)
container_barras_window:SetScript ("OnSizeChanged", function (self)
container_barras:SetSize (self:GetSize())
end)
gump:NewScrollBar (container_barras_window, container_barras, 6, -17)
container_barras_window.slider:Altura (117)
container_barras_window.slider:cimaPoint (0, 1)
container_barras_window.slider:baixoPoint (0, -3)
container_barras_window.ultimo = 0
container_barras_window.gump = container_barras
--container_barras_window.slider = slider_gump
este_gump.container_barras = container_barras_window
end
function gump:JI_AtualizaContainerBarras (amt)
local container = _detalhes.playerDetailWindow.container_barras
if (amt >= 9 and container.ultimo ~= amt) then
local tamanho = (CONST_BAR_HEIGHT + 1) * amt
container.gump:SetHeight (tamanho)
container.slider:Update()
container.ultimo = amt
elseif (amt < 8 and container.slider.ativo) then
container.slider:Update (true)
container.gump:SetHeight (140)
container.scroll_ativo = false
container.ultimo = 0
end
end
function gump:JI_AtualizaContainerAlvos (amt)
local container = _detalhes.playerDetailWindow.container_alvos
if (amt >= 6 and container.ultimo ~= amt) then
local tamanho = (CONST_TARGET_HEIGHT + 1) * amt
container.gump:SetHeight (tamanho)
container.slider:Update()
container.ultimo = amt
elseif (amt <= 5 and container.slider.ativo) then
container.slider:Update (true)
container.gump:SetHeight (100)
container.scroll_ativo = false
container.ultimo = 0
end
end
--> container direita
local function cria_container_detalhes (este_gump, SWW)
local container_detalhes = _CreateFrame ("Frame", "Details_Info_ContainerDetalhes", SWW, "BackdropTemplate")
container_detalhes:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", -74, -76)
container_detalhes:SetWidth (220)
container_detalhes:SetHeight (270)
container_detalhes:EnableMouse (true)
container_detalhes:SetResizable (false)
container_detalhes:SetMovable (true)
este_gump.container_detalhes = container_detalhes
end
--> esquerdo inferior
local function cria_container_alvos (este_gump, SWW)
local container_alvos_window = _CreateFrame ("ScrollFrame", "Details_Info_ContainerAlvosScroll", SWW, "BackdropTemplate")
local container_alvos = _CreateFrame ("Frame", "Details_Info_ContainerAlvos", container_alvos_window, "BackdropTemplate")
container_alvos:SetAllPoints (container_alvos_window)
container_alvos:SetWidth (300)
container_alvos:SetHeight (100)
container_alvos:EnableMouse (true)
container_alvos:SetMovable (true)
container_alvos_window:SetWidth (300)
container_alvos_window:SetHeight (100)
container_alvos_window:SetScrollChild (container_alvos)
container_alvos_window:SetPoint ("BOTTOMLEFT", este_gump, "BOTTOMLEFT", 20, 6) --56 default
container_alvos_window:SetScript ("OnSizeChanged", function (self)
container_alvos:SetSize (self:GetSize())
end)
gump:NewScrollBar (container_alvos_window, container_alvos, 7, 4)
container_alvos_window.slider:Altura (88)
container_alvos_window.slider:cimaPoint (0, 1)
container_alvos_window.slider:baixoPoint (0, -3)
container_alvos_window.gump = container_alvos
este_gump.container_alvos = container_alvos_window
end
local default_icon_change = function (jogador, classe)
if (classe ~= "UNKNOW" and classe ~= "UNGROUPPLAYER") then
info.classe_icone:SetTexCoord (_detalhes.class_coords [classe][1], _detalhes.class_coords [classe][2], _detalhes.class_coords [classe][3], _detalhes.class_coords [classe][4])
if (jogador.enemy) then
if (_detalhes.faction_against == "Horde") then
info.nome:SetTextColor (1, 91/255, 91/255, 1)
else
info.nome:SetTextColor (151/255, 215/255, 1, 1)
end
else
info.classe_iconePlus:SetTexture()
info.nome:SetTextColor (1, 1, 1, 1)
end
else
if (jogador.enemy) then
if (_detalhes.class_coords [_detalhes.faction_against]) then
info.classe_icone:SetTexCoord (_unpack (_detalhes.class_coords [_detalhes.faction_against]))
if (_detalhes.faction_against == "Horde") then
info.nome:SetTextColor (1, 91/255, 91/255, 1)
else
info.nome:SetTextColor (151/255, 215/255, 1, 1)
end
else
info.nome:SetTextColor (1, 1, 1, 1)
end
else
info.classe_icone:SetTexCoord (_detalhes.class_coords ["MONSTER"][1], _detalhes.class_coords ["MONSTER"][2], _detalhes.class_coords ["MONSTER"][3], _detalhes.class_coords ["MONSTER"][4])
end
info.classe_iconePlus:SetTexture()
end
end
function _detalhes:InstallPDWSkin (skin_name, func)
if (not skin_name) then
return false -- sem nome
elseif (_detalhes.playerdetailwindow_skins [skin_name]) then
return false -- ja existe
end
_detalhes.playerdetailwindow_skins [skin_name] = func
return true
end
function _detalhes:ApplyPDWSkin (skin_name)
--already built
if (not DetailsPlayerDetailsWindow.Loaded) then
if (skin_name) then
_detalhes.player_details_window.skin = skin_name
end
return
end
--hide extra frames
local window = DetailsPlayerDetailsWindow
if (window.extra_frames) then
for framename, frame in pairs (window.extra_frames) do
frame:Hide()
end
end
--apply default first
local default_skin = _detalhes.playerdetailwindow_skins ["WoWClassic"]
pcall (default_skin.func)
--than do the change
if (not skin_name) then
skin_name = _detalhes.player_details_window.skin
end
local skin = _detalhes.playerdetailwindow_skins [skin_name]
if (skin) then
local successful, errortext = pcall (skin.func)
if (not successful) then
_detalhes:Msg ("error occurred on skin call():", errortext)
local former_skin = _detalhes.playerdetailwindow_skins [_detalhes.player_details_window.skin]
pcall (former_skin.func)
else
_detalhes.player_details_window.skin = skin_name
end
else
_detalhes:Msg ("skin not found.")
end
if (info and info:IsShown() and info.jogador and info.jogador.classe) then
info.SetClassIcon (info.jogador, info.jogador.classe)
end
_detalhes:ApplyRPSkin (skin_name)
end
function _detalhes:SetPlayerDetailsWindowTexture (texture)
DetailsPlayerDetailsWindow.bg1:SetTexture (texture)
end
function _detalhes:SetPDWBarConfig (texture)
local window = DetailsPlayerDetailsWindow
if (texture) then
_detalhes.player_details_window.bar_texture = texture
local texture = SharedMedia:Fetch ("statusbar", texture)
for _, bar in ipairs (window.barras1) do
bar.textura:SetStatusBarTexture (texture)
end
for _, bar in ipairs (window.barras2) do
bar.textura:SetStatusBarTexture (texture)
end
for _, bar in ipairs (window.barras3) do
bar.textura:SetStatusBarTexture (texture)
end
end
end
local default_skin = function()
local window = DetailsPlayerDetailsWindow
window.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]])
window.bg1:SetSize (1024, 512)
window.bg1:SetAlpha (1)
window.bg1:SetVertexColor (1, 1, 1)
window:SetBackdrop (nil)
window:SetBackdropColor (1, 1, 1, 1)
window:SetBackdropBorderColor (1, 1, 1, 1)
window.bg_icone_bg:Show()
window.bg_icone:Show()
window.leftbars1_backgound:SetPoint ("topleft", window.container_barras, "topleft", -3, 3)
window.leftbars1_backgound:SetPoint ("bottomright", window.container_barras, "bottomright", 3, -3)
window.leftbars2_backgound:SetPoint ("topleft", window.container_alvos, "topleft", -3, 23)
window.leftbars2_backgound:SetPoint ("bottomright", window.container_alvos, "bottomright", 3, 0)
window.leftbars1_backgound:SetAlpha (1)
window.leftbars2_backgound:SetAlpha (1)
window.right_background1:SetAlpha (1)
window.right_background2:SetAlpha (1)
window.right_background3:SetAlpha (1)
window.right_background4:SetAlpha (1)
window.right_background5:SetAlpha (1)
window.close_button:GetNormalTexture():SetDesaturated (false)
window.title_string:ClearAllPoints()
window.title_string:SetPoint ("center", window, "center")
window.title_string:SetPoint ("top", window, "top", 0, -18)
window.title_string:SetParent (window)
window.title_string:SetTextColor (.890, .729, .015, 1)
window.classe_icone:SetParent (window)
window.classe_icone:SetPoint ("TOPLEFT", window, "TOPLEFT", 4, 0)
window.classe_icone:SetWidth (64)
window.classe_icone:SetHeight (64)
window.classe_icone:SetDrawLayer ("BACKGROUND", 1)
window.classe_icone:SetAlpha (1)
window.close_button:SetWidth (32)
window.close_button:SetHeight (32)
window.close_button:SetPoint ("TOPRIGHT", window, "TOPRIGHT", 5, -8)
window.options_button:SetPoint ("topright", window, "topright", -26, -16)
window.options_button:SetSize (16, 16)
window.avatar:SetParent (window)
_detalhes:SetPDWBarConfig ("Skyline")
--bar container
window.container_barras:SetSize (300, 145)
window.container_barras:SetPoint ("TOPLEFT", window, "TOPLEFT", 20, -76)
--target container
window.container_alvos:SetPoint ("BOTTOMLEFT", window, "BOTTOMLEFT", 20, 6)
window.container_alvos:SetSize (300, 100)
--icons
window.SetClassIcon = default_icon_change
window.apoio_icone_direito:SetBlendMode ("BLEND")
window.apoio_icone_esquerdo:SetBlendMode ("BLEND")
--texts
window.targets:SetPoint ("TOPLEFT", window, "TOPLEFT", 24, -273)
window.nome:SetPoint ("TOPLEFT", window, "TOPLEFT", 105, -54)
--report button
window.topleft_report:SetPoint ("BOTTOMLEFT", window.container_barras, "TOPLEFT", 33, 3)
--no targets texture
window.no_targets:SetPoint ("BOTTOMLEFT", window, "BOTTOMLEFT", 20, 6)
window.no_targets:SetSize (301, 100)
window.no_targets:SetAlpha (1)
--right panel textures
window.bg2_sec_texture:SetPoint ("topleft", window.bg1_sec_texture, "topleft", 8, 0)
window.bg2_sec_texture:SetPoint ("bottomright", window.bg1_sec_texture, "bottomright", -30, 0)
window.bg2_sec_texture:SetTexture ([[Interface\Glues\CREDITS\Warlords\Shadowmoon_Color_jlo3]])
window.bg2_sec_texture:SetDesaturated (true)
window.bg2_sec_texture:SetAlpha (0.3)
window.bg3_sec_texture:SetPoint ("topleft", window.bg2_sec_texture, "topleft", 0, 0)
window.bg3_sec_texture:SetPoint ("bottomright", window.bg2_sec_texture, "bottomright", 0, 0)
window.bg3_sec_texture:SetTexture (0, 0, 0, 1)
--the 5 spell details blocks
for i, infoblock in ipairs (_detalhes.playerDetailWindow.grupos_detalhes) do
infoblock.bg:SetSize (219, 47) --219 original
end
local xLocation = {-85, -136, -191, -246, -301, -356}
local heightTable = {43, 48, 48, 48, 48, 48}
for i = 1, spellInfoSettings.amount do
window ["right_background" .. i]:SetPoint ("topleft", window, "topleft", 357, xLocation [i]) --357 original
window ["right_background" .. i]:SetSize (220, heightTable [i]) --220
end
--info container
info:SetDetailInfoConfigs ("Interface\\AddOns\\Details\\images\\bar_detalhes2", {1, 1, 1, 0.5}, 0, 0)
window.bg1_sec_texture:SetPoint ("topleft", window.bg1, "topleft", 348, -86)
window.bg1_sec_texture:SetHeight (262)
window.bg1_sec_texture:SetWidth (264)
--container bars 3
local x_start = 61
local y_start = -10
local janela = window.container_detalhes
container3_bars_pointFunc = function (barra, index)
local y = (index-1) * 17
y = y*-1
barra:SetPoint ("LEFT", janela, "LEFT", x_start, 0)
barra:SetPoint ("RIGHT", janela, "RIGHT", 65, 0)
barra:SetPoint ("TOP", janela, "TOP", 0, y+y_start)
end
for index, barra in ipairs (window.barras3) do
local y = (index-1) * 17
y = y*-1
barra:SetPoint ("LEFT", janela, "LEFT", x_start, 0)
barra:SetPoint ("RIGHT", janela, "RIGHT", 65, 0)
barra:SetPoint ("TOP", janela, "TOP", 0, y+y_start)
end
--scrollbar
window.container_barras.cima:SetNormalTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Up")
window.container_barras.cima:SetPushedTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Down")
window.container_barras.cima:SetDisabledTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Disabled")
window.container_barras.cima:GetNormalTexture():ClearAllPoints()
window.container_barras.cima:GetPushedTexture():ClearAllPoints()
window.container_barras.cima:GetDisabledTexture():ClearAllPoints()
window.container_barras.cima:GetNormalTexture():SetPoint ("center", window.container_barras.cima, "center", 0, 0)
window.container_barras.cima:GetPushedTexture():SetPoint ("center", window.container_barras.cima, "center", 0, 0)
window.container_barras.cima:GetDisabledTexture():SetPoint ("center", window.container_barras.cima, "center", 0, 0)
window.container_barras.cima:SetSize (29, 32)
window.container_barras.cima:SetBackdrop (nil)
window.container_barras.baixo:SetNormalTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Up")
window.container_barras.baixo:SetPushedTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Down")
window.container_barras.baixo:SetDisabledTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Disabled")
window.container_barras.baixo:GetNormalTexture():ClearAllPoints()
window.container_barras.baixo:GetPushedTexture():ClearAllPoints()
window.container_barras.baixo:GetDisabledTexture():ClearAllPoints()
window.container_barras.baixo:GetNormalTexture():SetPoint ("center", window.container_barras.baixo, "center", 0, 0)
window.container_barras.baixo:GetPushedTexture():SetPoint ("center", window.container_barras.baixo, "center", 0, 0)
window.container_barras.baixo:GetDisabledTexture():SetPoint ("center", window.container_barras.baixo, "center", 0, 0)
window.container_barras.baixo:SetSize (29, 32)
window.container_barras.baixo:SetBackdrop (nil)
window.container_barras.slider:SetBackdrop (nil)
window.container_barras.slider:Altura (117)
window.container_barras.slider:cimaPoint (0, 1)
window.container_barras.slider:baixoPoint (0, -3)
window.container_barras.slider.thumb:SetTexture ("Interface\\Buttons\\UI-ScrollBar-Knob")
window.container_barras.slider.thumb:SetTexCoord (0, 1, 0, 1)
window.container_barras.slider.thumb:SetSize (29, 30)
window.container_barras.slider.thumb:SetVertexColor (1, 1, 1, 1)
--
window.container_alvos.cima:SetNormalTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Up")
window.container_alvos.cima:SetPushedTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Down")
window.container_alvos.cima:SetDisabledTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Disabled")
window.container_alvos.cima:GetNormalTexture():ClearAllPoints()
window.container_alvos.cima:GetPushedTexture():ClearAllPoints()
window.container_alvos.cima:GetDisabledTexture():ClearAllPoints()
window.container_alvos.cima:GetNormalTexture():SetPoint ("center", window.container_alvos.cima, "center", 0, 0)
window.container_alvos.cima:GetPushedTexture():SetPoint ("center", window.container_alvos.cima, "center", 0, 0)
window.container_alvos.cima:GetDisabledTexture():SetPoint ("center", window.container_alvos.cima, "center", 0, 0)
window.container_alvos.cima:SetSize (29, 32)
window.container_alvos.cima:SetBackdrop (nil)
window.container_alvos.baixo:SetNormalTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Up")
window.container_alvos.baixo:SetPushedTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Down")
window.container_alvos.baixo:SetDisabledTexture ("Interface\\BUTTONS\\UI-ScrollBar-ScrollUpButton-Disabled")
window.container_alvos.baixo:GetNormalTexture():ClearAllPoints()
window.container_alvos.baixo:GetPushedTexture():ClearAllPoints()
window.container_alvos.baixo:GetDisabledTexture():ClearAllPoints()
window.container_alvos.baixo:GetNormalTexture():SetPoint ("center", window.container_alvos.baixo, "center", 0, 0)
window.container_alvos.baixo:GetPushedTexture():SetPoint ("center", window.container_alvos.baixo, "center", 0, 0)
window.container_alvos.baixo:GetDisabledTexture():SetPoint ("center", window.container_alvos.baixo, "center", 0, 0)
window.container_alvos.baixo:SetSize (29, 32)
window.container_alvos.baixo:SetBackdrop (nil)
window.container_alvos.slider:SetBackdrop (nil)
window.container_alvos.slider:Altura (88)
window.container_alvos.slider:cimaPoint (0, 1)
window.container_alvos.slider:baixoPoint (0, -3)
window.container_alvos.slider.thumb:SetTexture ("Interface\\Buttons\\UI-ScrollBar-Knob")
window.container_alvos.slider.thumb:SetTexCoord (0, 1, 0, 1)
window.container_alvos.slider.thumb:SetSize (29, 30)
window.container_alvos.slider.thumb:SetVertexColor (1, 1, 1, 1)
end
_detalhes:InstallPDWSkin ("WoWClassic", {func = default_skin, author = "Details! Team", version = "v1.0", desc = "Default skin."})
local elvui_skin = function()
local window = DetailsPlayerDetailsWindow
window.bg1:SetTexture ([[Interface\AddOns\Details\images\background]], true)
window.bg1:SetAlpha (0.7)
window.bg1:SetVertexColor (0.27, 0.27, 0.27)
window.bg1:SetVertTile (true)
window.bg1:SetHorizTile (true)
window.bg1:SetSize (PLAYER_DETAILS_WINDOW_WIDTH, PLAYER_DETAILS_WINDOW_HEIGHT)
window:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]]})
window:SetBackdropColor (1, 1, 1, 0.3)
window:SetBackdropBorderColor (0, 0, 0, 1)
window.bg_icone_bg:Hide()
window.bg_icone:Hide()
local bgs_alpha = 0.6
window.leftbars1_backgound:SetPoint ("topleft", window.container_barras, "topleft", -2, 3)
window.leftbars1_backgound:SetPoint ("bottomright", window.container_barras, "bottomright", 3, -3)
window.leftbars2_backgound:SetPoint ("topleft", window.container_alvos, "topleft", -2, 23)
window.leftbars2_backgound:SetPoint ("bottomright", window.container_alvos, "bottomright", 4, 0)
window.leftbars1_backgound:SetAlpha (bgs_alpha)
window.leftbars2_backgound:SetAlpha (bgs_alpha)
window.right_background1:SetAlpha (bgs_alpha)
window.right_background2:SetAlpha (bgs_alpha)
window.right_background3:SetAlpha (bgs_alpha)
window.right_background4:SetAlpha (bgs_alpha)
window.right_background5:SetAlpha (bgs_alpha)
window.close_button:GetNormalTexture():SetDesaturated (true)
local titlebar = window.extra_frames ["ElvUITitleBar"]
if (not titlebar) then
titlebar = CreateFrame ("frame", nil, window, "BackdropTemplate")
titlebar:SetPoint ("topleft", window, "topleft", 2, -3)
titlebar:SetPoint ("topright", window, "topright", -2, -3)
titlebar:SetHeight (20)
titlebar:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]], tileSize = 64, tile = true})
titlebar:SetBackdropColor (.5, .5, .5, 1)
titlebar:SetBackdropBorderColor (0, 0, 0, 1)
window.extra_frames ["ElvUITitleBar"] = titlebar
local name_bg_texture = window:CreateTexture (nil, "background")
name_bg_texture:SetTexture ([[Interface\PetBattles\_PetBattleHorizTile]], true)
name_bg_texture:SetHorizTile (true)
name_bg_texture:SetTexCoord (0, 1, 126/256, 19/256)
name_bg_texture:SetPoint ("topleft", window, "topleft", 2, -22)
--name_bg_texture:SetPoint ("topright", window, "topright", -2, -22)
name_bg_texture:SetPoint ("bottomright", window, "bottomright")
name_bg_texture:SetHeight (54)
name_bg_texture:SetVertexColor (0, 0, 0, 0.2)
window.extra_frames ["ElvUINameTexture"] = name_bg_texture
else
titlebar:Show()
window.extra_frames ["ElvUINameTexture"]:Show()
end
window.title_string:ClearAllPoints()
window.title_string:SetPoint ("center", window, "center")
window.title_string:SetPoint ("top", window, "top", 0, -7)
window.title_string:SetParent (titlebar)
window.title_string:SetTextColor (.8, .8, .8, 1)
window.classe_icone:SetParent (titlebar)
window.classe_icone:SetDrawLayer ("overlay")
window.classe_icone:SetPoint ("TOPLEFT", window, "TOPLEFT", 2, -25)
window.classe_icone:SetWidth (49)
window.classe_icone:SetHeight (49)
window.classe_icone:SetAlpha (1)
window.close_button:SetWidth (20)
window.close_button:SetHeight (20)
window.close_button:SetPoint ("TOPRIGHT", window, "TOPRIGHT", 0, -3)
window.options_button:SetPoint ("topright", window, "topright", -17, -7)
window.options_button:SetSize (12, 12)
window.avatar:SetParent (titlebar)
--bar container
window.container_barras:SetPoint (unpack (containerSettings.spells.point))
window.container_barras:SetSize (containerSettings.spells.width, containerSettings.spells.height)
--target container
window.container_alvos:SetPoint (unpack (containerSettings.targets.point))
window.container_alvos:SetSize (containerSettings.targets.width, containerSettings.targets.height)
--texts
window.targets:SetPoint ("topleft", window.container_alvos, "topleft", 3, 18)
window.nome:SetPoint ("TOPLEFT", window, "TOPLEFT", 105, -48)
--report button
window.topleft_report:SetPoint ("BOTTOMLEFT", window.container_barras, "TOPLEFT", 43, 2)
--icons
window.apoio_icone_direito:SetBlendMode ("ADD")
window.apoio_icone_esquerdo:SetBlendMode ("ADD")
--no targets texture
window.no_targets:SetPoint ("BOTTOMLEFT", window, "BOTTOMLEFT", 3, 6)
window.no_targets:SetSize (418, 150)
window.no_targets:SetAlpha (0.4)
--right panel textures
window.bg2_sec_texture:SetPoint ("topleft", window.bg1_sec_texture, "topleft", 7, 0)
window.bg2_sec_texture:SetPoint ("bottomright", window.bg1_sec_texture, "bottomright", -30, 0)
window.bg2_sec_texture:SetTexture ([[Interface\Glues\CREDITS\Warlords\Shadowmoon_Color_jlo3]])
window.bg2_sec_texture:SetDesaturated (true)
window.bg2_sec_texture:SetAlpha (0)
window.bg3_sec_texture:SetPoint ("topleft", window.bg2_sec_texture, "topleft", 0, 0)
window.bg3_sec_texture:SetPoint ("bottomright", window.bg2_sec_texture, "bottomright", 0, 0)
window.bg3_sec_texture:SetTexture (0, 0, 0, 0.3)
--the 5 spell details blocks - not working
for i, infoblock in ipairs (_detalhes.playerDetailWindow.grupos_detalhes) do
infoblock.bg:SetSize (330, 47)
end
local xLocation = {-85, -136, -191, -246, -301}
local heightTable = {50, 50, 50, 50, 50, 48}
for i = 1, spellInfoSettings.amount do
window ["right_background" .. i]:SetPoint ("topleft", window, "topleft", 351, xLocation [i])
window ["right_background" .. i]:SetSize (spellInfoSettings.width, heightTable [i])
end
--seta configs dos 5 blocos da direita
info:SetDetailInfoConfigs ("Interface\\AddOns\\Details\\images\\bar_serenity", {1, 1, 1, 0.35}, -6 + 100, 0)
window.bg1_sec_texture:SetPoint ("topleft", window.bg1, "topleft", 446, -86)
window.bg1_sec_texture:SetWidth (337)
window.bg1_sec_texture:SetHeight (362)
--container 3 bars
local x_start = 56
local y_start = -10
local janela = window.container_detalhes
container3_bars_pointFunc = function (barra, index)
local y = (index-1) * 17
y = y*-1
barra:SetPoint ("LEFT", info.bg1_sec_texture, "LEFT", 0, 0)
barra:SetPoint ("RIGHT", info.bg1_sec_texture, "RIGHT", 0, 0)
--barra:SetPoint ("LEFT", janela, "LEFT", x_start, 0)
--barra:SetPoint ("RIGHT", janela, "RIGHT", 62, 0)
barra:SetPoint ("TOP", janela, "TOP", 0, y+y_start)
end
for index, barra in ipairs (window.barras3) do
local y = (index-1) * 17
y = y*-1
barra:SetPoint ("LEFT", janela, "LEFT", x_start, 0)
barra:SetPoint ("RIGHT", janela, "RIGHT", 62, 0)
barra:SetPoint ("TOP", janela, "TOP", 0, y+y_start)
end
--scrollbar
do
--get textures
local normalTexture = window.container_barras.cima:GetNormalTexture()
local pushedTexture = window.container_barras.cima:GetPushedTexture()
local disabledTexture = window.container_barras.cima:GetDisabledTexture()
--set the new textures
normalTexture:SetTexture ([[Interface\Buttons\Arrow-Up-Up]])
pushedTexture:SetTexture ([[Interface\Buttons\Arrow-Up-Down]])
disabledTexture:SetTexture ([[Interface\Buttons\Arrow-Up-Disabled]])
normalTexture:SetPoint ("topleft", window.container_barras.cima, "topleft", 1, 0)
normalTexture:SetPoint ("bottomright", window.container_barras.cima, "bottomright", 1, 0)
pushedTexture:SetPoint ("topleft", window.container_barras.cima, "topleft", 1, 0)
pushedTexture:SetPoint ("bottomright", window.container_barras.cima, "bottomright", 1, 0)
disabledTexture:SetPoint ("topleft", window.container_barras.cima, "topleft", 1, 0)
disabledTexture:SetPoint ("bottomright", window.container_barras.cima, "bottomright", 1, 0)
disabledTexture:SetAlpha (0.5)
window.container_barras.cima:SetSize (16, 16)
window.container_barras.cima:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]]})
window.container_barras.cima:SetBackdropColor (0, 0, 0, 0.3)
window.container_barras.cima:SetBackdropBorderColor (0, 0, 0, 1)
end
do
--get textures
local normalTexture = window.container_barras.baixo:GetNormalTexture()
local pushedTexture = window.container_barras.baixo:GetPushedTexture()
local disabledTexture = window.container_barras.baixo:GetDisabledTexture()
--set the new textures
normalTexture:SetTexture ([[Interface\Buttons\Arrow-Down-Up]])
pushedTexture:SetTexture ([[Interface\Buttons\Arrow-Down-Down]])
disabledTexture:SetTexture ([[Interface\Buttons\Arrow-Down-Disabled]])
normalTexture:SetPoint ("topleft", window.container_barras.baixo, "topleft", 1, -4)
normalTexture:SetPoint ("bottomright", window.container_barras.baixo, "bottomright", 1, -4)
pushedTexture:SetPoint ("topleft", window.container_barras.baixo, "topleft", 1, -4)
pushedTexture:SetPoint ("bottomright", window.container_barras.baixo, "bottomright", 1, -4)
disabledTexture:SetPoint ("topleft", window.container_barras.baixo, "topleft", 1, -4)
disabledTexture:SetPoint ("bottomright", window.container_barras.baixo, "bottomright", 1, -4)
disabledTexture:SetAlpha (0.5)
window.container_barras.baixo:SetSize (16, 16)
window.container_barras.baixo:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]]})
window.container_barras.baixo:SetBackdropColor (0, 0, 0, 0.3)
window.container_barras.baixo:SetBackdropBorderColor (0, 0, 0, 1)
end
window.container_barras.slider:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]]})
window.container_barras.slider:SetBackdropColor (0, 0, 0, 0.35)
window.container_barras.slider:SetBackdropBorderColor (0, 0, 0, 1)
window.container_barras.slider:Altura (containerSettings.spells.scrollHeight)
window.container_barras.slider:cimaPoint (0, 13)
window.container_barras.slider:baixoPoint (0, -13)
window.container_barras.slider.thumb:SetTexture ([[Interface\AddOns\Details\images\icons2]])
window.container_barras.slider.thumb:SetTexCoord (482/512, 492/512, 104/512, 120/512)
window.container_barras.slider.thumb:SetSize (12, 12)
window.container_barras.slider.thumb:SetVertexColor (0.6, 0.6, 0.6, 0.95)
--
do
local f = window.container_alvos
--get textures
local normalTexture = f.cima:GetNormalTexture()
local pushedTexture = f.cima:GetPushedTexture()
local disabledTexture = f.cima:GetDisabledTexture()
--set the new textures
normalTexture:SetTexture ([[Interface\Buttons\Arrow-Up-Up]])
pushedTexture:SetTexture ([[Interface\Buttons\Arrow-Up-Down]])
disabledTexture:SetTexture ([[Interface\Buttons\Arrow-Up-Disabled]])
normalTexture:SetPoint ("topleft", f.cima, "topleft", 1, 0)
normalTexture:SetPoint ("bottomright", f.cima, "bottomright", 1, 0)
pushedTexture:SetPoint ("topleft", f.cima, "topleft", 1, 0)
pushedTexture:SetPoint ("bottomright", f.cima, "bottomright", 1, 0)
disabledTexture:SetPoint ("topleft", f.cima, "topleft", 1, 0)
disabledTexture:SetPoint ("bottomright", f.cima, "bottomright", 1, 0)
disabledTexture:SetAlpha (0.5)
f.cima:SetSize (16, 16)
f.cima:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]]})
f.cima:SetBackdropColor (0, 0, 0, 0.3)
f.cima:SetBackdropBorderColor (0, 0, 0, 1)
end
do
local f = window.container_alvos
--get textures
local normalTexture = f.baixo:GetNormalTexture()
local pushedTexture = f.baixo:GetPushedTexture()
local disabledTexture = f.baixo:GetDisabledTexture()
--set the new textures
normalTexture:SetTexture ([[Interface\Buttons\Arrow-Down-Up]])
pushedTexture:SetTexture ([[Interface\Buttons\Arrow-Down-Down]])
disabledTexture:SetTexture ([[Interface\Buttons\Arrow-Down-Disabled]])
normalTexture:SetPoint ("topleft", f.baixo, "topleft", 1, -4)
normalTexture:SetPoint ("bottomright", f.baixo, "bottomright", 1, -4)
pushedTexture:SetPoint ("topleft", f.baixo, "topleft", 1, -4)
pushedTexture:SetPoint ("bottomright", f.baixo, "bottomright", 1, -4)
disabledTexture:SetPoint ("topleft", f.baixo, "topleft", 1, -4)
disabledTexture:SetPoint ("bottomright", f.baixo, "bottomright", 1, -4)
disabledTexture:SetAlpha (0.5)
f.baixo:SetSize (16, 16)
f.baixo:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]]})
f.baixo:SetBackdropColor (0, 0, 0, 0.3)
f.baixo:SetBackdropBorderColor (0, 0, 0, 1)
end
window.container_alvos.slider:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]]})
window.container_alvos.slider:SetBackdropColor (0, 0, 0, 0.35)
window.container_alvos.slider:SetBackdropBorderColor (0, 0, 0, 1)
window.container_alvos.slider:Altura (137)
window.container_alvos.slider:cimaPoint (0, 13)
window.container_alvos.slider:baixoPoint (0, -13)
window.container_alvos.slider.thumb:SetTexture ([[Interface\AddOns\Details\images\icons2]])
window.container_alvos.slider.thumb:SetTexCoord (482/512, 492/512, 104/512, 120/512)
window.container_alvos.slider.thumb:SetSize (12, 12)
window.container_alvos.slider.thumb:SetVertexColor (0.6, 0.6, 0.6, 0.95)
--class icon
window.SetClassIcon = function (player, class)
if (player.spellicon) then
window.classe_icone:SetTexture(player.spellicon)
window.classe_icone:SetTexCoord(.1, .9, .1, .9)
elseif (player.spec) then
window.classe_icone:SetTexture ([[Interface\AddOns\Details\images\spec_icons_normal_alpha]])
window.classe_icone:SetTexCoord (_unpack (_detalhes.class_specs_coords [player.spec]))
--esta_barra.icone_classe:SetVertexColor (1, 1, 1)
else
local coords = CLASS_ICON_TCOORDS [class]
if (coords) then
info.classe_icone:SetTexture ([[Interface\Glues\CHARACTERCREATE\UI-CHARACTERCREATE-CLASSES]])
local l, r, t, b = unpack (coords)
info.classe_icone:SetTexCoord (l+0.01953125, r-0.01953125, t+0.01953125, b-0.01953125)
else
local c = _detalhes.class_coords ["MONSTER"]
info.classe_icone:SetTexture ("Interface\\AddOns\\Details\\images\\classes")
info.classe_icone:SetTexCoord (c[1], c[2], c[3], c[4])
end
end
end
end
_detalhes:InstallPDWSkin ("ElvUI", {func = elvui_skin, author = "Details! Team", version = "v1.0", desc = "Skin compatible with ElvUI addon."})
--> search key: ~create ~inicio ~start
function gump:CriaJanelaInfo()
--> cria a janela em si
local este_gump = info
este_gump.Loaded = true
este_gump:SetFrameStrata ("HIGH")
este_gump:SetToplevel (true)
este_gump.extra_frames = {}
--> fehcar com o esc
tinsert (UISpecialFrames, este_gump:GetName())
--> propriedades da janela
este_gump:SetPoint ("CENTER", UIParent)
este_gump:SetWidth (PLAYER_DETAILS_WINDOW_WIDTH)
este_gump:SetHeight (PLAYER_DETAILS_WINDOW_HEIGHT)
este_gump:EnableMouse (true)
este_gump:SetResizable (false)
este_gump:SetMovable (true)
este_gump.SummaryWindowWidgets = CreateFrame ("frame", "DetailsPlayerDetailsWindowSummaryWidgets", este_gump, "BackdropTemplate")
local SWW = este_gump.SummaryWindowWidgets
SWW:SetAllPoints()
tinsert (SummaryWidgets, SWW)
local scaleBar = Details.gump:CreateScaleBar (este_gump, Details.player_details_window)
este_gump:SetScale (Details.player_details_window.scale)
--classic:
--este_gump:SetWidth (590)
--este_gump:SetHeight (354)
--> joga a janela para a global
_detalhes.playerDetailWindow = este_gump
--> icone da classe no canto esquerdo superior
este_gump.classe_icone = este_gump:CreateTexture (nil, "BACKGROUND")
este_gump.classe_icone:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 4, 0)
este_gump.classe_icone:SetWidth (64)
este_gump.classe_icone:SetHeight (64)
este_gump.classe_icone:SetDrawLayer ("BACKGROUND", 1)
--> complemento do icone
este_gump.classe_iconePlus = este_gump:CreateTexture (nil, "BACKGROUND")
este_gump.classe_iconePlus:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 4, 0)
este_gump.classe_iconePlus:SetWidth (64)
este_gump.classe_iconePlus:SetHeight (64)
este_gump.classe_iconePlus:SetDrawLayer ("BACKGROUND", 2)
--> top left
este_gump.bg1 = este_gump:CreateTexture ("DetailsPSWBackground", "BORDER")
este_gump.bg1:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 0, 0)
este_gump.bg1:SetDrawLayer ("BORDER", 1)
--> boto de fechar
este_gump.close_button = _CreateFrame ("Button", nil, este_gump, "UIPanelCloseButton")
este_gump.close_button:SetWidth (32)
este_gump.close_button:SetHeight (32)
este_gump.close_button:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", 5, -8)
este_gump.close_button:SetText ("X")
este_gump.close_button:SetFrameLevel (este_gump:GetFrameLevel()+5)
--> cone da magia selecionada para mais detalhes
este_gump.bg_icone_bg = este_gump:CreateTexture (nil, "ARTWORK")
este_gump.bg_icone_bg:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", -15, -12)
este_gump.bg_icone_bg:SetTexture ("Interface\\AddOns\\Details\\images\\icone_bg_fundo")
este_gump.bg_icone_bg:SetDrawLayer ("ARTWORK", -1)
este_gump.bg_icone_bg:Show()
este_gump.bg_icone = este_gump:CreateTexture (nil, "OVERLAY")
este_gump.bg_icone:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", -15, -12)
este_gump.bg_icone:SetTexture ("Interface\\AddOns\\Details\\images\\icone_bg")
este_gump.bg_icone:Show()
--> boto de opes
local open_options = function()
_detalhes:OpenOptionsWindow (info.instancia, false, 6)
_detalhes:OpenOptionsWindow (info.instancia, false, 6)
end
este_gump.options_button = gump:CreateButton (este_gump, open_options, 16, 16, nil, nil, nil, [[Interface\Buttons\UI-OptionsButton]])
este_gump.options_button:SetPoint ("topright", este_gump, "topright", -26, -16)
este_gump.options_button:SetAlpha (0.5)
este_gump.options_button.button:GetNormalTexture():SetDesaturated (true)
este_gump.options_button.tooltip = "Select Skin"
--> desativando o boto de config
este_gump.options_button:Hide()
--> titulo
gump:NewLabel (este_gump, este_gump, nil, "title_string", Loc ["STRING_PLAYER_DETAILS"], "GameFontHighlightLeft", 12, {227/255, 186/255, 4/255})
este_gump.title_string:SetPoint ("center", este_gump, "center")
este_gump.title_string:SetPoint ("top", este_gump, "top", 0, -18)
este_gump.spell_icone = este_gump:CreateTexture (nil, "ARTWORK")
este_gump.spell_icone:SetPoint ("BOTTOMRIGHT", este_gump.bg_icone, "BOTTOMRIGHT", -19, 2)
este_gump.spell_icone:SetWidth (35)
este_gump.spell_icone:SetHeight (34)
este_gump.spell_icone:SetDrawLayer ("ARTWORK", 0)
este_gump.spell_icone:Show()
este_gump.spell_icone:SetTexCoord (4/64, 60/64, 4/64, 60/64)
--> coisinhas do lado do icone
este_gump.apoio_icone_esquerdo = este_gump:CreateTexture (nil, "ARTWORK")
este_gump.apoio_icone_direito = este_gump:CreateTexture (nil, "ARTWORK")
este_gump.apoio_icone_esquerdo:SetTexture ("Interface\\PaperDollInfoFrame\\PaperDollSidebarTabs")
este_gump.apoio_icone_direito:SetTexture ("Interface\\PaperDollInfoFrame\\PaperDollSidebarTabs")
local apoio_altura = 13/256
este_gump.apoio_icone_esquerdo:SetTexCoord (0, 1, 0, apoio_altura)
este_gump.apoio_icone_direito:SetTexCoord (0, 1, apoio_altura+(1/256), apoio_altura+apoio_altura)
este_gump.apoio_icone_esquerdo:SetPoint ("bottomright", este_gump.bg_icone, "bottomleft", 42, 0)
este_gump.apoio_icone_direito:SetPoint ("bottomleft", este_gump.bg_icone, "bottomright", -17, 0)
este_gump.apoio_icone_esquerdo:SetWidth (64)
este_gump.apoio_icone_esquerdo:SetHeight (13)
este_gump.apoio_icone_direito:SetWidth (64)
este_gump.apoio_icone_direito:SetHeight (13)
este_gump.topright_text1 = este_gump:CreateFontString (nil, "overlay", "GameFontNormal")
este_gump.topright_text1:SetPoint ("bottomright", este_gump, "topright", -18 - (94 * (1-1)), -36)
este_gump.topright_text1:SetJustifyH ("right")
_detalhes.gump:SetFontSize (este_gump.topright_text1, 10)
este_gump.topright_text2 = este_gump:CreateFontString (nil, "overlay", "GameFontNormal")
este_gump.topright_text2:SetPoint ("bottomright", este_gump, "topright", -18 - (94 * (1-1)), -48)
este_gump.topright_text2:SetJustifyH ("right")
_detalhes.gump:SetFontSize (este_gump.topright_text2, 10)
function este_gump:SetTopRightTexts (text1, text2, size, color, font)
if (text1) then
este_gump.topright_text1:SetText (text1)
else
este_gump.topright_text1:SetText ("")
end
if (text2) then
este_gump.topright_text2:SetText (text2)
else
este_gump.topright_text2:SetText ("")
end
if (size and type (size) == "number") then
_detalhes.gump:SetFontSize (este_gump.topright_text1, size)
_detalhes.gump:SetFontSize (este_gump.topright_text2, size)
end
if (color) then
_detalhes.gump:SetFontColor (este_gump.topright_text1, color)
_detalhes.gump:SetFontColor (este_gump.topright_text2, color)
end
if (font) then
_detalhes.gump:SetFontFace (este_gump.topright_text1, font)
_detalhes.gump:SetFontFace (este_gump.topright_text2, font)
end
end
-------------------------------------------------
local alpha_bgs = 1
-- backgrounds das 5 boxes do lado direito
local right_background_X = 457
local right_background_Y = {-85, -136, -191, -246, -301}
for i = 1, spellInfoSettings.amount do
local right_background1 = CreateFrame ("frame", "DetailsPlayerDetailsWindow_right_background" .. i, SWW, "BackdropTemplate")
right_background1:EnableMouse (false)
right_background1:SetPoint ("topleft", este_gump, "topleft", right_background_X, right_background_Y [i])
right_background1:SetSize (220, 43)
Details.gump:ApplyStandardBackdrop (right_background1)
este_gump ["right_background" .. i] = right_background1
end
-- fundos especiais de friendly fire e outros
este_gump.bg1_sec_texture = SWW:CreateTexture ("DetailsPlayerDetailsWindow_BG1_SEC_Texture", "BORDER")
este_gump.bg1_sec_texture:SetDrawLayer ("BORDER", 4)
este_gump.bg1_sec_texture:SetPoint ("topleft", este_gump.bg1, "topleft", 450, -86)
este_gump.bg1_sec_texture:SetHeight (462)
este_gump.bg1_sec_texture:SetWidth (264)
este_gump.bg2_sec_texture = SWW:CreateTexture ("DetailsPlayerDetailsWindow_BG2_SEC_Texture", "BORDER")
este_gump.bg2_sec_texture:SetDrawLayer ("BORDER", 3)
este_gump.bg2_sec_texture:SetPoint ("topleft", este_gump.bg1_sec_texture, "topleft", 8, 0)
este_gump.bg2_sec_texture:SetPoint ("bottomright", este_gump.bg1_sec_texture, "bottomright", -30, 0)
este_gump.bg2_sec_texture:SetTexture ([[Interface\Glues\CREDITS\Warlords\Shadowmoon_Color_jlo3]])
este_gump.bg2_sec_texture:SetDesaturated (true)
este_gump.bg2_sec_texture:SetAlpha (0.3)
este_gump.bg2_sec_texture:Hide()
este_gump.bg3_sec_texture = SWW:CreateTexture ("DetailsPlayerDetailsWindow_BG3_SEC_Texture", "BORDER")
este_gump.bg3_sec_texture:SetDrawLayer ("BORDER", 2)
este_gump.bg3_sec_texture:SetPoint ("topleft", este_gump.bg2_sec_texture, "topleft", 0, 0)
este_gump.bg3_sec_texture:SetPoint ("bottomright", este_gump.bg2_sec_texture, "bottomright", 0, 0)
--este_gump.bg3_sec_texture:SetColorTexture (0, 0, 0, 1)
este_gump.bg3_sec_texture:Hide()
este_gump.no_targets = SWW:CreateTexture ("DetailsPlayerDetailsWindow_no_targets", "overlay")
este_gump.no_targets:SetPoint ("BOTTOMLEFT", este_gump, "BOTTOMLEFT", 20, 6)
este_gump.no_targets:SetSize (301, 100)
este_gump.no_targets:SetTexture ([[Interface\QUESTFRAME\UI-QUESTLOG-EMPTY-TOPLEFT]])
este_gump.no_targets:SetTexCoord (0.015625, 1, 0.01171875, 0.390625)
este_gump.no_targets:SetDesaturated (true)
este_gump.no_targets:SetAlpha (.7)
este_gump.no_targets.text = SWW:CreateFontString (nil, "overlay", "GameFontNormal")
este_gump.no_targets.text:SetPoint ("center", este_gump.no_targets, "center")
este_gump.no_targets.text:SetText (Loc ["STRING_NO_TARGET_BOX"])
este_gump.no_targets.text:SetTextColor (1, 1, 1, .4)
este_gump.no_targets:Hide()
--> cria os textos da janela
cria_textos (este_gump, SWW)
--> cria o frama que vai abrigar as barras das habilidades
cria_container_barras (este_gump, SWW)
--> cria o container que vai abrirgar as 5 barras de detalhes
cria_container_detalhes (este_gump, SWW)
--> cria o container onde vai abrigar os alvos do jogador
cria_container_alvos (este_gump, SWW)
-- local leftbars1_backgound = SWW:CreateTexture (nil, "background")
-- leftbars1_backgound:SetTexture ([[Interface\DialogFrame\UI-DialogBox-Background-Dark]])
-- leftbars1_backgound:SetSize (303, 149)
-- leftbars1_backgound:SetAlpha (alpha_bgs)
-- este_gump.leftbars1_backgound = leftbars1_backgound
local leftbars1_backgound = CreateFrame ("frame", "DetailsPlayerDetailsWindow_Left_SpellsBackground", SWW, "BackdropTemplate")
leftbars1_backgound:EnableMouse (false)
leftbars1_backgound:SetSize (303, 149)
leftbars1_backgound:SetAlpha (alpha_bgs)
leftbars1_backgound:SetFrameLevel (SWW:GetFrameLevel())
Details.gump:ApplyStandardBackdrop (leftbars1_backgound)
este_gump.leftbars1_backgound = leftbars1_backgound
local leftbars2_backgound = CreateFrame ("frame", "DetailsPlayerDetailsWindow_Left_TargetBackground", SWW, "BackdropTemplate")
leftbars2_backgound:EnableMouse (false)
leftbars2_backgound:SetSize (303, 122)
leftbars2_backgound:SetAlpha (alpha_bgs)
leftbars2_backgound:SetFrameLevel (SWW:GetFrameLevel())
Details.gump:ApplyStandardBackdrop (leftbars2_backgound)
este_gump.leftbars2_backgound = leftbars2_backgound
leftbars1_backgound:SetPoint ("topleft", este_gump.container_barras, "topleft", -3, 3)
leftbars1_backgound:SetPoint ("bottomright", este_gump.container_barras, "bottomright", 3, -3)
leftbars2_backgound:SetPoint ("topleft", este_gump.container_alvos, "topleft", -3, 23)
leftbars2_backgound:SetPoint ("bottomright", este_gump.container_alvos, "bottomright", 3, 0)
--> cria as 5 barras de detalhes a direita da janela
cria_barras_detalhes()
--> seta os scripts dos frames da janela
seta_scripts (este_gump)
--> vai armazenar os objetos das barras de habilidade
este_gump.barras1 = {}
--> vai armazenar os objetos das barras de alvos
este_gump.barras2 = {}
--> vai armazenar os objetos das barras da caixa especial da direita
este_gump.barras3 = {}
este_gump.SetClassIcon = default_icon_change
--> boto de reportar da caixa da esquerda, onde fica as barras principais
este_gump.report_esquerda = gump:NewDetailsButton (SWW, este_gump, nil, _detalhes.Reportar, este_gump, 1, 16, 16,
"Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", nil, "DetailsJanelaInfoReport2")
--este_gump.report_esquerda:SetPoint ("BOTTOMLEFT", este_gump.container_barras, "TOPLEFT", 281, 3)
este_gump.report_esquerda:SetPoint ("BOTTOMLEFT", este_gump.container_barras, "TOPLEFT", 33, 3)
este_gump.report_esquerda:SetFrameLevel (este_gump:GetFrameLevel()+2)
este_gump.topleft_report = este_gump.report_esquerda
--> boto de reportar da caixa dos alvos
este_gump.report_alvos = gump:NewDetailsButton (SWW, este_gump, nil, _detalhes.Reportar, este_gump, 3, 16, 16,
"Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", nil, "DetailsJanelaInfoReport3")
este_gump.report_alvos:SetPoint ("BOTTOMRIGHT", este_gump.container_alvos, "TOPRIGHT", -2, -1)
este_gump.report_alvos:SetFrameLevel (3) --> solved inactive problem
--> boto de reportar da caixa da direita, onde esto os 5 quadrados
este_gump.report_direita = gump:NewDetailsButton (SWW, este_gump, nil, _detalhes.Reportar, este_gump, 2, 16, 16,
"Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", nil, "DetailsJanelaInfoReport4")
este_gump.report_direita:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", -10, -70)
este_gump.report_direita:Show()
--> statusbar
local statusBar = CreateFrame ("frame", nil, este_gump, "BackdropTemplate")
statusBar:SetPoint ("bottomleft", este_gump, "bottomleft")
statusBar:SetPoint ("bottomright", este_gump, "bottomright")
statusBar:SetHeight (PLAYER_DETAILS_STATUSBAR_HEIGHT)
DetailsFramework:ApplyStandardBackdrop (statusBar)
statusBar:SetAlpha (PLAYER_DETAILS_STATUSBAR_ALPHA)
statusBar.Text = DetailsFramework:CreateLabel (statusBar)
statusBar.Text:SetPoint ("left", 2, 0)
function este_gump:SetStatusbarText (text, fontSize, fontColor)
if (not text) then
este_gump:SetStatusbarText ("Details! Damage Meter | Use '/details stats' for statistics", 10, "gray")
return
end
statusBar.Text.text = text
statusBar.Text.fontsize = fontSize
statusBar.Text.fontcolor = fontColor
end
--set default text
este_gump:SetStatusbarText()
--> apply default skin
_detalhes:ApplyPDWSkin()
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> tabs
local red = "FFFFAAAA"
local green = "FFAAFFAA"
--> tabs:
--> tab default
local iconTableSummary = {
texture = [[Interface\AddOns\Details\images\icons]],
coords = {238/512, 255/512, 0, 18/512},
width = 16,
height = 16,
}
_detalhes:CreatePlayerDetailsTab ("Summary", Loc ["STRING_SPELLS"], --[1] tab name [2] localized name
function (tabOBject, playerObject) --[3] condition
if (playerObject) then
return true
else
return false
end
end,
nil, --[4] fill function
function() --[5] onclick
for _, tab in _ipairs (Details:GetBreakdownTabsInUse()) do
tab.frame:Hide()
end
end,
nil, --[6] oncreate
iconTableSummary --[7] icon table
)
--> search key: ~avoidance --> begining of avoidance tab
local avoidance_create = function (tab, frame)
--> Percent Desc
local percent_desc = frame:CreateFontString (nil, "artwork", "GameFontNormal")
percent_desc:SetText ("Percent values are comparisons with the previous try.")
percent_desc:SetPoint ("bottomleft", frame, "bottomleft", 13, 13 + PLAYER_DETAILS_STATUSBAR_HEIGHT)
percent_desc:SetTextColor (.5, .5, .5, 1)
--> SUMMARY
local summaryBox = CreateFrame ("frame", nil, frame, "BackdropTemplate")
_detalhes.gump:ApplyStandardBackdrop (summaryBox)
summaryBox:SetPoint ("topleft", frame, "topleft", 10, -15)
summaryBox:SetSize (200, 160)
local y = -5
local padding = 16
local summary_text = summaryBox:CreateFontString (nil, "artwork", "GameFontNormal")
summary_text:SetText ("Summary")
summary_text :SetPoint ("topleft", summaryBox, "topleft", 5, y)
y = y - padding
--total damage received
local damagereceived = summaryBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
damagereceived:SetPoint ("topleft", summaryBox, "topleft", 15, y)
damagereceived:SetText ("Total Damage Taken:") --> localize-me
damagereceived:SetTextColor (.8, .8, .8, 1)
local damagereceived_amt = summaryBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
damagereceived_amt:SetPoint ("left", damagereceived, "right", 2, 0)
damagereceived_amt:SetText ("0")
tab.damagereceived = damagereceived_amt
y = y - padding
--per second
local damagepersecond = summaryBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
damagepersecond:SetPoint ("topleft", summaryBox, "topleft", 20, y)
damagepersecond:SetText ("Per Second:") --> localize-me
local damagepersecond_amt = summaryBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
damagepersecond_amt:SetPoint ("left", damagepersecond, "right", 2, 0)
damagepersecond_amt:SetText ("0")
tab.damagepersecond = damagepersecond_amt
y = y - padding
--total absorbs
local absorbstotal = summaryBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
absorbstotal:SetPoint ("topleft", summaryBox, "topleft", 15, y)
absorbstotal:SetText ("Total Absorbs:") --> localize-me
absorbstotal:SetTextColor (.8, .8, .8, 1)
local absorbstotal_amt = summaryBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
absorbstotal_amt:SetPoint ("left", absorbstotal, "right", 2, 0)
absorbstotal_amt:SetText ("0")
tab.absorbstotal = absorbstotal_amt
y = y - padding
--per second
local absorbstotalpersecond = summaryBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
absorbstotalpersecond:SetPoint ("topleft", summaryBox, "topleft", 20, y)
absorbstotalpersecond:SetText ("Per Second:") --> localize-me
local absorbstotalpersecond_amt = summaryBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
absorbstotalpersecond_amt:SetPoint ("left", absorbstotalpersecond, "right", 2, 0)
absorbstotalpersecond_amt:SetText ("0")
tab.absorbstotalpersecond = absorbstotalpersecond_amt
--> MELEE
y = -5
local meleeBox = CreateFrame ("frame", nil, frame, "BackdropTemplate")
_detalhes.gump:ApplyStandardBackdrop (meleeBox)
meleeBox:SetPoint ("topleft", summaryBox, "bottomleft", 0, -5)
meleeBox:SetSize (200, 160)
local melee_text = meleeBox:CreateFontString (nil, "artwork", "GameFontNormal")
melee_text:SetText ("Melee")
melee_text :SetPoint ("topleft", meleeBox, "topleft", 5, y)
y = y - padding
--dodge
local dodge = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
dodge:SetPoint ("topleft", meleeBox, "topleft", 15, y)
dodge:SetText ("Dodge:") --> localize-me
dodge:SetTextColor (.8, .8, .8, 1)
local dodge_amt = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
dodge_amt:SetPoint ("left", dodge, "right", 2, 0)
dodge_amt:SetText ("0")
tab.dodge = dodge_amt
y = y - padding
local dodgepersecond = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
dodgepersecond:SetPoint ("topleft", meleeBox, "topleft", 20, y)
dodgepersecond:SetText ("Per Second:") --> localize-me
local dodgepersecond_amt = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
dodgepersecond_amt:SetPoint ("left", dodgepersecond, "right", 2, 0)
dodgepersecond_amt:SetText ("0")
tab.dodgepersecond = dodgepersecond_amt
y = y - padding
-- parry
local parry = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
parry:SetPoint ("topleft", meleeBox, "topleft", 15, y)
parry:SetText ("Parry:") --> localize-me
parry:SetTextColor (.8, .8, .8, 1)
local parry_amt = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
parry_amt:SetPoint ("left", parry, "right", 2, 0)
parry_amt:SetText ("0")
tab.parry = parry_amt
y = y - padding
local parrypersecond = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
parrypersecond:SetPoint ("topleft", meleeBox, "topleft", 20, y)
parrypersecond:SetText ("Per Second:") --> localize-me
local parrypersecond_amt = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
parrypersecond_amt:SetPoint ("left", parrypersecond, "right", 2, 0)
parrypersecond_amt:SetText ("0")
tab.parrypersecond = parrypersecond_amt
y = y - padding
-- block
local block = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
block:SetPoint ("topleft", meleeBox, "topleft", 15, y)
block:SetText ("Block:") --> localize-me
block:SetTextColor (.8, .8, .8, 1)
local block_amt = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
block_amt:SetPoint ("left", block, "right", 2, 0)
block_amt:SetText ("0")
tab.block = block_amt
y = y - padding
local blockpersecond = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
blockpersecond:SetPoint ("topleft", meleeBox, "topleft", 20, y)
blockpersecond:SetText ("Per Second:") --> localize-me
local blockpersecond_amt = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
blockpersecond_amt:SetPoint ("left", blockpersecond, "right", 2, 0)
blockpersecond_amt:SetText ("0")
tab.blockpersecond = blockpersecond_amt
y = y - padding
local blockeddamage = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
blockeddamage:SetPoint ("topleft", meleeBox, "topleft", 20, y)
blockeddamage:SetText ("Damage Blocked:") --> localize-me
local blockeddamage_amt = meleeBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
blockeddamage_amt:SetPoint ("left", blockeddamage, "right", 2, 0)
blockeddamage_amt:SetText ("0")
tab.blockeddamage_amt = blockeddamage_amt
--> ABSORBS
y = -5
local absorbsBox = CreateFrame ("frame", nil, frame, "BackdropTemplate")
_detalhes.gump:ApplyStandardBackdrop (absorbsBox)
absorbsBox:SetPoint ("topleft", summaryBox, "topright", 10, 0)
absorbsBox:SetSize (200, 160)
local absorb_text = absorbsBox:CreateFontString (nil, "artwork", "GameFontNormal")
absorb_text:SetText ("Absorb")
absorb_text :SetPoint ("topleft", absorbsBox, "topleft", 5, y)
y = y - padding
--full absorbs
local fullsbsorbed = absorbsBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
fullsbsorbed:SetPoint ("topleft", absorbsBox, "topleft", 20, y)
fullsbsorbed:SetText ("Full Absorbs:") --> localize-me
fullsbsorbed:SetTextColor (.8, .8, .8, 1)
local fullsbsorbed_amt = absorbsBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
fullsbsorbed_amt:SetPoint ("left", fullsbsorbed, "right", 2, 0)
fullsbsorbed_amt:SetText ("0")
tab.fullsbsorbed = fullsbsorbed_amt
y = y - padding
--partially absorbs
local partiallyabsorbed = absorbsBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
partiallyabsorbed:SetPoint ("topleft", absorbsBox, "topleft", 20, y)
partiallyabsorbed:SetText ("Partially Absorbed:") --> localize-me
partiallyabsorbed:SetTextColor (.8, .8, .8, 1)
local partiallyabsorbed_amt = absorbsBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
partiallyabsorbed_amt:SetPoint ("left", partiallyabsorbed, "right", 2, 0)
partiallyabsorbed_amt:SetText ("0")
tab.partiallyabsorbed = partiallyabsorbed_amt
y = y - padding
--partially absorbs per second
local partiallyabsorbedpersecond = absorbsBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
partiallyabsorbedpersecond:SetPoint ("topleft", absorbsBox, "topleft", 25, y)
partiallyabsorbedpersecond:SetText ("Average:") --> localize-me
local partiallyabsorbedpersecond_amt = absorbsBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
partiallyabsorbedpersecond_amt:SetPoint ("left", partiallyabsorbedpersecond, "right", 2, 0)
partiallyabsorbedpersecond_amt:SetText ("0")
tab.partiallyabsorbedpersecond = partiallyabsorbedpersecond_amt
y = y - padding
--no absorbs
local noabsorbs = absorbsBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
noabsorbs:SetPoint ("topleft", absorbsBox, "topleft", 20, y)
noabsorbs:SetText ("No Absorption:") --> localize-me
noabsorbs:SetTextColor (.8, .8, .8, 1)
local noabsorbs_amt = absorbsBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
noabsorbs_amt:SetPoint ("left", noabsorbs, "right", 2, 0)
noabsorbs_amt:SetText ("0")
tab.noabsorbs = noabsorbs_amt
--> HEALING
y = -5
local healingBox = CreateFrame ("frame", nil, frame,"BackdropTemplate")
_detalhes.gump:ApplyStandardBackdrop (healingBox)
healingBox:SetPoint ("topleft", absorbsBox, "bottomleft", 0, -5)
healingBox:SetSize (200, 160)
local healing_text = healingBox:CreateFontString (nil, "artwork", "GameFontNormal")
healing_text:SetText ("Healing")
healing_text :SetPoint ("topleft", healingBox, "topleft", 5, y)
y = y - padding
--self healing
local selfhealing = healingBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
selfhealing:SetPoint ("topleft", healingBox, "topleft", 20, y)
selfhealing:SetText ("Self Healing:") --> localize-me
selfhealing:SetTextColor (.8, .8, .8, 1)
local selfhealing_amt = healingBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
selfhealing_amt:SetPoint ("left", selfhealing, "right", 2, 0)
selfhealing_amt:SetText ("0")
tab.selfhealing = selfhealing_amt
y = y - padding
--self healing per second
local selfhealingpersecond = healingBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
selfhealingpersecond:SetPoint ("topleft", healingBox, "topleft", 25, y)
selfhealingpersecond:SetText ("Per Second:") --> localize-me
local selfhealingpersecond_amt = healingBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
selfhealingpersecond_amt:SetPoint ("left", selfhealingpersecond, "right", 2, 0)
selfhealingpersecond_amt:SetText ("0")
tab.selfhealingpersecond = selfhealingpersecond_amt
y = y - padding
for i = 1, 5 do
local healer = healingBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
healer:SetPoint ("topleft", healingBox, "topleft", 20, y + ((i-1)*15)*-1)
healer:SetText ("healer name:") --> localize-me
healer:SetTextColor (.8, .8, .8, 1)
local healer_amt = healingBox:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
healer_amt:SetPoint ("left", healer, "right", 2, 0)
healer_amt:SetText ("0")
tab ["healer" .. i] = {healer, healer_amt}
end
--SPELLS
y = -5
local spellsBox = CreateFrame ("frame", nil, frame,"BackdropTemplate")
_detalhes.gump:ApplyStandardBackdrop (spellsBox)
spellsBox:SetPoint ("topleft", absorbsBox, "topright", 10, 0)
spellsBox:SetSize (346, 160 * 2 + 5)
local spells_text = spellsBox:CreateFontString (nil, "artwork", "GameFontNormal")
spells_text:SetText ("Spells")
spells_text :SetPoint ("topleft", spellsBox, "topleft", 5, y)
local frame_tooltip_onenter = function (self)
if (self.spellid) then
--self:SetBackdrop ({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 512, edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", edgeSize = 8})
self:SetBackdropColor (.5, .5, .5, .5)
GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT")
_detalhes:GameTooltipSetSpellByID (self.spellid)
GameTooltip:Show()
end
end
local frame_tooltip_onleave = function (self)
if (self.spellid) then
self:SetBackdropColor (.5, .5, .5, .1)
GameTooltip:Hide()
end
end
y = y - padding
for i = 1, 40 do
local frame_tooltip = CreateFrame ("frame", nil, spellsBox,"BackdropTemplate")
frame_tooltip:SetPoint ("topleft", spellsBox, "topleft", 5, y + ((i-1)*17)*-1)
frame_tooltip:SetSize (spellsBox:GetWidth()-10, 16)
frame_tooltip:SetScript ("OnEnter", frame_tooltip_onenter)
frame_tooltip:SetScript ("OnLeave", frame_tooltip_onleave)
frame_tooltip:Hide()
frame_tooltip:SetBackdrop ({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 512})
frame_tooltip:SetBackdropColor (.5, .5, .5, .1)
local icon = frame_tooltip:CreateTexture (nil, "artwork")
icon:SetSize (14, 14)
icon:SetPoint ("left", frame_tooltip, "left")
local spell = frame_tooltip:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
spell:SetPoint ("left", icon, "right", 2, 0)
spell:SetText ("spell name:") --> localize-me
spell:SetTextColor (.8, .8, .8, 1)
local spell_amt = frame_tooltip:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
spell_amt:SetPoint ("left", spell, "right", 2, 0)
spell_amt:SetText ("0")
tab ["spell" .. i] = {spell, spell_amt, icon, frame_tooltip}
end
end
local getpercent = function (value, lastvalue, elapsed_time, inverse)
local ps = value / elapsed_time
local diff
if (lastvalue == 0) then
diff = "+0%"
else
if (ps >= lastvalue) then
local d = ps - lastvalue
d = d / lastvalue * 100
d = _math_floor (math.abs (d))
if (d > 999) then
d = "> 999"
end
if (inverse) then
diff = "|c" .. green .. "+" .. d .. "%|r"
else
diff = "|c" .. red .. "+" .. d .. "%|r"
end
else
local d = lastvalue - ps
d = d / ps * 100
d = _math_floor (math.abs (d))
if (d > 999) then
d = "> 999"
end
if (inverse) then
diff = "|c" .. red .. "-" .. d .. "%|r"
else
diff = "|c" .. green .. "-" .. d .. "%|r"
end
end
end
return ps, diff
end
local avoidance_fill = function (tab, player, combat)
local elapsed_time = combat:GetCombatTime()
local last_combat = combat.previous_combat
if (not last_combat or not last_combat [1]) then
last_combat = combat
end
local last_actor = last_combat (1, player.nome)
local n = player.nome
if (n:find ("-")) then
n = n:gsub (("-.*"), "")
end
--> damage taken
local playerdamage = combat (1, player.nome)
if (not playerdamage.avoidance) then
playerdamage.avoidance = _detalhes:CreateActorAvoidanceTable()
end
local damagetaken = playerdamage.damage_taken
local last_damage_received = 0
if (last_actor) then
last_damage_received = last_actor.damage_taken / last_combat:GetCombatTime()
end
tab.damagereceived:SetText (_detalhes:ToK2 (damagetaken))
local ps, diff = getpercent (damagetaken, last_damage_received, elapsed_time)
tab.damagepersecond:SetText (_detalhes:comma_value (_math_floor (ps)) .. " (" .. diff .. ")")
--> absorbs
local totalabsorbs = playerdamage.avoidance.overall.ABSORB_AMT
local incomingtotal = damagetaken + totalabsorbs
local last_total_absorbs = 0
if (last_actor and last_actor.avoidance) then
last_total_absorbs = last_actor.avoidance.overall.ABSORB_AMT / last_combat:GetCombatTime()
end
tab.absorbstotal:SetText (_detalhes:ToK2 (totalabsorbs) .. " (" .. _math_floor (totalabsorbs / incomingtotal * 100) .. "%)")
local ps, diff = getpercent (totalabsorbs, last_total_absorbs, elapsed_time, true)
tab.absorbstotalpersecond:SetText (_detalhes:comma_value (_math_floor (ps)) .. " (" .. diff .. ")")
--> dodge
local totaldodge = playerdamage.avoidance.overall.DODGE
tab.dodge:SetText (totaldodge)
local last_total_dodge = 0
if (last_actor and last_actor.avoidance) then
last_total_dodge = last_actor.avoidance.overall.DODGE / last_combat:GetCombatTime()
end
local ps, diff = getpercent (totaldodge, last_total_dodge, elapsed_time, true)
tab.dodgepersecond:SetText ( string.format ("%.2f", ps) .. " (" .. diff .. ")")
--> parry
local totalparry = playerdamage.avoidance.overall.PARRY
tab.parry:SetText (totalparry)
local last_total_parry = 0
if (last_actor and last_actor.avoidance) then
last_total_parry = last_actor.avoidance.overall.PARRY / last_combat:GetCombatTime()
end
local ps, diff = getpercent (totalparry, last_total_parry, elapsed_time, true)
tab.parrypersecond:SetText (string.format ("%.2f", ps) .. " (" .. diff .. ")")
--> block
local totalblock = playerdamage.avoidance.overall.BLOCKED_HITS
tab.block:SetText (totalblock)
local last_total_block = 0
if (last_actor and last_actor.avoidance) then
last_total_block = last_actor.avoidance.overall.BLOCKED_HITS / last_combat:GetCombatTime()
end
local ps, diff = getpercent (totalblock, last_total_block, elapsed_time, true)
tab.blockpersecond:SetText (string.format ("%.2f", ps) .. " (" .. diff .. ")")
tab.blockeddamage_amt:SetText (_detalhes:ToK2 (playerdamage.avoidance.overall.BLOCKED_AMT))
--> absorb
local fullabsorb = playerdamage.avoidance.overall.FULL_ABSORBED
local halfabsorb = playerdamage.avoidance.overall.PARTIAL_ABSORBED
local halfabsorb_amt = playerdamage.avoidance.overall.PARTIAL_ABSORB_AMT
local noabsorb = playerdamage.avoidance.overall.FULL_HIT
tab.fullsbsorbed:SetText (fullabsorb)
tab.partiallyabsorbed:SetText (halfabsorb)
tab.noabsorbs:SetText (noabsorb)
if (halfabsorb_amt > 0) then
local average = halfabsorb_amt / halfabsorb --tenho o average
local last_average = 0
if (last_actor and last_actor.avoidance and last_actor.avoidance.overall.PARTIAL_ABSORBED > 0) then
last_average = last_actor.avoidance.overall.PARTIAL_ABSORB_AMT / last_actor.avoidance.overall.PARTIAL_ABSORBED
end
local ps, diff = getpercent (halfabsorb_amt, last_average, halfabsorb, true)
tab.partiallyabsorbedpersecond:SetText (_detalhes:comma_value (_math_floor (ps)) .. " (" .. diff .. ")")
else
tab.partiallyabsorbedpersecond:SetText ("0.00 (0%)")
end
--> healing
local actor_heal = combat (2, player.nome)
if (not actor_heal) then
tab.selfhealing:SetText ("0")
tab.selfhealingpersecond:SetText ("0 (0%)")
else
local last_actor_heal = last_combat (2, player.nome)
local este_alvo = actor_heal.targets [player.nome]
if (este_alvo) then
local heal_total = este_alvo
tab.selfhealing:SetText (_detalhes:ToK2 (heal_total))
if (last_actor_heal) then
local este_alvo = last_actor_heal.targets [player.nome]
if (este_alvo) then
local heal = este_alvo
local last_heal = heal / last_combat:GetCombatTime()
local ps, diff = getpercent (heal_total, last_heal, elapsed_time, true)
tab.selfhealingpersecond:SetText (_detalhes:comma_value (_math_floor (ps)) .. " (" .. diff .. ")")
else
tab.selfhealingpersecond:SetText ("0 (0%)")
end
else
tab.selfhealingpersecond:SetText ("0 (0%)")
end
else
tab.selfhealing:SetText ("0")
tab.selfhealingpersecond:SetText ("0 (0%)")
end
-- taken from healer
local heal_from = actor_heal.healing_from
local myReceivedHeal = {}
for actorName, _ in pairs (heal_from) do
local thisActor = combat (2, actorName)
local targets = thisActor.targets --> targets is a container with target classes
local amount = targets [player.nome] or 0
myReceivedHeal [#myReceivedHeal+1] = {actorName, amount, thisActor.classe}
end
table.sort (myReceivedHeal, _detalhes.Sort2) --> Sort2 sort by second index
for i = 1, 5 do
local label1, label2 = unpack (tab ["healer" .. i])
if (myReceivedHeal [i]) then
local name = myReceivedHeal [i][1]
name = _detalhes:GetOnlyName (name)
--name = _detalhes:RemoveOwnerName (name)
label1:SetText (name .. ":")
local class = myReceivedHeal [i][3]
if (class) then
local c = RAID_CLASS_COLORS [class]
if (c) then
label1:SetTextColor (c.r, c.g, c.b)
end
else
label1:SetTextColor (.8, .8, .8, 1)
end
local last_actor = last_combat (2, myReceivedHeal [i][1])
if (last_actor) then
local targets = last_actor.targets
local amount = targets [player.nome] or 0
if (amount) then
local last_heal = amount
local ps, diff = getpercent (myReceivedHeal[i][2], last_heal, 1, true)
label2:SetText ( _detalhes:ToK2 (myReceivedHeal[i][2] or 0) .. " (" .. diff .. ")")
else
label2:SetText ( _detalhes:ToK2 (myReceivedHeal[i][2] or 0))
end
else
label2:SetText ( _detalhes:ToK2 (myReceivedHeal[i][2] or 0))
end
else
label1:SetText ("-- -- -- --")
label1:SetTextColor (.8, .8, .8, 1)
label2:SetText ("")
end
end
end
--> Spells
--> cooldowns
local index_used = 1
local misc_player = combat (4, player.nome)
local encounter_time = combat:GetCombatTime()
if (misc_player) then
if (misc_player.cooldowns_defensive_spells) then
local minha_tabela = misc_player.cooldowns_defensive_spells._ActorTable
local buffUpdateSpells = misc_player.buff_uptime_spells -- ._ActorTable
local cooldowns_usados = {}
for _spellid, _tabela in pairs (minha_tabela) do
cooldowns_usados [#cooldowns_usados+1] = {_spellid, _tabela.counter}
end
if (#cooldowns_usados > 0) then
table.sort (cooldowns_usados, _detalhes.Sort2)
for i = 1, #cooldowns_usados do
local esta_habilidade = cooldowns_usados[i]
local nome_magia, _, icone_magia = _GetSpellInfo (esta_habilidade[1])
local label1, label2, icon1, framebg = unpack (tab ["spell" .. index_used])
framebg.spellid = esta_habilidade[1]
framebg:Show()
--> attempt to get the buff update
local spellInfo = buffUpdateSpells:GetSpell (framebg.spellid)
if (spellInfo) then
label2:SetText (esta_habilidade[2] .. " (" .. floor (spellInfo.uptime / encounter_time * 100) .. "% uptime)")
else
label2:SetText (esta_habilidade[2])
end
--> update the line
label1:SetText (nome_magia .. ":")
icon1:SetTexture (icone_magia)
icon1:SetTexCoord (0.0625, 0.953125, 0.0625, 0.953125)
index_used = index_used + 1
end
end
end
end
local cooldownInfo = DetailsFramework.CooldownsInfo
--> see cooldowns that other players used in this actor
for playerName, _ in pairs (combat.raid_roster) do
if (playerName ~= player.nome) then
local miscPlayer = combat (4, playerName)
if (miscPlayer) then
if (miscPlayer.cooldowns_defensive_spells) then
local cooldowns = miscPlayer.cooldowns_defensive_spells
for spellID, spellTable in cooldowns:ListActors() do
local targets = spellTable.targets
if (targets) then
for targetName, amountCasted in pairs (targets) do
if (targetName == player.nome) then
local spellName, _, spellIcon = _GetSpellInfo (spellID)
local label1, label2, icon1, framebg = unpack (tab ["spell" .. index_used])
framebg.spellid = spellID
framebg:Show()
--> attempt to get the buff update
local info = cooldownInfo [spellID]
local cooldownDuration = info and info.duration or 0
if (cooldownDuration > 0) then
label2:SetText (amountCasted .. " (" .. "|cFFFFFF00" .. miscPlayer.nome .. "|r " .. floor (cooldownDuration / encounter_time * 100) .. "% uptime)")
else
label2:SetText (amountCasted)
end
--> update the line
label1:SetText (spellName .. ":")
icon1:SetTexture (spellIcon)
icon1:SetTexCoord (0.0625, 0.953125, 0.0625, 0.953125)
index_used = index_used + 1
end
end
end
end
end
end
end
end
for i = index_used, 40 do
local label1, label2, icon1, framebg = unpack (tab ["spell" .. i])
framebg.spellid = nil
framebg:Hide()
label1:SetText ("")
label2:SetText ("")
icon1:SetTexture (nil)
end
--> habilidade usada para interromper
--[[
--]]
end
local iconTableAvoidance = {
texture = [[Interface\AddOns\Details\images\icons]],
--coords = {363/512, 381/512, 0/512, 17/512},
coords = {384/512, 402/512, 19/512, 38/512},
width = 16,
height = 16,
}
_detalhes:CreatePlayerDetailsTab ("Avoidance", --[1] tab name
Loc ["STRING_INFO_TAB_AVOIDANCE"], --[2] localized name
function (tabOBject, playerObject) --[3] condition
if (playerObject.isTank) then
return true
else
return false
end
end,
avoidance_fill, --[4] fill function
nil, --[5] onclick
avoidance_create, --[6] oncreate
iconTableAvoidance --[7] icon
)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> ~auras
local auras_tab_create = function (tab, frame)
local DF = _detalhes.gump
local scroll_line_amount = 22
local scroll_line_height = 19
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")
_detalhes: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)
_detalhes: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 = _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" .. 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
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)
tinsert (newAuraTable, {spellIcon, spellName, spellObject.uptime, spellObject.appliedamt, spellObject.refreshamt, spellObject.uptime/combatTime*100, spellID = spellID})
end
end
table.sort (newAuraTable, _detalhes.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)
tinsert (newAuraTable, {spellIcon, spellName, spellObject.uptime, spellObject.appliedamt, spellObject.refreshamt, spellObject.uptime/combatTime*100, spellID = spellID})
end
end
table.sort (newAuraTable, _detalhes.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,
}
_detalhes: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
)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> ~compare
local target_texture = [[Interface\MINIMAP\TRACKING\Target]]
local empty_text = ""
local plus = red .. "-"
local minor = green .. "+"
local bar_color = {.5, .5, .5, .4} -- bar of the second and 3rd player
local bar_color_on_enter = {.9, .9, .9, .9}
local frame_backdrop = {edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]], tileSize = 64, tile = true}
local frame_backdrop_color = {0, 0, 0, 0.35}
local frame_backdrop_border_color = {0, 0, 0, 0}
local spell_compare_frame_width = {298, 225, 226}
local spell_compare_frame_height = 200
local target_compare_frame_height = 142
local xLocation = 2
local yLocation = -20
local targetBars = 9
local fill_compare_targets = function (self, player, other_players, target_pool)
local offset = FauxScrollFrame_GetOffset (self)
local frame2 = DetailsPlayerComparisonTarget2
local frame3 = DetailsPlayerComparisonTarget3
local total = player.total_without_pet
if (not target_pool [1]) then
for i = 1, targetBars do
local bar = self.bars [i]
local bar_2 = frame2.bars [i]
local bar_3 = frame3.bars [i]
bar [1]:SetTexture (nil)
bar [2].lefttext:SetText (empty_text)
bar [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar [2].righttext:SetText ("")
bar [2].righttext2:SetText ("")
bar [2]:SetValue (0)
bar [2]:SetBackdropColor (1, 1, 1, 0)
bar [3][4] = nil
bar_2 [1]:SetTexture (nil)
bar_2 [2].lefttext:SetText (empty_text)
bar_2 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_2 [2].righttext:SetText ("")
bar_2 [2].righttext2:SetText ("")
bar_2 [2]:SetValue (0)
bar_2 [2]:SetBackdropColor (1, 1, 1, 0)
bar_2 [3][4] = nil
bar_3 [1]:SetTexture (nil)
bar_3 [2].lefttext:SetText (empty_text)
bar_3 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_3 [2].righttext:SetText ("")
bar_3 [2].righttext2:SetText ("")
bar_3 [2]:SetValue (0)
bar_3 [2]:SetBackdropColor (1, 1, 1, 0)
bar_3 [3][4] = nil
end
return
end
local top = target_pool [1] [2]
--player 2
local player_2 = other_players [1]
local player_2_target_pool
local player_2_top
if (player_2) then
local player_2_target = player_2.targets
player_2_target_pool = {}
for target_name, amount in _pairs (player_2_target) do
player_2_target_pool [#player_2_target_pool+1] = {target_name, amount}
end
table.sort (player_2_target_pool, _detalhes.Sort2)
if (player_2_target_pool [1]) then
player_2_top = player_2_target_pool [1] [2]
else
player_2_top = 0
end
--1 skill,
end
--player 3
local player_3 = other_players [2]
local player_3_target_pool
local player_3_top
if (player_3) then
local player_3_target = player_3.targets
player_3_target_pool = {}
for target_name, amount in _pairs (player_3_target) do
player_3_target_pool [#player_3_target_pool+1] = {target_name, amount}
end
table.sort (player_3_target_pool, _detalhes.Sort2)
if (player_3_target_pool [1]) then
player_3_top = player_3_target_pool [1] [2]
else
player_3_top = 0
end
end
for i = 1, targetBars do
local bar = self.bars [i]
local bar_2 = frame2.bars [i]
local bar_3 = frame3.bars [i]
local index = i + offset
local data = target_pool [index]
if (data) then --[name] [total]
local target_name = data [1]
bar [1]:SetTexture (target_texture)
bar [1]:SetDesaturated (true)
bar [1]:SetAlpha (.7)
bar [2].lefttext:SetText (index .. ". " .. target_name)
bar [2].lefttext:SetTextColor (1, 1, 1, 1)
bar [2].righttext:SetText (_detalhes:ToK2Min (data [2])) -- .. " (" .. _math_floor (data [2] / total * 100) .. "%)"
bar [2]:SetValue (data [2] / top * 100)
--bar [2]:SetValue (100)
bar [3][1] = player.nome --name
bar [3][2] = target_name
bar [3][3] = data [2] --total
bar [3][4] = player
-- 2
if (player_2) then
local player_2_target_total
local player_2_target_index
for index, t in _ipairs (player_2_target_pool) do
if (t[1] == target_name) then
player_2_target_total = t[2]
player_2_target_index = index
break
end
end
if (player_2_target_total) then
bar_2 [1]:SetTexture (target_texture)
bar_2 [1]:SetDesaturated (true)
bar_2 [1]:SetAlpha (.7)
bar_2 [2].lefttext:SetText (player_2_target_index .. ". " .. target_name)
bar_2 [2].lefttext:SetTextColor (1, 1, 1, 1)
if (data [2] > player_2_target_total) then
local diff = data [2] - player_2_target_total
local up = diff / player_2_target_total * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
bar_2 [2].righttext2:SetText (_detalhes:ToK2Min (player_2_target_total))
bar_2 [2].righttext:SetText (" |c" .. minor .. up .. "%|r")
else
local diff = player_2_target_total - data [2]
local down = diff / data [2] * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
bar_2 [2].righttext2:SetText (_detalhes:ToK2Min (player_2_target_total))
bar_2 [2].righttext:SetText (" |c" .. plus .. down .. "%|r")
end
--bar_2 [2]:SetValue (player_2_target_total / player_2_top * 100)
bar_2 [2]:SetValue (100)
bar_2 [3][1] = player_2.nome
bar_2 [3][2] = target_name
bar_2 [3][3] = player_2_target_total
bar_2 [3][4] = player_2
else
bar_2 [1]:SetTexture (nil)
bar_2 [2].lefttext:SetText (empty_text)
bar_2 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_2 [2].righttext:SetText ("")
bar_2 [2].righttext2:SetText ("")
bar_2 [2]:SetValue (0)
bar_2 [2]:SetBackdropColor (1, 1, 1, 0)
bar_2 [3][4] = nil
end
else
bar_2 [1]:SetTexture (nil)
bar_2 [2].lefttext:SetText (empty_text)
bar_2 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_2 [2].righttext:SetText ("")
bar_2 [2].righttext2:SetText ("")
bar_2 [2]:SetValue (0)
bar_2 [2]:SetBackdropColor (1, 1, 1, 0)
bar_2 [3][4] = nil
end
-- 3
if (player_3) then
local player_3_target_total
local player_3_target_index
for index, t in _ipairs (player_3_target_pool) do
if (t[1] == target_name) then
player_3_target_total = t[2]
player_3_target_index = index
break
end
end
if (player_3_target_total) then
bar_3 [1]:SetTexture (target_texture)
bar_3 [1]:SetDesaturated (true)
bar_3 [1]:SetAlpha (.7)
bar_3 [2].lefttext:SetText (player_3_target_index .. ". " .. target_name)
bar_3 [2].lefttext:SetTextColor (1, 1, 1, 1)
if (data [2] > player_3_target_total) then
local diff = data [2] - player_3_target_total
local up = diff / player_3_target_total * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
bar_3 [2].righttext2:SetText (_detalhes:ToK2Min (player_3_target_total))
bar_3 [2].righttext:SetText (" |c" .. minor .. up .. "%|r")
else
local diff = player_3_target_total - data [2]
local down = diff / data [2] * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
bar_3 [2].righttext:SetText (_detalhes:ToK2Min (player_3_target_total))
bar_3 [2].righttext:SetText (" |c" .. plus .. down .. "%|r")
end
--bar_3 [2]:SetValue (player_3_target_total / player_3_top * 100)
bar_3 [2]:SetValue (100)
bar_3 [3][1] = player_3.nome
bar_3 [3][2] = target_name
bar_3 [3][3] = player_3_target_total
bar_3 [3][4] = player_3
else
bar_3 [1]:SetTexture (nil)
bar_3 [2].lefttext:SetText (empty_text)
bar_3 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_3 [2].righttext:SetText ("")
bar_3 [2].righttext2:SetText ("")
bar_3 [2]:SetValue (0)
bar_3 [2]:SetBackdropColor (1, 1, 1, 0)
bar_3 [3][4] = nil
end
else
bar_3 [1]:SetTexture (nil)
bar_3 [2].lefttext:SetText (empty_text)
bar_3 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_3 [2].righttext:SetText ("")
bar_3 [2].righttext2:SetText ("")
bar_3 [2]:SetValue (0)
bar_3 [2]:SetBackdropColor (1, 1, 1, 0)
bar_3 [3][4] = nil
end
else
bar [1]:SetTexture (nil)
bar [2].lefttext:SetText (empty_text)
bar [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar [2].righttext:SetText ("")
bar [2].righttext2:SetText ("")
bar [2]:SetValue (0)
bar [2]:SetBackdropColor (1, 1, 1, 0)
bar [3][4] = nil
bar_2 [1]:SetTexture (nil)
bar_2 [2].lefttext:SetText (empty_text)
bar_2 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_2 [2].righttext:SetText ("")
bar_2 [2].righttext2:SetText ("")
bar_2 [2]:SetValue (0)
bar_2 [2]:SetBackdropColor (1, 1, 1, 0)
bar_2 [3][4] = nil
bar_3 [1]:SetTexture (nil)
bar_3 [2].lefttext:SetText (empty_text)
bar_3 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_3 [2].righttext:SetText ("")
bar_3 [2].righttext2:SetText ("")
bar_3 [2]:SetValue (0)
bar_3 [2]:SetBackdropColor (1, 1, 1, 0)
bar_3 [3][4] = nil
end
end
end
local fill_compare_actors = function (self, player, other_players)
--main player skills
local spells_sorted = {}
for spellid, spelltable in _pairs (player.spells._ActorTable) do
spells_sorted [#spells_sorted+1] = {spelltable, spelltable.total}
end
--main player pets
for petIndex, petName in _ipairs (player:Pets()) do
local petActor = info.instancia.showing [player.tipo]:PegarCombatente (nil, petName)
if (petActor) then
for _spellid, _skill in _pairs (petActor:GetActorSpells()) do
spells_sorted [#spells_sorted+1] = {_skill, _skill.total, petName}
end
end
end
table.sort (spells_sorted, _detalhes.Sort2)
self.player = player:Name()
local offset = FauxScrollFrame_GetOffset (self)
local total = player.total_without_pet
local top = spells_sorted [1] and spells_sorted [1] [2] or 0
local frame2 = DetailsPlayerComparisonBox2
local frame3 = DetailsPlayerComparisonBox3
local player_2_total
local player_2_spells_sorted
local player_2_top
local player_2_spell_info
if (other_players [1]) then
frame2.player = other_players [1]:Name()
player_2_total = other_players [1].total_without_pet
player_2_spells_sorted = {}
--player 2 spells
for spellid, spelltable in _pairs (other_players [1].spells._ActorTable) do
player_2_spells_sorted [#player_2_spells_sorted+1] = {spelltable, spelltable.total}
end
--player 2 pets
for petIndex, petName in _ipairs (other_players [1]:Pets()) do
local petActor = info.instancia.showing [player.tipo]:PegarCombatente (nil, petName)
if (petActor) then
for _spellid, _skill in _pairs (petActor:GetActorSpells()) do
player_2_spells_sorted [#player_2_spells_sorted+1] = {_skill, _skill.total, petName}
end
end
end
table.sort (player_2_spells_sorted, _detalhes.Sort2)
player_2_top = (player_2_spells_sorted [1] and player_2_spells_sorted [1] [2]) or 0
--se no existir uma magia no jogador e o jogador tiver um pet, ele no vai encontrar um valor em [1] e dar
-- ~pet
player_2_spell_info = {}
for index, spelltable in _ipairs (player_2_spells_sorted) do
player_2_spell_info [spelltable[1].id] = index
end
frame2.NoPLayersToShow:Hide()
frame3.NoPLayersToShow:Hide()
else
frame2.NoPLayersToShow:Show()
frame3.NoPLayersToShow:Show()
end
local player_3_total
local player_3_spells_sorted
local player_3_spell_info
local player_3_top
if (other_players [2]) then
frame3.player = other_players [2] and other_players [2]:Name()
player_3_total = other_players [2] and other_players [2].total_without_pet
player_3_spells_sorted = {}
player_3_spell_info = {}
if (other_players [2]) then
--player 3 spells
for spellid, spelltable in _pairs (other_players [2].spells._ActorTable) do
player_3_spells_sorted [#player_3_spells_sorted+1] = {spelltable, spelltable.total}
end
--player 3 pets
for petIndex, petName in _ipairs (other_players [2]:Pets()) do
local petActor = info.instancia.showing [player.tipo]:PegarCombatente (nil, petName)
if (petActor) then
for _spellid, _skill in _pairs (petActor:GetActorSpells()) do
player_3_spells_sorted [#player_3_spells_sorted+1] = {_skill, _skill.total, petName}
end
end
end
table.sort (player_3_spells_sorted, _detalhes.Sort2)
player_3_top = player_3_spells_sorted [1] [2]
for index, spelltable in _ipairs (player_3_spells_sorted) do
player_3_spell_info [spelltable[1].id] = index
end
end
end
for i = 1, 12 do
local bar = self.bars [i]
local index = i + offset
--main player spells
local data = spells_sorted [index]
if (data) then --if exists
--main player - seta no primeiro box
local spellid = data [1].id
local name, _, icon = _GetSpellInfo (spellid)
if (not name) then
--no spell found? - tbc problem
return
end
local petName = data [3]
bar [1]:SetTexture (icon) --bar[1] = spellicon bar[2] = statusbar
bar [1]:SetTexCoord (unpack (IconTexCoord)) --bar[1] = spellicon bar[2] = statusbar
bar [2]:SetBackdropColor (1, 1, 1, 0.1)
if (petName) then
bar [2].lefttext:SetText (index .. ". " .. name .. " (|cFFCCBBBB" .. petName:gsub (" <.*", "") .. "|r)")
else
bar [2].lefttext:SetText (index .. ". " .. name)
end
bar [2].lefttext:SetTextColor (1, 1, 1, 1)
bar [2].righttext:SetText (_detalhes:ToK2Min (data [2])) -- .. " (" .. _math_floor (data [2] / total * 100) .. "%)"
bar [2]:SetValue (data [2] / top * 100)
--bar [2]:SetValue (100)
bar [3][1] = data [1].counter --tooltip hits
bar [3][2] = data [2] / data [1].counter --tooltip average
bar [3][3] = _math_floor (data [1].c_amt / data [1].counter * 100) --tooltip critical
bar [3][4] = spellid
--player 2
local player_2 = other_players [1]
local spell = player_2 and player_2.spells._ActorTable [spellid]
if (not spell and petName and player_2) then
for _petIndex, _petName in _ipairs (player_2:Pets()) do
if (_petName:gsub (" <.*", "") == petName:gsub (" <.*", "")) then
local petActor = info.instancia.showing [player.tipo]:PegarCombatente (nil, _petName)
spell = petActor and petActor.spells._ActorTable [spellid]
name = name .. " (|cFFCCBBBB" .. _petName:gsub (" <.*", "") .. "|r)"
end
end
end
local bar_2 = frame2 and frame2.bars [i]
-- ~compare
if (spell) then
bar_2 [1]:SetTexture (icon)
bar_2 [1]:SetTexCoord (unpack (IconTexCoord)) --bar[1] = spellicon bar[2] = statusbar
bar_2 [2].lefttext:SetText (player_2_spell_info [spellid] .. ". " .. name)
bar_2 [2].lefttext:SetTextColor (1, 1, 1, 1)
bar_2 [2]:SetStatusBarColor (unpack (bar_color))
bar_2 [2]:SetBackdropColor (1, 1, 1, 0.1)
if (spell.total == 0 and data [2] == 0) then
bar_2 [2].righttext2:SetText ("0")
bar_2 [2].righttext:SetText ("+0%")
elseif (data [2] > spell.total) then
if (spell.total > 0) then
local diff = data [2] - spell.total
local up = diff / spell.total * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
bar_2 [2].righttext2:SetText (_detalhes:ToK2Min (spell.total))
bar_2 [2].righttext:SetText (" |c" .. minor .. up .. "%|r")
else
bar_2 [2].righttext2:SetText ("0")
bar_2 [2].righttext:SetText ("+0%")
end
else
if (data [2] > 0) then
local diff = spell.total - data [2]
local down = diff / data [2] * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
bar_2 [2].righttext2:SetText (_detalhes:ToK2Min (spell.total))
bar_2 [2].righttext:SetText (" |c" .. plus .. down .. "%|r")
else
bar_2 [2].righttext2:SetText ("0")
bar_2 [2].righttext:SetText ("+0%")
end
end
bar_2 [2]:SetValue (spell.total / player_2_top * 100)
bar_2 [2]:SetValue (100)
bar_2 [3][1] = spell.counter --tooltip hits
bar_2 [3][2] = spell.total / spell.counter --tooltip average
bar_2 [3][3] = _math_floor (spell.c_amt / spell.counter * 100) --tooltip critical
bar_2 [2]:SetBackdropColor (1, 1, 1, 0)
else
bar_2 [1]:SetTexture (nil)
bar_2 [2].lefttext:SetText (empty_text)
bar_2 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_2 [2].righttext:SetText ("")
bar_2 [2].righttext2:SetText ("")
bar_2 [2]:SetValue (0)
bar_2 [2]:SetBackdropColor (1, 1, 1, 0)
end
--player 3
local bar_3 = frame3 and frame3.bars [i]
if (player_3_total) then
local player_3 = other_players [2]
local spell = player_3 and player_3.spells._ActorTable [spellid]
if (not spell and petName and player_3) then
for _petIndex, _petName in _ipairs (player_3:Pets()) do
if (_petName:gsub (" <.*", "") == petName:gsub (" <.*", "")) then
local petActor = info.instancia.showing [player.tipo]:PegarCombatente (nil, _petName)
spell = petActor and petActor.spells._ActorTable [spellid]
local name, _, icon = _GetSpellInfo (spellid)
name = name .. " (|cFFCCBBBB" .. _petName:gsub (" <.*", "") .. "|r)"
end
end
end
if (spell) then
bar_3 [1]:SetTexture (icon)
bar_3 [1]:SetTexCoord (unpack (IconTexCoord)) --bar[1] = spellicon bar[2] = statusbar
bar_3 [2].lefttext:SetText (player_3_spell_info [spellid] .. ". " .. name)
bar_3 [2].lefttext:SetTextColor (1, 1, 1, 1)
bar_3 [2]:SetStatusBarColor (unpack (bar_color))
bar_3 [2]:SetBackdropColor (1, 1, 1, 0.1)
if (spell.total == 0 and data [2] == 0) then
bar_3 [2].righttext2:SetText ("0")
bar_3 [2].righttext:SetText ("+0%")
elseif (data [2] > spell.total) then
if (spell.total > 0) then
local diff = data [2] - spell.total
local up = diff / spell.total * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
bar_3 [2].righttext2:SetText (_detalhes:ToK2Min (spell.total))
bar_3 [2].righttext:SetText (" |c" .. minor .. up .. "%|r")
else
bar_3 [2].righttext2:SetText ("0")
bar_3 [2].righttext:SetText ("0%")
end
else
if (data [2] > 0) then
local diff = spell.total - data [2]
local down = diff / data [2] * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
bar_3 [2].righttext2:SetText (_detalhes:ToK2Min (spell.total))
bar_3 [2].righttext:SetText (" |c" .. plus .. down .. "%|r")
else
bar_3 [2].righttext:SetText ("0")
bar_3 [2].righttext:SetText ("+0%")
end
end
bar_3 [2]:SetValue (spell.total / player_3_top * 100)
bar_3 [2]:SetValue (100)
bar_3 [3][1] = spell.counter --tooltip hits
bar_3 [3][2] = spell.total / spell.counter --tooltip average
bar_3 [3][3] = _math_floor (spell.c_amt / spell.counter * 100) --tooltip critical
else
bar_3 [1]:SetTexture (nil)
bar_3 [2].lefttext:SetText (empty_text)
bar_3 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_3 [2].righttext:SetText ("")
bar_3 [2].righttext2:SetText ("")
bar_3 [2]:SetValue (0)
bar_3 [2]:SetBackdropColor (1, 1, 1, 0)
end
else
bar_3 [1]:SetTexture (nil)
bar_3 [2].lefttext:SetText (empty_text)
bar_3 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_3 [2].righttext:SetText ("")
bar_3 [2].righttext2:SetText ("")
bar_3 [2]:SetValue (0)
bar_3 [2]:SetBackdropColor (1, 1, 1, 0)
end
else
bar [1]:SetTexture (nil)
bar [2].lefttext:SetText (empty_text)
bar [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar [2].righttext:SetText ("")
bar [2]:SetValue (0)
bar [2]:SetBackdropColor (1, 1, 1, 0)
local bar_2 = frame2.bars [i]
bar_2 [1]:SetTexture (nil)
bar_2 [2].lefttext:SetText (empty_text)
bar_2 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_2 [2].righttext:SetText ("")
bar_2 [2].righttext2:SetText ("")
bar_2 [2]:SetValue (0)
bar_2 [2]:SetBackdropColor (1, 1, 1, 0)
local bar_3 = frame3.bars [i]
bar_3 [1]:SetTexture (nil)
bar_3 [2].lefttext:SetText (empty_text)
bar_3 [2].lefttext:SetTextColor (.5, .5, .5, 1)
bar_3 [2].righttext:SetText ("")
bar_3 [2].righttext2:SetText ("")
bar_3 [2]:SetValue (0)
bar_3 [2]:SetBackdropColor (1, 1, 1, 0)
end
end
for index, spelltable in _ipairs (spells_sorted) do
end
end
local refresh_comparison_box = function (self)
--atualiza a scroll
fill_compare_actors (self, self.tab.player, self.tab.players)
FauxScrollFrame_Update (self, self.tab.spells_amt, 12, 15)
self:Show()
end
local refresh_target_box = function (self)
--player 1 targets
local my_targets = self.tab.player.targets
local target_pool = {}
for target_name, amount in _pairs (my_targets) do
target_pool [#target_pool+1] = {target_name, amount}
end
table.sort (target_pool, _detalhes.Sort2)
FauxScrollFrame_Update (self, #target_pool, targetBars, 14)
self:Show()
fill_compare_targets (self, self.tab.player, self.tab.players, target_pool)
end
local compare_fill = function (tab, player, combat)
local players_to_compare = tab.players
local defaultPlayerName = _detalhes:GetOnlyName (player:Name())
DetailsPlayerComparisonBox1.name_label:SetText (defaultPlayerName)
local label2 = _G ["DetailsPlayerComparisonBox2"].name_label
local label3 = _G ["DetailsPlayerComparisonBox3"].name_label
local label2_percent = _G ["DetailsPlayerComparisonBox2"].name_label_percent
local label3_percent = _G ["DetailsPlayerComparisonBox3"].name_label_percent
if (players_to_compare [1]) then
local playerName = _detalhes:GetOnlyName (players_to_compare [1]:Name())
label2:SetText (playerName)
label2_percent:SetText (defaultPlayerName .. " %")
else
label2:SetText ("")
label2_percent:SetText ("")
end
if (players_to_compare [2]) then
local playerName = _detalhes:GetOnlyName (players_to_compare [2]:Name())
label3:SetText (playerName)
label3_percent:SetText (defaultPlayerName .. " %")
else
label3:SetText ("")
label3_percent:SetText ("")
end
refresh_comparison_box (DetailsPlayerComparisonBox1)
refresh_target_box (DetailsPlayerComparisonTarget1)
end
local on_enter_target = function (self)
local frame1 = DetailsPlayerComparisonTarget1
local frame2 = DetailsPlayerComparisonTarget2
local frame3 = DetailsPlayerComparisonTarget3
local bar1 = frame1.bars [self.index]
local bar2 = frame2.bars [self.index]
local bar3 = frame3.bars [self.index]
local player_1 = bar1 [3] [4]
if (not player_1) then
return
end
local player_2 = bar2 [3] [4]
local player_3 = bar3 [3] [4]
local target_name = bar1 [3] [2]
frame1.tooltip:SetPoint ("bottomleft", bar1[2], "topleft", -18, 5)
frame2.tooltip:SetPoint ("bottomleft", bar2[2], "topleft", -18, 5)
frame3.tooltip:SetPoint ("bottomleft", bar3[2], "topleft", -18, 5)
local actor1_total = bar1 [3] [3]
local actor2_total = bar1 [3] [3]
local actor3_total = bar1 [3] [3]
-- player 1
local player_1_skills = {}
for spellid, spell in _pairs (player_1.spells._ActorTable) do
for name, amount in _pairs (spell.targets) do
if (name == target_name) then
player_1_skills [#player_1_skills+1] = {spellid, amount}
end
end
end
table.sort (player_1_skills, _detalhes.Sort2)
-- ~pet
local player_1_top = player_1_skills [1] and player_1_skills [1][2] or 0
bar1 [2]:SetStatusBarColor (1, 1, 1, 1)
-- player 2
local player_2_skills = {}
local player_2_top
if (player_2) then
for spellid, spell in _pairs (player_2.spells._ActorTable) do
for name, amount in _pairs (spell.targets) do
if (name == target_name) then
player_2_skills [#player_2_skills+1] = {spellid, amount}
end
end
end
table.sort (player_2_skills, _detalhes.Sort2)
player_2_top = player_2_skills [1] and player_2_skills [1][2] or 0
bar2 [2]:SetStatusBarColor (unpack (bar_color_on_enter))
end
-- player 3
local player_3_skills = {}
local player_3_top
if (player_3) then
for spellid, spell in _pairs (player_3.spells._ActorTable) do
for name, amount in _pairs (spell.targets) do
if (name == target_name) then
player_3_skills [#player_3_skills+1] = {spellid, amount}
end
end
end
table.sort (player_3_skills, _detalhes.Sort2)
player_3_top = player_3_skills [1] and player_3_skills [1][2] or 0
bar3 [2]:SetStatusBarColor (unpack (bar_color_on_enter))
end
-- build tooltip
frame1.tooltip:Reset()
frame2.tooltip:Reset()
frame3.tooltip:Reset()
frame1.tooltip:Show()
frame2.tooltip:Show()
frame3.tooltip:Show()
local frame2_gotresults = false
local frame3_gotresults = false
for index, spell in _ipairs (player_1_skills) do
local bar = frame1.tooltip.bars [index]
if (not bar) then
bar = frame1.tooltip:CreateBar()
end
local name, _, icon = _GetSpellInfo (spell[1])
bar [1]:SetTexture (icon)
bar [1]:SetTexCoord (unpack (IconTexCoord)) --bar[1] = spellicon bar[2] = statusbar
bar [2].lefttext:SetText (index .. ". " .. name)
bar [2].righttext:SetText (_detalhes:ToK2Min (spell [2]))
bar [2]:SetValue (spell [2]/player_1_top*100)
--bar [2]:SetValue (100)
bar [2].bg:Show()
if (player_2) then
local player_2_skill
local found_skill = false
for this_index, this_spell in _ipairs (player_2_skills) do
if (spell [1] == this_spell[1]) then
local bar = frame2.tooltip.bars [index]
if (not bar) then
bar = frame2.tooltip:CreateBar (index)
end
bar [1]:SetTexture (icon)
bar [1]:SetTexCoord (unpack (IconTexCoord)) --bar[1] = spellicon bar[2] = statusbar
bar [2].lefttext:SetText (this_index .. ". " .. name)
bar [2].bg:Show()
if (spell [2] > this_spell [2]) then
local diff = spell [2] - this_spell [2]
local up = diff / this_spell [2] * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
bar [2].righttext2:SetText (_detalhes:ToK2Min (this_spell [2]))
bar [2].righttext:SetText (" |c" .. minor .. up .. "%|r")
else
local diff = this_spell [2] - spell [2]
local down = diff / spell [2] * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
bar [2].righttext2:SetText (_detalhes:ToK2Min (this_spell [2]))
bar [2].righttext:SetText (" |c" .. plus .. down .. "%|r")
end
--bar [2]:SetValue (this_spell [2]/player_2_top*100)
bar [2]:SetValue (100)
found_skill = true
frame2_gotresults = true
break
end
end
if (not found_skill) then
local bar = frame2.tooltip.bars [index]
if (not bar) then
bar = frame2.tooltip:CreateBar (index)
end
bar [1]:SetTexture (nil)
bar [2].lefttext:SetText ("")
bar [2].righttext:SetText ("")
bar [2].righttext2:SetText ("")
bar [2].bg:Hide()
end
end
if (player_3) then
local player_3_skill
local found_skill = false
for this_index, this_spell in _ipairs (player_3_skills) do
if (spell [1] == this_spell[1]) then
local bar = frame3.tooltip.bars [index]
if (not bar) then
bar = frame3.tooltip:CreateBar (index)
end
bar [1]:SetTexture (icon)
bar [1]:SetTexCoord (unpack (IconTexCoord)) --bar[1] = spellicon bar[2] = statusbar
bar [2].lefttext:SetText (this_index .. ". " .. name)
bar [2].bg:Show()
if (spell [2] > this_spell [2]) then
local diff = spell [2] - this_spell [2]
local up = diff / this_spell [2] * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
bar [2].righttext:SetText (_detalhes:ToK2Min (this_spell [2]) .. " |c" .. minor .. up .. "%|r")
else
local diff = this_spell [2] - spell [2]
local down = diff / spell [2] * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
bar [2].righttext2:SetText (_detalhes:ToK2Min (this_spell [2]))
bar [2].righttext:SetText (" |c" .. plus .. down .. "%|r")
end
--bar [2]:SetValue (this_spell [2]/player_3_top*100)
bar [2]:SetValue (100)
found_skill = true
frame3_gotresults = true
break
end
end
if (not found_skill) then
local bar = frame3.tooltip.bars [index]
if (not bar) then
bar = frame3.tooltip:CreateBar (index)
end
bar [1]:SetTexture (nil)
bar [2].lefttext:SetText ("")
bar [2].righttext:SetText ("")
bar [2].righttext2:SetText ("")
bar [2].bg:Hide()
end
end
end
frame1.tooltip:SetHeight ( (#player_1_skills*15) + 2)
frame2.tooltip:SetHeight ( (#player_1_skills*15) + 2)
frame3.tooltip:SetHeight ( (#player_1_skills*15) + 2)
if (not frame2_gotresults) then
frame2.tooltip:Hide()
end
if (not frame3_gotresults) then
frame3.tooltip:Hide()
end
end
local on_leave_target = function (self)
local frame1 = DetailsPlayerComparisonTarget1
local frame2 = DetailsPlayerComparisonTarget2
local frame3 = DetailsPlayerComparisonTarget3
local bar1 = frame1.bars [self.index]
local bar2 = frame2.bars [self.index]
local bar3 = frame3.bars [self.index]
bar1[2]:SetStatusBarColor (.5, .5, .5, 1)
bar1[2].icon:SetTexCoord (0, 1, 0, 1)
bar2[2]:SetStatusBarColor (unpack (bar_color))
bar2[2].icon:SetTexCoord (0, 1, 0, 1)
bar3[2]:SetStatusBarColor (unpack (bar_color))
bar3[2].icon:SetTexCoord (0, 1, 0, 1)
frame1.tooltip:Hide()
frame2.tooltip:Hide()
frame3.tooltip:Hide()
end
local on_enter = function (self)
local frame1 = DetailsPlayerComparisonBox1
local frame2 = DetailsPlayerComparisonBox2
local frame3 = DetailsPlayerComparisonBox3
local bar1 = frame1.bars [self.index]
local bar2 = frame2.bars [self.index]
local bar3 = frame3.bars [self.index]
frame1.tooltip:SetPoint ("bottomleft", bar1[2], "topleft", -18, 5)
frame2.tooltip:SetPoint ("bottomleft", bar2[2], "topleft", -18, 5)
frame3.tooltip:SetPoint ("bottomleft", bar3[2], "topleft", -18, 5)
local spellid = bar1[3][4]
local player1 = frame1.player
local player2 = frame2.player
local player3 = frame3.player
local hits = bar1[3][1]
local average = bar1[3][2]
local critical = bar1[3][3]
local player1_misc = info.instancia.showing (4, player1)
local player2_misc = info.instancia.showing (4, player2)
local player3_misc = info.instancia.showing (4, player3)
local player1_uptime
local player1_casts
local COMPARE_FIRSTPLAYER_PERCENT = "100%"
local COMPARE_UNKNOWNDATA = "-"
if (bar1[2].righttext:GetText()) then
bar1[2]:SetStatusBarColor (1, 1, 1, 1)
bar1[2].icon:SetTexCoord (.1, .9, .1, .9)
frame1.tooltip.hits_label3:SetText (hits)
frame1.tooltip.average_label3:SetText (_detalhes:ToK2Min (average))
frame1.tooltip.crit_label3:SetText (critical .. "%")
--2 = far left text (percent comparison)
--3 = total in numbers
_detalhes.gump:SetFontColor (frame1.tooltip.hits_label2, "gray")
_detalhes.gump:SetFontColor (frame1.tooltip.average_label2, "gray")
_detalhes.gump:SetFontColor (frame1.tooltip.crit_label2, "gray")
_detalhes.gump:SetFontColor (frame1.tooltip.casts_label2, "gray")
_detalhes.gump:SetFontColor (frame1.tooltip.uptime_label2, "gray")
frame1.tooltip.hits_label2:SetText (COMPARE_FIRSTPLAYER_PERCENT)
frame1.tooltip.average_label2:SetText (COMPARE_FIRSTPLAYER_PERCENT)
frame1.tooltip.crit_label2:SetText (COMPARE_FIRSTPLAYER_PERCENT)
if (player1_misc) then
--uptime
local spell = player1_misc.debuff_uptime_spells and player1_misc.debuff_uptime_spells._ActorTable and player1_misc.debuff_uptime_spells._ActorTable [spellid]
if (spell) then
local minutos, segundos = _math_floor (spell.uptime/60), _math_floor (spell.uptime%60)
player1_uptime = spell.uptime
frame1.tooltip.uptime_label3:SetText (minutos .. "m" .. segundos .. "s")
frame1.tooltip.uptime_label2:SetText (COMPARE_FIRSTPLAYER_PERCENT)
_detalhes.gump:SetFontColor (frame1.tooltip.uptime_label2, "gray")
_detalhes.gump:SetFontColor (frame1.tooltip.uptime_label3, "white")
else
frame1.tooltip.uptime_label3:SetText (COMPARE_UNKNOWNDATA)
frame1.tooltip.uptime_label2:SetText (COMPARE_UNKNOWNDATA)
_detalhes.gump:SetFontColor (frame1.tooltip.uptime_label2, "gray")
_detalhes.gump:SetFontColor (frame1.tooltip.uptime_label3, "gray")
end
--total casts
local amt_casts = player1_misc.spell_cast and player1_misc.spell_cast [spellid]
if (amt_casts) then
frame1.tooltip.casts_label3:SetText (amt_casts)
frame1.tooltip.casts_label2:SetText (COMPARE_FIRSTPLAYER_PERCENT)
_detalhes.gump:SetFontColor (frame1.tooltip.casts_label3, "white")
player1_casts = amt_casts
else
local spellname = GetSpellInfo (spellid)
local extra_search_found
for casted_spellid, amount in _pairs (player1_misc.spell_cast or {}) do
local casted_spellname = GetSpellInfo (casted_spellid)
if (casted_spellname == spellname) then
frame1.tooltip.casts_label3:SetText (amount)
frame1.tooltip.casts_label2:SetText (COMPARE_FIRSTPLAYER_PERCENT)
_detalhes.gump:SetFontColor (frame1.tooltip.casts_label3, "white")
player1_casts = amount
extra_search_found = true
break
end
end
if (not extra_search_found) then
frame1.tooltip.casts_label3:SetText ("?")
frame1.tooltip.casts_label2:SetText ("?")
_detalhes.gump:SetFontColor (frame1.tooltip.casts_label3, "silver")
_detalhes.gump:SetFontColor (frame1.tooltip.casts_label2, "silver")
end
end
else
frame1.tooltip.uptime_label3:SetText (COMPARE_UNKNOWNDATA)
frame1.tooltip.uptime_label2:SetText (COMPARE_UNKNOWNDATA)
_detalhes.gump:SetFontColor (frame1.tooltip.uptime_label2, "gray")
_detalhes.gump:SetFontColor (frame1.tooltip.uptime_label3, "gray")
frame1.tooltip.casts_label3:SetText ("?")
frame1.tooltip.casts_label2:SetText ("?")
_detalhes.gump:SetFontColor (frame1.tooltip.casts_label3, "gray")
_detalhes.gump:SetFontColor (frame1.tooltip.casts_label2, "gray")
end
frame1.tooltip:Show()
end
if (bar2[2].righttext:GetText()) then
bar2 [2]:SetStatusBarColor (unpack (bar_color_on_enter))
bar2[2].icon:SetTexCoord (.1, .9, .1, .9)
-- hits
if (hits > bar2[3][1]) then
local diff = hits - bar2[3][1]
local up = diff / bar2[3][1] * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
frame2.tooltip.hits_label3:SetText (bar2[3][1])
frame2.tooltip.hits_label2:SetText (" |c" .. minor .. up .. "%|r")
else
local diff = bar2[3][1] - hits
local down = diff / hits * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
frame2.tooltip.hits_label3:SetText (bar2[3][1])
frame2.tooltip.hits_label2:SetText (" |c" .. plus .. down .. "%|r")
end
--average
if (average > bar2[3][2]) then
local diff = average - bar2[3][2]
local up = diff / bar2[3][2] * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
frame2.tooltip.average_label3:SetText (_detalhes:ToK2Min (bar2[3][2]))
frame2.tooltip.average_label2:SetText (" |c" .. minor .. up .. "%|r")
else
local diff = bar2[3][2] - average
local down = diff / average * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
frame2.tooltip.average_label3:SetText (_detalhes:ToK2Min (bar2[3][2]))
frame2.tooltip.average_label2:SetText (" |c" .. plus .. down .. "%|r")
end
--criticals
if (critical > bar2[3][3]) then
--[[
local percent = abs ((bar2[3][3] / critical * 100) -100)
percent = _math_floor (percent)
if (percent > 999) then
up = "" .. 999
end
frame2.tooltip.crit_label3:SetText (bar2[3][3] .. "%")
frame2.tooltip.crit_label2:SetText (" |c" .. minor .. percent .. "%|r")
--]]
local diff = critical - bar2[3][3]
diff = diff / bar2[3][3] * 100
diff = _math_floor (diff)
if (diff > 999) then
diff = "" .. 999
end
frame2.tooltip.crit_label3:SetText (bar2[3][3] .. "%")
frame2.tooltip.crit_label2:SetText (" |c" .. minor .. diff .. "%|r")
else
local diff = bar2[3][3] - critical
local down = diff / math.max (critical, 0.1) * 100
--bar2[3][3] = 62 critical = 53 diff = 9
--print (diff, bar2[3][3], critical)
--print (math.max (critical * 100, 0.1))
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
frame2.tooltip.crit_label3:SetText (bar2[3][3] .. "%")
frame2.tooltip.crit_label2:SetText (" |c" .. plus .. down .. "%|r")
end
--update and total casts
if (player2_misc) then
--uptime
local spell = player2_misc.debuff_uptime_spells and player2_misc.debuff_uptime_spells._ActorTable and player2_misc.debuff_uptime_spells._ActorTable [spellid]
if (spell and spell.uptime) then
local minutos, segundos = _math_floor (spell.uptime/60), _math_floor (spell.uptime%60)
if (not player1_uptime) then
frame2.tooltip.uptime_label3:SetText (minutos .. "m" .. segundos .. "s")
frame2.tooltip.uptime_label2:SetText ("0%|r")
elseif (player1_uptime > spell.uptime) then
local diff = player1_uptime - spell.uptime
local up = diff / spell.uptime * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
frame2.tooltip.uptime_label3:SetText (minutos .. "m" .. segundos .. "s")
frame2.tooltip.uptime_label2:SetText ("|c" .. minor .. up .. "%|r")
else
local diff = spell.uptime - player1_uptime
local down = diff / player1_uptime * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
frame2.tooltip.uptime_label3:SetText (minutos .. "m" .. segundos .. "s")
frame2.tooltip.uptime_label2:SetText ("|c" .. plus .. down .. "%|r")
end
_detalhes.gump:SetFontColor (frame2.tooltip.uptime_label3, "white")
_detalhes.gump:SetFontColor (frame2.tooltip.uptime_label2, "white")
else
frame2.tooltip.uptime_label3:SetText (COMPARE_UNKNOWNDATA)
frame2.tooltip.uptime_label2:SetText (COMPARE_UNKNOWNDATA)
_detalhes.gump:SetFontColor (frame2.tooltip.uptime_label3, "gray")
_detalhes.gump:SetFontColor (frame2.tooltip.uptime_label2, "gray")
end
--total casts
local amt_casts = player2_misc.spell_cast and player2_misc.spell_cast [spellid]
if (not amt_casts) then
local spellname = GetSpellInfo (spellid)
for casted_spellid, amount in _pairs (player2_misc.spell_cast or {}) do
local casted_spellname = GetSpellInfo (casted_spellid)
if (casted_spellname == spellname) then
amt_casts = amount
break
end
end
end
if (amt_casts) then
if (not player1_casts) then
frame2.tooltip.casts_label3:SetText (amt_casts)
frame2.tooltip.casts_label2:SetText (COMPARE_UNKNOWNDATA)
elseif (player1_casts > amt_casts) then
local diff = player1_casts - amt_casts
local up = diff / amt_casts * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
frame2.tooltip.casts_label3:SetText (amt_casts)
frame2.tooltip.casts_label2:SetText ("|c" .. minor .. up .. "%|r")
else
local diff = amt_casts - player1_casts
local down = diff / player1_casts * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
frame2.tooltip.casts_label3:SetText (amt_casts)
frame2.tooltip.casts_label2:SetText ("|c" .. plus .. down .. "%|r")
end
_detalhes.gump:SetFontColor (frame2.tooltip.casts_label3, "white")
_detalhes.gump:SetFontColor (frame2.tooltip.casts_label2, "white")
else
frame2.tooltip.casts_label2:SetText ("?")
frame2.tooltip.casts_label3:SetText ("?")
_detalhes.gump:SetFontColor (frame2.tooltip.casts_label3, "gray")
_detalhes.gump:SetFontColor (frame2.tooltip.casts_label2, "gray")
end
else
frame2.tooltip.casts_label2:SetText (COMPARE_UNKNOWNDATA)
frame2.tooltip.casts_label2:SetText (COMPARE_UNKNOWNDATA)
frame2.tooltip.uptime_label3:SetText (COMPARE_UNKNOWNDATA)
frame2.tooltip.uptime_label2:SetText (COMPARE_UNKNOWNDATA)
end
frame2.tooltip:Show()
end
---------------------------------------------------
if (bar3[2].righttext:GetText()) then
bar3 [2]:SetStatusBarColor (unpack (bar_color_on_enter))
bar3[2].icon:SetTexCoord (.1, .9, .1, .9)
--hits
if (hits > bar3[3][1]) then
local diff = hits - bar3[3][1]
local up = diff / bar3[3][1] * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
frame3.tooltip.hits_label3:SetText (bar3[3][1])
frame3.tooltip.hits_label2:SetText (" |c" .. minor .. up .. "%|r")
else
local diff = bar3[3][1] - hits
local down = diff / hits * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
frame3.tooltip.hits_label3:SetText (bar3[3][1])
frame3.tooltip.hits_label2:SetText (" |c" .. plus .. down .. "%|r")
end
--average
if (average > bar3[3][2]) then
local diff = average - bar3[3][2]
local up = diff / bar3[3][2] * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
frame3.tooltip.average_label3:SetText (_detalhes:ToK2Min (bar3[3][2]))
frame3.tooltip.average_label2:SetText (" |c" .. minor .. up .. "%|r")
else
local diff = bar3[3][2] - average
local down = diff / average * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
frame3.tooltip.average_label3:SetText (_detalhes:ToK2Min (bar3[3][2]))
frame3.tooltip.average_label2:SetText (" |c" .. plus .. down .. "%|r")
end
--critical
if (critical > bar3[3][3]) then
--[[
local percent = abs ((bar3[3][3] / critical * 100) -100)
--local diff = critical - bar3[3][3]
--local up = diff / bar3[3][3] * 100
percent = _math_floor (percent)
if (percent > 999) then
percent = "" .. 999
end
frame3.tooltip.crit_label3:SetText (bar3[3][3] .. "%")
frame3.tooltip.crit_label2:SetText (" |c" .. minor .. percent .. "%|r")
--]]
local diff = critical - bar3[3][3]
diff = diff / bar3[3][3] * 100
diff = _math_floor (diff)
if (diff > 999) then
diff = "" .. 999
end
frame3.tooltip.crit_label3:SetText (bar3[3][3] .. "%")
frame3.tooltip.crit_label2:SetText (" |c" .. minor .. diff .. "%|r")
else
local diff = bar3[3][3] - critical
local down = diff / math.max (critical, 0.1) * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
frame3.tooltip.crit_label3:SetText (bar3[3][3] .. "%")
frame3.tooltip.crit_label2:SetText (" |c" .. plus .. down .. "%|r")
end
--uptime and casts
if (player3_misc) then
--uptime
local spell = player3_misc.debuff_uptime_spells and player3_misc.debuff_uptime_spells._ActorTable and player3_misc.debuff_uptime_spells._ActorTable [spellid]
if (spell and spell.uptime) then
local minutos, segundos = _math_floor (spell.uptime/60), _math_floor (spell.uptime%60)
if (not player1_uptime) then
frame3.tooltip.uptime_label3:SetText (minutos .. "m" .. segundos .. "s")
frame3.tooltip.uptime_label2:SetText ("0%|r")
elseif (player1_uptime > spell.uptime) then
local diff = player1_uptime - spell.uptime
local up = diff / spell.uptime * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
frame3.tooltip.uptime_label3:SetText (minutos .. "m" .. segundos .. "s")
frame3.tooltip.uptime_label2:SetText ("|c" .. minor .. up .. "%|r")
else
local diff = spell.uptime - player1_uptime
local down = diff / player1_uptime * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
frame3.tooltip.uptime_label3:SetText (minutos .. "m" .. segundos .. "s")
frame3.tooltip.uptime_label2:SetText ("|c" .. plus .. down .. "%|r")
end
_detalhes.gump:SetFontColor (frame3.tooltip.uptime_label3, "white")
_detalhes.gump:SetFontColor (frame3.tooltip.uptime_label2, "white")
else
frame3.tooltip.uptime_label3:SetText (COMPARE_UNKNOWNDATA)
frame3.tooltip.uptime_label2:SetText (COMPARE_UNKNOWNDATA)
_detalhes.gump:SetFontColor (frame3.tooltip.uptime_label3, "gray")
_detalhes.gump:SetFontColor (frame3.tooltip.uptime_label2, "gray")
end
--total casts
local amt_casts = player3_misc.spell_cast and player3_misc.spell_cast [spellid]
if (not amt_casts) then
local spellname = GetSpellInfo (spellid)
for casted_spellid, amount in _pairs (player3_misc.spell_cast or {}) do
local casted_spellname = GetSpellInfo (casted_spellid)
if (casted_spellname == spellname) then
amt_casts = amount
break
end
end
end
if (amt_casts) then
if (not player1_casts) then
frame3.tooltip.casts_label2:SetText (amt_casts)
elseif (player1_casts > amt_casts) then
local diff = player1_casts - amt_casts
local up = diff / amt_casts * 100
up = _math_floor (up)
if (up > 999) then
up = "" .. 999
end
frame3.tooltip.casts_label3:SetText (amt_casts)
frame3.tooltip.casts_label2:SetText (" |c" .. minor .. up .. "%|r")
else
local diff = amt_casts - player1_casts
local down = diff / player1_casts * 100
down = _math_floor (down)
if (down > 999) then
down = "" .. 999
end
frame3.tooltip.casts_label3:SetText (amt_casts)
frame3.tooltip.casts_label2:SetText (" |c" .. plus .. down .. "%|r")
end
_detalhes.gump:SetFontColor (frame3.tooltip.casts_label3, "white")
_detalhes.gump:SetFontColor (frame3.tooltip.casts_label2, "white")
else
frame3.tooltip.casts_label2:SetText ("?")
frame3.tooltip.casts_label3:SetText ("?")
_detalhes.gump:SetFontColor (frame3.tooltip.casts_label3, "gray")
_detalhes.gump:SetFontColor (frame3.tooltip.casts_label2, "gray")
end
else
frame3.tooltip.casts_label3:SetText (COMPARE_UNKNOWNDATA)
frame3.tooltip.casts_label2:SetText (COMPARE_UNKNOWNDATA)
frame3.tooltip.uptime_label3:SetText (COMPARE_UNKNOWNDATA)
frame3.tooltip.uptime_label2:SetText (COMPARE_UNKNOWNDATA)
end
frame3.tooltip:Show()
end
end
local on_leave = function (self)
local frame1 = DetailsPlayerComparisonBox1
local frame2 = DetailsPlayerComparisonBox2
local frame3 = DetailsPlayerComparisonBox3
local bar1 = frame1.bars [self.index]
local bar2 = frame2.bars [self.index]
local bar3 = frame3.bars [self.index]
bar1[2]:SetStatusBarColor (.5, .5, .5, 1)
bar1[2].icon:SetTexCoord (0, 1, 0, 1)
bar2[2]:SetStatusBarColor (unpack (bar_color))
bar2[2].icon:SetTexCoord (0, 1, 0, 1)
bar3[2]:SetStatusBarColor (unpack (bar_color))
bar3[2].icon:SetTexCoord (0, 1, 0, 1)
frame1.tooltip:Hide()
frame2.tooltip:Hide()
frame3.tooltip:Hide()
end
local compare_create = function (tab, frame)
local create_bar = function (name, parent, index, main, is_target)
local y = ((index-1) * -15) - 7
local spellicon = parent:CreateTexture (nil, "overlay")
spellicon:SetSize (14, 14)
spellicon:SetPoint ("topleft", parent, "topleft", 4, y)
spellicon:SetTexture ([[Interface\InventoryItems\WoWUnknownItem01]])
local bar = CreateFrame ("StatusBar", name, parent,"BackdropTemplate")
bar.index = index
bar:SetPoint ("topleft", spellicon, "topright", 0, 0)
bar:SetPoint ("topright", parent, "topright", -4, y)
bar:SetStatusBarTexture ([[Interface\AddOns\Details\images\bar_serenity]])
bar:SetStatusBarColor (.5, .5, .5, 1)
bar:SetAlpha (ALPHA_BLEND_AMOUNT)
bar:SetBackdrop ({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
bar:SetBackdropColor (1, 1, 1, 0.1)
bar:SetMinMaxValues (0, 100)
bar:SetValue (100)
bar:SetHeight (14)
bar.icon = spellicon
if (is_target) then
bar:SetScript ("OnEnter", on_enter_target)
bar:SetScript ("OnLeave", on_leave_target)
else
bar:SetScript ("OnEnter", on_enter)
bar:SetScript ("OnLeave", on_leave)
end
bar.lefttext = bar:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
local _, size, flags = bar.lefttext:GetFont()
local font = SharedMedia:Fetch ("font", "Arial Narrow")
bar.lefttext:SetFont (font, 11)
bar.lefttext:SetPoint ("left", bar, "left", 4, 0)
bar.lefttext:SetJustifyH ("left")
bar.lefttext:SetTextColor (1, 1, 1, 1)
bar.lefttext:SetNonSpaceWrap (true)
bar.lefttext:SetWordWrap (false)
if (main) then
bar.lefttext:SetWidth (180)
else
bar.lefttext:SetWidth (110)
end
bar.righttext = bar:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
local _, size, flags = bar.righttext:GetFont()
local font = SharedMedia:Fetch ("font", "Arial Narrow")
bar.righttext:SetFont (font, 11)
bar.righttext:SetPoint ("right", bar, "right", -2, 0)
bar.righttext:SetJustifyH ("right")
bar.righttext:SetTextColor (1, 1, 1, 1)
bar.righttext2 = bar:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
local _, size, flags = bar.righttext2:GetFont()
local font = SharedMedia:Fetch ("font", "Arial Narrow")
bar.righttext2:SetFont (font, 11)
bar.righttext2:SetPoint ("right", bar, "right", -42, 0)
bar.righttext2:SetJustifyH ("right")
bar.righttext2:SetTextColor (1, 1, 1, 1)
tinsert (parent.bars, {spellicon, bar, {0, 0, 0}})
end
local create_tooltip = function (name)
local tooltip = CreateFrame ("frame", name, UIParent,"BackdropTemplate")
_detalhes.gump:CreateBorder (tooltip)
tooltip:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]], tileSize = 64, tile = true})
tooltip:SetBackdropColor (0, 0, 0, 1)
tooltip:SetBackdropBorderColor (0, 0, 0, 1)
tooltip:SetSize (275, 77)
tooltip:SetFrameStrata ("tooltip")
local y = -3
local x_start = 2
local background = tooltip:CreateTexture (nil, "border")
background:SetTexture ([[Interface\SPELLBOOK\Spellbook-Page-1]])
background:SetTexCoord (.6, 0.1, 0, 0.64453125)
background:SetVertexColor (0, 0, 0, 0.2)
background:SetPoint ("topleft", tooltip, "topleft", 0, 0)
background:SetPoint ("bottomright", tooltip, "bottomright", 0, 0)
tooltip.casts_label = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.casts_label:SetPoint ("topleft", tooltip, "topleft", x_start, -2 + (y*0))
tooltip.casts_label:SetText ("Total Casts:")
tooltip.casts_label:SetJustifyH ("left")
tooltip.casts_label2 = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.casts_label2:SetPoint ("topright", tooltip, "topright", -x_start, -2 + (y*0))
tooltip.casts_label2:SetText ("0")
tooltip.casts_label2:SetJustifyH ("right")
tooltip.casts_label3 = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.casts_label3:SetPoint ("topright", tooltip, "topright", -x_start - 46, -2 + (y*0))
tooltip.casts_label3:SetText ("0")
tooltip.casts_label3:SetJustifyH ("right")
tooltip.hits_label = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.hits_label:SetPoint ("topleft", tooltip, "topleft", x_start, -14 + (y*1))
tooltip.hits_label:SetText ("Total Hits:")
tooltip.hits_label:SetJustifyH ("left")
tooltip.hits_label2 = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.hits_label2:SetPoint ("topright", tooltip, "topright", -x_start, -14 + (y*1))
tooltip.hits_label2:SetText ("0")
tooltip.hits_label2:SetJustifyH ("right")
tooltip.hits_label3 = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.hits_label3:SetPoint ("topright", tooltip, "topright", -x_start - 46, -14 + (y*1))
tooltip.hits_label3:SetText ("0")
tooltip.hits_label3:SetJustifyH ("right")
tooltip.average_label = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.average_label:SetPoint ("topleft", tooltip, "topleft", x_start, -26 + (y*2))
tooltip.average_label:SetText ("Average:")
tooltip.average_label:SetJustifyH ("left")
tooltip.average_label2 = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.average_label2:SetPoint ("topright", tooltip, "topright", -x_start, -26 + (y*2))
tooltip.average_label2:SetText ("0")
tooltip.average_label2:SetJustifyH ("right")
tooltip.average_label3 = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.average_label3:SetPoint ("topright", tooltip, "topright", -x_start - 46, -26 + (y*2))
tooltip.average_label3:SetText ("0")
tooltip.average_label3:SetJustifyH ("right")
tooltip.crit_label = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.crit_label:SetPoint ("topleft", tooltip, "topleft", x_start, -38 + (y*3))
tooltip.crit_label:SetText ("Critical:")
tooltip.crit_label:SetJustifyH ("left")
tooltip.crit_label2 = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.crit_label2:SetPoint ("topright", tooltip, "topright", -x_start, -38 + (y*3))
tooltip.crit_label2:SetText ("0")
tooltip.crit_label2:SetJustifyH ("right")
tooltip.crit_label3 = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.crit_label3:SetPoint ("topright", tooltip, "topright", -x_start - 46, -38 + (y*3))
tooltip.crit_label3:SetText ("0")
tooltip.crit_label3:SetJustifyH ("right")
tooltip.uptime_label = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.uptime_label:SetPoint ("topleft", tooltip, "topleft", x_start, -50 + (y*4))
tooltip.uptime_label:SetText ("Uptime:")
tooltip.uptime_label:SetJustifyH ("left")
tooltip.uptime_label2 = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.uptime_label2:SetPoint ("topright", tooltip, "topright", -x_start, -50 + (y*4))
tooltip.uptime_label2:SetText ("0")
tooltip.uptime_label2:SetJustifyH ("right")
tooltip.uptime_label3 = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.uptime_label3:SetPoint ("topright", tooltip, "topright", -x_start - 46, -50 + (y*4))
tooltip.uptime_label3:SetText ("0")
tooltip.uptime_label3:SetJustifyH ("right")
local bg_color = {0.5, 0.5, 0.5}
local bg_texture = [[Interface\AddOns\Details\images\bar_background]]
local bg_alpha = 1
local bg_height = 12
local colors = {{26/255, 26/255, 26/255}, {19/255, 19/255, 19/255}, {26/255, 26/255, 26/255}, {34/255, 39/255, 42/255}, {42/255, 51/255, 60/255}}
for i = 1, 5 do
local bg_line1 = tooltip:CreateTexture (nil, "artwork")
bg_line1:SetTexture (bg_texture)
bg_line1:SetPoint ("topleft", tooltip, "topleft", 0, -2 + (((i-1) * 12) * -1) + (y * (i-1)) + 2)
bg_line1:SetPoint ("topright", tooltip, "topright", -0, -2 + (((i-1) * 12) * -1) + (y * (i-1)) + 2)
bg_line1:SetHeight (bg_height + 4)
bg_line1:SetAlpha (bg_alpha)
bg_line1:SetVertexColor (unpack (colors[i]))
end
return tooltip
end
local create_tooltip_target = function (name)
local tooltip = CreateFrame ("frame", name, UIParent,"BackdropTemplate")
tooltip:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]], tileSize = 64, tile = true})
tooltip:SetBackdropColor (0, 0, 0, 1)
tooltip:SetBackdropBorderColor (0, 0, 0, 1)
tooltip:SetSize (175, 67)
tooltip:SetFrameStrata ("tooltip")
tooltip.bars = {}
_detalhes.gump:CreateBorder (tooltip)
function tooltip:Reset()
for index, bar in _ipairs (tooltip.bars) do
bar [1]:SetTexture (nil)
bar [2].lefttext:SetText ("")
bar [2].righttext:SetText ("")
bar [2].righttext2:SetText ("")
bar [2]:SetValue (0)
bar [2].bg:Hide()
end
end
local bars_colors = {{19/255, 19/255, 19/255}, {26/255, 26/255, 26/255}}
function tooltip:CreateBar (index)
if (index) then
if (index > #tooltip.bars+1) then
for i = #tooltip.bars+1, index-1 do
tooltip:CreateBar()
end
end
end
local index = #tooltip.bars + 1
local y = ((index-1) * -15) - 2
local parent = tooltip
local spellicon = parent:CreateTexture (nil, "overlay")
spellicon:SetSize (14, 14)
spellicon:SetPoint ("topleft", parent, "topleft", 1, y)
spellicon:SetTexture ([[Interface\InventoryItems\WoWUnknownItem01]])
local bar = CreateFrame ("StatusBar", name .. "Bar" .. index, parent, "BackdropTemplate")
bar.index = index
bar:SetPoint ("topleft", spellicon, "topright", 0, 0)
bar:SetPoint ("topright", parent, "topright", -1, y)
bar:SetStatusBarTexture ([[Interface\AddOns\Details\images\bar_serenity]])
bar:SetStatusBarColor (unpack (bar_color))
bar:SetMinMaxValues (0, 100)
bar:SetValue (0)
bar:SetHeight (14)
bar.icon = spellicon
bar.lefttext = bar:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
local _, size, flags = bar.lefttext:GetFont()
local font = SharedMedia:Fetch ("font", "Arial Narrow")
bar.lefttext:SetFont (font, 11)
bar.lefttext:SetPoint ("left", bar, "left", 2, 0)
bar.lefttext:SetJustifyH ("left")
bar.lefttext:SetTextColor (1, 1, 1, 1)
bar.lefttext:SetNonSpaceWrap (true)
bar.lefttext:SetWordWrap (false)
if (name:find ("1")) then
bar.lefttext:SetWidth (110)
else
bar.lefttext:SetWidth (80)
end
bar.righttext = bar:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
local _, size, flags = bar.righttext:GetFont()
local font = SharedMedia:Fetch ("font", "Arial Narrow")
bar.righttext:SetFont (font, 11)
bar.righttext:SetPoint ("right", bar, "right", -2, 0)
bar.righttext:SetJustifyH ("right")
bar.righttext:SetTextColor (1, 1, 1, 1)
bar.righttext2 = bar:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
local _, size, flags = bar.righttext2:GetFont()
local font = SharedMedia:Fetch ("font", "Arial Narrow")
bar.righttext2:SetFont (font, 11)
bar.righttext2:SetPoint ("right", bar, "right", -46, 0)
bar.righttext2:SetJustifyH ("right")
bar.righttext2:SetTextColor (1, 1, 1, 1)
local bg_line1 = bar:CreateTexture (nil, "artwork")
bg_line1:SetTexture ([[Interface\AddOns\Details\images\bar_background]])
bg_line1:SetAllPoints()
bg_line1:SetAlpha (0.7)
if (index % 2 == 0) then
bg_line1:SetVertexColor (_unpack (bars_colors [2]))
else
bg_line1:SetVertexColor (_unpack (bars_colors [2]))
end
bar.bg = bg_line1
local object = {spellicon, bar}
tinsert (tooltip.bars, object)
return object
end
local background = tooltip:CreateTexture (nil, "artwork")
background:SetTexture ([[Interface\SPELLBOOK\Spellbook-Page-1]])
background:SetTexCoord (.6, 0.1, 0, 0.64453125)
background:SetVertexColor (0, 0, 0, 0.6)
background:SetPoint ("topleft", tooltip, "topleft", 2, -4)
background:SetPoint ("bottomright", tooltip, "bottomright", -4, 2)
return tooltip
end
local frame1 = CreateFrame ("scrollframe", "DetailsPlayerComparisonBox1", frame, "FauxScrollFrameTemplate,BackdropTemplate")
frame1:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 14, refresh_comparison_box) end)
frame1:SetSize (spell_compare_frame_width[1], spell_compare_frame_height)
frame1:SetPoint ("topleft", frame, "topleft", xLocation, yLocation)
_detalhes.gump:ReskinSlider (frame1)
frame1:SetBackdrop (frame_backdrop)
frame1:SetBackdropColor (unpack (frame_backdrop_color))
frame1:SetBackdropBorderColor (unpack (frame_backdrop_border_color))
--override backdrop settings and use the framework defaults
Details.gump:ApplyStandardBackdrop (frame1)
frame1.bars = {}
frame1.tab = tab
frame1.tooltip = create_tooltip ("DetailsPlayerComparisonBox1Tooltip")
frame1.tooltip:SetWidth (spell_compare_frame_width[1])
local playername1 = frame1:CreateFontString (nil, "overlay", "GameFontNormal")
playername1:SetPoint ("bottomleft", frame1, "topleft", 2, 0)
playername1:SetText ("Player 1")
frame1.name_label = playername1
--criar as barras do frame1
for i = 1, 12 do
create_bar ("DetailsPlayerComparisonBox1Bar"..i, frame1, i, true)
end
--cria o box dos targets
local target1 = CreateFrame ("scrollframe", "DetailsPlayerComparisonTarget1", frame, "FauxScrollFrameTemplate,BackdropTemplate")
target1:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 14, refresh_target_box) end)
target1:SetSize (spell_compare_frame_width[1], target_compare_frame_height)
target1:SetPoint ("topleft", frame1, "bottomleft", 0, -10)
_detalhes.gump:ReskinSlider (target1)
target1:SetBackdrop (frame_backdrop)
target1:SetBackdropColor (unpack (frame_backdrop_color))
target1:SetBackdropBorderColor (unpack (frame_backdrop_border_color))
target1.bars = {}
target1.tab = tab
target1.tooltip = create_tooltip_target ("DetailsPlayerComparisonTarget1Tooltip")
target1.tooltip:SetWidth (spell_compare_frame_width[1])
--override backdrop settings and use the framework defaults
Details.gump:ApplyStandardBackdrop (target1)
--criar as barras do target1
for i = 1, targetBars do
create_bar ("DetailsPlayerComparisonTarget1Bar"..i, target1, i, true, true)
end
--------------------------------------------
local frame2 = CreateFrame ("frame", "DetailsPlayerComparisonBox2", frame,"BackdropTemplate")
local frame3 = CreateFrame ("frame", "DetailsPlayerComparisonBox3", frame,"BackdropTemplate")
frame2:SetPoint ("topleft", frame1, "topright", 27, 0)
frame2:SetSize (spell_compare_frame_width[2], spell_compare_frame_height)
frame2:SetBackdrop (frame_backdrop)
frame2:SetBackdropColor (unpack (frame_backdrop_color))
frame2:SetBackdropBorderColor (unpack (frame_backdrop_border_color))
--override backdrop settings and use the framework defaults
Details.gump:ApplyStandardBackdrop (frame2)
frame2.bars = {}
frame2.tooltip = create_tooltip ("DetailsPlayerComparisonBox2Tooltip")
frame2.tooltip:SetWidth (spell_compare_frame_width[2])
local playername2 = frame2:CreateFontString (nil, "overlay", "GameFontNormal")
playername2:SetPoint ("bottomleft", frame2, "topleft", 2, 0)
playername2:SetText ("Player 2")
frame2.name_label = playername2
local playername2_percent = frame2:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
playername2_percent:SetPoint ("bottomright", frame2, "topright", -2, 0)
playername2_percent:SetText ("Player 1 %")
playername2_percent:SetTextColor (.6, .6, .6)
local noPLayersToShow = frame2:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
noPLayersToShow:SetPoint ("center")
noPLayersToShow:SetText ("There's no more players to compare (with the same class/spec)")
noPLayersToShow:SetSize (spell_compare_frame_width[2] - 10, spell_compare_frame_height)
noPLayersToShow:SetJustifyH ("center")
noPLayersToShow:SetJustifyV ("center")
_detalhes.gump:SetFontSize (noPLayersToShow, 14)
_detalhes.gump:SetFontColor (noPLayersToShow, "gray")
frame2.NoPLayersToShow = noPLayersToShow
frame2.name_label_percent = playername2_percent
--criar as barras do frame2
for i = 1, 12 do
create_bar ("DetailsPlayerComparisonBox2Bar"..i, frame2, i)
end
--cria o box dos targets
local target2 = CreateFrame ("frame", "DetailsPlayerComparisonTarget2", frame,"BackdropTemplate")
target2:SetSize (spell_compare_frame_width[2], target_compare_frame_height)
target2:SetPoint ("topleft", frame2, "bottomleft", 0, -10)
target2:SetBackdrop (frame_backdrop)
target2:SetBackdropColor (unpack (frame_backdrop_color))
target2:SetBackdropBorderColor (unpack (frame_backdrop_border_color))
target2.bars = {}
target2.tooltip = create_tooltip_target ("DetailsPlayerComparisonTarget2Tooltip")
target2.tooltip:SetWidth (spell_compare_frame_width[2])
--override backdrop settings and use the framework defaults
Details.gump:ApplyStandardBackdrop (target2)
--criar as barras do target2
for i = 1, targetBars do
create_bar ("DetailsPlayerComparisonTarget2Bar"..i, target2, i, nil, true)
end
-----------------------------------------------------------------------
frame3:SetPoint ("topleft", frame2, "topright", 5, 0)
frame3:SetSize (spell_compare_frame_width[3], spell_compare_frame_height)
frame3:SetBackdrop (frame_backdrop)
frame3:SetBackdropColor (unpack (frame_backdrop_color))
frame3:SetBackdropBorderColor (unpack (frame_backdrop_border_color))
--override backdrop settings and use the framework defaults
Details.gump:ApplyStandardBackdrop (frame3)
frame3.bars = {}
frame3.tooltip = create_tooltip ("DetailsPlayerComparisonBox3Tooltip")
frame3.tooltip:SetWidth (spell_compare_frame_width[3])
local playername3 = frame3:CreateFontString (nil, "overlay", "GameFontNormal")
playername3:SetPoint ("bottomleft", frame3, "topleft", 2, 0)
playername3:SetText ("Player 3")
frame3.name_label = playername3
local playername3_percent = frame3:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
playername3_percent:SetPoint ("bottomright", frame3, "topright", -2, 0)
playername3_percent:SetText ("Player 1 %")
playername3_percent:SetTextColor (.6, .6, .6)
frame3.name_label_percent = playername3_percent
local noPLayersToShow = frame3:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
noPLayersToShow:SetPoint ("center")
noPLayersToShow:SetText ("There's no more players to compare (with the same class/spec)")
noPLayersToShow:SetSize (spell_compare_frame_width[2] - 10, spell_compare_frame_height)
noPLayersToShow:SetJustifyH ("center")
noPLayersToShow:SetJustifyV ("center")
_detalhes.gump:SetFontSize (noPLayersToShow, 14)
_detalhes.gump:SetFontColor (noPLayersToShow, "gray")
frame3.NoPLayersToShow = noPLayersToShow
--criar as barras do frame3
for i = 1, 12 do
create_bar ("DetailsPlayerComparisonBox3Bar"..i, frame3, i)
end
--cria o box dos targets
local target3 = CreateFrame ("frame", "DetailsPlayerComparisonTarget3", frame,"BackdropTemplate")
target3:SetSize (spell_compare_frame_width[3], target_compare_frame_height)
target3:SetPoint ("topleft", frame3, "bottomleft", 0, -10)
target3:SetBackdrop (frame_backdrop)
target3:SetBackdropColor (unpack (frame_backdrop_color))
target3:SetBackdropBorderColor (unpack (frame_backdrop_border_color))
target3.bars = {}
target3.tooltip = create_tooltip_target ("DetailsPlayerComparisonTarget3Tooltip")
target3.tooltip:SetWidth (spell_compare_frame_width[3])
--override backdrop settings and use the framework defaults
Details.gump:ApplyStandardBackdrop (target3)
--criar as barras do target1
for i = 1, targetBars do
create_bar ("DetailsPlayerComparisonTarget3Bar"..i, target3, i, nil, true)
end
end
-- ~compare
local iconTableCompare = {
texture = [[Interface\AddOns\Details\images\icons]],
--coords = {363/512, 381/512, 0/512, 17/512},
coords = {383/512, 403/512, 0/512, 15/512},
width = 16,
height = 14,
}
_detalhes:CreatePlayerDetailsTab ("Compare", --[1] tab name
Loc ["STRING_INFO_TAB_COMPARISON"], --[2] localized name
function (tabOBject, playerObject) --[3] condition
if (info.atributo > 2) then
return false
end
local same_class = {}
local class = playerObject.classe
local my_spells = {}
local my_spells_total = 0
--> build my spell list
for spellid, _ in _pairs (playerObject.spells._ActorTable) do
my_spells [spellid] = true
my_spells_total = my_spells_total + 1
end
tabOBject.players = {}
tabOBject.player = playerObject
tabOBject.spells_amt = my_spells_total
if (not info.instancia.showing) then
return false
end
for index, actor in _ipairs (info.instancia.showing [info.atributo]._ActorTable) do
if (actor.classe == class and actor ~= playerObject) then
local same_spells = 0
for spellid, _ in _pairs (actor.spells._ActorTable) do
if (my_spells [spellid]) then
same_spells = same_spells + 1
end
end
local match_percentage = same_spells / max (my_spells_total, 0.000001) * 100
if (match_percentage > 30) then
tinsert (tabOBject.players, actor)
end
end
end
if (#tabOBject.players > 0) then
--tutorial flash
local blink = _detalhes:GetTutorialCVar ("DETAILS_INFO_TUTORIAL2") or 0
if (type (blink) == "number" and blink < 10) then
if (not tabOBject.FlashAnimation) then
local flashAnimation = tabOBject:CreateTexture (nil, "overlay")
flashAnimation:SetPoint ("topleft", tabOBject.widget, "topleft", 1, -1)
flashAnimation:SetPoint ("bottomright", tabOBject.widget, "bottomright", -1, 1)
flashAnimation:SetColorTexture (1, 1, 1)
local flashHub = DetailsFramework:CreateAnimationHub (flashAnimation, function() flashAnimation:Show() end, function() flashAnimation:Hide() end)
DetailsFramework:CreateAnimation (flashHub, "alpha", 1, 1, 0, 0.3)
DetailsFramework:CreateAnimation (flashHub, "alpha", 2, 1, 0.45, 0)
flashHub:SetLooping ("REPEAT")
tabOBject.FlashAnimation = flashHub
end
_detalhes:SetTutorialCVar ("DETAILS_INFO_TUTORIAL2", blink+1)
tabOBject.FlashAnimation:Play()
end
return true
end
--return false
return true --debug?
end,
compare_fill, --[4] fill function
nil, --[5] onclick
compare_create, --[6] oncreate
iconTableCompare --icon table
)
-- ~compare ~newcompare
-- ~compare
-- ~tab ~tabs
function este_gump:ShowTabs()
local tabsShown = 0
local secondRowIndex = 1
local breakLine = 6 --th tab it'll start the second line
local tablePool = Details:GetBreakdownTabsInUse()
for index = 1, #tablePool do
local tab = tablePool[index]
if (tab:condition(info.jogador, info.atributo, info.sub_atributo) and not tab.replaced) then
--test if can show the tutorial for the comparison tab
if (tab.tabname == "Compare") then
--_detalhes:SetTutorialCVar ("DETAILS_INFO_TUTORIAL1", false)
if (not _detalhes:GetTutorialCVar ("DETAILS_INFO_TUTORIAL1")) then
_detalhes:SetTutorialCVar ("DETAILS_INFO_TUTORIAL1", true)
local alert = CreateFrame ("frame", "DetailsInfoPopUp1", info, "DetailsHelpBoxTemplate")
alert.ArrowUP:Show()
alert.ArrowGlowUP:Show()
alert.Text:SetText (Loc ["STRING_INFO_TUTORIAL_COMPARISON1"])
alert:SetPoint ("bottom", tab.widget or tab, "top", 5, 28)
alert:Show()
end
end
tab:Show()
tabsShown = tabsShown + 1
tab:ClearAllPoints()
--get the button width
local buttonTemplate = gump:GetTemplate ("button", "DETAILS_TAB_BUTTON_TEMPLATE")
local buttonWidth = buttonTemplate.width + 1
--pixelutil might not be compatible with classic wow
if (PixelUtil) then
PixelUtil.SetSize (tab, buttonTemplate.width, buttonTemplate.height)
if (tabsShown >= breakLine) then --next row of icons
PixelUtil.SetPoint (tab, "bottomright", info, "topright", -514 + (buttonWidth * (secondRowIndex)), -50)
secondRowIndex = secondRowIndex + 1
else
PixelUtil.SetPoint (tab, "bottomright", info, "topright", -514 + (buttonWidth * tabsShown), -72)
end
else
tab:SetSize (buttonTemplate.width, buttonTemplate.height)
if (tabsShown >= breakLine) then --next row of icons
tab:SetPoint ("bottomright", info, "topright", -514 + (buttonWidth * (secondRowIndex)), -50)
secondRowIndex = secondRowIndex + 1
else
tab:SetPoint ("bottomright", info, "topright", -514 + (buttonWidth * tabsShown), -72)
end
end
tab:SetAlpha (0.8)
else
tab.frame:Hide()
tab:Hide()
end
end
if (tabsShown < 2) then
tablePool[1]:SetPoint ("BOTTOMLEFT", info.container_barras, "TOPLEFT", 490 - (94 * (1-0)), 1)
end
--selected by default
tablePool[1]:Click()
end
este_gump:SetScript ("OnHide", function(self)
_detalhes:FechaJanelaInfo()
for _, tab in _ipairs (_detalhes.player_details_tabs) do
tab:Hide()
tab.frame:Hide()
end
end)
--DetailsInfoWindowTab1Text:SetText ("Avoidance")
este_gump.tipo = 1 --> tipo da janela // 1 = janela normal
return este_gump
end
info.selectedTab = "Summary"
function _detalhes:CreatePlayerDetailsTab (tabname, localized_name, condition, fillfunction, onclick, oncreate, iconSettings, replace)
if (not tabname) then
tabname = "unnamed"
end
--create a button for the tab
local newTabButton = gump:CreateButton (info, onclick, 20, 20, nil, nil, nil, nil, nil, "DetailsPlayerBreakdownWindowTab" .. tabname)
newTabButton:SetTemplate ("DETAILS_TAB_BUTTON_TEMPLATE")
if (tabname == "Summary") then
newTabButton:SetTemplate ("DETAILS_TAB_BUTTONSELECTED_TEMPLATE")
end
newTabButton:SetText (localized_name)
newTabButton:SetFrameStrata ("HIGH")
newTabButton:SetFrameLevel (info:GetFrameLevel()+1)
newTabButton:Hide()
newTabButton.condition = condition
newTabButton.tabname = tabname
newTabButton.localized_name = localized_name
newTabButton.onclick = onclick
newTabButton.fillfunction = fillfunction
newTabButton.last_actor = {}
newTabButton.frame = CreateFrame ("frame", "DetailsPDWTabFrame" .. tabname, UIParent,"BackdropTemplate")
newTabButton.frame:SetParent (info)
newTabButton.frame:SetFrameStrata ("HIGH")
newTabButton.frame:SetFrameLevel (info:GetFrameLevel()+5)
newTabButton.frame:EnableMouse (true)
if (iconSettings) then
local texture = iconSettings.texture
local coords = iconSettings.coords
local width = iconSettings.width
local height = iconSettings.height
local overlay, textdistance, leftpadding, textheight, short_method --nil
newTabButton:SetIcon (texture, width, height, "overlay", coords, overlay, textdistance, leftpadding, textheight, short_method)
if (iconSettings.desaturated) then
newTabButton.icon:SetDesaturated (true)
end
end
if (newTabButton.fillfunction) then
newTabButton.frame:SetScript ("OnShow", function()
if (newTabButton.last_actor == info.jogador) then
return
end
newTabButton.last_actor = info.jogador
newTabButton:fillfunction (info.jogador, info.instancia.showing)
end)
end
if (oncreate) then
oncreate (newTabButton, newTabButton.frame)
end
newTabButton.frame:SetBackdrop({
edgeFile = [[Interface\Buttons\WHITE8X8]],
edgeSize = 1,
bgFile = [[Interface\AddOns\Details\images\background]],
tileSize = 64,
tile = true,
insets = {left = 0, right = 0, top = 0, bottom = 0}}
)
newTabButton.frame:SetBackdropColor (0, 0, 0, 0.3)
newTabButton.frame:SetBackdropBorderColor (.3, .3, .3, 0)
newTabButton.frame:SetPoint ("TOPLEFT", info.container_barras, "TOPLEFT", 0, 2)
newTabButton.frame:SetPoint ("bottomright", info, "bottomright", -3, 3)
newTabButton.frame:SetSize (569, 274)
newTabButton.frame:Hide()
newTabButton.replaces = replace
_detalhes.player_details_tabs [#_detalhes.player_details_tabs+1] = newTabButton
if (not onclick) then
--> hide all tabs
newTabButton.OnShowFunc = function (self)
self = self.MyObject or self
for _, tab in _ipairs (Details:GetBreakdownTabsInUse()) do
tab.frame:Hide()
tab:SetTemplate ("DETAILS_TAB_BUTTON_TEMPLATE")
end
self:SetTemplate ("DETAILS_TAB_BUTTONSELECTED_TEMPLATE")
self.frame:Show()
info.selectedTab = self.tabname
end
newTabButton:SetScript ("OnClick", newTabButton.OnShowFunc)
else
--> custom
newTabButton.OnShowFunc = function (self)
self = self.MyObject or self
for _, tab in _ipairs (Details:GetBreakdownTabsInUse()) do
tab.frame:Hide()
tab:SetTemplate ("DETAILS_TAB_BUTTON_TEMPLATE")
end
self:SetTemplate ("DETAILS_TAB_BUTTONSELECTED_TEMPLATE")
info.selectedTab = self.tabname
--run onclick func
local result, errorText = pcall (self.onclick)
if (not result) then
print (errorText)
end
end
newTabButton:SetScript ("OnClick", newTabButton.OnShowFunc)
end
newTabButton:SetScript ("PostClick", function (self)
CurrentTab = self.tabname or self.MyObject.tabname
if (CurrentTab ~= "Summary") then
for _, widget in ipairs (SummaryWidgets) do
widget:Hide()
end
else
for _, widget in ipairs (SummaryWidgets) do
widget:Show()
end
end
end)
return newTabButton, newTabButton.frame
end
function _detalhes.playerDetailWindow:monta_relatorio (botao)
local atributo = info.atributo
local sub_atributo = info.sub_atributo
local player = info.jogador
local instancia = info.instancia
local amt = _detalhes.report_lines
if (not player) then
_detalhes:Msg ("Player not found.")
return
end
local report_lines
if (botao == 1) then --> boto da esquerda
if (atributo == 1 and sub_atributo == 4) then --> friendly fire
report_lines = {"Details!: " .. player.nome .. " " .. Loc ["STRING_ATTRIBUTE_DAMAGE_FRIENDLYFIRE"] .. ":"}
elseif (atributo == 1 and sub_atributo == 3) then --> damage taken
report_lines = {"Details!: " .. player.nome .. " " .. Loc ["STRING_ATTRIBUTE_DAMAGE_TAKEN"] .. ":"}
else
-- report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_SPELLSOF"] .. " " .. player.nome .. " (" .. _detalhes.sub_atributos [atributo].lista [sub_atributo] .. ")"}
report_lines = {"Details!: " .. player.nome .. " - " .. _detalhes.sub_atributos [atributo].lista [sub_atributo] .. ""}
end
for index, barra in _ipairs (info.barras1) do
if (barra:IsShown()) then
local spellid = barra.show
if (atributo == 1 and sub_atributo == 4) then --> friendly fire
report_lines [#report_lines+1] = barra.lineText1:GetText() .. ": " .. barra.lineText4:GetText()
elseif (type (spellid) == "number" and spellid > 10) then
local link = GetSpellLink (spellid)
report_lines [#report_lines+1] = index .. ". " .. link .. ": " .. barra.lineText4:GetText()
else
local spellname = barra.lineText1:GetText():gsub ((".*%."), "")
spellname = spellname:gsub ("|c%x%x%x%x%x%x%x%x", "")
spellname = spellname:gsub ("|r", "")
report_lines [#report_lines+1] = index .. ". " .. spellname .. ": " .. barra.lineText4:GetText()
end
end
if (index == amt) then
break
end
end
elseif (botao == 3) then --> boto dos alvos
if (atributo == 1 and sub_atributo == 3) then
print (Loc ["STRING_ACTORFRAME_NOTHING"])
return
end
report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_REPORTTARGETS"] .. " " .. _detalhes.sub_atributos [1].lista [1] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] .. " " .. player.nome}
for index, barra in _ipairs (info.barras2) do
if (barra:IsShown()) then
report_lines [#report_lines+1] = barra.lineText1:GetText().." -> ".. barra.lineText4:GetText()
end
if (index == amt) then
break
end
end
elseif (botao == 2) then --> boto da direita
--> diferentes tipos de amostragem na caixa da direita
--dano --damage done --dps --heal
if ((atributo == 1 and (sub_atributo == 1 or sub_atributo == 2)) or (atributo == 2)) then
if (not player.detalhes) then
print (Loc ["STRING_ACTORFRAME_NOTHING"])
return
end
local nome = _GetSpellInfo (player.detalhes)
report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_REPORTTO"] .. " " .. _detalhes.sub_atributos [atributo].lista [sub_atributo] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] .. " " .. player.nome,
Loc ["STRING_ACTORFRAME_SPELLDETAILS"] .. ": " .. nome}
for i = 1, 5 do
--> pega os dados dos quadrados --> Aqui mostra o resumo de todos os quadrados...
local caixa = info.grupos_detalhes [i]
if (caixa.bg:IsShown()) then
local linha = ""
local nome2 = caixa.nome2:GetText() --> golpes
if (nome2 and nome2 ~= "") then
if (i == 1) then
linha = linha..nome2.." / "
else
linha = linha..caixa.nome:GetText().." "..nome2.." / "
end
end
local dano = caixa.dano:GetText() --> dano
if (dano and dano ~= "") then
linha = linha..dano.." / "
end
local media = caixa.dano_media:GetText() --> media
if (media and media ~= "") then
linha = linha..media.." / "
end
local dano_dps = caixa.dano_dps:GetText()
if (dano_dps and dano_dps ~= "") then
linha = linha..dano_dps.." / "
end
local dano_porcento = caixa.dano_porcento:GetText()
if (dano_porcento and dano_porcento ~= "") then
linha = linha..dano_porcento.." "
end
report_lines [#report_lines+1] = linha
end
if (i == amt) then
break
end
end
--dano --damage tanken (mostra as magias que o alvo usou)
elseif ( (atributo == 1 and sub_atributo == 3) or atributo == 3) then
if (player.detalhes) then
report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_REPORTTO"] .. " " .. _detalhes.sub_atributos [1].lista [1] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] .. " " .. player.detalhes.. " " .. Loc ["STRING_ACTORFRAME_REPORTAT"] .. " " .. player.nome}
for index, barra in _ipairs (info.barras3) do
if (barra:IsShown()) then
report_lines [#report_lines+1] = barra.lineText1:GetText().." ....... ".. barra.lineText4:GetText()
end
if (index == amt) then
break
end
end
else
report_lines = {}
end
end
elseif (botao >= 11) then --> primeira caixa dos detalhes
botao = botao - 10
local nome
if (_type (spellid) == "string") then
--> is a pet
else
nome = _GetSpellInfo (player.detalhes)
local spelllink = GetSpellLink (player.detalhes)
if (spelllink) then
nome = spelllink
end
end
if (not nome) then
nome = ""
end
report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_REPORTTO"] .. " " .. _detalhes.sub_atributos [atributo].lista [sub_atributo].. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] .. " " .. player.nome,
Loc ["STRING_ACTORFRAME_SPELLDETAILS"] .. ": " .. nome}
local caixa = info.grupos_detalhes [botao]
local linha = ""
local nome2 = caixa.nome2:GetText() --> golpes
if (nome2 and nome2 ~= "") then
if (i == 1) then
linha = linha..nome2.." / "
else
linha = linha..caixa.nome:GetText().." "..nome2.." / "
end
end
local dano = caixa.dano:GetText() --> dano
if (dano and dano ~= "") then
linha = linha..dano.." / "
end
local media = caixa.dano_media:GetText() --> media
if (media and media ~= "") then
linha = linha..media.." / "
end
local dano_dps = caixa.dano_dps:GetText()
if (dano_dps and dano_dps ~= "") then
linha = linha..dano_dps.." / "
end
local dano_porcento = caixa.dano_porcento:GetText()
if (dano_porcento and dano_porcento ~= "") then
linha = linha..dano_porcento.." "
end
--> remove a cor da school
linha = linha:gsub ("|c%x?%x?%x?%x?%x?%x?%x?%x?", "")
linha = linha:gsub ("|r", "")
report_lines [#report_lines+1] = linha
end
--local report_lines = {"Details! Relatorio para ".._detalhes.sub_atributos [self.atributo].lista [self.sub_atributo]}
--> pega o contedo da janela da direita
return instancia:envia_relatorio (report_lines)
end
local row_backdrop = {bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
insets = {left = 0, right = 0, top = 0, bottom = 0}}
local row_backdrop_onleave = {bgFile = "", edgeFile = "", tile = true, tileSize = 16, edgeSize = 32,
insets = {left = 1, right = 1, top = 0, bottom = 1}}
local row_on_enter = function (self)
if (info.fading_in or info.faded) then
return
end
self.mouse_over = true
for index, block in pairs (_detalhes.playerDetailWindow.grupos_detalhes) do
detalhe_infobg_onleave (block.bg)
end
--> aumenta o tamanho da barra
self:SetHeight (CONST_BAR_HEIGHT + 1)
--> poe a barra com alfa 1 ao invs de 0.9
self:SetAlpha(1)
--> troca a cor da barra enquanto o mouse estiver em cima dela
self:SetBackdrop (row_backdrop)
self:SetBackdropColor (0.8, 0.8, 0.8, 0.3)
if (self.isAlvo) then --> monta o tooltip do alvo
--> talvez devesse escurecer a janela no fundo... pois o tooltip transparente e pode confundir
GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT")
if (self.spellid == "enemies") then --> damage taken enemies
if (not self.minha_tabela or not self.minha_tabela:MontaTooltipDamageTaken (self, self._index, info.instancia)) then -- > poderia ser aprimerado para uma tailcall
return
end
GameTooltip:Show()
self:SetHeight (CONST_TARGET_HEIGHT + 1)
return
end
if (not self.minha_tabela or not self.minha_tabela:MontaTooltipAlvos (self, self._index, info.instancia)) then -- > poderia ser aprimerado para uma tailcall
return
end
elseif (self.isMain) then
if (IsShiftKeyDown()) then
if (type (self.show) == "number") then
GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT")
GameTooltip:AddLine (Loc ["ABILITY_ID"] .. ": " .. self.show)
GameTooltip:Show()
end
end
if (self.show == 98021) then
GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT")
GameTooltip:AddLine (Loc ["STRING_SPIRIT_LINK_TOTEM_DESC"])
GameTooltip:Show()
end
--> da zoom no icone
self.icone:SetWidth (CONST_BAR_HEIGHT + 2)
self.icone:SetHeight (CONST_BAR_HEIGHT + 2)
--> poe a alfa do icone em 1.0
self.icone:SetAlpha (1)
--> mostrar temporariamente o conteudo da barra nas caixas de detalhes
if (not info.mostrando) then --> no esta mostrando nada na direita
info.mostrando = self --> agora o mostrando igual a esta barra
info.mostrando_mouse_over = true --> o conteudo da direta esta sendo mostrado pq o mouse esta passando por cima do bagulho e no pq foi clicado
info.showing = self._index --> diz o index da barra que esta sendo mostrado na direita
info.jogador.detalhes = self.show --> minha tabela = jogador = jogador.detales = spellid ou nome que esta sendo mostrado na direita
info.jogador:MontaDetalhes (self.show, self, info.instancia) --> passa a spellid ou nome e a barra
end
end
end
local row_on_leave = function (self)
if (self.fading_in or self.faded or not self:IsShown() or self.hidden) then
return
end
self.mouse_over = false
--> diminui o tamanho da barra
self:SetHeight (CONST_BAR_HEIGHT)
--> volta com o alfa antigo da barra que era de 0.9
self:SetAlpha(0.9)
--> volto o background ao normal
self:SetBackdrop (row_backdrop_onleave)
self:SetBackdropBorderColor (0, 0, 0, 0)
self:SetBackdropColor (0, 0, 0, 0)
GameTooltip:Hide()
GameCooltip:Hide()
if (self.isMain) then
--> retira o zoom no icone
self.icone:SetWidth (CONST_BAR_HEIGHT)
self.icone:SetHeight (CONST_BAR_HEIGHT)
--> volta com a alfa antiga da barra
self.icone:SetAlpha (1)
--> remover o contedo que estava sendo mostrado na direita
if (info.mostrando_mouse_over) then
info.mostrando = nil
info.mostrando_mouse_over = false
info.showing = nil
info.jogador.detalhes = nil
gump:HidaAllDetalheInfo()
end
elseif (self.isAlvo) then
self:SetHeight (CONST_TARGET_HEIGHT)
end
end
local row_on_mousedown = function (self, button)
if (self.fading_in) then
return
end
self.mouse_down = _GetTime()
local x, y = _GetCursorPosition()
self.x = _math_floor (x)
self.y = _math_floor (y)
if (button == "RightButton" and not info.isMoving) then
_detalhes:FechaJanelaInfo()
elseif (not info.isMoving and button == "LeftButton" and not self.isDetalhe) then
info:StartMoving()
info.isMoving = true
end
end
local row_on_mouseup = function (self, button)
if (self.fading_in) then
return
end
if (info.isMoving and button == "LeftButton" and not self.isDetalhe) then
info:StopMovingOrSizing()
info.isMoving = false
end
local x, y = _GetCursorPosition()
x = _math_floor (x)
y = _math_floor (y)
if ((self.mouse_down+0.4 > _GetTime() and (x == self.x and y == self.y)) or (x == self.x and y == self.y)) then
--> setar os textos
if (self.isMain) then --> se no for uma barra de alvo
local barra_antiga = info.mostrando
if (barra_antiga and not info.mostrando_mouse_over) then
barra_antiga.textura:SetStatusBarColor (1, 1, 1, 1) --> volta a textura normal
barra_antiga.on_focus = false --> no esta mais no foco
--> clicou na mesma barra
if (barra_antiga == self) then -->
info.mostrando_mouse_over = true
return
--> clicou em outra barra
else --> clicou em outra barra e trocou o foco
barra_antiga:SetAlpha (.9) --> volta a alfa antiga
info.mostrando = self
info.showing = i
info.jogador.detalhes = self.show
info.jogador:MontaDetalhes (self.show, self)
self:SetAlpha (1)
self.textura:SetStatusBarColor (129/255, 125/255, 69/255, 1)
self.on_focus = true
return
end
end
--> nao tinha barras pressionadas
info.mostrando_mouse_over = false
self:SetAlpha (1)
self.textura:SetStatusBarColor (129/255, 125/255, 69/255, 1)
self.on_focus = true
end
end
end
local function SetBarraScripts (esta_barra, instancia, i)
esta_barra._index = i
esta_barra:SetScript ("OnEnter", row_on_enter)
esta_barra:SetScript ("OnLeave", row_on_leave)
esta_barra:SetScript ("OnMouseDown", row_on_mousedown)
esta_barra:SetScript ("OnMouseUp", row_on_mouseup)
end
local function CriaTexturaBarra (instancia, barra)
barra.textura = _CreateFrame ("StatusBar", nil, barra, "BackdropTemplate")
barra.textura:SetFrameLevel (barra:GetFrameLevel()-1)
barra.textura:SetAllPoints (barra)
barra.textura:SetAlpha (0.5)
local texture = SharedMedia:Fetch ("statusbar", _detalhes.player_details_window.bar_texture)
barra.textura:SetStatusBarTexture (texture)
barra.textura:SetStatusBarTexture (.6, .6, .6, 1)
barra.textura:SetStatusBarColor (.5, .5, .5, 0)
barra.textura:SetMinMaxValues (0,100)
barra.textura.bg = barra.textura:CreateTexture (nil, "background")
barra.textura.bg:SetAllPoints()
barra.textura.bg:SetColorTexture (1, 1, 1, 0.08)
if (barra.targets) then
barra.targets:SetParent (barra.textura)
barra.targets:SetFrameLevel (barra.textura:GetFrameLevel()+2)
end
barra.lineText1 = barra:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
barra.lineText1:SetPoint ("LEFT", barra.icone, "RIGHT", 2, 0)
barra.lineText1:SetJustifyH ("LEFT")
barra.lineText1:SetTextColor (1,1,1,1)
barra.lineText1:SetNonSpaceWrap (true)
barra.lineText1:SetWordWrap (false)
barra.lineText4 = barra:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
if (barra.targets) then
barra.lineText4:SetPoint ("RIGHT", barra.targets, "LEFT", -2, 0)
else
barra.lineText4:SetPoint ("RIGHT", barra, "RIGHT", -2, 0)
end
barra.lineText4:SetJustifyH ("RIGHT")
barra.lineText4:SetTextColor (1,1,1,1)
barra.textura:Show()
end
local miniframe_func_on_enter = function (self)
local barra = self:GetParent()
if (barra.show and type (barra.show) == "number") then
local spellname = _GetSpellInfo (barra.show)
if (spellname) then
GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT")
_detalhes:GameTooltipSetSpellByID (barra.show)
GameTooltip:Show()
end
end
barra:GetScript("OnEnter")(barra)
end
local miniframe_func_on_leave = function (self)
GameTooltip:Hide()
self:GetParent():GetScript("OnLeave")(self:GetParent())
end
local target_on_enter = function (self)
local barra = self:GetParent():GetParent()
if (barra.show and type (barra.show) == "number") then
local actor = barra.other_actor or info.jogador
local spell = actor.spells and actor.spells:PegaHabilidade (barra.show)
if (spell) then
local ActorTargetsSortTable = {}
local ActorTargetsContainer
local total = 0
if (spell.isReflection) then
ActorTargetsContainer = spell.extra
else
local attribute, sub_attribute = info.instancia:GetDisplay()
if (attribute == 1 or attribute == 3) then
ActorTargetsContainer = spell.targets
else
if (sub_attribute == 3) then --overheal
ActorTargetsContainer = spell.targets_overheal
elseif (sub_attribute == 6) then --absorbs
ActorTargetsContainer = spell.targets_absorbs
else
ActorTargetsContainer = spell.targets
end
end
end
--add and sort
for target_name, amount in _pairs (ActorTargetsContainer) do
--print (target_name, amount)
ActorTargetsSortTable [#ActorTargetsSortTable+1] = {target_name, amount or 0}
total = total + (amount or 0)
end
table.sort (ActorTargetsSortTable, _detalhes.Sort2)
local spellname = _GetSpellInfo (barra.show)
GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT")
GameTooltip:AddLine (barra.index .. ". " .. spellname)
GameTooltip:AddLine (info.target_text)
GameTooltip:AddLine (" ")
--get time type
local meu_tempo
if (_detalhes.time_type == 1 or not actor.grupo) then
meu_tempo = actor:Tempo()
elseif (_detalhes.time_type == 2) then
meu_tempo = info.instancia.showing:GetCombatTime()
end
local SelectedToKFunction = _detalhes.ToKFunctions [_detalhes.ps_abbreviation]
if (spell.isReflection) then
_detalhes:FormatCooltipForSpells()
GameCooltip:SetOwner(self, "bottomright", "top", 4, -2)
_detalhes:AddTooltipSpellHeaderText ("Spells Reflected", {1, 0.9, 0.0, 1}, 1, select(3, _GetSpellInfo(spell.id)), 0.1, 0.9, 0.1, 0.9) --localize-me
_detalhes:AddTooltipHeaderStatusbar (1, 1, 1, 0.4)
GameCooltip:AddIcon(select(3, _GetSpellInfo(spell.id)), 1, 1, 16, 16, .1, .9, .1, .9)
_detalhes:AddTooltipHeaderStatusbar (1, 1, 1, 0.5)
local topDamage = ActorTargetsSortTable[1] and ActorTargetsSortTable[1][2]
for index, target in ipairs (ActorTargetsSortTable) do
if (target [2] > 0) then
local spellId = target[1]
local damageDone = target[2]
local spellName, _, spellIcon = _GetSpellInfo(spellId)
GameCooltip:AddLine(spellName, SelectedToKFunction (_, damageDone) .. " (" .. floor(damageDone / topDamage * 100) .. "%)")
GameCooltip:AddIcon(spellIcon, 1, 1, 16, 16, .1, .9, .1, .9)
_detalhes:AddTooltipBackgroundStatusbar (false, damageDone / topDamage * 100)
end
end
GameCooltip:Show()
self.texture:SetAlpha (1)
self:SetAlpha (1)
barra:GetScript("OnEnter")(barra)
return
else
for index, target in ipairs (ActorTargetsSortTable) do
if (target [2] > 0) then
local class = _detalhes:GetClass (target [1])
if (class and _detalhes.class_coords [class]) then
local cords = _detalhes.class_coords [class]
if (info.target_persecond) then
GameTooltip:AddDoubleLine (index .. ". |TInterface\\AddOns\\Details\\images\\classes_small_alpha:14:14:0:0:128:128:"..cords[1]*128 ..":"..cords[2]*128 ..":"..cords[3]*128 ..":"..cords[4]*128 .."|t " .. target [1], _detalhes:comma_value ( _math_floor (target [2] / meu_tempo) ), 1, 1, 1, 1, 1, 1)
else
GameTooltip:AddDoubleLine (index .. ". |TInterface\\AddOns\\Details\\images\\classes_small_alpha:14:14:0:0:128:128:"..cords[1]*128 ..":"..cords[2]*128 ..":"..cords[3]*128 ..":"..cords[4]*128 .."|t " .. target [1], SelectedToKFunction (_, target [2]), 1, 1, 1, 1, 1, 1)
end
else
if (info.target_persecond) then
GameTooltip:AddDoubleLine (index .. ". " .. target [1], _detalhes:comma_value ( _math_floor (target [2] / meu_tempo)), 1, 1, 1, 1, 1, 1)
else
GameTooltip:AddDoubleLine (index .. ". " .. target [1], SelectedToKFunction (_, target [2]), 1, 1, 1, 1, 1, 1)
end
end
end
end
end
GameTooltip:Show()
else
GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT")
GameTooltip:AddLine (barra.index .. ". " .. barra.show)
GameTooltip:AddLine (info.target_text)
GameTooltip:AddLine (Loc ["STRING_NO_TARGET"], 1, 1, 1)
GameTooltip:AddLine (Loc ["STRING_MORE_INFO"], 1, 1, 1)
GameTooltip:Show()
end
else
GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT")
GameTooltip:AddLine (barra.index .. ". " .. barra.show)
GameTooltip:AddLine (info.target_text)
GameTooltip:AddLine (Loc ["STRING_NO_TARGET"], 1, 1, 1)
GameTooltip:AddLine (Loc ["STRING_MORE_INFO"], 1, 1, 1)
GameTooltip:Show()
end
self.texture:SetAlpha (1)
self:SetAlpha (1)
barra:GetScript("OnEnter")(barra)
end
local target_on_leave = function (self)
GameTooltip:Hide()
GameCooltip:Hide()
self:GetParent():GetParent():GetScript("OnLeave")(self:GetParent():GetParent())
self.texture:SetAlpha (.7)
self:SetAlpha (.7)
end
function gump:CriaNovaBarraInfo1 (instancia, index)
if (_detalhes.playerDetailWindow.barras1 [index]) then
print ("erro a barra "..index.." ja existe na janela de detalhes...")
return
end
local janela = info.container_barras.gump
local esta_barra = _CreateFrame ("Button", "Details_infobox1_bar_"..index, info.container_barras.gump,"BackdropTemplate")
esta_barra:SetHeight (CONST_BAR_HEIGHT)
esta_barra.index = index
local y = (index-1) * (CONST_BAR_HEIGHT + 1)
y = y*-1 --> baixo
esta_barra:SetPoint ("LEFT", janela, "LEFT", CONST_BAR_HEIGHT, 0)
esta_barra:SetPoint ("RIGHT", janela, "RIGHT")
esta_barra:SetPoint ("TOP", janela, "TOP", 0, y)
esta_barra:SetFrameLevel (janela:GetFrameLevel() + 1)
esta_barra:EnableMouse (true)
esta_barra:RegisterForClicks ("LeftButtonDown","RightButtonUp")
esta_barra.targets = CreateFrame ("frame", "Details_infobox1_bar_"..index.."Targets", esta_barra, "BackdropTemplate")
esta_barra.targets:SetPoint ("right", esta_barra, "right")
esta_barra.targets:SetSize (CONST_BAR_HEIGHT-1, CONST_BAR_HEIGHT-1)
esta_barra.targets.texture = esta_barra.targets:CreateTexture (nil, overlay)
esta_barra.targets.texture:SetTexture ([[Interface\MINIMAP\TRACKING\Target]])
esta_barra.targets.texture:SetAllPoints()
esta_barra.targets.texture:SetDesaturated (true)
esta_barra.targets:SetAlpha (.7)
esta_barra.targets.texture:SetAlpha (1)
esta_barra.targets:SetScript ("OnEnter", target_on_enter)
esta_barra.targets:SetScript ("OnLeave", target_on_leave)
esta_barra.icone = esta_barra:CreateTexture (nil, "OVERLAY")
esta_barra.icone:SetWidth (CONST_BAR_HEIGHT)
esta_barra.icone:SetHeight (CONST_BAR_HEIGHT)
esta_barra.icone:SetPoint ("RIGHT", esta_barra, "LEFT", 0, 0)
CriaTexturaBarra(instancia, esta_barra)
--> icone
esta_barra.miniframe = CreateFrame ("frame", nil, esta_barra, "BackdropTemplate")
esta_barra.miniframe:SetSize (CONST_BAR_HEIGHT-2, CONST_BAR_HEIGHT-2)
esta_barra.miniframe:SetPoint ("left", esta_barra, "left", 0, 0)
esta_barra.miniframe:SetScript ("OnEnter", miniframe_func_on_enter)
esta_barra.miniframe:SetScript ("OnLeave", miniframe_func_on_leave)
esta_barra:SetAlpha(1)
esta_barra.icone:SetAlpha (1)
esta_barra.isMain = true
SetBarraScripts (esta_barra, instancia, index)
info.barras1 [index] = esta_barra --> barra adicionada
esta_barra.textura:SetStatusBarColor (1, 1, 1, 1) --> isso aqui a parte da seleo e desceleo
esta_barra.on_focus = false --> isso aqui a parte da seleo e desceleo
return esta_barra
end
function gump:CriaNovaBarraInfo2(instancia, index)
if (_detalhes.playerDetailWindow.barras2 [index]) then
print ("erro a barra "..index.." ja existe na janela de detalhes...")
return
end
local janela = info.container_alvos.gump
local esta_barra = _CreateFrame ("Button", "Details_infobox2_bar_"..index, info.container_alvos.gump, "BackdropTemplate")
esta_barra:SetHeight (CONST_TARGET_HEIGHT)
local y = (index-1) * (CONST_TARGET_HEIGHT + 1)
y = y*-1 --> baixo
esta_barra:SetPoint("LEFT", janela, "LEFT", CONST_TARGET_HEIGHT, 0)
esta_barra:SetPoint("RIGHT", janela, "RIGHT", 0, 0)
esta_barra:SetPoint("TOP", janela, "TOP", 0, y)
esta_barra:SetFrameLevel (janela:GetFrameLevel() + 1)
esta_barra:EnableMouse (true)
esta_barra:RegisterForClicks ("LeftButtonDown","RightButtonUp")
--> icone
esta_barra.icone = esta_barra:CreateTexture(nil, "OVERLAY")
esta_barra.icone:SetWidth(CONST_TARGET_HEIGHT)
esta_barra.icone:SetHeight(CONST_TARGET_HEIGHT)
esta_barra.icone:SetPoint("RIGHT", esta_barra, "LEFT", 0, 0)
CriaTexturaBarra(instancia, esta_barra)
esta_barra:SetAlpha(ALPHA_BLEND_AMOUNT)
esta_barra.icone:SetAlpha(1)
esta_barra.isAlvo = true
SetBarraScripts(esta_barra, instancia, index)
info.barras2 [index] = esta_barra --> barra adicionada
return esta_barra
end
local x_start = 61
local y_start = -10
function gump:CriaNovaBarraInfo3 (instancia, index)
if (_detalhes.playerDetailWindow.barras3 [index]) then
print ("erro a barra "..index.." ja existe na janela de detalhes...")
return
end
local janela = info.container_detalhes
local esta_barra = CreateFrame ("Button", "Details_infobox3_bar_"..index, janela, "BackdropTemplate")
esta_barra:SetHeight (16)
local y = (index-1) * 17
y = y*-1
--esta_barra:SetPoint ("LEFT", janela, "LEFT", x_start, 0)
--esta_barra:SetPoint ("RIGHT", janela, "RIGHT", 65, 0)
--esta_barra:SetPoint ("TOP", janela, "TOP", 0, y+y_start)
container3_bars_pointFunc (esta_barra, index)
esta_barra:EnableMouse (true)
CriaTexturaBarra (instancia, esta_barra)
--> icone
esta_barra.icone = esta_barra:CreateTexture (nil, "OVERLAY")
esta_barra.icone:SetWidth (14)
esta_barra.icone:SetHeight (14)
esta_barra.icone:SetPoint ("RIGHT", esta_barra.textura, "LEFT", 18, 0)
esta_barra:SetAlpha (0.9)
esta_barra.icone:SetAlpha (1)
esta_barra.isDetalhe = true
SetBarraScripts (esta_barra, instancia, index)
info.barras3 [index] = esta_barra --> barra adicionada
return esta_barra
end