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