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 5329cd28..00000000 Binary files a/images/ResizeGripD.tga and /dev/null differ diff --git a/images/ResizeGripL.tga b/images/ResizeGripL.tga deleted file mode 100644 index 00dd18b2..00000000 Binary files a/images/ResizeGripL.tga and /dev/null differ diff --git a/images/ball_left.tga b/images/ball_left.tga deleted file mode 100644 index 7701215f..00000000 Binary files a/images/ball_left.tga and /dev/null differ diff --git a/images/bar_down_left.tga b/images/bar_down_left.tga deleted file mode 100644 index a1a6e45e..00000000 Binary files a/images/bar_down_left.tga and /dev/null differ diff --git a/images/bar_down_right.tga b/images/bar_down_right.tga deleted file mode 100644 index 790965b4..00000000 Binary files a/images/bar_down_right.tga and /dev/null differ diff --git a/images/bar_main_leftright.tga b/images/bar_main_leftright.tga deleted file mode 100644 index 15893db0..00000000 Binary files a/images/bar_main_leftright.tga and /dev/null differ diff --git a/images/bar_top_center.tga b/images/bar_top_center.tga deleted file mode 100644 index 049ac06e..00000000 Binary files a/images/bar_top_center.tga and /dev/null differ diff --git a/images/bar_top_right.tga b/images/bar_top_right.tga deleted file mode 100644 index 442de8bc..00000000 Binary files a/images/bar_top_right.tga and /dev/null differ diff --git a/images/cadeado.tga b/images/cadeado.tga deleted file mode 100644 index e5c0a53f..00000000 Binary files a/images/cadeado.tga and /dev/null differ diff --git a/images/emenda_left.tga b/images/emenda_left.tga deleted file mode 100644 index b36a7e7c..00000000 Binary files a/images/emenda_left.tga and /dev/null differ diff --git a/images/grab.tga b/images/grab.tga deleted file mode 100644 index 51e9db9c..00000000 Binary files a/images/grab.tga and /dev/null differ diff --git a/images/grab_over.tga b/images/grab_over.tga deleted file mode 100644 index 9577e13d..00000000 Binary files a/images/grab_over.tga and /dev/null differ diff --git a/images/icon_mainwindow.tga b/images/icon_mainwindow.tga deleted file mode 100644 index 853a5c43..00000000 Binary files a/images/icon_mainwindow.tga and /dev/null differ diff --git a/images/scroll_down.tga b/images/scroll_down.tga deleted file mode 100644 index e4f91dc1..00000000 Binary files a/images/scroll_down.tga and /dev/null differ diff --git a/images/scroll_middle.tga b/images/scroll_middle.tga deleted file mode 100644 index 61ce8cbc..00000000 Binary files a/images/scroll_middle.tga and /dev/null differ diff --git a/images/scroll_up.tga b/images/scroll_up.tga deleted file mode 100644 index ca3d5770..00000000 Binary files a/images/scroll_up.tga and /dev/null differ diff --git a/images/scrollbar.tga b/images/scrollbar.tga deleted file mode 100644 index 580245bd..00000000 Binary files a/images/scrollbar.tga and /dev/null differ diff --git a/images/skins/default_skin.tga b/images/skins/default_skin.tga new file mode 100644 index 00000000..a09481d8 Binary files /dev/null and b/images/skins/default_skin.tga differ diff --git a/images/skins/flat_skin.tga b/images/skins/flat_skin.tga new file mode 100644 index 00000000..d5a78666 Binary files /dev/null and b/images/skins/flat_skin.tga differ 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