From 3cd5a901dfae5c6cb2929a5a573520fe5b472eee Mon Sep 17 00:00:00 2001 From: Tercio Date: Tue, 3 Dec 2013 01:33:43 -0200 Subject: [PATCH] - added support to skins, change over options panel. --- boot.lua | 28 +- classes/classe_instancia.lua | 79 +++--- classes/classe_others.lua | 44 ++- classes/container_combatentes.lua | 15 +- core/control.lua | 1 + core/parser.lua | 142 +++++++++- functions/classes.lua | 3 +- gumps/janela_options.lua | 22 ++ gumps/janela_principal.lua | 427 +++++++++++++++++------------- images/ResizeGripD.tga | Bin 410 -> 0 bytes images/ResizeGripL.tga | Bin 410 -> 0 bytes images/ball_left.tga | Bin 4948 -> 0 bytes images/bar_down_left.tga | Bin 1334 -> 0 bytes images/bar_down_right.tga | Bin 1223 -> 0 bytes images/bar_main_leftright.tga | Bin 37314 -> 0 bytes images/bar_top_center.tga | Bin 16176 -> 0 bytes images/bar_top_right.tga | Bin 2083 -> 0 bytes images/cadeado.tga | Bin 776 -> 0 bytes images/emenda_left.tga | Bin 886 -> 0 bytes images/grab.tga | Bin 1143 -> 0 bytes images/grab_over.tga | Bin 1399 -> 0 bytes images/icon_mainwindow.tga | Bin 11520 -> 0 bytes images/scroll_down.tga | Bin 1676 -> 0 bytes images/scroll_middle.tga | Bin 4409 -> 0 bytes images/scroll_up.tga | Bin 1799 -> 0 bytes images/scrollbar.tga | Bin 7915 -> 0 bytes images/skins/default_skin.tga | Bin 0 -> 180224 bytes images/skins/flat_skin.tga | Bin 0 -> 155583 bytes locales/Details-enUS.lua | 2 +- locales/Details-ptBR.lua | 2 +- 30 files changed, 538 insertions(+), 227 deletions(-) delete mode 100644 images/ResizeGripD.tga delete mode 100644 images/ResizeGripL.tga delete mode 100644 images/ball_left.tga delete mode 100644 images/bar_down_left.tga delete mode 100644 images/bar_down_right.tga delete mode 100644 images/bar_main_leftright.tga delete mode 100644 images/bar_top_center.tga delete mode 100644 images/bar_top_right.tga delete mode 100644 images/cadeado.tga delete mode 100644 images/emenda_left.tga delete mode 100644 images/grab.tga delete mode 100644 images/grab_over.tga delete mode 100644 images/icon_mainwindow.tga delete mode 100644 images/scroll_down.tga delete mode 100644 images/scroll_middle.tga delete mode 100644 images/scroll_up.tga delete mode 100644 images/scrollbar.tga create mode 100644 images/skins/default_skin.tga create mode 100644 images/skins/flat_skin.tga diff --git a/boot.lua b/boot.lua index 035f3123..ad69cd9d 100644 --- a/boot.lua +++ b/boot.lua @@ -8,7 +8,7 @@ _ = nil _detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0") - _detalhes.userversion = "v1.6.5" + _detalhes.userversion = "v1.6.7" _detalhes.version = "Alpha 010" _detalhes.realversion = 10 @@ -59,6 +59,32 @@ do --> ignored pets _detalhes.pets_ignored = {} _detalhes.pets_no_owner = {} + --> armazena as skins disponíveis para as janelas + _detalhes.skins = {["Default Skin"] = {file = "default_skin", author = "Details!", version = "1.0", site = "unknown", desc = "default skin for Details!", can_change_alpha_head = false, icon_anchor_main = {-1, 1}, icon_anchor_plugins = {-9, -7}, icon_plugins_size = {19, 19}}} + _detalhes.skin_path = "Interface\\AddOns\\Details\\images\\skins\\" + + -- temporariamente aqui, precisa migrar para um arquivo separado + function _detalhes:InstallSkin (skin_name, skin_table) + if (not skin_name) then + return false -- sem nome + elseif (_detalhes.skins [skin_name]) then + return false -- ja existe + end + + if (not skin_table.file) then + return false -- sem arquivo + end + + skin_table.author = skin_table.author or "" + skin_table.version = skin_table.version or "" + skin_table.site = skin_table.site or "" + skin_table.desc = skin_table.desc or "" + + _detalhes.skins [skin_name] = skin_table + return true + end + + _detalhes:InstallSkin ("Flat Color", {file = "flat_skin", author = "Details!", version = "1.0", site = "unknown", desc = "a flat skin", can_change_alpha_head = true, icon_anchor_main = {-1, -5}, icon_anchor_plugins = {-7, -13}, icon_plugins_size = {19, 18}}) --> Plugins --> raid ------------------------------------------------------------------- diff --git a/classes/classe_instancia.lua b/classes/classe_instancia.lua index 43638a0e..28b448e4 100644 --- a/classes/classe_instancia.lua +++ b/classes/classe_instancia.lua @@ -445,8 +445,8 @@ function _detalhes:agrupar_janelas (lados) self.snap [4] = esta_instancia.meu_id esta_instancia.snap [2] = self.meu_id - esta_instancia.baseframe.rodape.StatusBarLeftAnchor:SetPoint ("left", esta_instancia.baseframe.rodape.top_bg, "left", 25, 10) - esta_instancia.baseframe.rodape.StatusBarCenterAnchor:SetPoint ("center", esta_instancia.baseframe.rodape.top_bg, "center", 20, 10) + esta_instancia.baseframe.rodape.StatusBarLeftAnchor:SetPoint ("left", esta_instancia.baseframe.rodape.top_bg, "left", 25, 58) + esta_instancia.baseframe.rodape.StatusBarCenterAnchor:SetPoint ("center", esta_instancia.baseframe.rodape.top_bg, "center", 20, 58) esta_instancia.baseframe.rodape.esquerdo:SetTexture ("Interface\\AddOns\\Details\\images\\bar_down_left_snap") esta_instancia.baseframe.rodape.esquerdo.have_snap = true @@ -476,9 +476,9 @@ function _detalhes:agrupar_janelas (lados) self.snap [2] = esta_instancia.meu_id esta_instancia.snap [4] = self.meu_id - self.baseframe.rodape.StatusBarLeftAnchor:SetPoint ("left", self.baseframe.rodape.top_bg, "left", 25, 10) - self.baseframe.rodape.StatusBarCenterAnchor:SetPoint ("center", self.baseframe.rodape.top_bg, "center", 20, 10) - self.baseframe.rodape.esquerdo:SetTexture ("Interface\\AddOns\\Details\\images\\bar_down_left_snap") + self.baseframe.rodape.StatusBarLeftAnchor:SetPoint ("left", self.baseframe.rodape.top_bg, "left", 25, 58) + self.baseframe.rodape.StatusBarCenterAnchor:SetPoint ("center", self.baseframe.rodape.top_bg, "center", 20, 58) + self.baseframe.rodape.esquerdo:SetTexture ([[Interface\AddOns\Details\images\bar_down_left_snap]]) self.baseframe.rodape.esquerdo.have_snap = true end @@ -558,8 +558,8 @@ function _detalhes:Desagrupar (instancia, lado) end if (index == 2) then -- index é o codigo do snap - esta_instancia.baseframe.rodape.StatusBarLeftAnchor:SetPoint ("left", esta_instancia.baseframe.rodape.top_bg, "left", 5, 10) - esta_instancia.baseframe.rodape.StatusBarCenterAnchor:SetPoint ("center", esta_instancia.baseframe.rodape.top_bg, "center", 0, 10) + esta_instancia.baseframe.rodape.StatusBarLeftAnchor:SetPoint ("left", esta_instancia.baseframe.rodape.top_bg, "left", 5, 58) + esta_instancia.baseframe.rodape.StatusBarCenterAnchor:SetPoint ("center", esta_instancia.baseframe.rodape.top_bg, "center", 0, 58) esta_instancia.baseframe.rodape.esquerdo:SetTexture ("Interface\\AddOns\\Details\\images\\bar_down_left") esta_instancia.baseframe.rodape.esquerdo.have_snap = nil end @@ -569,6 +569,7 @@ function _detalhes:Desagrupar (instancia, lado) end gump:Fade (instancia.botao_separar, 1) + instancia.verticalSnap = false instancia.horizontalSnap = false return @@ -635,6 +636,8 @@ end nova_instancia.meu_id = ID + nova_instancia.skin = "Default Skin" + nova_instancia.barras = {} --container que irá armazenar todas as barras nova_instancia.barraS = {nil, nil} --de x até x são as barras que estão sendo mostradas na tela nova_instancia.rolagem = false --barra de rolagem não esta sendo mostrada @@ -785,6 +788,8 @@ end --> search key: ~restaura function _detalhes:RestauraJanela (index, temp) + self.skin = self.skin or "Default Skin" + self.bg_alpha = self.bg_alpha or _detalhes.default_bg_alpha self.bg_r = self.bg_r or _detalhes.default_bg_color self.bg_g = self.bg_g or _detalhes.default_bg_color @@ -954,6 +959,8 @@ function _detalhes:RestauraJanela (index, temp) self.iniciada = true self:AtivarInstancia (temp) + + self:ChangeSkin() end ------------------------------------------------------------------------------------------------------------------------ @@ -1506,53 +1513,53 @@ end -- o modo é apenas afetado na hora de mostrar o que na tabela function _detalhes:ChangeIcon (icon) + + local skin = _detalhes.skins [self.skin] if (icon) then + --> plugin chamou uma troca de icone self.baseframe.cabecalho.atributo_icon:SetTexture (icon) self.baseframe.cabecalho.atributo_icon:SetTexCoord (5/64, 60/64, 3/64, 62/64) - self.baseframe.cabecalho.atributo_icon:SetWidth (19) - self.baseframe.cabecalho.atributo_icon:SetHeight (20) - self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", -11, -6) + + local icon_size = skin.icon_plugins_size + self.baseframe.cabecalho.atributo_icon:SetWidth (icon_size[1]) + self.baseframe.cabecalho.atributo_icon:SetHeight (icon_size[2]) + local icon_anchor = skin.icon_anchor_plugins + self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", icon_anchor[1], icon_anchor[2]) elseif (self.modo == modo_alone) then --> solo + -- o icone é alterado pelo próprio plugin - --[[ - self.baseframe.cabecalho.atributo_icon:SetTexture ("Interface\\AddOns\\Details\\images\\icon_mainwindow2") - self.baseframe.cabecalho.atributo_icon:SetTexCoord (32/256 * (1-1), 32/256 * 1, 0, 1) --> solo é o primeiro icone - self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", -1, 1) - self.baseframe.cabecalho.atributo_icon:SetWidth (30) - self.baseframe.cabecalho.atributo_icon:SetHeight (30) - --]] - --print ("Icon Changed 1") - - --_detalhes.SoloTables.Menu [INDEX] [2] - elseif (self.modo == modo_grupo or self.modo == modo_all) then --> grupo if (self.atributo == 5) then + --> custom local icon = _detalhes.custom [self.sub_atributo].icon self.baseframe.cabecalho.atributo_icon:SetTexture (icon) self.baseframe.cabecalho.atributo_icon:SetTexCoord (5/64, 60/64, 3/64, 62/64) - self.baseframe.cabecalho.atributo_icon:SetWidth (20) - self.baseframe.cabecalho.atributo_icon:SetHeight (20) - self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", -10, -5) + + local icon_size = skin.icon_plugins_size + self.baseframe.cabecalho.atributo_icon:SetWidth (icon_size[1]) + self.baseframe.cabecalho.atributo_icon:SetHeight (icon_size[2]) + local icon_anchor = skin.icon_anchor_plugins + self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", icon_anchor[1], icon_anchor[2]) else - self.baseframe.cabecalho.atributo_icon:SetTexture ("Interface\\AddOns\\Details\\images\\icon_mainwindow") - self.baseframe.cabecalho.atributo_icon:SetTexCoord (32/256 * (self.atributo-1), 32/256 * self.atributo, 0, 1) - self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", -1, 1) - self.baseframe.cabecalho.atributo_icon:SetWidth (30) - self.baseframe.cabecalho.atributo_icon:SetHeight (30) + --> normal + local half = 0.00048828125 + local size = 0.03125 + self.baseframe.cabecalho.atributo_icon:SetTexture (_detalhes.skin_path .. skin.file) + self.baseframe.cabecalho.atributo_icon:SetTexCoord ( (0.03125 * (self.atributo-1)) + half, (0.03125 * self.atributo) - half, 0.35693359375, 0.38720703125) + + local icon_anchor = skin.icon_anchor_main + self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", icon_anchor[1], icon_anchor[2]) + + self.baseframe.cabecalho.atributo_icon:SetWidth (32) + self.baseframe.cabecalho.atributo_icon:SetHeight (32) end elseif (self.modo == modo_raid) then --> raid - --[[ - self.baseframe.cabecalho.atributo_icon:SetTexture ("Interface\\AddOns\\Details\\images\\icon_mainwindow2") - self.baseframe.cabecalho.atributo_icon:SetTexCoord (32/256 * (2-1), 32/256 * 2, 0, 1) --> solo é o primeiro icone - self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", -1, 1) - self.baseframe.cabecalho.atributo_icon:SetWidth (30) - self.baseframe.cabecalho.atributo_icon:SetHeight (30) - --]] + -- o icone é alterado pelo próprio plugin end end diff --git a/classes/classe_others.lua b/classes/classe_others.lua index ad72c06e..94c16494 100644 --- a/classes/classe_others.lua +++ b/classes/classe_others.lua @@ -977,6 +977,26 @@ end local UnitReaction = UnitReaction +function _detalhes:CloseEnemyDebuffsUptime() + local combat = _detalhes.tabela_vigente + local misc_container = combat [4]._ActorTable + + for _, actor in _ipairs (misc_container) do + if (actor.boss_debuff) then + for index, target in _ipairs (actor.debuff_uptime_targets._ActorTable) do + if (target.actived and target.actived_at) then + target.uptime = target.uptime + _detalhes._tempo - target.actived_at + actor.debuff_uptime = actor.debuff_uptime + _detalhes._tempo - target.actived_at + target.actived = false + target.actived_at = nil + end + end + end + end + + return +end + function _detalhes:CatchRaidDebuffUptime (in_or_out) -- "DEBUFF_UPTIME_IN" if (in_or_out == "DEBUFF_UPTIME_OUT") then @@ -988,7 +1008,7 @@ function _detalhes:CatchRaidDebuffUptime (in_or_out) -- "DEBUFF_UPTIME_IN" for spellid, spell in _pairs (actor.debuff_uptime_spell_tables._ActorTable) do if (spell.actived and spell.actived_at) then spell.uptime = spell.uptime + _detalhes._tempo - spell.actived_at - actor.debuff_uptime = actor.debuff_uptime + _detalhes._tempo - spell.actived_at --> token = actor misc object + actor.debuff_uptime = actor.debuff_uptime + _detalhes._tempo - spell.actived_at spell.actived = false spell.actived_at = nil end @@ -1030,7 +1050,8 @@ function _detalhes:CatchRaidDebuffUptime (in_or_out) -- "DEBUFF_UPTIME_IN" for raidIndex = 1, _GetNumGroupMembers()-1 do local his_target = _UnitGUID ("party"..raidIndex.."target") - if (his_target and not checked [his_target] and UnitReaction ("party"..raidIndex.."target", "player") <= 4) then + local rect = UnitReaction ("party"..raidIndex.."target", "player") + if (his_target and not checked [his_target] and rect and rect <= 4) then checked [his_target] = true @@ -1049,8 +1070,8 @@ function _detalhes:CatchRaidDebuffUptime (in_or_out) -- "DEBUFF_UPTIME_IN" end local his_target = _UnitGUID ("playertarget") - - if (his_target and not checked [his_target] and UnitReaction ("playertarget", "player") <= 4) then + local rect = UnitReaction ("playertarget", "player") + if (his_target and not checked [his_target] and rect and rect <= 4) then for debuffIndex = 1, 40 do local name, _, _, _, _, _, _, unitCaster, _, _, spellid = UnitDebuff ("playertarget", debuffIndex) if (name and unitCaster) then @@ -1862,6 +1883,10 @@ local sub_list = {"cc_break", "ress", "interrupt", "cooldowns_defensive", "dispe --> cria e soma o valor do total local alvo_shadow = shadow [container]:PegarCombatente (nil, alvo.nome, nil, true) alvo_shadow.total = alvo_shadow.total + alvo.total + if (alvo.uptime) then --> boss debuff + alvo_shadow.uptime = alvo_shadow.uptime + alvo.uptime + alvo_shadow.activedamt = alvo_shadow.activedamt + alvo.activedamt + end --> refresh no alvo _detalhes.refresh:r_alvo_da_habilidade (alvo, shadow [container]) end @@ -1916,6 +1941,9 @@ local sub_list = {"cc_break", "ress", "interrupt", "cooldowns_defensive", "dispe --> soma o total (captura de dados) shadow.debuff_uptime = shadow.debuff_uptime + actor.debuff_uptime --> copia o container de alvos (captura de dados) + if (actor.boss_debuff) then + actor.debuff_uptime_targets.tipo = _detalhes.container_type.CONTAINER_ENEMYDEBUFFTARGET_CLASS + end somar_alvos ("debuff_uptime_targets", shadow) --> copia o container de habilidades (captura de dados) somar_habilidades ("debuff_uptime_spell_tables", shadow) @@ -2306,6 +2334,10 @@ atributo_misc.__add = function (tabela1, tabela2) for index, alvo in _ipairs (tabela2.debuff_uptime_targets._ActorTable) do local alvo_tabela1 = tabela1.debuff_uptime_targets:PegarCombatente (nil, alvo.nome, nil, true) alvo_tabela1.total = alvo_tabela1.total + alvo.total + if (alvo.uptime) then --> boss debuff + alvo_tabela1.uptime = alvo_tabela1.uptime + alvo.uptime + alvo_tabela1.activedamt = alvo_tabela1.activedamt + alvo.activedamt + end end for spellid, habilidade in _pairs (tabela2.debuff_uptime_spell_tables._ActorTable) do @@ -2557,6 +2589,10 @@ atributo_misc.__sub = function (tabela1, tabela2) for index, alvo in _ipairs (tabela2.debuff_uptime_targets._ActorTable) do local alvo_tabela1 = tabela1.debuff_uptime_targets:PegarCombatente (nil, alvo.nome, nil, true) alvo_tabela1.total = alvo_tabela1.total - alvo.total + if (alvo.uptime) then --> boss debuff + alvo_tabela1.uptime = alvo_tabela1.uptime - alvo.uptime + alvo_tabela1.activedamt = alvo_tabela1.activedamt - alvo.activedamt + end end for spellid, habilidade in _pairs (tabela2.debuff_uptime_spell_tables._ActorTable) do diff --git a/classes/container_combatentes.lua b/classes/container_combatentes.lua index ee8f6cc9..65e3ab87 100644 --- a/classes/container_combatentes.lua +++ b/classes/container_combatentes.lua @@ -19,6 +19,7 @@ local container_energy = _detalhes.container_type.CONTAINER_ENERGY_CLASS local container_energy_target = _detalhes.container_type.CONTAINER_ENERGYTARGET_CLASS local container_misc = _detalhes.container_type.CONTAINER_MISC_CLASS local container_misc_target = _detalhes.container_type.CONTAINER_MISCTARGET_CLASS +local container_enemydebufftarget_target = _detalhes.container_type.CONTAINER_ENEMYDEBUFFTARGET_CLASS --api locals local _UnitClass = UnitClass @@ -386,7 +387,16 @@ function container_combatentes:PegarCombatente (serial, nome, flag, criar, isOwn if (shadow_objeto) then novo_objeto.shadow = shadow_objeto - --shadow_objeto.flag = details_flag + end + + elseif (self.tipo == container_enemydebufftarget_target) then + + novo_objeto.uptime = 0 + novo_objeto.actived = false + novo_objeto.activedamt = 0 + + if (shadow_objeto) then + novo_objeto.shadow = shadow_objeto end elseif (self.tipo == container_misc_target) then --> CONTAINER ALVOS DO MISC @@ -447,6 +457,9 @@ function container_combatentes:FuncaoDeCriacao (tipo) elseif (tipo == container_friendlyfire) then return atributo_damage.FF_funcao_de_criacao + elseif (tipo == container_enemydebufftarget_target) then + return alvo_da_habilidade.NovaTabela + elseif (tipo == container_energy) then return atributo_energy.NovaTabela diff --git a/core/control.lua b/core/control.lua index 7b6b6e24..3a8a88c2 100644 --- a/core/control.lua +++ b/core/control.lua @@ -296,6 +296,7 @@ _detalhes:CatchRaidBuffUptime ("BUFF_UPTIME_OUT") _detalhes:CatchRaidDebuffUptime ("DEBUFF_UPTIME_OUT") + --_detalhes:CloseEnemyDebuffsUptime() --> pega a zona do jogador e vê se foi uma luta contra um Boss -- identifica se a luta foi com um boss if (not _detalhes.tabela_vigente.is_boss) then diff --git a/core/parser.lua b/core/parser.lua index 1c116d2e..c63056db 100644 --- a/core/parser.lua +++ b/core/parser.lua @@ -86,7 +86,8 @@ local container_damage_target = _detalhes.container_type.CONTAINER_DAMAGETARGET_CLASS local container_misc = _detalhes.container_type.CONTAINER_MISC_CLASS - + local container_enemydebufftarget_target = _detalhes.container_type.CONTAINER_ENEMYDEBUFFTARGET_CLASS + local OBJECT_TYPE_PLAYER = 0x00000400 local OBJECT_TYPE_PETS = 0x00003000 local AFFILIATION_GROUP = 0x00000007 @@ -744,6 +745,9 @@ if (raid_members_cache [who_serial]) then --> call record debuffs uptime --[[not tail call, need to fix this]] parser:add_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_IN") + + --elseif (raid_members_cache [alvo_serial] and _bit_band (who_flags, 0x00000040) ~= 0) then --> alvo é da raide e o caster é inimigo + --[[not tail call, need to fix this]] --parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_IN") end end @@ -886,6 +890,8 @@ if (raid_members_cache [who_serial]) then --> call record debuffs uptime --[[not tail call, need to fix this]] parser:add_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_REFRESH") + --elseif (raid_members_cache [alvo_serial] and _bit_band (who_flags, 0x00000040) ~= 0) then --> alvo é da raide e o caster é inimigo + --[[not tail call, need to fix this]] --parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_REFRESH") end end @@ -1007,6 +1013,8 @@ if (raid_members_cache [who_serial]) then --> call record debuffs uptime --[[not tail call, need to fix this]] parser:add_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_OUT") + --elseif (raid_members_cache [alvo_serial] and _bit_band (who_flags, 0x00000040) ~= 0) then --> alvo é da raide e o caster é inimigo + --[[not tail call, need to fix this]] --parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, "DEBUFF_UPTIME_OUT") end end @@ -1051,6 +1059,138 @@ --> MISC search key: ~buffuptime ~buffsuptime | ----------------------------------------------------------------------------------------------------------------------------------------- + function parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, in_out) + + if (not alvo_name) then + --> no target name, just quit + return + elseif (not who_name) then + --> no actor name, use spell name instead + who_name = "[*] "..spellname + end + + ------------------------------------------------------------------------------------------------ + --> get actors + --> nome do debuff será usado para armazenar o nome do ator + local este_jogador = misc_cache [spellname] + if (not este_jogador) then --> pode ser um desconhecido ou um pet + este_jogador = _current_misc_container:PegarCombatente (who_serial, spellname, who_flags, true) + misc_cache [spellname] = este_jogador + end + local shadow = este_jogador.shadow + + ------------------------------------------------------------------------------------------------ + --> build containers on the fly + + if (not este_jogador.debuff_uptime) then + este_jogador.boss_debuff = true + este_jogador.owner = who_name + este_jogador.debuff_uptime = 0 + este_jogador.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc) + este_jogador.debuff_uptime_targets = container_combatentes:NovoContainer (container_enemydebufftarget_target) + + if (not shadow.debuff_uptime_targets) then + shadow.boss_debuff = true + shadow.owner = who_name + shadow.debuff_uptime = 0 + shadow.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc) + shadow.debuff_uptime_targets = container_combatentes:NovoContainer (container_enemydebufftarget_target) + end + + este_jogador.debuff_uptime_targets.shadow = shadow.debuff_uptime_targets + este_jogador.debuff_uptime_spell_tables.shadow = shadow.debuff_uptime_spell_tables + end + + ------------------------------------------------------------------------------------------------ + --> add amount + + --> update last event + este_jogador.last_event = _tempo + + --> actor target + local este_alvo = este_jogador.debuff_uptime_targets._NameIndexTable [alvo_name] + if (not este_alvo) then + este_alvo = este_jogador.debuff_uptime_targets:PegarCombatente (alvo_serial, alvo_name, alvo_flags, true) + else + este_alvo = este_jogador.debuff_uptime_targets._ActorTable [este_alvo] + end + + if (in_out == "DEBUFF_UPTIME_IN") then + este_alvo.actived = true + este_alvo.activedamt = este_alvo.activedamt + 1 + if (este_alvo.actived_at and este_alvo.actived) then + este_alvo.uptime = este_alvo.uptime + _tempo - este_alvo.actived_at + este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at + end + este_alvo.actived_at = _tempo + + --> shadows + este_alvo = este_alvo.shadow + este_jogador = este_jogador.shadow + + este_alvo.actived = true + este_alvo.activedamt = este_alvo.activedamt + 1 + if (este_alvo.actived_at and este_alvo.actived) then + este_alvo.uptime = este_alvo.uptime + _tempo - este_alvo.actived_at + este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at + end + este_alvo.actived_at = _tempo + + elseif (in_out == "DEBUFF_UPTIME_REFRESH") then + if (este_alvo.actived_at and este_alvo.actived) then + este_alvo.uptime = este_alvo.uptime + _tempo - este_alvo.actived_at + este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at + end + este_alvo.actived_at = _tempo + este_alvo.actived = true + + --> shadows + este_alvo = este_alvo.shadow + este_jogador = este_jogador.shadow + + if (este_alvo.actived_at and este_alvo.actived) then + este_alvo.uptime = este_alvo.uptime + _tempo - este_alvo.actived_at + este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at + end + este_alvo.actived_at = _tempo + este_alvo.actived = true + + elseif (in_out == "DEBUFF_UPTIME_OUT") then + if (este_alvo.actived_at and este_alvo.actived) then + este_alvo.uptime = este_alvo.uptime + _detalhes._tempo - este_alvo.actived_at + este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at --> token = actor misc object + end + + este_alvo.activedamt = este_alvo.activedamt - 1 + + if (este_alvo.activedamt == 0) then + este_alvo.actived = false + este_alvo.actived_at = nil + else + este_alvo.actived_at = _tempo + end + + --> shadows + este_alvo = este_alvo.shadow + este_jogador = este_jogador.shadow + + if (este_alvo.actived_at and este_alvo.actived) then + este_alvo.uptime = este_alvo.uptime + _detalhes._tempo - este_alvo.actived_at + este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at --> token = actor misc object + end + + este_alvo.activedamt = este_alvo.activedamt - 1 + + if (este_alvo.activedamt == 0) then + este_alvo.actived = false + este_alvo.actived_at = nil + else + este_alvo.actived_at = _tempo + end + + end + end + function parser:add_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, in_out) ------------------------------------------------------------------------------------------------ --> early checks and fixes diff --git a/functions/classes.lua b/functions/classes.lua index 4588d407..d055f4a4 100644 --- a/functions/classes.lua +++ b/functions/classes.lua @@ -96,6 +96,7 @@ do CONTAINER_ENERGY_CLASS = 7, CONTAINER_ENERGYTARGET_CLASS = 8, CONTAINER_MISC_CLASS = 9, - CONTAINER_MISCTARGET_CLASS = 10 + CONTAINER_MISCTARGET_CLASS = 10, + CONTAINER_ENEMYDEBUFFTARGET_CLASS = 11 } end diff --git a/gumps/janela_options.lua b/gumps/janela_options.lua index 149781eb..6a981b26 100644 --- a/gumps/janela_options.lua +++ b/gumps/janela_options.lua @@ -1351,12 +1351,34 @@ function _detalhes:OpenOptionsWindow (instance) _detalhes.remove_realm_from_name = value end +--------SKINS + g:NewLabel (window, _, "$parentSkinLabel", "skinLabel", "select skin") + window.skinLabel:SetPoint (510, -100) + -- + local onSelectSkin = function (_, instance, skin_name) + instance:ChangeSkin (skin_name) + end + + local buildSkinMenu = function() + local skinOptions = {} + for skin_name, skin_table in pairs (_detalhes.skins) do + skinOptions [#skinOptions+1] = {value = skin_name, label = skin_name, onclick = onSelectSkin, icon = "Interface\\GossipFrame\\TabardGossipIcon", desc = skin_table.desc} + end + return skinOptions + end + + g:NewDropDown (window, _, "$parentSkinDropdown", "skinDropdown", 120, 20, buildSkinMenu, 1) -- func, default + window.skinDropdown:SetPoint ("left", window.skinLabel, "right", 2) + end ---------------------------------------------------------------------------------------- --> Show + _G.DetailsOptionsWindowSkinDropdown.MyObject:SetFixedParameter (instance) + _G.DetailsOptionsWindowSkinDropdown.MyObject:Select (instance.skin) + _G.DetailsOptionsWindowTextureDropdown.MyObject:SetFixedParameter (instance) _G.DetailsOptionsWindowRowBackgroundTextureDropdown.MyObject:SetFixedParameter (instance) _G.DetailsOptionsWindowTextureDropdown.MyObject:Select (instance.barrasInfo.textureName) diff --git a/gumps/janela_principal.lua b/gumps/janela_principal.lua index d89166b3..88c54622 100644 --- a/gumps/janela_principal.lua +++ b/gumps/janela_principal.lua @@ -35,7 +35,6 @@ local modo_grupo = _detalhes._detalhes_props["MODO_GROUP"] local modo_all = _detalhes._detalhes_props["MODO_ALL"] local gump_fundo_backdrop = { - --bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, bgFile = "Interface\\AddOns\\Details\\images\\background", tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}} @@ -52,6 +51,36 @@ function _detalhes:ScheduleUpdate (instancia) instancia.showing [instancia.atributo].need_refresh = true end end + +--> skins TCoords + +-- 0.00048828125 + + local DEFAULT_SKIN = _detalhes.skin_path .. _detalhes.skins ["Default Skin"].file + + local COORDS_LEFT_BALL = {0.15673828125, 0.28076171875, 0.08251953125, 0.20654296875} -- x1 160 y1 84 x2 288 y2 212 + local COORDS_LEFT_CONNECTOR = {0.29541015625, 0.30224609375, 0.08251953125, 0.20654296875} --302 84 310 212 + local COORDS_TOP_BACKGROUND = {0.15673828125, 0.65576171875, 0.22314453125, 0.34716796875} -- 160 228 672 356 + local COORDS_RIGHT_BALL = {0.31591796875, 0.43994140625, 0.08251953125, 0.20654296875} --324 84 452 212 + + local COORDS_LEFT_SIDE_BAR = {0.76611328125, 0.82861328125, 0.00244140625, 0.50244140625} -- 784 2 849 515 + local COORDS_RIGHT_SIDE_BAR = {0.70068359375, 0.76318359375, 0.00244140625, 0.50244140625} -- 717 2 782 515 + + local COORDS_SLIDER_TOP = {0.00146484375, 0.03173828125, 0.00244140625, 0.03271484375} -- 1 2 33 34 + local COORDS_SLIDER_MIDDLE = {0.00146484375, 0.03173828125, 0.03955078125, 0.10107421875} -- 1 40 33 104 + local COORDS_SLIDER_DOWN = {0.00146484375, 0.03173828125, 0.11767578125, 0.14794921875} -- 1 120 33 152 + + local COORDS_STRETCH = {0.00146484375, 0.03173828125, 0.21435546875, 0.22900390625} -- 1 219 33 235 + local COORDS_RESIZE_RIGHT = {0.00146484375, 0.01611328125, 0.24560546875, 0.26025390625} -- 1 251 17 267 + local COORDS_RESIZE_LEFT = {0.02001953125, 0.03271484375, 0.24560546875, 0.26025390625} -- 20 251 34 267 + + local COORDS_UNLOCK_BUTTON = {0.00146484375, 0.01611328125, 0.27197265625, 0.28662109375} -- 1 278 17 294 + + local COORDS_BOTTOM_BACKGROUND = {0.15673828125, 0.65576171875, 0.35400390625, 0.47802734375} -- 160 362 672 490 + local COORDS_PIN_LEFT = {0.00146484375, 0.03173828125, 0.30126953125, 0.33154296875} -- 1 308 33 340 + local COORDS_PIN_RIGHT = {0.03564453125, 0.06591796875, 0.30126953125, 0.33154296875} -- 36 308 68 340 + + -- icones: 365 = 0.35693359375 // 397 = 0.38720703125 function _detalhes:AtualizarScrollBar (x) @@ -260,6 +289,9 @@ local function resize_fade (instancia, modo) if (_string_lower (modo) == "out") then for _, instancia_id in _pairs (instancia.snap) do if (instancia_id) then + instancia.botao_separar.texture:Show() + instancia.botao_separar.texture:SetTexCoord (unpack (COORDS_UNLOCK_BUTTON)) + gump:Fade (instancia.botao_separar.texture, modo, 1.0) gump:Fade (instancia.botao_separar, modo, 1.0) break end @@ -349,7 +381,7 @@ local movement_onupdate = function (self, elapsed) tempo_movendo = 1 else - BaseFrame:SetScript ("OnUpdate", nil) + self:SetScript ("OnUpdate", nil) tempo_movendo = 1 end @@ -1028,6 +1060,7 @@ local function resize_scripts (resizer, instancia, ScrollBar, side, baseframe) resizer:SetScript ("OnEnter", function(self) if (instancia.modo ~= _detalhes._detalhes_props["MODO_ALONE"] and not instancia.baseframe.isLocked) then gump:Fade (self, "out", 0.1) + self.texture:SetBlendMode ("ADD") self.mostrando = true _G.GameCooltip:Reset() @@ -1039,12 +1072,13 @@ local function resize_scripts (resizer, instancia, ScrollBar, side, baseframe) end end) - + resizer:SetScript ("OnLeave", function(self) if (not self.movendo) then gump:Fade (self, -1, 3.0) end + self.texture:SetBlendMode ("BLEND") _detalhes.popup:ShowMe (false) self.mostrando = false @@ -1722,35 +1756,39 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) SwitchButton:SetFrameLevel (BackGroundDisplay:GetFrameLevel()+1) local ScrollBar = _CreateFrame ("Slider", "Details_ScrollBar"..ID, BackGroundDisplay) --> scroll - --ScrollBar:SetFrameLevel (BaseFrame:GetFrameLevel()+5) -- textura da scroll bar ------------------------------------------------------------------------------------------------------------------------------------------------- --> scroll image-node up BaseFrame.scroll_up = BackGroundDisplay:CreateTexture (nil, "BACKGROUND") BaseFrame.scroll_up:SetPoint ("TOPLEFT", BackGroundDisplay, "TOPRIGHT", 0, 0) - --BaseFrame.scroll_up:SetTexture ("Interface\\AddOns\\Details\\images\\scroll_up") - BaseFrame.scroll_up:SetTexture ("Interface\\AddOns\\Details\\images\\scrollbar") + BaseFrame.scroll_up:SetTexture (DEFAULT_SKIN) + BaseFrame.scroll_up:SetTexCoord (unpack (COORDS_SLIDER_TOP)) BaseFrame.scroll_up:SetWidth (32) BaseFrame.scroll_up:SetHeight (32) - BaseFrame.scroll_up:SetTexCoord (0, 1, 0, 0.25) + --BaseFrame.scroll_up:SetTexture ("Interface\\AddOns\\Details\\images\\scrollbar") + --BaseFrame.scroll_up:SetTexCoord (0, 1, 0, 0.25) --> scroll image-node down BaseFrame.scroll_down = BackGroundDisplay:CreateTexture (nil, "BACKGROUND") BaseFrame.scroll_down:SetPoint ("BOTTOMLEFT", BackGroundDisplay, "BOTTOMRIGHT", 0, 0) - BaseFrame.scroll_down:SetTexture ("Interface\\AddOns\\Details\\images\\scrollbar") + BaseFrame.scroll_down:SetTexture (DEFAULT_SKIN) + BaseFrame.scroll_down:SetTexCoord (unpack (COORDS_SLIDER_DOWN)) BaseFrame.scroll_down:SetWidth (32) BaseFrame.scroll_down:SetHeight (32) - BaseFrame.scroll_down:SetTexCoord (0, 1, 0.751, 1) + --BaseFrame.scroll_down:SetTexture ("Interface\\AddOns\\Details\\images\\scrollbar") + --BaseFrame.scroll_down:SetTexCoord (0, 1, 0.751, 1) --> scroll image-node middle BaseFrame.scroll_middle = BackGroundDisplay:CreateTexture (nil, "BACKGROUND") BaseFrame.scroll_middle:SetPoint ("TOP", BaseFrame.scroll_up, "BOTTOM", 0, 8) BaseFrame.scroll_middle:SetPoint ("BOTTOM", BaseFrame.scroll_down, "TOP", 0, -11) - BaseFrame.scroll_middle:SetTexture ("Interface\\AddOns\\Details\\images\\scrollbar") + BaseFrame.scroll_middle:SetTexture (DEFAULT_SKIN) + BaseFrame.scroll_middle:SetTexCoord (unpack (COORDS_SLIDER_MIDDLE)) BaseFrame.scroll_middle:SetWidth (32) BaseFrame.scroll_middle:SetHeight (64) - BaseFrame.scroll_middle:SetTexCoord (0, 1, 0.251, 0.75) + --BaseFrame.scroll_middle:SetTexCoord (0, 1, 0.251, 0.75) + --BaseFrame.scroll_middle:SetTexture ("Interface\\AddOns\\Details\\images\\scrollbar") --> três botões scroll up, down, window strech BaseFrame.button_up = _CreateFrame ("Button", nil, BackGroundDisplay) @@ -1761,11 +1799,16 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) BaseFrame.button_stretch:SetPoint ("RIGHT", BaseFrame, "RIGHT", -27, 0) BaseFrame.button_stretch:SetFrameStrata ("FULLSCREEN") + local stretch_texture = BaseFrame.button_stretch:CreateTexture (nil, "overlay") + stretch_texture:SetTexture (DEFAULT_SKIN) + stretch_texture:SetTexCoord (unpack (COORDS_STRETCH)) + stretch_texture:SetWidth (32) + stretch_texture:SetHeight (16) + stretch_texture:SetAllPoints (BaseFrame.button_stretch) + BaseFrame.button_stretch.texture = stretch_texture + BaseFrame.button_stretch:SetWidth (32) BaseFrame.button_stretch:SetHeight (16) - BaseFrame.button_stretch:SetNormalTexture ("Interface\\AddOns\\Details\\images\\grab") - BaseFrame.button_stretch:SetPushedTexture ("Interface\\AddOns\\Details\\images\\grab_over") - BaseFrame.button_stretch:SetDisabledTexture ("Interface\\AddOns\\Details\\images\\grab") gump:Fade (BaseFrame.button_stretch, -1) BaseFrame.button_stretch:Show() @@ -1832,7 +1875,6 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) BaseFrame:SetBackdrop (gump_fundo_backdrop) BaseFrame:SetBackdropColor (instancia.bg_r, instancia.bg_g, instancia.bg_b, instancia.bg_alpha) - --BaseFrame:SetBackdropColor (0, 0, 0, 1) -- fundo ------------------------------------------------------------------------------------------------------------------------------------------------- @@ -1879,8 +1921,15 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) ------------------------------------------------------------------------------------------------------------------------------------------------------------ BaseFrame.resize_direita = _CreateFrame ("Button", "Details_Resize_Direita"..ID, BaseFrame) - BaseFrame.resize_direita:SetNormalTexture ("Interface\\AddOns\\Details\\images\\ResizeGripD") - BaseFrame.resize_direita:SetHighlightTexture ("Interface\\AddOns\\Details\\images\\ResizeGripD") + + local resize_direita_texture = BaseFrame.resize_direita:CreateTexture (nil, "overlay") + resize_direita_texture:SetWidth (16) + resize_direita_texture:SetHeight (16) + resize_direita_texture:SetTexture (DEFAULT_SKIN) + resize_direita_texture:SetTexCoord (unpack (COORDS_RESIZE_RIGHT)) + resize_direita_texture:SetAllPoints (BaseFrame.resize_direita) + BaseFrame.resize_direita.texture = resize_direita_texture + BaseFrame.resize_direita:SetWidth (16) BaseFrame.resize_direita:SetHeight (16) BaseFrame.resize_direita:SetPoint ("BOTTOMRIGHT", BaseFrame, "BOTTOMRIGHT", 0, 0) @@ -1918,8 +1967,17 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) --]] BaseFrame.resize_esquerda = _CreateFrame ("Button", "Details_Resize_Esquerda"..ID, BaseFrame) - BaseFrame.resize_esquerda:SetNormalTexture ("Interface\\AddOns\\Details\\images\\ResizeGripL") - BaseFrame.resize_esquerda:SetHighlightTexture ("Interface\\AddOns\\Details\\images\\ResizeGripL") + + local resize_esquerda_texture = BaseFrame.resize_esquerda:CreateTexture (nil, "overlay") + resize_esquerda_texture:SetWidth (16) + resize_esquerda_texture:SetHeight (16) + resize_esquerda_texture:SetTexture (DEFAULT_SKIN) + resize_esquerda_texture:SetTexCoord (unpack (COORDS_RESIZE_LEFT)) + resize_esquerda_texture:SetAllPoints (BaseFrame.resize_esquerda) + BaseFrame.resize_esquerda.texture = resize_esquerda_texture + + --BaseFrame.resize_esquerda:SetNormalTexture ("Interface\\AddOns\\Details\\images\\ResizeGripL") + --BaseFrame.resize_esquerda:SetHighlightTexture ("Interface\\AddOns\\Details\\images\\ResizeGripL") BaseFrame.resize_esquerda:SetWidth (16) BaseFrame.resize_esquerda:SetHeight (16) BaseFrame.resize_esquerda:SetPoint ("BOTTOMLEFT", BaseFrame, "BOTTOMLEFT", 0, 0) @@ -1969,18 +2027,24 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) --> barra borda esquerda lateral BaseFrame.barra_esquerda = BaseFrame.cabecalho.fechar:CreateTexture (nil, "ARTWORK") - BaseFrame.barra_esquerda:SetTexture ("Interface\\AddOns\\Details\\images\\bar_main_leftright") - BaseFrame.barra_esquerda:SetTexCoord (0.5, 1, 0, 1) - BaseFrame.barra_esquerda:SetWidth (16) - BaseFrame.barra_esquerda:SetPoint ("TOPLEFT", BaseFrame, "TOPLEFT", -8, 0) - BaseFrame.barra_esquerda:SetPoint ("BOTTOMLEFT", BaseFrame, "BOTTOMLEFT", -8, -14) + --BaseFrame.barra_esquerda:SetTexture ("Interface\\AddOns\\Details\\images\\bar_main_leftright") + --BaseFrame.barra_esquerda:SetTexCoord (0.5, 1, 0, 1) + BaseFrame.barra_esquerda:SetTexture (DEFAULT_SKIN) + BaseFrame.barra_esquerda:SetTexCoord (unpack (COORDS_LEFT_SIDE_BAR)) + BaseFrame.barra_esquerda:SetWidth (64) + BaseFrame.barra_esquerda:SetHeight (512) + BaseFrame.barra_esquerda:SetPoint ("TOPLEFT", BaseFrame, "TOPLEFT", -56, 0) + BaseFrame.barra_esquerda:SetPoint ("BOTTOMLEFT", BaseFrame, "BOTTOMLEFT", -56, -14) BaseFrame.barra_direita = BaseFrame.cabecalho.fechar:CreateTexture (nil, "ARTWORK") - BaseFrame.barra_direita:SetTexture ("Interface\\AddOns\\Details\\images\\bar_main_leftright") - BaseFrame.barra_direita:SetTexCoord (0, 0.5, 0, 1) - BaseFrame.barra_direita:SetWidth (16) - BaseFrame.barra_direita:SetPoint ("TOPRIGHT", BaseFrame, "TOPRIGHT", 8, 0) - BaseFrame.barra_direita:SetPoint ("BOTTOMRIGHT", BaseFrame, "BOTTOMRIGHT", 8, -14) + --BaseFrame.barra_direita:SetTexture ("Interface\\AddOns\\Details\\images\\bar_main_leftright") + --BaseFrame.barra_direita:SetTexCoord (0, 0.5, 0, 1) + BaseFrame.barra_direita:SetTexture (DEFAULT_SKIN) + BaseFrame.barra_direita:SetTexCoord (unpack (COORDS_RIGHT_SIDE_BAR)) + BaseFrame.barra_direita:SetWidth (64) + BaseFrame.barra_direita:SetHeight (512) + BaseFrame.barra_direita:SetPoint ("TOPRIGHT", BaseFrame, "TOPRIGHT", 56, 0) + BaseFrame.barra_direita:SetPoint ("BOTTOMRIGHT", BaseFrame, "BOTTOMRIGHT", 56, -14) --chama função para criar o rodapé @@ -1991,11 +2055,17 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) ------------------------------------------------------------------------------------------------------------------------------------------------------------ -- BETA -- botão de separar as instâncias que estão agrupadas - instancia.botao_separar = gump:NewDetailsButton (BaseFrame.cabecalho.fechar, _, instancia, instancia.Desagrupar, instancia, -1, 13, 13, - "Interface\\AddOns\\Details\\images\\cadeado", "Interface\\AddOns\\Details\\images\\cadeado", "Interface\\AddOns\\Details\\images\\cadeado", "Interface\\AddOns\\Details\\images\\cadeado") + instancia.botao_separar = gump:NewDetailsButton (BaseFrame.cabecalho.fechar, _, instancia, instancia.Desagrupar, instancia, -1, 13, 13) instancia.botao_separar:SetPoint ("BOTTOM", BaseFrame.resize_direita, "TOP", -1, 0) instancia.botao_separar:SetFrameLevel (BaseFrame:GetFrameLevel() + 5) - + + local cadeado_texture = instancia.botao_separar:CreateTexture (nil, "overlay") + cadeado_texture:SetTexture (DEFAULT_SKIN) + cadeado_texture:SetTexCoord (unpack (COORDS_UNLOCK_BUTTON)) + cadeado_texture:SetAllPoints (instancia.botao_separar) + instancia.botao_separar.texture = cadeado_texture + BaseFrame.unlock_texture = cadeado_texture + gump:Fade (instancia.botao_separar, "in", 3.0) resize_scripts (BaseFrame.resize_direita, instancia, ScrollBar, ">", BaseFrame) @@ -2015,7 +2085,8 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) instancia.h_cima:SetTexture ("Interface\\AddOns\\Details\\images\\highlight_updown") instancia.h_cima:SetTexCoord (0, 1, 0.5, 1) instancia.h_cima:SetPoint ("topleft", BaseFrame.cabecalho.top_bg, "bottomleft", -10, 37) - instancia.h_cima:SetPoint ("topright", BaseFrame.cabecalho.ball_r, "bottomright", -33, 37) + --instancia.h_cima:SetPoint ("topright", BaseFrame.cabecalho.ball_r, "bottomright", -33, 37) + instancia.h_cima:SetPoint ("topright", BaseFrame.cabecalho.ball_r, "bottomright", -97, 37) --instancia.h_cima:Hide() instancia.h_cima = fcima -- @@ -2042,8 +2113,8 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) instancia.h_esquerda = fesquerda:CreateTexture (nil, "OVERLAY") instancia.h_esquerda:SetTexture ("Interface\\AddOns\\Details\\images\\highlight_leftright") instancia.h_esquerda:SetTexCoord (0.5, 1, 0, 1) - instancia.h_esquerda:SetPoint ("topleft", BaseFrame.barra_esquerda, "topleft", -8, 0) - instancia.h_esquerda:SetPoint ("bottomleft", BaseFrame.barra_esquerda, "bottomleft", -8, 0) + instancia.h_esquerda:SetPoint ("topleft", BaseFrame.barra_esquerda, "topleft", 40, 0) + instancia.h_esquerda:SetPoint ("bottomleft", BaseFrame.barra_esquerda, "bottomleft", 40, 0) --instancia.h_esquerda:Hide() instancia.h_esquerda = fesquerda -- @@ -2077,99 +2148,10 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) instancia.locs = CProps end - --> background shadow color debug - --[[ - local white_frame = _CreateFrame ("Frame", "DetailsWhiteFrame", _UIParent) - white_frame:SetFrameStrata ("LOW") - white_frame:SetFrameLevel (0) - - white_frame:SetSize (400, 250) - white_frame:SetPoint ("topleft", BaseFrame.cabecalho.ball, "topleft") - white_frame:SetBackdrop({ - bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", - tile = true, tileSize = 16, - insets = {left = 1, right = 1, top = 0, bottom = 1},}) - white_frame:SetBackdropColor (255/255, 255/255, 255/255, 1) - local white_texture = white_frame:CreateTexture (nil, "artwork") - white_texture:SetAllPoints (white_frame) - white_texture:SetTexture (1, 1, 1, 1) - white_frame:Show() - --]] - return BaseFrame, BackGroundFrame, BackGroundDisplay, ScrollBar end -function gump:CreateSplitBars (barra, instancia) - - barra.split = {} - local size = barra:GetHeight() - - --> barra superior - barra.split.barra = _CreateFrame ("StatusBar", nil, barra) - barra.split.barra:SetFrameLevel (barra.statusbar:GetFrameLevel()+2) - barra.split.barra:SetAllPoints (barra) - barra.split.barra:SetMinMaxValues (0, 100) - barra.split.barra:SetValue (100) - - barra.split.barra.textura = barra.split.barra:CreateTexture (nil, "ARTWORK") - barra.split.barra.textura:SetHorizTile (false) - barra.split.barra.textura:SetVertTile (false) - barra.split.barra.textura:SetTexture ([[Interface\PaperDollInfoFrame\UI-Character-Skills-Bar]]) - barra.split.barra:SetStatusBarColor (1, 1, 1, 1) - barra.split.barra:SetStatusBarTexture (barra.split.barra.textura) - - barra.split.barra.icone = barra.split.barra:CreateTexture (nil, "OVERLAY") - barra.split.barra.icone:SetPoint ("left", barra.split.barra, "left") - barra.split.barra.icone:SetHeight (size) - barra.split.barra.icone:SetWidth (size) - barra.split.barra.icone:SetTexture ("Interface\\AddOns\\Details\\images\\classes_small") - barra.split.barra.icone:SetTexCoord (.75, 1, .75, 1) - - barra.split.barra.texto = barra.split.barra:CreateFontString (nil, "OVERLAY", "GameFontHighlight") - barra.split.barra.texto:SetPoint ("left", barra.split.barra.icone, "right", 3, 0) - barra.split.barra.texto:SetJustifyH ("left") - barra.split.barra.texto:SetNonSpaceWrap (true) - - instancia:SetFontSize (barra.split.barra.texto, size*0.75) - _detalhes.font_pool:add (barra.split.barra.texto) - - --> barra inferior - barra.split.background = _CreateFrame ("StatusBar", nil, barra) - barra.split.background:SetAllPoints (barra) - barra.split.background:SetFrameLevel (barra.statusbar:GetFrameLevel()+1) - barra.split.background:SetMinMaxValues (0, 100) - barra.split.background:SetValue (100) - - barra.split.background.textura = barra.split.background:CreateTexture (nil, "ARTWORK") - barra.split.background.textura:SetHorizTile (false) - barra.split.background.textura:SetVertTile (false) - barra.split.background.textura:SetTexture ([[Interface\PaperDollInfoFrame\UI-Character-Skills-Bar]]) - barra.split.background:SetStatusBarColor (1, 1, 1, 1) - barra.split.background:SetStatusBarTexture (barra.split.background.textura) - - barra.split.background.icone = barra.split.barra:CreateTexture (nil, "OVERLAY") - barra.split.background.icone:SetPoint ("right", barra.split.background, "right") - barra.split.background.icone:SetHeight (size) - barra.split.background.icone:SetWidth (size) - barra.split.background.icone:SetTexture ("Interface\\AddOns\\Details\\images\\classes_small") - barra.split.background.icone:SetTexCoord (.75, 1, .75, 1) - - barra.split.background.texto = barra.split.barra:CreateFontString (nil, "OVERLAY", "GameFontHighlight") - barra.split.background.texto:SetPoint ("right", barra.split.background.icone, "left", -3, 0) - barra.split.background.texto:SetJustifyH ("right") - barra.split.background.texto:SetNonSpaceWrap (true) - - instancia:SetFontSize (barra.split.background.texto, size*0.75) - _detalhes.font_pool:add (barra.split.background.texto) - - barra.split.div = barra.split.barra:CreateTexture (nil, "OVERLAY") - barra.split.div:SetTexture ("Interface\\AddOns\\Details\\images\\bar_detalhes2_end") - barra.split.div:SetHeight (size) - barra.split.div:SetWidth (10) - -end - --> Alias function gump:NewRow (instancia, index) return gump:CriaNovaBarra (instancia, index) @@ -2185,6 +2167,7 @@ function gump:CriaNovaBarra (instancia, index) y = y*-1 esta_barra:SetPoint ("TOPLEFT", BaseFrame, "TOPLEFT", instancia.barrasInfo.espaco.esquerda, y) + esta_barra:SetHeight (instancia.barrasInfo.altura) --> altura determinada pela instância esta_barra:SetWidth (BaseFrame:GetWidth()+instancia.barrasInfo.espaco.direita) @@ -2441,6 +2424,8 @@ function _detalhes:InstanceColor (red, green, blue, alpha) red, green, blue, alpha = gump:ParseColors (red) end + local skin = _detalhes.skins [self.skin] + self.baseframe.rodape.esquerdo:SetVertexColor (red, green, blue) self.baseframe.rodape.esquerdo:SetAlpha (alpha) self.baseframe.rodape.direita:SetVertexColor (red, green, blue) @@ -2451,7 +2436,9 @@ function _detalhes:InstanceColor (red, green, blue, alpha) self.baseframe.cabecalho.ball_r:SetVertexColor (red, green, blue) self.baseframe.cabecalho.ball_r:SetAlpha (alpha) self.baseframe.cabecalho.ball:SetVertexColor (red, green, blue) - self.baseframe.cabecalho.ball:SetAlpha (alpha) + if (skin.can_change_alpha_head) then + self.baseframe.cabecalho.ball:SetAlpha (alpha) + end self.baseframe.cabecalho.emenda:SetVertexColor (red, green, blue) self.baseframe.cabecalho.emenda:SetAlpha (alpha) self.baseframe.cabecalho.top_bg:SetVertexColor (red, green, blue) @@ -2471,41 +2458,42 @@ function gump:CriaRodape (BaseFrame, instancia) --> esquerdo BaseFrame.rodape.esquerdo = BaseFrame.cabecalho.fechar:CreateTexture (nil, "OVERLAY") - BaseFrame.rodape.esquerdo:SetPoint ("TOPRIGHT", BaseFrame, "BOTTOMLEFT", 48, 0) - BaseFrame.rodape.esquerdo:SetTexture ("Interface\\AddOns\\Details\\images\\bar_down_left") + BaseFrame.rodape.esquerdo:SetPoint ("TOPRIGHT", BaseFrame, "BOTTOMLEFT", 16, 0) + BaseFrame.rodape.esquerdo:SetTexture (DEFAULT_SKIN) + BaseFrame.rodape.esquerdo:SetTexCoord (unpack (COORDS_PIN_LEFT)) + BaseFrame.rodape.esquerdo:SetWidth (32) + BaseFrame.rodape.esquerdo:SetHeight (32) + --BaseFrame.rodape.esquerdo:SetTexture ("Interface\\AddOns\\Details\\images\\bar_down_left") --> direito BaseFrame.rodape.direita = BaseFrame.cabecalho.fechar:CreateTexture (nil, "OVERLAY") BaseFrame.rodape.direita:SetPoint ("TOPLEFT", BaseFrame, "BOTTOMRIGHT", -16, 0) - BaseFrame.rodape.direita:SetTexture ("Interface\\AddOns\\Details\\images\\bar_down_right") + BaseFrame.rodape.direita:SetTexture (DEFAULT_SKIN) + BaseFrame.rodape.direita:SetTexCoord (unpack (COORDS_PIN_RIGHT)) + BaseFrame.rodape.direita:SetWidth (32) + BaseFrame.rodape.direita:SetHeight (32) + --BaseFrame.rodape.direita:SetTexture ("Interface\\AddOns\\Details\\images\\bar_down_right") --> barra centro BaseFrame.rodape.top_bg = BaseFrame:CreateTexture (nil, "BACKGROUND") - BaseFrame.rodape.top_bg:SetTexture ("Interface\\AddOns\\Details\\images\\bar_topdown_center") - BaseFrame.rodape.top_bg:SetTexCoord (0, 1, 0.5, 1) - BaseFrame.rodape.top_bg:SetHeight (32) - BaseFrame.rodape.top_bg:SetPoint ("LEFT", BaseFrame.rodape.esquerdo, "RIGHT", -48, 0) - BaseFrame.rodape.top_bg:SetPoint ("RIGHT", BaseFrame.rodape.direita, "LEFT", 16, 0) + BaseFrame.rodape.top_bg:SetTexture (DEFAULT_SKIN) + BaseFrame.rodape.top_bg:SetTexCoord (unpack (COORDS_BOTTOM_BACKGROUND)) + BaseFrame.rodape.top_bg:SetWidth (512) + BaseFrame.rodape.top_bg:SetHeight (128) + BaseFrame.rodape.top_bg:SetPoint ("LEFT", BaseFrame.rodape.esquerdo, "RIGHT", -16, -48) + BaseFrame.rodape.top_bg:SetPoint ("RIGHT", BaseFrame.rodape.direita, "LEFT", 16, -48) local StatusBarLeftAnchor = CreateFrame ("frame", nil, BaseFrame) - StatusBarLeftAnchor:SetPoint ("left", BaseFrame.rodape.top_bg, "left", 5, 10) + StatusBarLeftAnchor:SetPoint ("left", BaseFrame.rodape.top_bg, "left", 5, 57) StatusBarLeftAnchor:SetWidth (1) StatusBarLeftAnchor:SetHeight (1) BaseFrame.rodape.StatusBarLeftAnchor = StatusBarLeftAnchor local StatusBarCenterAnchor = CreateFrame ("frame", nil, BaseFrame) - StatusBarCenterAnchor:SetPoint ("center", BaseFrame.rodape.top_bg, "center", 0, 10) + StatusBarCenterAnchor:SetPoint ("center", BaseFrame.rodape.top_bg, "center", 0, 57) StatusBarCenterAnchor:SetWidth (1) StatusBarCenterAnchor:SetHeight (1) - --[[ --create a line showing the center point of window - local centerLineGuide = StatusBarCenterAnchor:CreateTexture(nil,"overlay") - centerLineGuide:SetWidth (1) - centerLineGuide:SetHeight (20) - centerLineGuide:SetPoint ("center", StatusBarCenterAnchor, "center") - centerLineGuide:SetTexture (1, 1, 1, 1) - --]] - BaseFrame.rodape.StatusBarCenterAnchor = StatusBarCenterAnchor --> frame invisível @@ -2594,7 +2582,7 @@ function _detalhes:DefaultIcons (_mode, _segment, _attributes, _report) _thisIcon:SetPoint ("TOPLEFT", self.consolidateFrame, "TOPLEFT", -3, -5) _thisIcon:SetParent (self.consolidateFrame) else - _thisIcon:SetPoint ("BOTTOMLEFT", baseToolbar.ball, "BOTTOMRIGHT", 0 + anchors[index][1], 2 + anchors[index][2]) + _thisIcon:SetPoint ("BOTTOMLEFT", baseToolbar.ball, "BOTTOMRIGHT", 6 + anchors[index][1], 2 + anchors[index][2]) _thisIcon:SetParent (self.baseframe) _thisIcon:SetFrameLevel (self.baseframe.UPFrame:GetFrameLevel()+1) end @@ -2919,7 +2907,78 @@ local build_segment_list = function (self, elapsed) end +local botao_fechar_on_enter = function (self) + gump:Fade (self:GetParent().button_stretch, "alpha", 0.3) +end +local botao_fechar_on_leave = function (self) + gump:Fade (self:GetParent().button_stretch, -1) +end +function _detalhes:ChangeSkin (skin_name) + + if (not skin_name) then + skin_name = self.skin + end + + local this_skin = _detalhes.skins [skin_name] + + if (not this_skin) then + return false --> throw a msg + end + + self.skin = skin_name + local skin_file = _detalhes.skin_path .. this_skin.file + + self.baseframe.cabecalho.ball:SetTexture (skin_file) --> bola esquerda + self.baseframe.cabecalho.emenda:SetTexture (skin_file) --> emenda que liga a bola a textura do centro + self.baseframe.cabecalho.ball_r:SetTexture (skin_file) --> bola direita onde fica o botão de fechar + self.baseframe.cabecalho.top_bg:SetTexture (skin_file) --> top background + + self.baseframe.barra_esquerda:SetTexture (skin_file) --> barra lateral + self.baseframe.barra_direita:SetTexture (skin_file) --> barra lateral + + self.baseframe.scroll_up:SetTexture (skin_file) --> scrollbar parte de cima + self.baseframe.scroll_down:SetTexture (skin_file) --> scrollbar parte de baixo + self.baseframe.scroll_middle:SetTexture (skin_file) --> scrollbar parte do meio + + self.baseframe.rodape.top_bg:SetTexture (skin_file) --> rodape top background + self.baseframe.rodape.esquerdo:SetTexture (skin_file) --> rodape esquerdo + self.baseframe.rodape.direita:SetTexture (skin_file) --> rodape direito + + self.baseframe.button_stretch.texture:SetTexture (skin_file) --> botão de esticar a janela + + self.baseframe.resize_direita.texture:SetTexture (skin_file) --> botão de redimencionar da direita + self.baseframe.resize_esquerda.texture:SetTexture (skin_file) --> botão de redimencionar da esquerda + + self.baseframe.unlock_texture:SetTexture (skin_file) --> cadeado + + if (self.modo == 1 or self.modo == 4 or self.atributo == 5) then -- alone e raid + local icon_anchor = this_skin.icon_anchor_plugins + self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", icon_anchor[1], icon_anchor[2]) + if (self.modo == 1) then + local plugin_index = _detalhes.SoloTables.Mode + if (plugin_index > 0 and _detalhes.SoloTables.Menu [plugin_index]) then + self:ChangeIcon (_detalhes.SoloTables.Menu [plugin_index] [2]) + end + elseif (self.modo == 4) then + local plugin_index = _detalhes.RaidTables.Mode + if (plugin_index and _detalhes.RaidTables.Menu [plugin_index]) then + self:ChangeIcon (_detalhes.RaidTables.Menu [plugin_index] [2]) + end + end + else + local icon_anchor = this_skin.icon_anchor_main --> ancora do icone do canto direito superior + self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", icon_anchor[1], icon_anchor[2]) + self:ChangeIcon() + end + + if (not this_skin.can_change_alpha_head) then + self.baseframe.cabecalho.ball:SetAlpha (100) + else + self.baseframe.cabecalho.ball:SetAlpha (self.color[4]) + end + +end function gump:CriaCabecalho (BaseFrame, instancia) @@ -2932,77 +2991,83 @@ function gump:CriaCabecalho (BaseFrame, instancia) BaseFrame.cabecalho.fechar = _CreateFrame ("Button", nil, BaseFrame, "UIPanelCloseButton") BaseFrame.cabecalho.fechar:SetWidth (32) BaseFrame.cabecalho.fechar:SetHeight (32) - - BaseFrame.cabecalho.fechar:SetPoint ("BOTTOMRIGHT", BaseFrame, "TOPRIGHT", 5, -6) + BaseFrame.cabecalho.fechar:SetFrameLevel (5) --> altura mais alta que os demais frames + BaseFrame.cabecalho.fechar:SetPoint ("BOTTOMRIGHT", BaseFrame, "TOPRIGHT", 5, -6) --> seta o ponto dele fixando no base frame BaseFrame.cabecalho.fechar:SetScript ("OnClick", function() BaseFrame.cabecalho.fechar:Disable() instancia:DesativarInstancia() - if (_detalhes.opened_windows == 0) then --> não há mais instâncias abertas, então manda msg alertando... + --> não há mais instâncias abertas, então manda msg alertando + if (_detalhes.opened_windows == 0) then print (Loc ["STRING_CLOSEALL"]) end end) BaseFrame.cabecalho.fechar:SetText ("x") - BaseFrame.cabecalho.fechar:SetScript ("OnEnter", function (self) - gump:Fade (BaseFrame.button_stretch, "alpha", 0.3) - end) - BaseFrame.cabecalho.fechar:SetScript ("OnLeave", function (self) - gump:Fade (BaseFrame.button_stretch, -1) - end) - - BaseFrame.cabecalho.fechar:SetFrameLevel (5) + BaseFrame.cabecalho.fechar:SetScript ("OnEnter", botao_fechar_on_enter) + BaseFrame.cabecalho.fechar:SetScript ("OnLeave", botao_fechar_on_leave) - --> bola do canto esquedo superior + --> bola do canto esquedo superior --> primeiro criar a armação para apoiar as texturas BaseFrame.cabecalho.ball_point = BaseFrame.cabecalho.fechar:CreateTexture (nil, "OVERLAY") BaseFrame.cabecalho.ball_point:SetPoint ("BOTTOMLEFT", BaseFrame, "TOPLEFT", -37, 0) BaseFrame.cabecalho.ball_point:SetWidth (64) BaseFrame.cabecalho.ball_point:SetHeight (32) - --BaseFrame.cabecalho.ball_point:SetTexture ("Interface\\AddOns\\Details\\images\\ball_left") - --> icone do atributo que esta sendo mostrado + --> icone do atributo BaseFrame.cabecalho.atributo_icon = _detalhes.listener:CreateTexture (nil, "ARTWORK") - BaseFrame.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", BaseFrame.cabecalho.ball_point, "TOPRIGHT", -1, 1) - BaseFrame.cabecalho.atributo_icon:SetTexture ("Interface\\AddOns\\Details\\images\\icon_mainwindow") + local icon_anchor = _detalhes.skins ["Default Skin"].icon_anchor_main + BaseFrame.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", BaseFrame.cabecalho.ball_point, "TOPRIGHT", icon_anchor[1], icon_anchor[2]) + --BaseFrame.cabecalho.atributo_icon:SetTexture ("Interface\\AddOns\\Details\\images\\icon_mainwindow") + BaseFrame.cabecalho.atributo_icon:SetTexture (DEFAULT_SKIN) BaseFrame.cabecalho.atributo_icon:SetWidth (32) BaseFrame.cabecalho.atributo_icon:SetHeight (32) + --> bola overlay BaseFrame.cabecalho.ball = _detalhes.listener:CreateTexture (nil, "OVERLAY") - BaseFrame.cabecalho.ball:SetPoint ("BOTTOMLEFT", BaseFrame, "TOPLEFT", -37, 0) - BaseFrame.cabecalho.ball:SetWidth (64) - BaseFrame.cabecalho.ball:SetHeight (64) - BaseFrame.cabecalho.ball:SetTexture ([[Interface\AddOns\Details\images\ball_left]]) + BaseFrame.cabecalho.ball:SetPoint ("BOTTOMLEFT", BaseFrame, "TOPLEFT", -107, 0) + BaseFrame.cabecalho.ball:SetWidth (128) + BaseFrame.cabecalho.ball:SetHeight (128) + --BaseFrame.cabecalho.ball:SetTexture ([[Interface\AddOns\Details\images\ball_left]]) + BaseFrame.cabecalho.ball:SetTexture (DEFAULT_SKIN) + BaseFrame.cabecalho.ball:SetTexCoord (unpack (COORDS_LEFT_BALL)) + + --> emenda BaseFrame.cabecalho.emenda = BaseFrame:CreateTexture (nil, "OVERLAY") - BaseFrame.cabecalho.emenda:SetPoint ("bottomright", BaseFrame.cabecalho.ball, "bottomright", 0, 0) + BaseFrame.cabecalho.emenda:SetPoint ("bottomleft", BaseFrame.cabecalho.ball, "bottomright") BaseFrame.cabecalho.emenda:SetWidth (8) - BaseFrame.cabecalho.emenda:SetHeight (32) - BaseFrame.cabecalho.emenda:SetTexture ([[Interface\AddOns\Details\images\emenda_left]]) + BaseFrame.cabecalho.emenda:SetHeight (128) + --BaseFrame.cabecalho.emenda:SetTexture ([[Interface\AddOns\Details\images\emenda_left]]) + BaseFrame.cabecalho.emenda:SetTexture (DEFAULT_SKIN) + BaseFrame.cabecalho.emenda:SetTexCoord (unpack (COORDS_LEFT_CONNECTOR)) BaseFrame.cabecalho.atributo_icon:Hide() BaseFrame.cabecalho.ball:Hide() --> bola do canto direito superior BaseFrame.cabecalho.ball_r = BaseFrame:CreateTexture (nil, "BACKGROUND") - BaseFrame.cabecalho.ball_r:SetPoint ("BOTTOMRIGHT", BaseFrame, "TOPRIGHT", 32, 0) - BaseFrame.cabecalho.ball_r:SetWidth (64) - BaseFrame.cabecalho.ball_r:SetHeight (32) - BaseFrame.cabecalho.ball_r:SetTexture ("Interface\\AddOns\\Details\\images\\bar_top_right") - + BaseFrame.cabecalho.ball_r:SetPoint ("BOTTOMRIGHT", BaseFrame, "TOPRIGHT", 96, 0) + BaseFrame.cabecalho.ball_r:SetWidth (128) + BaseFrame.cabecalho.ball_r:SetHeight (128) + --BaseFrame.cabecalho.ball_r:SetTexture ("Interface\\AddOns\\Details\\images\\bar_top_right") + BaseFrame.cabecalho.ball_r:SetTexture (DEFAULT_SKIN) + BaseFrame.cabecalho.ball_r:SetTexCoord (unpack (COORDS_RIGHT_BALL)) + --> barra centro BaseFrame.cabecalho.top_bg = BaseFrame:CreateTexture (nil, "BACKGROUND") - BaseFrame.cabecalho.top_bg:SetPoint ("LEFT", BaseFrame.cabecalho.ball, "RIGHT", -4, -16) + --BaseFrame.cabecalho.top_bg:SetPoint ("LEFT", BaseFrame.cabecalho.ball, "RIGHT", -4, 0) + BaseFrame.cabecalho.top_bg:SetPoint ("LEFT", BaseFrame.cabecalho.emenda, "RIGHT", 0, 0) BaseFrame.cabecalho.top_bg:SetPoint ("RIGHT", BaseFrame.cabecalho.ball_r, "LEFT") - BaseFrame.cabecalho.top_bg:SetTexture ("Interface\\AddOns\\Details\\images\\bar_top_center") + BaseFrame.cabecalho.top_bg:SetTexture (DEFAULT_SKIN) + BaseFrame.cabecalho.top_bg:SetTexCoord (unpack (COORDS_TOP_BACKGROUND)) + BaseFrame.cabecalho.top_bg:SetWidth (512) + BaseFrame.cabecalho.top_bg:SetHeight (128) + --BaseFrame.cabecalho.top_bg:SetTexture ("Interface\\AddOns\\Details\\images\\bar_top_center") - --BaseFrame.cabecalho.top_bg:SetTexture ("Interface\\AddOns\\Details\\images\\bar_topdown_center") - --BaseFrame.cabecalho.top_bg:SetTexCoord (0, 1, 0, 0.49609375) - --BaseFrame.cabecalho.top_bg:SetHeight (31) - --> frame invisível BaseFrame.UPFrame = _CreateFrame ("frame", nil, BaseFrame) - BaseFrame.UPFrame:SetPoint ("LEFT", BaseFrame.cabecalho.ball, "RIGHT", 0, -25) - BaseFrame.UPFrame:SetPoint ("RIGHT", BaseFrame.cabecalho.ball_r, "LEFT", 0, -25) + BaseFrame.UPFrame:SetPoint ("LEFT", BaseFrame.cabecalho.ball, "RIGHT", 0, -53) + BaseFrame.UPFrame:SetPoint ("RIGHT", BaseFrame.cabecalho.ball_r, "LEFT", 0, -53) BaseFrame.UPFrame:SetHeight (20) BaseFrame.UPFrame:Show() @@ -3598,7 +3663,7 @@ function gump:CriaCabecalho (BaseFrame, instancia) consolidateButton:SetWidth (16) consolidateButton:SetHeight (16) consolidateButton:SetFrameLevel (BaseFrame.UPFrame:GetFrameLevel()+1) - consolidateButton:SetPoint ("BOTTOMLEFT", BaseFrame.cabecalho.ball, "BOTTOMRIGHT", -2, 2) + consolidateButton:SetPoint ("BOTTOMLEFT", BaseFrame.cabecalho.ball, "BOTTOMRIGHT", 6, 2) local normal_texture = consolidateButton:CreateTexture (nil, "overlay") --normal_texture:SetTexture ("Interface\\AddOns\\Details\\images\\consolidate_frame") diff --git a/images/ResizeGripD.tga b/images/ResizeGripD.tga deleted file mode 100644 index 5329cd28fc261993beb692c6bf27fc2661b420b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmXw#T~ES55Jkt2s_}^kMw@6rFa<4@L?JOM(H54{pwJev^ug#~p?vC#Kl$1jbRRY+ zJ7@3g4$(gSuMB0Vut$0>ONpL4phVL&T5)yBv}9T_EttNT=1kvAGo}gCPERR(#4+v~ zb(|g_p{Lq-k0O|50~6MWwJC$N*d6%;xll7NP$}l|;wp^85SQmAuqCkx(^ML`?G8qM zfNG@-vs8fBvQs~RQ9OerN|zbCnsQp=T7Rx345$uGhyhqm3x=(O!=i4>SsOo`DVw|? U-Co0ydh>?fpl^*k-m|)*Uw7nT)c^nh diff --git a/images/ResizeGripL.tga b/images/ResizeGripL.tga deleted file mode 100644 index 00dd18b21848de6df589f143a7a083838830b91c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmX|-T~ESb42A2*(0D}zqf0a(n1PN-qL3Js=r+b!RM-YMc473dFh2FhpL|@a(u?Nl zdC%LlCEBC^$WoSyyDKgeMNueG^ZP_*wMh`F+Sp(pD&=l}=M{ z0M9m|my4)XD;W6!+;#_3?kyptL_w;XkK!}_e2!&f#y&~gR_h*G;TR1=mo}DZV!nRf zQV()y)@z6dAs$+HSgfBmZ?3QKkuKHix{w=5!wudu3Vg`1M53;3K`!>qza{-nNi+;c R&Z{@@`aNUZ@t&Pa`T-xHVbuTt diff --git a/images/ball_left.tga b/images/ball_left.tga deleted file mode 100644 index 7701215fbee964a29db1f29abcce0730e80c32df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4948 zcmcgvc~F#Bwm;p_bT`euHqc(NmVLFqmxO-ys1pajK*;QS#IBFl6TJ6xKz#m@2mRV`}NoN zJHNBtbI%9h43DmS$OpCT_@=%N5E~6epjHQiySp1$X+eNUBoY?VER#v$(QkaHKzJd1 z5FrSoL?Y>y$z<p20 zwyhgMn-~L@rUu9_E`c4pM!>FFT52LBC&dXm2$~6+j3O=gBS=Y4gd0MQ$P$aiMv+9; zmzZa~9ADTp>l~Ic2S59xZPnSIIBfZ?EwFm~yoSx^fdxm$d?|d2Aix3qEQcXkZ zcu6+&w8Hjn0}vV-0^_I>Iv$)A&S3Rb`ob|>0ui(%BsdTh_?Y4*k&sRR4h{~&Ot%OR zL?A+oYYOnc8mZJNRV-1=LDK|>Uo3HW8+|tMCk|^*a7e8}|GmxO;0+Gb%N$NEa;SOU z78xD=bx&7Q4iZ-(DiIloSVUY!SpoR_`$Bm|IaoN_?1U*hJ z^5auVQg9!6G6nAo5!GS`$1w;=yaQ>q94dx6^h|Pi_SYPSP`SEs4moQ$tU1JC(=>

MQzMkqhoHGB(5l~=hE^uTxRU%(#CCE)-b?j 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 diff --git a/images/bar_down_right.tga b/images/bar_down_right.tga deleted file mode 100644 index 790965b4446d0438e92c7b1e452af75e177c7c7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1223 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 Bhq3?w diff --git a/images/bar_top_center.tga b/images/bar_top_center.tga deleted file mode 100644 index 049ac06ef3eff4fe34b8881db83e35a384852ea3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16176 zcmeI3UvFGT8OG<>4z-|G4O_RCoK;V>S-h5OFxRL}q^d{}6eLL6P>DNoQH83h+6Yj% z$T_o{UD#4v7%7$tk`cMEP%m=9MI>%|nJ>Y2;2R9@@0s%_yQHb}$02c!r5(TX&O7hS zyfe=;b7s#v_jOnO&7>}!cfa}FmEf;ly&C*zG_vHAQOHN*aY%08z8!w?%L|s<-VT2I z&z4Xa&9>2z9ZK5X-8GY_+cq7>(v3cuup@i7(zM@1ASY#Vd&;u$dTMPo?i$a$)n4Vl7)qZP^re1G(=K`Pm$!LuIlIK=7WsK zc&ZB$jB)w8Q)E;jeik0h}?AQY7bV8DL(vY4=Lx$kf6P@5Xrq8?GZgAbz zuB|N_z3Z*5hpe~0VcGR{ODt>BMp;mr_^#~8R#J{Mi!rsz{~2y)X`s{X1Xg3muAg{E=EL|hNdzbDcz;b zW=5JBDX~%he-E*ep^F4LI0H#x)y>4r5)KFs|7MeX)tysAml0VWR{ostn#UNTuc)=8?QaNKjKE zgHk_>iZcGkz1`{;0}we`)8erIbv%cC$x*})I?A9NaTS`J_zut~=wlr5$ao`PRrFQI zK(v~OznY0ECa{?(TZX^@95skCM9q|l(jjJ&(j3RD90X3$SsvNO&OniT2x)OFC~=>o zGsxSCM@NNT11nUq_1OV);`e=IYtw~%qupYqax)cy~#;+ zbkqhgwVO1dZ$clJ?o+nvwT^QDGQ+OTGg5p~GZt~FUCrb?u4SM>o4lWVTDp@(j1F{M zNlIc6lSrjUyK!U^QHJ?w9@x~)W)f^8fzX>tu%&V2kf1ZZE+*sgBVI#5Fx>s>z+!u{5sdD60hcb2w4o~) zc~`5$jt+VERSp(*PdVtWfmo9wuXNWqy1*+)HLvKHBE-Qj2t$^ct~9fC^XB!CBnfKS ziugAvqt)W-6BMhUv&xN;F@dt`VnP8`)y?9RYJ>1`oW`iSyqRsM9bN3uJT&4NY2-Pm zR~(X2pevxN8}Sj$x( zJ+_yG*u?h#v~Hcy&NB8|)c`$b19rMGU<20Uu}-&whU?g*X%`gwGH{r53^M@A?f`5T zMH+C>we8rj)LG^D0xD>1NP(Kww$)b$*x>pCF4&gj@mbspnj|oZ5^M)G2O=YFnCg$v z+_pR01cWmbt6NG~!xWVOTe2_F{mcECLxYL~NR*kqaART}G zH5^#Y>7HZV^pS+$KT@hb%CW#r;T*#OspWshm;+lIavHXC8?h;+TG79HSuT_yvXHc1Ce8}BNjvDgbS>#D8AqM!VoX;49Pj9TTKS8fX>B~I zOIj~31@#9(jWyj1UmCp;(Hk*!LjvpH3uUB58KiU{i>6j;ZeujE5A_h0+=k5K~`RC_@NAgHJm2|z5{#8heVIS#GYTU%L z(`&T6Rcmj`&X=#-PDp=`Z`zvfvq~yn%Z=4sth+_270A_{I(a@S4QU)lWiXnu$1y!I zYFDzW!SCJJ3&UMY#(VqwA-{R+R!F{o`n7QJ!;eCaYHR=I&ER+U_RQ9@e*bgJO4|Jk zI;(nT!3{Gxh#ju>FsAKT5zrJk7zbfr6eQa6PxbPl2yeJzBK9DO* zzQRteVXSV*!R6mx!QZ8j)obwL$LbZy!Hk;$TKt~y8FWndjQv*PtbN|G&(HZS%)9(} z>DlX`;1s_zJ1yzHbdSah({;)|kFi$_ z_4FfblBj72y@5$TExEP07! zTKel{P125&=-Pp?9q%| yv0}$d?54oEf0NYNe^lB3Aj#yA6WZbL>`%|V`SzKgo%zX+H_rdy%#Ysuj{7e;99B30 diff --git a/images/bar_top_right.tga b/images/bar_top_right.tga deleted file mode 100644 index 442de8bcb438039de6e002609171a31f19c38125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2083 zcma)7-)oas7(QRV{P@fomfF_FC7q#JG)1xr!?BU6VYSlG#m=pXbydtjp%BD~6nojP zS=&I}tl}{K*p{Ie87lNY7PIe@k^?(3R}gcr6uvsEiOv#)TAh7#IM&H(*qeGH!Ha|7U|*mwM+fOlv*r z+7vSy%8T?@q}2kh5|)f;l1~FEU;}wiC@5Ai7!+S;r=-(q85#WoiCOaa@5j0w8X1wv zLP5SqoKmOrd9gp-yH{Mv!Q>{i;aE&OF&K6NJ9bDaeRz$U5~N%rqlc7a%$-`>gf{CW zk0PPXp6T!ImLIN{H6`0Cq;i)ll?Kf(7`M_Gkw`?M(Wuy@az_VtOXEv_f4^KUUwbuU zr7fe)cn2xTNJ9O^8487D=G&5Fj!o#+G)#3F3|Qo?vg9Uldz7jGt&4mWB~R(Kly8)G zWLI=8@4mjiCf52+t}n7Zqqi>{k;r?swApeC8sGk(d<*A~?GtCbO){m=h(l*@V7tuV zwPf&W*t$&DhK=Mk0#|#!SrQnH#n~L0J-y9z>r2~|su&1`MTNs*vDtHWcK0@|s`+^9 zRJYn@IUfiF#O%a#+n83%I{02$4AMY9;M2umzN@QC%#Mx@S-7|$!z05|`mR*J{j5!e z^Ljtp2haI@K5;PEG);N<=%Lu_(W|Sgjp(1+OIwyD>cQ_1YEcHoS={t1wi)iK-mCtD zSe{1f(ox4Oaj-a%XyuQUIuA$WvPq_^j3)CSoxebI7O;VXz(+s;cndJD!>~A7D2^aq zMj@PUK7L1O*KqYC#8}c&aTcf3C>f#W~_BroO=p58xP(2i^gE zfK@BN0J5`yz{cBac&oNooT7}Nnz#w=>f&BpU z`2=_yaMiRbE;rH-z zE6#7d1hb9vWME=`z@g_U>1Mo#SIR{v3+Mp000uMCKZCbb{kEymjxb|iW`?q5Rh;Qq`4-vWf}wmLjnSUKp@C*Z4e-l2n2s< z=Qor>NH5vV?%aFx-p-83qg=k6VPDrC2OVR45cgh{XK!Ek%rMPW+U<6=*XwBz1UeWD zw9#m21W&5f>X~zv0Wh1*bUYrDQzNpZ!!Xo-zpwRr-J_Vfsy$g)$U2!!bg@{tf;n)- z;c%#<(a7oKx}%yYr*1YIozLfPjAvqcwOVN$$4)n!|516cB7`U58pxAn0esMpdPoSaUl{s2#8 z5|T8MSefbO%_L;7%!{$Q+wH`h2vCT3PztqNE|C>$i^I%@7m^lT=PLsg3zzJddeTkW pa)mNH8WT%WRffPL#J|{>X!R2}zW3foyWe^1yoQy}p!3pxmLEC6xU>KO diff --git a/images/emenda_left.tga b/images/emenda_left.tga deleted file mode 100644 index b36a7e7ca017a3a3c4c698be0d99e14bf79b71d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 zcmZ9K%TE(g6vofA9i~DH)5p+DTgcRQiWK^=V5vb=q6I1<1ci|3!i6SiWFf%>1tU`* z74LO;o|z;8l!cR-#K@_@7yzI?hH{i{kfc^lkQX| zZ(dD-77&}By742EPVlkuQGWVtfzQm%a#7F2x}IbxrkijcK)j?GR)C>TcCX4i=8=w8mrKa6$** z4KPYIE;lKGX!CA+GO@L?x*`r=obM9Ifhs^sLz8YrL)!O&!2!O$zQ$RY?U94tgDKFi z)O$T!kr4Y73I=($Bg;Q7f8e$%+fSG~U`?r0)s0{STUC^*%d#vN(y7$J%U4T$)_efw zxum*kHd&zlvnfeZ)^4-e&KS*ce)s-t*;eXnYd5_fbrB!)I7omtkV0Xa1+;cYRBv3i z+wFr8yMP-QCPE9LBq90z-U-}|2+1YdBas(LMdODMn(%`#f!zE N3(4``;`u^~egXO;y{Z5J diff --git a/images/grab.tga b/images/grab.tga deleted file mode 100644 index 51e9db9c04b8943f6a55434e942a65f3d7f81bf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1143 zcmaKq+fy1>9LJH1AXh<9E`opp7P)xEsEHs5f)`*Aoz$0(t=0$%ECB?|phRO#qHPj0 zvFbEB)+TBC*gp3E>Kosl#pI=(_RM^Ce`ogm_WLf62%^y_VzC&i@pv4p#f1gTMdp#tm$3BpT1`mXZ0+pf{PHLG z0#mS<&9K{Su-k2LIvsHK_M(^2*Vl)EfdLE-4x&0VG=yfC%Y{34hA}cS@*mP3cs!oE zwD*&=|C97LNeabBPtifgb2uDv{L3W_dx9`_nW59^pf~7YsAGW9XhdgcCrn)?m`o;^ ziK4~QjqdJlSii8sY9;jaz-H@#-C>8r;Xtp``48<|^&z6~at&i?c?~P6Lai>K?Xr1` zm0jdY+gM&tL!nThrKJUOxdL)hD_Rw3ZEZzcn-WT;3M!QfYPA{~jRsn6JG44&U0T8(s%7>6NOVP+-gU{y^1P~B} z0)kKkkw^rwSd6MfB7sCIZH7!Lg-j-cjQF<5XlFSTG{l#7Rw{`z@l~nRb#IMEi`Z9d zSWZ&4M|5@*Um%nh_kY0DY!qaUhK2?(2`m43Q(m**x-XnGuaBQ*}b*<43&c;JU@Ml{!urM z=y3k$bS9n5B#>k}oyBC5J+)!nH${HjReYPu-M*`xbTAF(o=BolL3X>0^8P-~Za(1S z?|?z- zTwmkt`WL*t`4v|;AMu#vLtAS<>c{?H{g$Waq&l5xr+4PL_nf)socW#i+_^+D`g&POLsp3~98dmvaP$n* zvvX)~YeP>@4|;ohapB?x^j+*je}6yRECT}r@OV7%dcC;hy@X3X9|i{pF+4nsk&zKx zzI+*@qoWub9mB-yvad_nuZpuY>nk-EDNi|_h%3TCsaz&BUXN^UJsp4hmsOKN?2Q8sz+&QDay(WFc^$58jUcS zOfZ|xC@(*U@{002y24Vyo)%cG9AEh#xWnOK@S6N47H)-+-r373TikA%ibN>&`b~Ev zwS)NPL#Q>yC=wMyCX=zqA!kv@Srkerl}e~oDrD4ZHPpq$8fc4)q19@kWn`U}vrC}o zVPwuW7#N$8jYd^Dr)t3$R7*}qEBD=gX>#J+}XtD?ksPoLv{_5hm?_7G2PA-1uD!&fiy`t%gX zr$6KE*>8A%_7V5l{78Bm8<{<9?e6C+BC(iMIvrW+>c}-TM3dn#tvq@e3?=U%lvqP3 z7ROq86N&XSRuf4K`~8UV_WBxviQ8C-CJ>6p5MNtI^ma1eUJk8dX(fbkEW+Ni#A1lB zx#3t6OTj1>LkTR#zsIe3GACtaBC$+H#bss0&z4uhckLPl;&EEIdzWryvlKo&q{G#t zBNDD09MFwShNh!Y^32VVlvSGwMIw?a6r?FFC3AH(IXXJ>%XE*8QGXyn16QulAs;Q| zz3%aGYV&%@;c}6b|J(Qy?2t$-m6AfEA+5ncWflvav)l7!u{Jc&q0Q+eA@`L#9AvcF zsKjih44*FI^9uxm{2IKRd^eo)T&7ZyK&DiZL@v*-{*I6T=f->d3QW!TW=Ez+{1c6H KgCk?UCi)Aw^7bbH diff --git a/images/icon_mainwindow.tga b/images/icon_mainwindow.tga deleted file mode 100644 index 853a5c43102a383355b8ed397c6dc956ae0eed06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11520 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 LYG_1sh?xC9{;dRo diff --git a/images/scroll_down.tga b/images/scroll_down.tga deleted file mode 100644 index e4f91dc186701bcb3cb1b35bf910f4af6dc53f90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1676 zcmbW1L2DCH6oubRQ=DcxCSei@Gz>y16?CLDO)X^AMTClIX;cg@3bT;XQj=1}^_!^` zb>UC2i!8Db>Z%(T-F6vp(UrgD_|BWjq^Y&EP9Sqi7E) z!S)8iT73y}u3CkW&*#A)x_i$@G;{Y3OAnLq*r=oTT1|M5(m7%e= z3S)j@5rtAAwjjJ24`Fk?1wkJny@yWDfnXH5t_!2&mf#j#NWL<>TOP=f(WfeabP<(Qsf7gD4l}J;1n(bnY1tfX~>v{*!Cz$5+q8c67~{gLfd@P#u;0R#^vSe zkQ@?b+UIFQTN&E2CM~UM@9tj0ipUZyP4`VR##!3`AU@OGb(4R&T$IthR9l)mk}>Pn z9f;xu$&D;It2TK8Haq8A$hQNCE?aU{lbxa{!;LJjNcqI(B{CIB%Sw_n&FK1_O}?*t z&N}2Z0P3Xkpt1#DDNC{?uhVQ99wUwge!RLKpj$M!8#)1M9R=o^Yr&A$e@LbCY)e1Ln@8d#s;$4Z0sPU$k=(mgZ{7nC1Xu#q*kkW zI#lbiCY!G~jef?{NDmO*vCy&AF|jAq*0Uzqi9${{kVATUb{31v%gEkzV;?s-APLeO z6>~|rZtQ)!eMP(h6j!EPL9S$*&A+JMIR3Bj$Io~@TYKJkvC>?5`ow?vaOH91zW4*$ CvTq;& diff --git a/images/scroll_middle.tga b/images/scroll_middle.tga deleted file mode 100644 index 61ce8cbcf811060be47228d95e90d82d6c09f76e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4409 zcmb7|yKWOf6o$v^SlO^yVJSoy0a9K7>Xa0K5(xp~CSHI78AOmk)a!LjBzOP{iWC$n zD0su={QsFVm$hRsO-A;dZ~i%RZpOJQ&i);^d+wkdjmP8e8(O zeA0|}$6c|1<0ki9{Q1)@x~_9YYRQeK!DJp*>x|#Ln-Vz#DVi+Qc;%r(Y&AQqXV~nj zy3!R>Jn@2KaG)uD6bW`|2+O8VGPe%>iftXsfD9 zDY8GOOh2Ao?qK*6cn-n`ATf`TpROch}7oL2aT_A|Y~PT92? zEgG~4#o*?WqI|#Bxr(7PU1`X45c4=3x?Pn z4t5Zwue1UnsT2URZp!VEzD844Vhi8W){W!~A260V@j^WcE%>miVA(c2@dyJh2p23?e7-4HnhkG|B!PIRzy}K*7%kB)e4qo6*G|`sB zq7UFc0>1L_;6?>lH2nB!Rl@*>68TUN0d(FXhPOW7(=NB2et0iYk=PE(5nNa*X#fFW zP!8i7yCZ|y?ipC?`I_J20p=~kJj4+{YRX+Hf_v8ylIw5_kP4&-QY9pa;{nV;g5Vc` z&VQL-f-YYNXEDvN3X&M}#BoQWOALFsq^z;~mkeXMXAb)`H6Lhpc@$?m zE&PhID#4>?KN+kK!>pY$UqgoZ1{MxDKJhiggCg7LUo=)j%L}#KAoaC&*^9gWjcpowGrx!7W!yr z%Xw9YVphYoTB36~(&{wMft5GnTyB&+j?>A5-c&#+J$@{|?q~Ygz;g#=_ms@~G_z5xbP(2W+_vvsc3& z-Z%wiG?t2o8(KC2mJbK3VZP!ZcsGGzTA`ceY)x0k7NCob@Ire zmuQoLOZ{+S%Ggj0wT-Hw)k=DltWA^srMB4bl*QE0*;KS;z~T7XBm!m4{@G%4Ts4)< hOuj}WeZ~H34_+NVKYsG~&g+NAj~?80e*wUsj~xI2 diff --git a/images/scroll_up.tga b/images/scroll_up.tga deleted file mode 100644 index ca3d57707bcb1b2dbb31c37fa0fa8f9028a77745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1799 zcma)--%C?r7{}i;cebO)v0cRKrZv!kAughjAOs~AIKX%KkxT>-sgQ4qE5J< zxZtnx9FPBT(SwGe_vMGFHI=5Rr6qOmNTYoWUs$`#nIY2`S1t`3rQ+afA)GAqz3{uXWQDp#}YC6 z{N*d*J~A;yvQR3LU6`9Cdv;-wqtYztc+3psC~8L4{oTh8l+E4rP}-&5-rZQ@l)@Aj z=V)W|HQhlfcafC#aP^rIN)W`Y@v*X$>*4FnW)CJx1%hnz&07kG!_`tKAeS&8rb{!9 z)Q?iy%MX6TAQFrmi|}ObjMDHMTmY`Zba94;Cnw4ia{c^|o;=-gRYrY;Ad*HcE*uFb zGI=S?T9YrP$$#J^6b-t;{E$Nnum^+Z*!`OZgj!Oo5{ZAp>P)kS*KQwWM?$VOAa28% zh6otPCn75p3X$+EV(m-w3!X(klQbSZsHWZn%?CXKWeglAONCfiprO%`a?Q$!im^x} zqC_e~sRwn(kTinjIx1HdUh{#5sfQ=VJ(}RrpRS=pGyz(&Wx+x#p_NQ$RqV;6*luP~vn8$#`QEiH61m$wX5#>4@U-IN^=~+)wh)I>CclDwCt+g%q2Oa)FX= zuKd3uPd2a`xXowIF^%CK*9J!bC_$5;`CS@dpn5#+6MXvnuBNVaW;(BQw`4DOcBPWy E4?$p%1^@s6 diff --git a/images/scrollbar.tga b/images/scrollbar.tga deleted file mode 100644 index 580245bd930c828aaf3b891c5039739af353f9df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7915 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 diff --git a/images/skins/default_skin.tga b/images/skins/default_skin.tga new file mode 100644 index 0000000000000000000000000000000000000000..a09481d84bc5d78eeb8eac03713b7e56207f697e GIT binary patch literal 180224 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 PURBk+cv)@D1nvI=w>QxqLK2r5ND5qA-Y1<|NU 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 Rc=4j{RTo^mVBU#M{|{&Pqa^?U literal 0 HcmV?d00001 diff --git a/locales/Details-enUS.lua b/locales/Details-enUS.lua index 3ef5f436..d4210116 100644 --- a/locales/Details-enUS.lua +++ b/locales/Details-enUS.lua @@ -4,7 +4,7 @@ if not Loc then return end -------------------------------------------------------------------------------------------------------------------------------------------- -- \n\n|cFFFFFF00-|r - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.5|r\n\n|cFFFFFF00-|r Added sub attribute 'Enemies' which shows, of course, only enemies.\n\n|cFFFFFF00-|r Fixed issue with successful spell cast.\n\n|cFFFFFF00v1.6.3|r\n\n|cFFFFFF00-|r data capture now runs 4% faster.\n\n|cFFFFFF00-|r Fixed issue with pets were wasn't uptading owner activity time.\n\n|cFFFFFF00-|r Fixed healing being counted even out of combat.\n\n|cFFFFFF00-|r Fixed some problems with multi-boss encountes like Twin Consorts.\n\n|cFFFFFF00-|r Added options for concatenate trash segments.\n\n|cFFFFFF00-|r Added options for auto remove trash segments. \n\n|cFFFFFF00-|r Added options for change bar height. \n\n|cFFFFFF00-|r Encounter Details now display how many interrupted and successful cast of a boss skill.\n\n|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Fixed:\n- a issue with debuff uptime.\n- overall data dps and hps for overall data on micro display.\n- many bugs involving sword and book menus.\n- garbage collector erasing actors with interactions with your group members.\n\n|cFFFFFF00-|r overall data now always use the combat data for measure dps and hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Added debuff uptime at misc attribute.\n\n|cFFFFFF00-|r Disabled attributes now have a darkness effect over sword menu.\n\n|cFFFFFF00-|r Fixed a issue were sometimes you need to /reload before change a talent.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Fixed a issue with report data during combat lockdown.\n\n|cFFFFFF00-|r Improved pet owner recognition and added a ignore list if couldn't find his owner.\n\n|cFFFFFF00-|r Added an option to display only frags on enemy players.\n\n|cFFFFFF00-|r Added class colors for frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Fixed a issue were turning off buff uptime was disabling healing done too.\n\n|cFFFFFF00-|r Avoidance statistics will not be recorded for pets, ungrouped players and monsters.\n\n|cFFFFFF00-|r Fixed a issue were sometimes buff uptime was taking too long to save data on logout.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Fixed a issue with report data were sometimes wasn't working.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime was been implemented over Miscellaneous attribute.\n\n|cFFFFFF00-|r Death Logs now also display cooldowns and last cooldown used.\n\n|cFFFFFF00-|r Added this window showing the latest changes.\n\n|cFFFFFF00-|r Fixed the issue were sometimes the instance stops to update when clicking on the attribute name over sword menu.\n\n|cFFFFFF00-|r Disabling Healing now shutdown the absorbs too, disabling auras doesn't interrupt absorbs any more.\n\n|cFFFFFF00-|r Friendly Fire now only track players which is inside a group.\n\n|cFFFFFF00-|r Fixed a issue were pet damage on target isn't added to owner target.\n\n|cFFFFFF00-|r Fixed a bug were refreshing a cooldown isn't counting.\n\n|cFFFFFF00-|r Added absorbs for shammy and monk 2P tier 16.\n\n|cFFFFFF00-|r Added slash command 'worldboss' and 'updates'.\n\n" + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.7|r\n\n- Added support to skins, you can change over options panel.\n\n|cFFFFFF00v1.6.5|r\n\n|cFFFFFF00-|r Added sub attribute 'Enemies' which shows, of course, only enemies.\n\n|cFFFFFF00-|r Fixed issue with successful spell cast.\n\n|cFFFFFF00v1.6.3|r\n\n|cFFFFFF00-|r data capture now runs 4% faster.\n\n|cFFFFFF00-|r Fixed issue with pets were wasn't uptading owner activity time.\n\n|cFFFFFF00-|r Fixed healing being counted even out of combat.\n\n|cFFFFFF00-|r Fixed some problems with multi-boss encountes like Twin Consorts.\n\n|cFFFFFF00-|r Added options for concatenate trash segments.\n\n|cFFFFFF00-|r Added options for auto remove trash segments. \n\n|cFFFFFF00-|r Added options for change bar height. \n\n|cFFFFFF00-|r Encounter Details now display how many interrupted and successful cast of a boss skill.\n\n|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Fixed:\n- a issue with debuff uptime.\n- overall data dps and hps for overall data on micro display.\n- many bugs involving sword and book menus.\n- garbage collector erasing actors with interactions with your group members.\n\n|cFFFFFF00-|r overall data now always use the combat data for measure dps and hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Added debuff uptime at misc attribute.\n\n|cFFFFFF00-|r Disabled attributes now have a darkness effect over sword menu.\n\n|cFFFFFF00-|r Fixed a issue were sometimes you need to /reload before change a talent.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Fixed a issue with report data during combat lockdown.\n\n|cFFFFFF00-|r Improved pet owner recognition and added a ignore list if couldn't find his owner.\n\n|cFFFFFF00-|r Added an option to display only frags on enemy players.\n\n|cFFFFFF00-|r Added class colors for frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Fixed a issue were turning off buff uptime was disabling healing done too.\n\n|cFFFFFF00-|r Avoidance statistics will not be recorded for pets, ungrouped players and monsters.\n\n|cFFFFFF00-|r Fixed a issue were sometimes buff uptime was taking too long to save data on logout.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Fixed a issue with report data were sometimes wasn't working.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime was been implemented over Miscellaneous attribute.\n\n|cFFFFFF00-|r Death Logs now also display cooldowns and last cooldown used.\n\n|cFFFFFF00-|r Added this window showing the latest changes.\n\n|cFFFFFF00-|r Fixed the issue were sometimes the instance stops to update when clicking on the attribute name over sword menu.\n\n|cFFFFFF00-|r Disabling Healing now shutdown the absorbs too, disabling auras doesn't interrupt absorbs any more.\n\n|cFFFFFF00-|r Friendly Fire now only track players which is inside a group.\n\n|cFFFFFF00-|r Fixed a issue were pet damage on target isn't added to owner target.\n\n|cFFFFFF00-|r Fixed a bug were refreshing a cooldown isn't counting.\n\n|cFFFFFF00-|r Added absorbs for shammy and monk 2P tier 16.\n\n|cFFFFFF00-|r Added slash command 'worldboss' and 'updates'.\n\n" Loc ["STRING_DETAILS1"] = "|cffffaeaeDetails:|r " --> color and details name diff --git a/locales/Details-ptBR.lua b/locales/Details-ptBR.lua index b4436fc3..f86d2c77 100644 --- a/locales/Details-ptBR.lua +++ b/locales/Details-ptBR.lua @@ -3,7 +3,7 @@ if not Loc then return end -------------------------------------------------------------------------------------------------------------------------------------------- - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.5|r\n\n|cFFFFFF00-|r Adicionado o sub atributo 'Inimigos' que mostra, eh claro, somente inimigos.\n\n|cFFFFFF00-|r Corrigido um problema na captura das magias conjuradas.|cFFFFFF00v1.6.3|r\n\n|cFFFFFF00-|r captura de dados agora roda 4% mais rapido.\n\n|cFFFFFF00-|r Corrigido problema onde os ajudantes nao atualizavam o tempo de atividade do dono.\n\n|cFFFFFF00-|r Corrigido problema onde o healing era contado mesmo fora do combate.\n\n|cFFFFFF00-|r Corrigido problema com chefes multiplos como Twin Consorts.\n\n|cFFFFFF00-|r Adicionada opcao para juntar os segmentos de trash mobs.\n\n|cFFFFFF00-|r Adicionada opcao para auto remover os segmentos de trash mobs. \n\n|cFFFFFF00-|r Adicionada opcao para alterar a altura das barras.\n\n|cFFFFFF00-|r Plugin Encounter Details agora mostra quantos cast bem sucedidos as magias interrompidas tiveram.\n\n|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Corrigido:\n- problema com o tempo de debuffs.\n- dps dos dados gerais e o dps no micro display .\n- varios bugs envolvendo o menu da espada e do livro.\n- o coletor de lixo nao ira mais apagar jogadores com vinculo a membros do grupo.\n\n|cFFFFFF00-|r dados gerais agora sempre ira usar o tempo do combate para medir dps e hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Adicionado tempo de debuff no atributo miscelanea.\n\n|cFFFFFF00-|r Atributos desativados agora ficam escurecidos no menu da espada.\n\n|cFFFFFF00-|r Corrigido um problema aonde algumas vezes era necessario dar /reload para trocar um talento.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar durante o combate.\n\n|cFFFFFF00-|r Melhorado a reconhecimento dos donos de ajudantes.\n\n|cFFFFFF00-|r Adicionada uma opcao para mostrar apenas frags em cima de jogadores inimigos.\n\n|cFFFFFF00-|r Adicionado cor e icone aos frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Corrigido problema onde desativando o tempo dos buffs estava desativando tambem a cura feita.\n\n|cFFFFFF00-|r Estatisticas de Avoidance nao seram mais capturadas para pessoas foram do grupo, monstros ou ajudantes.\n\n|cFFFFFF00-|r Corrigido problema onde as vezes estava demorando muito para salvar o tempo dos buffs ao sair do jogo.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar o Dps onde as vezes nao mostrava nenhum jogador.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime foi implementado no atributo miscelanea.\n\n|cFFFFFF00-|r Cooldowns usados agora aparecem nos registros da morte.\n\n|cFFFFFF00-|r Implementado esta janela mostrando as atualizacoes.\n\n|cFFFFFF00-|r Corrigido problema onde algumas vezes clicando no nome do atributo fazia a instancia parar de atualizar.\n\n|cFFFFFF00-|r Desativando a cura agora para as absorcoes tambem. Desligando as Auras nao interrompe as absorcoes. \n\n|cFFFFFF00-|r Fogo Amigo agora conta apenas jogadores dentro do grupo.\n\n|cFFFFFF00-|r Corrigido problema onde o dano feito por um ajudando nao estava contando no alvo do dono.\n\n|cFFFFFF00-|r Corrigido problema onde a atualizacao de um cooldown nao estava sendo contada.\n\n|cFFFFFF00-|r Adicionada as magias de absorcao para 2P tier 16.\n\n|cFFFFFF00-|r Adicionado os comandos de barra 'worldboss' e 'updates'.\n\n|cFFFFFF00-|r Corrigido problema ao reportar onde algumas vezes nao estava funcionando." + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.7|r\n\n- Adicionado suporte a skins, troque ela atraves do painel de opcoes.\n\n|cFFFFFF00v1.6.5|r\n\n|cFFFFFF00-|r Adicionado o sub atributo 'Inimigos' que mostra, eh claro, somente inimigos.\n\n|cFFFFFF00-|r Corrigido um problema na captura das magias conjuradas.|cFFFFFF00v1.6.3|r\n\n|cFFFFFF00-|r captura de dados agora roda 4% mais rapido.\n\n|cFFFFFF00-|r Corrigido problema onde os ajudantes nao atualizavam o tempo de atividade do dono.\n\n|cFFFFFF00-|r Corrigido problema onde o healing era contado mesmo fora do combate.\n\n|cFFFFFF00-|r Corrigido problema com chefes multiplos como Twin Consorts.\n\n|cFFFFFF00-|r Adicionada opcao para juntar os segmentos de trash mobs.\n\n|cFFFFFF00-|r Adicionada opcao para auto remover os segmentos de trash mobs. \n\n|cFFFFFF00-|r Adicionada opcao para alterar a altura das barras.\n\n|cFFFFFF00-|r Plugin Encounter Details agora mostra quantos cast bem sucedidos as magias interrompidas tiveram.\n\n|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Corrigido:\n- problema com o tempo de debuffs.\n- dps dos dados gerais e o dps no micro display .\n- varios bugs envolvendo o menu da espada e do livro.\n- o coletor de lixo nao ira mais apagar jogadores com vinculo a membros do grupo.\n\n|cFFFFFF00-|r dados gerais agora sempre ira usar o tempo do combate para medir dps e hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Adicionado tempo de debuff no atributo miscelanea.\n\n|cFFFFFF00-|r Atributos desativados agora ficam escurecidos no menu da espada.\n\n|cFFFFFF00-|r Corrigido um problema aonde algumas vezes era necessario dar /reload para trocar um talento.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar durante o combate.\n\n|cFFFFFF00-|r Melhorado a reconhecimento dos donos de ajudantes.\n\n|cFFFFFF00-|r Adicionada uma opcao para mostrar apenas frags em cima de jogadores inimigos.\n\n|cFFFFFF00-|r Adicionado cor e icone aos frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Corrigido problema onde desativando o tempo dos buffs estava desativando tambem a cura feita.\n\n|cFFFFFF00-|r Estatisticas de Avoidance nao seram mais capturadas para pessoas foram do grupo, monstros ou ajudantes.\n\n|cFFFFFF00-|r Corrigido problema onde as vezes estava demorando muito para salvar o tempo dos buffs ao sair do jogo.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar o Dps onde as vezes nao mostrava nenhum jogador.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime foi implementado no atributo miscelanea.\n\n|cFFFFFF00-|r Cooldowns usados agora aparecem nos registros da morte.\n\n|cFFFFFF00-|r Implementado esta janela mostrando as atualizacoes.\n\n|cFFFFFF00-|r Corrigido problema onde algumas vezes clicando no nome do atributo fazia a instancia parar de atualizar.\n\n|cFFFFFF00-|r Desativando a cura agora para as absorcoes tambem. Desligando as Auras nao interrompe as absorcoes. \n\n|cFFFFFF00-|r Fogo Amigo agora conta apenas jogadores dentro do grupo.\n\n|cFFFFFF00-|r Corrigido problema onde o dano feito por um ajudando nao estava contando no alvo do dono.\n\n|cFFFFFF00-|r Corrigido problema onde a atualizacao de um cooldown nao estava sendo contada.\n\n|cFFFFFF00-|r Adicionada as magias de absorcao para 2P tier 16.\n\n|cFFFFFF00-|r Adicionado os comandos de barra 'worldboss' e 'updates'.\n\n|cFFFFFF00-|r Corrigido problema ao reportar onde algumas vezes nao estava funcionando." Loc ["STRING_DETAILS1"] = "|cffffaeaeDetalhes:|r " --> color and details name