Files
coa-details/gumps/janela_info.lua
T
Tercio c30e2312b7 - Report lines for deaths is now inverted. No need to scroll up the chat to see the cause of death anymore.
Fixed some annoyances with auto current feature where it was changing the segments even when the user were using the window.
2015-04-14 18:44:47 -03:00

3845 lines
137 KiB
Lua

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.janela_info
local classe_icones = _G.CLASS_ICON_TCOORDS
------------------------------------------------------------------------------------------------------------------------------
--self = instancia
--jogador = classe_damage ou classe_heal
function _detalhes:AbreJanelaInfo (jogador, from_att_change)
--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)
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) then
_detalhes:FechaJanelaInfo() --> se clicou na mesma barra então 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
--> vamos passar os parâmetros 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 referência da instância 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
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
--> completa com a borda
--info.classe_iconePlus:SetTexture ("Interface\\AddOns\\Details\\images\\classes_plus")
if (_detalhes.faction_against == "Horde") then
--info.classe_iconePlus:SetTexCoord (0.25, 0.5, 0, 0.25)
info.nome:SetTextColor (1, 91/255, 91/255, 1)
else
--info.classe_iconePlus:SetTexCoord (0, 0.25, 0, 0.25)
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:SetTexture ("Interface\\AddOns\\Details\\images\\monster")
--info.classe_icone:SetTexCoord (0, 1, 0, 1)
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
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
info:ShowTabs()
gump:Fade (info, 0)
return jogador:MontaInfo()
end
-- for beta todo: info background need a major rewrite
function gump:TrocaBackgroundInfo()
info.bg3_sec_texture:Hide()
info.bg2_sec_texture:Hide()
if (info.atributo == 1) then --> DANO
if (info.sub_atributo == 1 or info.sub_atributo == 2) then --> damage done / dps
if (info.tipo ~= 1) then --> janela com as divisorias
info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]])
info.bg1_sec_texture:SetTexture (nil)
info.tipo = 1
end
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
if (info.tipo ~= 2) then --> janela com fundo diferente
info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]])
info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_damagetaken]])
info.bg3_sec_texture:Show()
info.bg2_sec_texture:Show()
info.tipo = 2
end
info.targets:SetText (Loc ["STRING_TARGETS"] .. ":")
info.no_targets:Show()
info.no_targets.text:Show()
elseif (info.sub_atributo == 4) then --> friendly fire
if (info.tipo ~= 3) then --> janela com fundo diferente
info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]])
info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_damagetaken]])
info.bg3_sec_texture:Show()
info.bg2_sec_texture:Show()
info.tipo = 3
end
info.targets:SetText (Loc ["STRING_SPELLS"] .. ":")
elseif (info.sub_atributo == 6) then --> enemies
if (info.tipo ~= 3) then --> janela com fundo diferente
info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]])
info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_damagetaken]])
info.bg3_sec_texture:Show()
info.bg2_sec_texture:Show()
info.tipo = 3
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
if (info.tipo ~= 1) then --> janela com as divisorias
info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]])
info.bg1_sec_texture:SetTexture (nil)
info.tipo = 1
end
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
if (info.tipo ~= 2) then --> janela com fundo diferente
info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]])
info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_damagetaken]])
info.bg3_sec_texture:Show()
info.bg2_sec_texture:Show()
info.tipo = 2
end
info.targets:SetText (Loc ["STRING_TARGETS"] .. ":")
info.no_targets:Show()
info.no_targets.text:Show()
end
elseif (info.atributo == 3) then --> REGEN
if (info.tipo ~= 2) then --> janela com fundo diferente
info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]])
info.bg1_sec_texture:SetTexture (nil)
info.tipo = 2
end
info.targets:SetText ("Vindo de:")
elseif (info.atributo == 4) then --> MISC
if (info.tipo ~= 2) then --> janela com fundo diferente
info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]])
info.bg1_sec_texture:SetTexture (nil)
info.tipo = 2
end
info.targets:SetText (Loc ["STRING_TARGETS"] .. ":")
end
end
--> self é qualquer coisa que chamar esta função
------------------------------------------------------------------------------------------------------------------------------
-- é chamado pelo click no X e pelo reset do historico
function _detalhes:FechaJanelaInfo (fromEscape)
if (info.ativo) then --> se a janela tiver aberta
--janela_info:Hide()
if (fromEscape) then
gump:Fade (info, "in")
else
gump:Fade (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.janela_info.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.janela_info.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, 5 do
gump:HidaDetalheInfo (i)
end
for _, barra in _ipairs (info.barras3) do
barra:Hide()
end
_detalhes.janela_info.spell_icone:SetTexture ("")
end
--> seta os scripts da janela de informações
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)
--> botão fechar
este_gump.fechar:SetScript ("OnClick", function (self)
_detalhes:FechaJanelaInfo()
end)
end
------------------------------------------------------------------------------------------------------------------------------
function gump:HidaDetalheInfo (index)
local info = _detalhes.janela_info.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 informações
------------------------------------------------------------------------------------------------------------------------------
local detalhe_infobg_onenter = function (self)
gump:Fade (self.overlay, "OUT")
gump:Fade (self.reportar, "OUT")
end
local detalhe_infobg_onleave = function (self)
gump:Fade (self.overlay, "IN")
gump:Fade (self.reportar, "IN")
end
local detalhes_inforeport_onenter = function (self)
gump:Fade (self:GetParent().overlay, "OUT")
gump:Fade (self, "OUT")
end
local detalhes_inforeport_onleave = function (self)
gump:Fade (self:GetParent().overlay, "IN")
gump:Fade (self, "IN")
end
function gump:CriaDetalheInfo (index)
local info = {}
info.nome = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.nome2 = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano_porcento = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano_media = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano_dps = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.bg = _CreateFrame ("StatusBar", nil, _detalhes.janela_info.container_detalhes)
info.bg:SetStatusBarTexture ("Interface\\AddOns\\Details\\images\\bar_detalhes2")
info.bg:SetMinMaxValues (0, 100)
info.bg:SetValue (100)
info.bg:SetWidth (219)
info.bg:SetHeight (47)
info.bg.overlay = info.bg:CreateTexture (nil, "ARTWORK")
info.bg.overlay:SetTexture ("Interface\\AddOns\\Details\\images\\overlay_detalhes")
info.bg.overlay:SetWidth (241)
info.bg.overlay:SetHeight (61)
info.bg.overlay:SetPoint ("TOPLEFT", info.bg, "TOPLEFT", -7, 6)
gump:Fade (info.bg.overlay, 1)
info.bg.reportar = gump:NewDetailsButton (info.bg, nil, nil, _detalhes.Reportar, _detalhes.janela_info, 10+index, 16, 16,
--_detalhes.icones.report.up, _detalhes.icones.report.down, _detalhes.icones.report.disabled)
"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)
gump:Fade (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 (nil, "BACKGROUND")
info.bg_end:SetHeight (47)
info.bg_end:SetTexture ("Interface\\AddOns\\Details\\images\\bar_detalhes2_end")
_detalhes.janela_info.grupos_detalhes [index] = info
end
--> determina qual a pocisão que a barra de detalhes vai ocupar
------------------------------------------------------------------------------------------------------------------------------
function gump:SetaDetalheInfoAltura (index)
local info = _detalhes.janela_info.grupos_detalhes [index]
local janela = _detalhes.janela_info.container_detalhes
local altura = {-10, -63, -118, -173, -228}
local x1 = 64
local x2 = 160
altura = altura [index]
info.bg:SetPoint ("TOPLEFT", janela, "TOPLEFT", x1-2, altura+2)
info.bg_end:SetPoint ("LEFT", info.bg, "LEFT", info.bg:GetValue()*2.19, 0)
info.bg:Hide()
info.nome:SetPoint ("TOPLEFT", janela, "TOPLEFT", x1, altura)
info.nome2:SetPoint ("TOPLEFT", janela, "TOPLEFT", x2, altura)
info.dano:SetPoint ("TOPLEFT", janela, "TOPLEFT", x1, altura + (-20))
info.dano_porcento:SetPoint ("TOPLEFT", janela, "TOPLEFT", x2, altura + (-20))
info.dano_media:SetPoint ("TOPLEFT", janela, "TOPLEFT", x1, altura + (-30))
info.dano_dps:SetPoint ("TOPLEFT", janela, "TOPLEFT", x2, altura + (-30))
end
--> seta o conteúdo da barra de detalhes
------------------------------------------------------------------------------------------------------------------------------
function gump:SetaDetalheInfoTexto (index, p, arg1, arg2, arg3, arg4, arg5, arg6)
local info = _detalhes.janela_info.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)
end
info.bg_end:SetPoint ("LEFT", info.bg, "LEFT", (info.bg:GetValue()*2.19)-6, 0)
info.bg:Show()
end
if (info.IsPet) then
info.bg.PetIcon:Hide()
info.bg.PetText:Hide()
info.bg.PetDps:Hide()
gump:Fade (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 serão usados
------------------------------------------------------------------------------------------------------------------------------
local function cria_barras_detalhes()
_detalhes.janela_info.grupos_detalhes = {}
gump:CriaDetalheInfo (1)
gump:SetaDetalheInfoAltura (1)
gump:CriaDetalheInfo (2)
gump:SetaDetalheInfoAltura (2)
gump:CriaDetalheInfo (3)
gump:SetaDetalheInfoAltura (3)
gump:CriaDetalheInfo (4)
gump:SetaDetalheInfoAltura (4)
gump:CriaDetalheInfo (5)
gump:SetaDetalheInfoAltura (5)
end
--> cria os textos em geral da janela info
------------------------------------------------------------------------------------------------------------------------------
local function cria_textos (este_gump)
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 = este_gump:CreateFontString (nil, "OVERLAY", "QuestFont_Large")
este_gump.targets:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 24, -233)
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)
local container_barras_window = _CreateFrame ("ScrollFrame", "Details_Info_ContainerBarrasScroll", este_gump)
local container_barras = _CreateFrame ("Frame", "Details_Info_ContainerBarras", container_barras_window)
container_barras_window:SetBackdrop({
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-gold-Border", tile = true, tileSize = 16, edgeSize = 5,
insets = {left = 1, right = 1, top = 0, bottom = 1},})
container_barras_window:SetBackdropBorderColor (0, 0, 0, 0)
container_barras:SetBackdrop({
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16,
insets = {left = 1, right = 1, top = 0, bottom = 1},})
container_barras:SetBackdropColor (0, 0, 0, 0)
container_barras:SetAllPoints (container_barras_window)
container_barras:SetWidth (300)
container_barras:SetHeight (150)
container_barras:EnableMouse (true)
container_barras:SetResizable (false)
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)
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.janela_info.container_barras
if (amt >= 9 and container.ultimo ~= amt) then
local tamanho = 17*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.janela_info.container_alvos
if (amt >= 6 and container.ultimo ~= amt) then
local tamanho = 17*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)
local container_detalhes = _CreateFrame ("Frame", "Details_Info_ContainerDetalhes", este_gump)
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)
local container_alvos_window = _CreateFrame ("ScrollFrame", "Details_Info_ContainerAlvosScroll", este_gump)
local container_alvos = _CreateFrame ("Frame", "Details_Info_ContainerAlvos", container_alvos_window)
container_alvos_window:SetBackdrop({
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-gold-Border", tile = true, tileSize = 16, edgeSize = 5,
insets = {left = 1, right = 1, top = 0, bottom = 1},})
container_alvos_window:SetBackdropBorderColor (0,0,0,0)
--container_alvos:SetBackdrop({
-- bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16,
-- insets = {left = 1, right = 1, top = 0, bottom = 1},})
--container_alvos:SetBackdropColor (50/255, 50/255, 50/255, 0.6)
container_alvos:SetAllPoints (container_alvos_window)
container_alvos:SetWidth (300)
container_alvos:SetHeight (100)
container_alvos:EnableMouse (true)
container_alvos:SetResizable (false)
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
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
--> search key: ~create
function gump:CriaJanelaInfo()
--> cria a janela em si
local este_gump = info
este_gump:SetFrameStrata ("HIGH")
este_gump:SetToplevel (true)
--> fehcar com o esc
tinsert (UISpecialFrames, este_gump:GetName())
--> propriedades da janela
este_gump:SetPoint ("CENTER", UIParent)
--este_gump:SetWidth (640)
este_gump:SetWidth (590)
este_gump:SetHeight (354)
este_gump:EnableMouse (true)
este_gump:SetResizable (false)
este_gump:SetMovable (true)
--> joga a janela para a global
_detalhes.janela_info = este_gump
--> começa a montar as texturas <--
--> 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 (nil, "BORDER")
este_gump.bg1:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 0, 0)
este_gump.bg1:SetDrawLayer ("BORDER", 1)
function _detalhes:SetPlayerDetailsWindowTexture (texture)
este_gump.bg1:SetTexture (texture)
end
_detalhes:SetPlayerDetailsWindowTexture ("Interface\\AddOns\\Details\\images\\info_window_background")
este_gump.bg1_sec_texture = este_gump:CreateTexture (nil, "BORDER")
este_gump.bg1_sec_texture:SetDrawLayer ("BORDER", 4)
este_gump.bg1_sec_texture:SetPoint ("topleft", este_gump.bg1, "topleft", 348, -86)
este_gump.bg1_sec_texture:SetHeight (262)
este_gump.bg1_sec_texture:SetWidth (264)
este_gump.bg2_sec_texture = este_gump:CreateTexture (nil, "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 = este_gump:CreateTexture (nil, "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:SetTexture (0, 0, 0, 1)
este_gump.bg3_sec_texture:Hide()
--> botão de fechar
este_gump.fechar = _CreateFrame ("Button", nil, este_gump, "UIPanelCloseButton")
este_gump.fechar:SetWidth (32)
este_gump.fechar:SetHeight (32)
este_gump.fechar:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", 5, -8)
este_gump.fechar:SetText ("X")
este_gump.fechar:SetFrameLevel (este_gump:GetFrameLevel()+2)
este_gump.no_targets = este_gump:CreateTexture (nil, "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 = este_gump: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()
--> titulo
gump:NewLabel (este_gump, este_gump, nil, "titulo", Loc ["STRING_PLAYER_DETAILS"], "GameFontHighlightLeft", 12, {227/255, 186/255, 4/255})
este_gump.titulo:SetPoint ("center", este_gump, "center")
este_gump.titulo:SetPoint ("top", este_gump, "top", 0, -18)
--> cria os textos da janela
cria_textos (este_gump)
--> cria o frama que vai abrigar as barras das habilidades
cria_container_barras (este_gump)
--> cria o container que vai abrirgar as 5 barras de detalhes
cria_container_detalhes (este_gump)
--> cria o container onde vai abrigar os alvos do jogador
cria_container_alvos (este_gump)
--> 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 = {}
--> botão de reportar da caixa da esquerda, onde fica as barras principais
este_gump.report_esquerda = gump:NewDetailsButton (este_gump, 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)
--> botão de reportar da caixa dos alvos
este_gump.report_alvos = gump:NewDetailsButton (este_gump, 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
--> í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()
--este_gump:Hide()
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()
--> 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)
--> botão de reportar da caixa da direita, onde estão os 5 quadrados
este_gump.report_direita = gump:NewDetailsButton (este_gump, 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", -8, -57)
este_gump.report_direita:Hide()
local red = "FFFFAAAA"
local green = "FFAAFFAA"
--> tabs:
--> tab default
_detalhes:CreatePlayerDetailsTab ("Summary", Loc ["STRING_INFO_TAB_SUMMARY"], --[1] tab name [2] localized name
function (tabOBject, playerObject) --[2] condition
if (playerObject) then
return true
else
return false
end
end,
nil, --[3] fill function
function() --[4] onclick
for _, tab in _ipairs (_detalhes.player_details_tabs) do
tab.frame:Hide()
end
end,
nil --[5] oncreate
)
--> search key: ~avoidance
local avoidance_create = function (tab, frame)
--> MAIN ICON
local mainicon = frame:CreateTexture (nil, "artwork")
mainicon:SetPoint ("topright", frame, "topright", -12, -12)
mainicon:SetTexture ([[Interface\ACHIEVEMENTFRAME\UI-ACHIEVEMENT-SHIELDS]])
mainicon:SetTexCoord (0, .5, .5, 1)
mainicon:SetSize (64, 64)
local tankname = frame:CreateFontString (nil, "artwork", "GameFontNormal")
tankname:SetPoint ("right", mainicon, "left", -2, 2)
tab.tankname = tankname
--> 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)
percent_desc:SetTextColor (.5, .5, .5, 1)
--> SUMMARY
local summary_texture = frame:CreateTexture (nil, "artwork")
summary_texture:SetPoint ("topleft", frame, "topleft", 10, -15)
summary_texture:SetTexture ([[Interface\ACHIEVEMENTFRAME\UI-Achievement-HorizontalShadow]])
summary_texture:SetSize (128, 16)
local summary_text = frame:CreateFontString (nil, "artwork", "GameFontNormal")
summary_text:SetText ("Summary")
summary_text :SetPoint ("left", summary_texture, "left", 2, 0)
--total damage received
local damagereceived = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
damagereceived:SetPoint ("topleft", frame, "topleft", 15, -35)
damagereceived:SetText ("Total Damage Taken:") --> localize-me
damagereceived:SetTextColor (.8, .8, .8, 1)
local damagereceived_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
damagereceived_amt:SetPoint ("left", damagereceived, "right", 2, 0)
damagereceived_amt:SetText ("0")
tab.damagereceived = damagereceived_amt
--per second
local damagepersecond = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
damagepersecond:SetPoint ("topleft", frame, "topleft", 20, -50)
damagepersecond:SetText ("Per Second:") --> localize-me
local damagepersecond_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
damagepersecond_amt:SetPoint ("left", damagepersecond, "right", 2, 0)
damagepersecond_amt:SetText ("0")
tab.damagepersecond = damagepersecond_amt
--total absorbs
local absorbstotal = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
absorbstotal:SetPoint ("topleft", frame, "topleft", 15, -65)
absorbstotal:SetText ("Total Absorbs:") --> localize-me
absorbstotal:SetTextColor (.8, .8, .8, 1)
local absorbstotal_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
absorbstotal_amt:SetPoint ("left", absorbstotal, "right", 2, 0)
absorbstotal_amt:SetText ("0")
tab.absorbstotal = absorbstotal_amt
--per second
local absorbstotalpersecond = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
absorbstotalpersecond:SetPoint ("topleft", frame, "topleft", 20, -80)
absorbstotalpersecond:SetText ("Per Second:") --> localize-me
local absorbstotalpersecond_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
absorbstotalpersecond_amt:SetPoint ("left", absorbstotalpersecond, "right", 2, 0)
absorbstotalpersecond_amt:SetText ("0")
tab.absorbstotalpersecond = absorbstotalpersecond_amt
--> MELEE
local melee_texture = frame:CreateTexture (nil, "artwork")
melee_texture:SetPoint ("topleft", frame, "topleft", 10, -100)
melee_texture:SetTexture ([[Interface\ACHIEVEMENTFRAME\UI-Achievement-HorizontalShadow]])
melee_texture:SetSize (128, 16)
local melee_text = frame:CreateFontString (nil, "artwork", "GameFontNormal")
melee_text:SetText ("Melee")
melee_text :SetPoint ("left", melee_texture, "left", 2, 0)
--dodge
local dodge = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
dodge:SetPoint ("topleft", frame, "topleft", 15, -120)
dodge:SetText ("Dodge:") --> localize-me
dodge:SetTextColor (.8, .8, .8, 1)
local dodge_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
dodge_amt:SetPoint ("left", dodge, "right", 2, 0)
dodge_amt:SetText ("0")
tab.dodge = dodge_amt
local dodgepersecond = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
dodgepersecond:SetPoint ("topleft", frame, "topleft", 20, -135)
dodgepersecond:SetText ("Per Second:") --> localize-me
local dodgepersecond_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
dodgepersecond_amt:SetPoint ("left", dodgepersecond, "right", 2, 0)
dodgepersecond_amt:SetText ("0")
tab.dodgepersecond = dodgepersecond_amt
-- parry
local parry = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
parry:SetPoint ("topleft", frame, "topleft", 15, -150)
parry:SetText ("Parry:") --> localize-me
parry:SetTextColor (.8, .8, .8, 1)
local parry_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
parry_amt:SetPoint ("left", parry, "right", 2, 0)
parry_amt:SetText ("0")
tab.parry = parry_amt
local parrypersecond = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
parrypersecond:SetPoint ("topleft", frame, "topleft", 20, -165)
parrypersecond:SetText ("Per Second:") --> localize-me
local parrypersecond_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
parrypersecond_amt:SetPoint ("left", parrypersecond, "right", 2, 0)
parrypersecond_amt:SetText ("0")
tab.parrypersecond = parrypersecond_amt
--> ABSORBS
local absorb_texture = frame:CreateTexture (nil, "artwork")
absorb_texture:SetPoint ("topleft", frame, "topleft", 200, -15)
absorb_texture:SetTexture ([[Interface\ACHIEVEMENTFRAME\UI-Achievement-HorizontalShadow]])
absorb_texture:SetSize (128, 16)
local absorb_text = frame:CreateFontString (nil, "artwork", "GameFontNormal")
absorb_text:SetText ("Absorb")
absorb_text :SetPoint ("left", absorb_texture, "left", 2, 0)
--full absorbs
local fullsbsorbed = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
fullsbsorbed:SetPoint ("topleft", frame, "topleft", 205, -35)
fullsbsorbed:SetText ("Full Absorbs:") --> localize-me
fullsbsorbed:SetTextColor (.8, .8, .8, 1)
local fullsbsorbed_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
fullsbsorbed_amt:SetPoint ("left", fullsbsorbed, "right", 2, 0)
fullsbsorbed_amt:SetText ("0")
tab.fullsbsorbed = fullsbsorbed_amt
--partially absorbs
local partiallyabsorbed = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
partiallyabsorbed:SetPoint ("topleft", frame, "topleft", 205, -50)
partiallyabsorbed:SetText ("Partially Absorbed:") --> localize-me
partiallyabsorbed:SetTextColor (.8, .8, .8, 1)
local partiallyabsorbed_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
partiallyabsorbed_amt:SetPoint ("left", partiallyabsorbed, "right", 2, 0)
partiallyabsorbed_amt:SetText ("0")
tab.partiallyabsorbed = partiallyabsorbed_amt
--partially absorbs per second
local partiallyabsorbedpersecond = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
partiallyabsorbedpersecond:SetPoint ("topleft", frame, "topleft", 210, -65)
partiallyabsorbedpersecond:SetText ("Average:") --> localize-me
local partiallyabsorbedpersecond_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
partiallyabsorbedpersecond_amt:SetPoint ("left", partiallyabsorbedpersecond, "right", 2, 0)
partiallyabsorbedpersecond_amt:SetText ("0")
tab.partiallyabsorbedpersecond = partiallyabsorbedpersecond_amt
--no absorbs
local noabsorbs = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
noabsorbs:SetPoint ("topleft", frame, "topleft", 205, -80)
noabsorbs:SetText ("No Absorption:") --> localize-me
noabsorbs:SetTextColor (.8, .8, .8, 1)
local noabsorbs_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
noabsorbs_amt:SetPoint ("left", noabsorbs, "right", 2, 0)
noabsorbs_amt:SetText ("0")
tab.noabsorbs = noabsorbs_amt
--> HEALING
local healing_texture = frame:CreateTexture (nil, "artwork")
healing_texture:SetPoint ("topleft", frame, "topleft", 200, -100)
healing_texture:SetTexture ([[Interface\ACHIEVEMENTFRAME\UI-Achievement-HorizontalShadow]])
healing_texture:SetSize (128, 16)
local healing_text = frame:CreateFontString (nil, "artwork", "GameFontNormal")
healing_text:SetText ("Healing")
healing_text :SetPoint ("left", healing_texture, "left", 2, 0)
--self healing
local selfhealing = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
selfhealing:SetPoint ("topleft", frame, "topleft", 205, -120)
selfhealing:SetText ("Self Healing:") --> localize-me
selfhealing:SetTextColor (.8, .8, .8, 1)
local selfhealing_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
selfhealing_amt:SetPoint ("left", selfhealing, "right", 2, 0)
selfhealing_amt:SetText ("0")
tab.selfhealing = selfhealing_amt
--self healing per second
local selfhealingpersecond = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
selfhealingpersecond:SetPoint ("topleft", frame, "topleft", 210, -135)
selfhealingpersecond:SetText ("Per Second:") --> localize-me
local selfhealingpersecond_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
selfhealingpersecond_amt:SetPoint ("left", selfhealingpersecond, "right", 2, 0)
selfhealingpersecond_amt:SetText ("0")
tab.selfhealingpersecond = selfhealingpersecond_amt
for i = 1, 5 do
local healer = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
healer:SetPoint ("topleft", frame, "topleft", 205, -160 + ((i-1)*15)*-1)
healer:SetText ("healer name:") --> localize-me
healer:SetTextColor (.8, .8, .8, 1)
local healer_amt = frame:CreateFontString (nil, "artwork", "GameFontHighlightSmall")
healer_amt:SetPoint ("left", healer, "right", 2, 0)
healer_amt:SetText ("0")
tab ["healer" .. i] = {healer, healer_amt}
end
--SPELLS
local spells_texture = frame:CreateTexture (nil, "artwork")
spells_texture:SetPoint ("topleft", frame, "topleft", 400, -80)
spells_texture:SetTexture ([[Interface\ACHIEVEMENTFRAME\UI-Achievement-HorizontalShadow]])
spells_texture:SetSize (128, 16)
local spells_text = frame:CreateFontString (nil, "artwork", "GameFontNormal")
spells_text:SetText ("Spells")
spells_text :SetPoint ("left", spells_texture, "left", 2, 0)
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")
GameTooltip:SetSpellByID (self.spellid)
GameTooltip:Show()
end
end
local frame_tooltip_onleave = function (self)
if (self.spellid) then
self:SetBackdrop (nil)
GameTooltip:Hide()
end
end
for i = 1, 10 do
local frame_tooltip = CreateFrame ("frame", nil, frame)
frame_tooltip:SetPoint ("topleft", frame, "topleft", 405, -100 + ((i-1)*15)*-1)
frame_tooltip:SetSize (150, 14)
frame_tooltip:SetScript ("OnEnter", frame_tooltip_onenter)
frame_tooltip:SetScript ("OnLeave", frame_tooltip_onleave)
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
-- ~buff
local spells_by_class = { --buffss uptime
["DRUID"] = {
[132402] = true, --savage defense
[135286] = true, -- tooth and claw
},
["DEATHKNIGHT"] = {
[145677] = true, --riposte
[77535] = true, --blood shield
--[49222] = true, --bone shield
[51460] = true, --runic corruption
},
["MONK"] = {
[115295] = true, --guard
[115307] = true, --shuffle
[115308] = true, --elusive brew
--[128939] = true, --elusive brew
[125359] = true, --tiger power
},
["PALADIN"] = {
[132403] = true, --shield of the righteous
[114163] = true, --eternal-flame
[20925] = true, --sacred shield
},
["WARRIOR"] = {
[145672] = true, --riposte
[2565] = true, -- shield Block
[871] = true, --shield wall
[112048] = true, --shield barrier
},
}
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
tab.tankname:SetText ("Avoidance of\n" .. n) --> localize-me
--> 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 .. ")")
--> 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]
if (name:find ("-")) then
name = name:gsub (("-.*"), "")
end
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)
if (misc_player) then
if (misc_player.cooldowns_defensive_spells) then
local minha_tabela = misc_player.cooldowns_defensive_spells._ActorTable
local cooldowns_usados = {}
for _spellid, _tabela in pairs (minha_tabela) do
cooldowns_usados [#cooldowns_usados+1] = {_spellid, _tabela.counter}
end
table.sort (cooldowns_usados, _detalhes.Sort2)
if (#cooldowns_usados > 1) then
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" .. i])
framebg.spellid = esta_habilidade[1]
label1:SetText (nome_magia .. ":")
label2:SetText (esta_habilidade[2])
icon1:SetTexture (icone_magia)
icon1:SetTexCoord (0.0625, 0.953125, 0.0625, 0.953125)
index_used = index_used + 1
end
end
end
end
--> buffs uptime
if (index_used < 11) then
if (misc_player.buff_uptime_spells) then
local minha_tabela = misc_player.buff_uptime_spells._ActorTable
local encounter_time = combat:GetCombatTime()
for _spellid, _tabela in pairs (minha_tabela) do
if (spells_by_class [player.classe] [_spellid] and index_used <= 10) then
local nome_magia, _, icone_magia = GetSpellInfo (_spellid)
local label1, label2, icon1, framebg = unpack (tab ["spell" .. index_used])
framebg.spellid = _spellid
local t = _tabela.uptime / encounter_time * 100
label1:SetText (nome_magia .. ":")
local minutos, segundos = _math_floor (_tabela.uptime / 60), _math_floor (_tabela.uptime % 60)
label2:SetText (minutos .. "m " .. segundos .. "s" .. " (" .. _math_floor (t) .. "%)")
icon1:SetTexture (icone_magia)
icon1:SetTexCoord (0.0625, 0.953125, 0.0625, 0.953125)
index_used = index_used + 1
end
end
end
end
for i = index_used, 10 do
local label1, label2, icon1, framebg = unpack (tab ["spell" .. i])
framebg.spellid = nil
label1:SetText ("-- -- -- --")
label2:SetText ("")
icon1:SetTexture (nil)
end
--> habilidade usada para interromper
--[[
--]]
end
_detalhes:CreatePlayerDetailsTab ("Avoidance", Loc ["STRING_INFO_TAB_AVOIDANCE"], --[1] tab name [2] localized name
function (tabOBject, playerObject) --[2] condition
if (playerObject.isTank) then
return true
else
return false
end
end,
avoidance_fill, --[3] fill function
nil, --[4] onclick
avoidance_create --[5] oncreate
)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local target_texture = [[Interface\MINIMAP\TRACKING\Target]]
local empty_text = ""
local plus = red .. "-("
local minor = green .. "+("
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, 4 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]:SetValue (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]:SetValue (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]:SetValue (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, 4 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 [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].righttext:SetText (_detalhes:ToK2Min (player_2_target_total) .. " |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].righttext:SetText (_detalhes:ToK2Min (player_2_target_total) .. " |c" .. plus .. down .. "%)|r")
end
bar_2 [2]:SetValue (player_2_target_total / player_2_top * 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]:SetValue (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]:SetValue (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].righttext:SetText (_detalhes:ToK2Min (player_3_target_total) .. " |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) .. " |c" .. plus .. down .. "%)|r")
end
bar_3 [2]:SetValue (player_3_target_total / player_3_top * 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]:SetValue (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]:SetValue (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]:SetValue (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]:SetValue (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]:SetValue (0)
bar_3 [3][4] = nil
end
end
end
local fill_compare_actors = function (self, player, other_players)
--primeiro preenche a nossa barra
local spells_sorted = {}
for spellid, spelltable in _pairs (player.spells._ActorTable) do
spells_sorted [#spells_sorted+1] = {spelltable, spelltable.total}
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] [2]
local frame2 = DetailsPlayerComparisonBox2
frame2.player = other_players [1]:Name()
local player_2_total = other_players [1].total_without_pet
local player_2_spells_sorted = {}
for spellid, spelltable in _pairs (other_players [1].spells._ActorTable) do
player_2_spells_sorted [#player_2_spells_sorted+1] = {spelltable, spelltable.total}
end
table.sort (player_2_spells_sorted, _detalhes.Sort2)
local player_2_top = player_2_spells_sorted [1] [2]
local player_2_spell_info = {}
for index, spelltable in _ipairs (player_2_spells_sorted) do
player_2_spell_info [spelltable[1].id] = index
end
local frame3 = DetailsPlayerComparisonBox3
frame3.player = other_players [2] and other_players [2]:Name()
local player_3_total = other_players [2] and other_players [2].total_without_pet
local player_3_spells_sorted = {}
local player_3_spell_info = {}
local player_3_top
if (other_players [2]) then
for spellid, spelltable in _pairs (other_players [2].spells._ActorTable) do
player_3_spells_sorted [#player_3_spells_sorted+1] = {spelltable, spelltable.total}
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
for i = 1, 9 do
local bar = self.bars [i]
local index = i + offset
local data = spells_sorted [index]
if (data) then
--seta no box principal
local spellid = data [1].id
local name, _, icon = _GetSpellInfo (spellid)
bar [1]:SetTexture (icon)
bar [2].lefttext:SetText (index .. ". " .. 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 [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
--seta no segundo box
local player_2 = other_players [1]
local spell = player_2.spells._ActorTable [spellid]
local bar_2 = frame2.bars [i]
-- ~compare
if (spell) then
bar_2 [1]:SetTexture (icon)
bar_2 [2].lefttext:SetText (player_2_spell_info [spellid] .. ". " .. name)
bar_2 [2].lefttext:SetTextColor (1, 1, 1, 1)
if (spell.total == 0 and data [2] == 0) then
bar_2 [2].righttext:SetText ("0 +(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].righttext:SetText (_detalhes:ToK2Min (spell.total) .. " |c" .. minor .. up .. "%)|r")
else
bar_2 [2].righttext:SetText ("0 +(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].righttext:SetText (_detalhes:ToK2Min (spell.total) .. " |c" .. plus .. down .. "%)|r")
else
bar_2 [2].righttext:SetText ("0 +(0%)")
end
end
bar_2 [2]:SetValue (spell.total / player_2_top * 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
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]:SetValue (0)
end
--seta o terceiro box
local bar_3 = frame3.bars [i]
if (player_3_total) then
local player_3 = other_players [2]
local spell = player_3.spells._ActorTable [spellid]
if (spell) then
bar_3 [1]:SetTexture (icon)
bar_3 [2].lefttext:SetText (player_3_spell_info [spellid] .. ". " .. name)
bar_3 [2].lefttext:SetTextColor (1, 1, 1, 1)
if (spell.total == 0 and data [2] == 0) then
bar_3 [2].righttext:SetText ("0 +(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].righttext:SetText (_detalhes:ToK2Min (spell.total) .. " |c" .. minor .. up .. "%)|r")
else
bar_3 [2].righttext:SetText ("0 +(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].righttext:SetText (_detalhes:ToK2Min (spell.total) .. " |c" .. plus .. down .. "%)|r")
else
bar_3 [2].righttext:SetText ("0 +(0%)")
end
end
bar_3 [2]:SetValue (spell.total / player_3_top * 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]:SetValue (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]:SetValue (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)
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]:SetValue (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]:SetValue (0)
end
end
for index, spelltable in _ipairs (spells_sorted) do
end
end
local refresh_comparison_box = function (self)
--atualiza a scroll
FauxScrollFrame_Update (self, math.max (self.tab.spells_amt, 10), 9, 15)
fill_compare_actors (self, self.tab.player, self.tab.players)
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, math.max (#target_pool, 5), 4, 14)
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
DetailsPlayerComparisonBox1.name_label:SetText (player:Name())
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
label2:SetText (players_to_compare [1]:Name())
label2_percent:SetText (player:Name() .. " %")
end
if (players_to_compare [2]) then
label3:SetText (players_to_compare [2]:Name())
label3_percent:SetText (player:Name() .. " %")
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)
local player_1_top = player_1_skills [1] [2]
-- 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] [2]
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] [2]
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 [2].lefttext:SetText (index .. ". " .. name)
bar [2].righttext:SetText (_detalhes:ToK2Min (spell [2]))
bar [2]:SetValue (spell [2]/player_1_top*100)
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 [2].lefttext:SetText (this_index .. ". " .. name)
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].righttext:SetText (_detalhes:ToK2Min (this_spell [2]) .. " |c" .. plus .. down .. "%)|r")
end
bar [2]:SetValue (this_spell [2]/player_2_top*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 ("")
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 [2].lefttext:SetText (this_index .. ". " .. name)
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].righttext:SetText (_detalhes:ToK2Min (this_spell [2]) .. " |c" .. plus .. down .. "%)|r")
end
bar [2]:SetValue (this_spell [2]/player_3_top*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 ("")
end
end
end
frame1.tooltip:SetHeight ( (#player_1_skills*15) + 10)
frame2.tooltip:SetHeight ( (#player_1_skills*15) + 10)
frame3.tooltip:SetHeight ( (#player_1_skills*15) + 10)
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 (.5, .5, .5, 1)
bar2[2].icon:SetTexCoord (0, 1, 0, 1)
bar3[2]:SetStatusBarColor (.5, .5, .5, 1)
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
if (bar1[2].righttext:GetText()) then
bar1[2]:SetStatusBarColor (1, 1, 1, 1)
bar1[2].icon:SetTexCoord (.1, .9, .1, .9)
frame1.tooltip.hits_label2:SetText (hits)
frame1.tooltip.average_label2:SetText (_detalhes:ToK2Min (average))
frame1.tooltip.crit_label2:SetText (critical .. "%")
if (player1_misc) then
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_label2:SetText (minutos .. "m" .. segundos .. "s")
else
frame1.tooltip.uptime_label2:SetText ("--x--x--")
end
else
frame1.tooltip.uptime_label2:SetText ("--x--x--")
end
frame1.tooltip:Show()
end
if (bar2[2].righttext:GetText()) then
bar2[2]:SetStatusBarColor (1, 1, 1, 1)
bar2[2].icon:SetTexCoord (.1, .9, .1, .9)
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_label2:SetText (bar2[3][1] .. " |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_label2:SetText (bar2[3][1] .. " |c" .. plus .. down .. "%)|r")
end
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_label2:SetText (_detalhes:ToK2Min (bar2[3][2]) .. " |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_label2:SetText (_detalhes:ToK2Min (bar2[3][2]) .. " |c" .. plus .. down .. "%)|r")
end
if (critical > bar2[3][3]) then
local diff = critical - bar2[3][3]
local up = diff / bar2[3][3] * 100
up = _math_floor (up)
if (up > 999) then
up = ">" .. 999
end
frame2.tooltip.crit_label2:SetText (bar2[3][3] .. "%" .. " |c" .. minor .. up .. "%)|r")
else
local diff = bar2[3][3] - critical
local down = diff / critical * 100
down = _math_floor (down)
if (down > 999) then
down = ">" .. 999
end
frame2.tooltip.crit_label2:SetText (bar2[3][3] .. "%" .. " |c" .. plus .. down .. "%)|r")
end
if (player2_misc) then
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_label2:SetText (minutos .. "m" .. segundos .. "s (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_label2:SetText (minutos .. "m" .. segundos .. "s |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_label2:SetText (minutos .. "m" .. segundos .. "s |c" .. plus .. down .. "%)|r")
end
else
frame2.tooltip.uptime_label2:SetText ("--x--x--")
end
else
frame2.tooltip.uptime_label2:SetText ("--x--x--")
end
frame2.tooltip:Show()
end
---------------------------------------------------
if (bar3[2].righttext:GetText()) then
bar3[2]:SetStatusBarColor (1, 1, 1, 1)
bar3[2].icon:SetTexCoord (.1, .9, .1, .9)
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_label2:SetText (bar3[3][1] .. " |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_label2:SetText (bar3[3][1] .. " |c" .. plus .. down .. "%)|r")
end
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_label2:SetText (_detalhes:ToK2Min (bar3[3][2]) .. " |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_label2:SetText (_detalhes:ToK2Min (bar3[3][2]) .. " |c" .. plus .. down .. "%)|r")
end
if (critical > bar3[3][3]) then
local diff = critical - bar3[3][3]
local up = diff / bar3[3][3] * 100
up = _math_floor (up)
if (up > 999) then
up = ">" .. 999
end
frame3.tooltip.crit_label2:SetText (bar3[3][3] .. "%" .. " |c" .. minor .. up .. "%)|r")
else
local diff = bar3[3][3] - critical
local down = diff / critical * 100
down = _math_floor (down)
if (down > 999) then
down = ">" .. 999
end
frame3.tooltip.crit_label2:SetText (bar3[3][3] .. "%" .. " |c" .. plus .. down .. "%)|r")
end
if (player3_misc) then
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_label2:SetText (minutos .. "m" .. segundos .. "s (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_label2:SetText (minutos .. "m" .. segundos .. "s |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_label2:SetText (minutos .. "m" .. segundos .. "s |c" .. plus .. down .. "%)|r")
end
else
frame3.tooltip.uptime_label2:SetText ("--x--x--")
end
else
frame3.tooltip.uptime_label2:SetText ("--x--x--")
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 (.5, .5, .5, 1)
bar2[2].icon:SetTexCoord (0, 1, 0, 1)
bar3[2]:SetStatusBarColor (.5, .5, .5, 1)
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)
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: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", 2, 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 (110)
else
bar.lefttext:SetWidth (70)
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)
tinsert (parent.bars, {spellicon, bar, {0, 0, 0}})
end
local create_tooltip = function (name)
local tooltip = CreateFrame ("frame", name, UIParent)
tooltip:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], tile = true, tileSize = 16, edgeSize = 12, insets = {left = 1, right = 1, top = 1, bottom = 1},})
tooltip:SetBackdropColor (0, 0, 0, 1)
tooltip:SetSize (175, 67)
tooltip:SetFrameStrata ("tooltip")
local background = tooltip:CreateTexture (nil, "artwork")
background:SetTexture ([[Interface\SPELLBOOK\Spellbook-Page-1]])
background:SetTexCoord (.6, 0.1, 0, 0.64453125)
background:SetVertexColor (1, 1, 1, 0.2)
background:SetPoint ("topleft", tooltip, "topleft", 2, -4)
background:SetPoint ("bottomright", tooltip, "bottomright", -4, 2)
tooltip.hits_label = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.hits_label:SetPoint ("topleft", tooltip, "topleft", 10, -10)
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", -10, -10)
tooltip.hits_label2:SetText ("0")
tooltip.hits_label2:SetJustifyH ("right")
tooltip.average_label = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.average_label:SetPoint ("topleft", tooltip, "topleft", 10, -22)
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", -10, -22)
tooltip.average_label2:SetText ("0")
tooltip.average_label2:SetJustifyH ("right")
tooltip.crit_label = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.crit_label:SetPoint ("topleft", tooltip, "topleft", 10, -34)
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", -10, -34)
tooltip.crit_label2:SetText ("0")
tooltip.crit_label2:SetJustifyH ("right")
tooltip.uptime_label = tooltip:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
tooltip.uptime_label:SetPoint ("topleft", tooltip, "topleft", 10, -46)
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", -10, -46)
tooltip.uptime_label2:SetText ("0")
tooltip.uptime_label2:SetJustifyH ("right")
return tooltip
end
local create_tooltip_target = function (name)
local tooltip = CreateFrame ("frame", name, UIParent)
tooltip:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], tile = true, tileSize = 16, edgeSize = 12, insets = {left = 1, right = 1, top = 1, bottom = 1},})
tooltip:SetBackdropColor (0, 0, 0, 1)
tooltip:SetSize (175, 67)
tooltip:SetFrameStrata ("tooltip")
tooltip.bars = {}
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]:SetValue (0)
end
end
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) - 7
local parent = tooltip
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 .. "Bar" .. index, parent)
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: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)
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")
frame1:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 14, refresh_comparison_box) end)
frame1:SetSize (175, 150)
frame1:SetPoint ("topleft", frame, "topleft", 10, -30)
frame1:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 16, edgeSize = 10, insets = {left = 1, right = 1, top = 0, bottom = 1},})
frame1:SetBackdropColor (0, 0, 0, .7)
frame1.bars = {}
frame1.tab = tab
frame1.tooltip = create_tooltip ("DetailsPlayerComparisonBox1Tooltip")
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, 9 do
create_bar ("DetailsPlayerComparisonBox1Bar"..i, frame1, i, true)
end
--cria o box dos targets
local target1 = CreateFrame ("scrollframe", "DetailsPlayerComparisonTarget1", frame, "FauxScrollFrameTemplate")
target1:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 14, refresh_target_box) end)
target1:SetSize (175, 70)
target1:SetPoint ("topleft", frame1, "bottomleft", 0, -10)
target1:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 16, edgeSize = 10, insets = {left = 1, right = 1, top = 0, bottom = 1},})
target1:SetBackdropColor (0, 0, 0, .7)
target1.bars = {}
target1.tab = tab
target1.tooltip = create_tooltip_target ("DetailsPlayerComparisonTarget1Tooltip")
--criar as barras do target1
for i = 1, 4 do
create_bar ("DetailsPlayerComparisonTarget1Bar"..i, target1, i, true, true)
end
--------------------------------------------
local frame2 = CreateFrame ("frame", "DetailsPlayerComparisonBox2", frame)
local frame3 = CreateFrame ("frame", "DetailsPlayerComparisonBox3", frame)
frame2:SetPoint ("topleft", frame1, "topright", 25, 0)
frame2:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 16, edgeSize = 10, insets = {left = 1, right = 1, top = 0, bottom = 1},})
frame2:SetSize (170, 150)
frame2:SetBackdropColor (0, 0, 0, .7)
frame2.bars = {}
frame2.tooltip = create_tooltip ("DetailsPlayerComparisonBox2Tooltip")
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)
frame2.name_label_percent = playername2_percent
--criar as barras do frame2
for i = 1, 9 do
create_bar ("DetailsPlayerComparisonBox2Bar"..i, frame2, i)
end
--cria o box dos targets
local target2 = CreateFrame ("frame", "DetailsPlayerComparisonTarget2", frame)
target2:SetSize (170, 70)
target2:SetPoint ("topleft", frame2, "bottomleft", 0, -10)
target2:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 16, edgeSize = 10, insets = {left = 1, right = 1, top = 0, bottom = 1},})
target2:SetBackdropColor (0, 0, 0, .7)
target2.bars = {}
target2.tooltip = create_tooltip_target ("DetailsPlayerComparisonTarget2Tooltip")
--criar as barras do target2
for i = 1, 4 do
create_bar ("DetailsPlayerComparisonTarget2Bar"..i, target2, i, nil, true)
end
frame3:SetPoint ("topleft", frame2, "topright", 5, 0)
frame3:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 16, edgeSize = 10, insets = {left = 1, right = 1, top = 0, bottom = 1},})
frame3:SetSize (170, 150)
frame3:SetBackdropColor (0, 0, 0, .7)
frame3.bars = {}
frame3.tooltip = create_tooltip ("DetailsPlayerComparisonBox3Tooltip")
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
--criar as barras do frame3
for i = 1, 9 do
create_bar ("DetailsPlayerComparisonBox3Bar"..i, frame3, i)
end
--cria o box dos targets
local target3 = CreateFrame ("frame", "DetailsPlayerComparisonTarget3", frame)
target3:SetSize (170, 70)
target3:SetPoint ("topleft", frame3, "bottomleft", 0, -10)
target3:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 16, edgeSize = 10, insets = {left = 1, right = 1, top = 0, bottom = 1},})
target3:SetBackdropColor (0, 0, 0, .7)
target3.bars = {}
target3.tooltip = create_tooltip_target ("DetailsPlayerComparisonTarget3Tooltip")
--criar as barras do target1
for i = 1, 4 do
create_bar ("DetailsPlayerComparisonTarget3Bar"..i, target3, i, nil, true)
end
end
-- ~compare
_detalhes:CreatePlayerDetailsTab ("Compare", Loc ["STRING_INFO_TAB_COMPARISON"], --[1] tab name [2] localized name
function (tabOBject, playerObject) --[2] 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
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 / my_spells_total * 100
if (match_percentage > 30) then
tinsert (tabOBject.players, actor)
end
end
end
if (#tabOBject.players > 0) then
return true
end
return false
--return true
end,
compare_fill, --[3] fill function
nil, --[4] onclick
compare_create --[5] oncreate
)
function este_gump:ShowTabs()
local amt_positive = 0
for index = #_detalhes.player_details_tabs, 1, -1 do
local tab = _detalhes.player_details_tabs [index]
if (tab:condition (info.jogador, info.atributo, info.sub_atributo)) then
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, "top", 5, 28)
alert:Show()
end
end
tab:Show()
amt_positive = amt_positive + 1
tab:SetPoint ("BOTTOMLEFT", info.container_barras, "TOPLEFT", 390 - (67 * (amt_positive-1)), 1)
else
tab.frame:Hide()
tab:Hide()
end
end
if (amt_positive < 2) then
--_detalhes.player_details_tabs[1]:Hide()
_detalhes.player_details_tabs[1]:SetPoint ("BOTTOMLEFT", info.container_barras, "TOPLEFT", 390 - (67 * (2-1)), 1)
end
_detalhes.player_details_tabs[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
_detalhes.player_details_tabs = {}
function _detalhes:CreatePlayerDetailsTab (tabname, localized_name, condition, fillfunction, onclick, oncreate)
if (not tabname) then
tabname = "unnamed"
end
local index = #_detalhes.player_details_tabs
local newtab = CreateFrame ("button", "DetailsInfoWindowTab" .. index, info, "ChatTabTemplate")
newtab:SetText (localized_name)
newtab:SetParent (info)
newtab:SetFrameStrata ("HIGH")
newtab:SetFrameLevel (info:GetFrameLevel()+1)
newtab:Hide()
newtab.condition = condition
newtab.tabname = tabname
newtab.localized_name = localized_name
newtab.onclick = onclick
newtab.fillfunction = fillfunction
newtab.last_actor = {}
--> frame
newtab.frame = CreateFrame ("frame", nil, UIParent)
newtab.frame:SetParent (info)
newtab.frame:SetFrameStrata ("HIGH")
newtab.frame:SetFrameLevel (info:GetFrameLevel()+5)
newtab.frame:EnableMouse (true)
if (newtab.fillfunction) then
newtab.frame:SetScript ("OnShow", function()
if (newtab.last_actor == info.jogador) then
return
end
newtab.last_actor = info.jogador
newtab:fillfunction (info.jogador, info.instancia.showing)
end)
end
if (oncreate) then
oncreate (newtab, newtab.frame)
end
newtab.frame:SetBackdrop({
bgFile = [[Interface\ACHIEVEMENTFRAME\UI-GuildAchievement-Parchment-Horizontal-Desaturated]], tile = true, tileSize = 512,
edgeFile = [[Interface\ACHIEVEMENTFRAME\UI-Achievement-WoodBorder]], edgeSize = 32,
insets = {left = 0, right = 0, top = 0, bottom = 0}})
newtab.frame:SetBackdropColor (.5, .50, .50, 1)
newtab.frame:SetPoint ("TOPLEFT", info, "TOPLEFT", 19, -76)
newtab.frame:SetSize (569, 274)
newtab.frame:Hide()
--> adicionar ao container
_detalhes.player_details_tabs [#_detalhes.player_details_tabs+1] = newtab
if (not onclick) then
--> hide all tabs
newtab:SetScript ("OnClick", function()
for _, tab in _ipairs (_detalhes.player_details_tabs) do
tab.frame:Hide()
tab.leftSelectedTexture:SetVertexColor (1, 1, 1, 1)
tab.middleSelectedTexture:SetVertexColor (1, 1, 1, 1)
tab.rightSelectedTexture:SetVertexColor (1, 1, 1, 1)
end
newtab.leftSelectedTexture:SetVertexColor (1, .7, 0, 1)
newtab.middleSelectedTexture:SetVertexColor (1, .7, 0, 1)
newtab.rightSelectedTexture:SetVertexColor (1, .7, 0, 1)
newtab.frame:Show()
end)
else
--> custom
newtab:SetScript ("OnClick", function()
for _, tab in _ipairs (_detalhes.player_details_tabs) do
tab.frame:Hide()
tab.leftSelectedTexture:SetVertexColor (1, 1, 1, 1)
tab.middleSelectedTexture:SetVertexColor (1, 1, 1, 1)
tab.rightSelectedTexture:SetVertexColor (1, 1, 1, 1)
end
newtab.leftSelectedTexture:SetVertexColor (1, .7, 0, 1)
newtab.middleSelectedTexture:SetVertexColor (1, .7, 0, 1)
newtab.rightSelectedTexture:SetVertexColor (1, .7, 0, 1)
onclick()
end)
end
--> remove os scripts padroes
newtab:SetScript ("OnDoubleClick", nil)
newtab:SetScript ("OnEnter", nil)
newtab:SetScript ("OnLeave", nil)
newtab:SetScript ("OnDragStart", nil)
end
function _detalhes.janela_info: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 --> botão 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.texto_esquerdo:GetText() .. ": " .. barra.texto_direita:GetText()
elseif (type (spellid) == "number" and spellid > 10) then
local link = GetSpellLink (spellid)
report_lines [#report_lines+1] = index .. ". " .. link .. ": " .. barra.texto_direita:GetText()
else
local spellname = barra.texto_esquerdo: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.texto_direita:GetText()
end
end
if (index == amt) then
break
end
end
elseif (botao == 3) then --> botão 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.texto_esquerdo:GetText().." -> ".. barra.texto_direita:GetText()
end
if (index == amt) then
break
end
end
elseif (botao == 2) then --> botão 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
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.texto_esquerdo:GetText().." -> ".. barra.texto_direita:GetText()
end
if (index == amt) then
break
end
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 conteúdo 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.janela_info.grupos_detalhes) do
detalhe_infobg_onleave (block.bg)
end
--> aumenta o tamanho da barra
self:SetHeight (17) --> altura determinada pela instância
--> poe a barra com alfa 1 ao invés 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
elseif (not self.minha_tabela or not self.minha_tabela:MontaTooltipAlvos (self, self._index, info.instancia)) then -- > poderia ser aprimerado para uma tailcall
return
end
GameTooltip:Show()
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 (17)
self.icone:SetHeight (17)
--> 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 --> não 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 não 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 (16)
--> 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 (14)
self.icone:SetHeight (14)
--> volta com a alfa antiga da barra
self.icone:SetAlpha (1)
--> remover o conteúdo 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
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 não 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 --> não 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)
barra.textura:SetFrameLevel (barra:GetFrameLevel()-1)
barra.textura:SetAllPoints (barra)
barra.textura:SetAlpha (0.5)
--barra.textura:SetStatusBarTexture ([[Interface\AddOns\Details\images\bar_serenity]])
barra.textura:SetStatusBarTexture ([[Interface\AddOns\Details\images\bar_skyline]])
--barra.textura:SetStatusBarTexture (_detalhes.default_texture)
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:SetTexture (1, 1, 1, 0.08)
if (barra.targets) then
barra.targets:SetParent (barra.textura)
barra.targets:SetFrameLevel (barra.textura:GetFrameLevel()+2)
end
barra.texto_esquerdo = barra:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
barra.texto_esquerdo:SetPoint ("LEFT", barra.textura, "LEFT", 22, 0)
barra.texto_esquerdo:SetJustifyH ("LEFT")
barra.texto_esquerdo:SetTextColor (1,1,1,1)
barra.texto_esquerdo:SetNonSpaceWrap (true)
barra.texto_esquerdo:SetWordWrap (false)
barra.texto_direita = barra:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
if (barra.targets) then
barra.texto_direita:SetPoint ("RIGHT", barra.targets, "LEFT", -2, 0)
else
barra.texto_direita:SetPoint ("RIGHT", barra, "RIGHT", -2, 0)
end
barra.texto_direita:SetJustifyH ("RIGHT")
barra.texto_direita: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")
GameTooltip:SetSpellByID (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:PegaHabilidade (barra.show)
if (spell) then
local ActorTargetsSortTable = {}
local ActorTargetsContainer
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
--add and sort
for target_name, amount in _pairs (ActorTargetsContainer) do
--print (target_name, amount)
ActorTargetsSortTable [#ActorTargetsSortTable+1] = {target_name, 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
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], _detalhes:comma_value (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], _detalhes:comma_value (target [2]), 1, 1, 1, 1, 1, 1)
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()
self:GetParent():GetParent():GetScript("OnLeave")(self:GetParent():GetParent())
self.texture:SetAlpha (.7)
self:SetAlpha (.7)
end
function gump:CriaNovaBarraInfo1 (instancia, index)
if (_detalhes.janela_info.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)
esta_barra:SetWidth (300) --> tamanho da barra de acordo com o tamanho da janela
esta_barra:SetHeight (16) --> altura determinada pela instância
esta_barra.index = index
local y = (index-1)*17 --> 17 é a altura da barra
y = y*-1 --> baixo
esta_barra:SetPoint ("LEFT", janela, "LEFT")
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)
esta_barra.targets:SetPoint ("right", esta_barra, "right")
esta_barra.targets:SetSize (15, 15)
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 (.7)
esta_barra.targets:SetScript ("OnEnter", target_on_enter)
esta_barra.targets:SetScript ("OnLeave", target_on_leave)
CriaTexturaBarra (instancia, esta_barra)
--> icone
esta_barra.miniframe = CreateFrame ("frame", nil, esta_barra)
esta_barra.miniframe:SetSize (14, 14)
esta_barra.miniframe:SetPoint ("RIGHT", esta_barra.textura, "LEFT", 18, 0)
esta_barra.miniframe:SetScript ("OnEnter", miniframe_func_on_enter)
esta_barra.miniframe:SetScript ("OnLeave", miniframe_func_on_leave)
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.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 seleção e desceleção
esta_barra.on_focus = false --> isso aqui é a parte da seleção e desceleção
return esta_barra
end
function gump:CriaNovaBarraInfo2 (instancia, index)
if (_detalhes.janela_info.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)
esta_barra:SetWidth (300) --> tamanho da barra de acordo com o tamanho da janela
esta_barra:SetHeight (16) --> altura determinada pela instância
local y = (index-1)*17 --> 17 é a altura da barra
y = y*-1 --> baixo
esta_barra:SetPoint ("LEFT", janela, "LEFT")
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")
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.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.janela_info.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)
esta_barra:SetWidth (220)
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)
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