From b1cf458ca5eeff8757a161e814f9a625326f2afb Mon Sep 17 00:00:00 2001 From: tercio Date: Sat, 21 Jun 2014 18:11:08 -0300 Subject: [PATCH] - Full rewrite on custom displays. - Fixed the report bug on healing, energy and misc attributes. - Fixed a bug where the player pet wasn't being tracked after logon in the game. - NewAPI: instance:IsGroupMode() return if a instance is in group mode. - NewAPI: instance:GetCustomObject() return the custom object current used by the isntance. - NewAPI: _detalhes:GetEncounterActorsName (EJ_EncounterID) return a hash table with [bossname] -> {[model] [displayInfo]} - NewAPI: actor:GetDisplayName() actor:Class() return the formated name; return the class. - NewAPI: _detalhes:GetClassIcon (class) return the icon path and texcoords. --- boot.lua | 6 +- classes/classe_combate.lua | 3 + classes/classe_custom.lua | 1446 +++++++++++++++-- classes/classe_damage.lua | 6 +- classes/classe_energy.lua | 2 +- classes/classe_heal.lua | 2 +- classes/classe_instancia.lua | 57 +- classes/classe_others.lua | 2 +- classes/container_combatentes.lua | 40 +- classes/container_pets.lua | 16 + core/meta.lua | 4 + core/parser.lua | 41 +- core/windows.lua | 480 +++--- framework/button.lua | 6 +- framework/cooltip.lua | 7 +- framework/panel.lua | 125 +- framework/textentry.lua | 40 +- functions/boss.lua | 35 + functions/classes.lua | 8 +- functions/loaddata.lua | 1 + functions/playerclass.lua | 38 +- functions/savedata.lua | 151 +- functions/slash.lua | 49 + gumps/janela_custom.lua | 2469 ++++++++++++++++++----------- gumps/janela_options.lua | 274 ++-- gumps/janela_principal.lua | 17 +- images/custom_bg.tga | Bin 248798 -> 930651 bytes images/custom_icones.tga | Bin 0 -> 44302 bytes locales/Details-enUS.lua | 61 +- locales/Details-ptBR.lua | 5 +- startup.lua | 646 +++----- 31 files changed, 4006 insertions(+), 2031 deletions(-) create mode 100644 images/custom_icones.tga diff --git a/boot.lua b/boot.lua index 71b75f49..412648bd 100644 --- a/boot.lua +++ b/boot.lua @@ -8,9 +8,9 @@ _ = nil _detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0", "LibHotCorners") - _detalhes.userversion = "v1.16.3b" - _detalhes.version = "Alpha 019" - _detalhes.realversion = 19 + _detalhes.userversion = "v1.17.0" + _detalhes.version = "Alpha 020" + _detalhes.realversion = 20 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> initialization stuff diff --git a/classes/classe_combate.lua b/classes/classe_combate.lua index 608adfe6..f8c3370b 100644 --- a/classes/classe_combate.lua +++ b/classes/classe_combate.lua @@ -148,6 +148,9 @@ --> record last event before dead esta_tabela.last_events_tables = {} + --> players in the raid + esta_tabela.raid_roster = {} + --> frags esta_tabela.frags = {} esta_tabela.frags_need_refresh = false diff --git a/classes/classe_custom.lua b/classes/classe_custom.lua index ebd43a38..4e0a38d6 100644 --- a/classes/classe_custom.lua +++ b/classes/classe_custom.lua @@ -1,137 +1,1353 @@ -local _detalhes = _G._detalhes -local AceLocale = LibStub ("AceLocale-3.0") -local Loc = AceLocale:GetLocale ( "Details" ) +--> customized display script ---lua locals -local _cstr = string.format -local _math_floor = math.floor -local _table_sort = table.sort -local _table_insert = table.insert -local _table_size = table.getn -local _setmetatable = setmetatable -local _ipairs = ipairs -local _pairs = pairs -local _rawget= rawget -local _math_min = math.min -local _math_max = math.max -local _bit_band = bit.band -local _unpack = unpack -local _type = type - ---api locals -local _GetSpellInfo = _detalhes.getspellinfo -local _IsInRaid = IsInRaid -local _IsInGroup = IsInGroup -local _GetNumGroupMembers = GetNumGroupMembers -local _GetNumPartyMembers = GetNumPartyMembers or GetNumSubgroupMembers -local _GetNumRaidMembers = GetNumRaidMembers or GetNumGroupMembers -local _GetUnitName = GetUnitName - -local gump = _detalhes.gump -local _ - -local atributo_custom = _detalhes.atributo_custom - -function atributo_custom:RefreshWindow (instancia, _combat, forcar, exportar) - - --> partir do principio que: - -- sempre vai ter um SPELLID - -- não vai ter target ou input output - --> instancia.sub_atributo armazena o index da tabela de custons + local _detalhes = _G._detalhes + local gump = _detalhes.gump + local _ - local CustomObject = _detalhes.custom [instancia.sub_atributo] +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> local pointers - _combat.totals [CustomObject.name] = 0 - instancia.customName = CustomObject.name + local _cstr = string.format --lua local + local _math_floor = math.floor --lua local + local _table_sort = table.sort --lua local + local _table_insert = table.insert --lua local + local _table_size = table.getn --lua local + local _setmetatable = setmetatable --lua local + local _ipairs = ipairs --lua local + local _pairs = pairs --lua local + local _rawget= rawget --lua local + local _math_min = math.min --lua local + local _math_max = math.max --lua local + local _bit_band = bit.band --lua local + local _unpack = unpack --lua local + local _type = type --lua local - --print (CustomObject) - --print (CustomObject.source) - --print ("source: " .. CustomObject.source) + local _GetSpellInfo = _detalhes.getspellinfo -- api local + local _IsInRaid = IsInRaid -- api local + local _IsInGroup = IsInGroup -- api local + local _GetNumGroupMembers = GetNumGroupMembers -- api local + local _GetNumPartyMembers = GetNumPartyMembers or GetNumSubgroupMembers -- api local + local _GetNumRaidMembers = GetNumRaidMembers or GetNumGroupMembers -- api local + local _GetUnitName = GetUnitName -- api local + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> constants + + local atributo_custom = _detalhes.atributo_custom + atributo_custom.mt = {__index = atributo_custom} - if (not CustomObject.source) then - print ("Sem Source") - return - elseif (CustomObject.source == "") then - print ("Source esta em branco") - return + local combat_containers = { + ["damagedone"] = 1, + ["healdone"] = 2, + } + + --> hold the mini custom objects + atributo_custom._InstanceActorContainer = {} + atributo_custom._InstanceLastCustomShown = {} + atributo_custom._InstanceLastCombatShown = {} + atributo_custom._TargetActorsProcessed = {} + + local ToKFunctions = _detalhes.ToKFunctions + local SelectedToKFunction = ToKFunctions [1] + local UsingCustomRightText = false + local FormatTooltipNumber = ToKFunctions [8] + local TooltipMaximizedMethod = 1 + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> core + +function atributo_custom:GetCombatContainerIndex (attribute) + return combat_containers [attribute] +end + +function atributo_custom:RefreshWindow (instance, combat, force, export) + + --> get the custom object + local custom_object = instance:GetCustomObject() + + if (not custom_object) then + return instance:ResetAttribute() end - - --print ("atributo " .. CustomObject.attribute) - - if (CustomObject.source == "[raid]") then - if (_IsInRaid()) then - for i = 1, _GetNumGroupMembers(), 1 do - local nome = _GetUnitName ("raid"..i, true):gsub (("%s+"), "") - local Actor = _combat (CustomObject.attribute, nome) - if (Actor) then - Actor:Custom (CustomObject.name, _combat, CustomObject.sattribute, CustomObject.spell, CustomObject.target) - end - end - elseif (_IsInGroup()) then - for i = 1, _GetNumGroupMembers()-1, 1 do - local nome = _GetUnitName ("party"..i, true):gsub (("%s+"), "") - local Actor = _combat (CustomObject.attribute, nome) - if (Actor) then - Actor:Custom (CustomObject.name, _combat, CustomObject.sattribute, CustomObject.spell, CustomObject.target) - end - end - local Actor = _combat (CustomObject.attribute, _detalhes.playername) - if (Actor) then - Actor:Custom (CustomObject.name, _combat, CustomObject.sattribute, CustomObject.spell, CustomObject.target) - end - else - local Actor = _combat (CustomObject.attribute, _detalhes.playername) - if (Actor) then - Actor:Custom (CustomObject.name, _combat, CustomObject.sattribute, CustomObject.spell, CustomObject.target) - end - end - elseif (CustomObject.source == "[all]") then - for _, Actor in _ipairs (_combat [CustomObject.attribute]._ActorTable) do - Actor:Custom (CustomObject.name, _combat, CustomObject.sattribute, CustomObject.spell, CustomObject.target) - end + --> save the custom name in the instance + instance.customName = custom_object:GetName() - elseif (CustomObject.source == "[player]") then - local Actor = _combat (CustomObject.attribute, _detalhes.playername) - if (Actor) then - Actor:Custom (CustomObject.name, _combat, CustomObject.sattribute, CustomObject.spell, CustomObject.target) + --> get the container holding the custom actor objects for this instance + local instance_container = atributo_custom:GetInstanceCustomActorContainer (instance) + + local last_shown = atributo_custom._InstanceLastCustomShown [instance:GetId()] + if (last_shown and last_shown ~= custom_object:GetName()) then + instance_container:WipeCustomActorContainer() + end + atributo_custom._InstanceLastCustomShown [instance:GetId()] = custom_object:GetName() + + local last_combat_shown = atributo_custom._InstanceLastCombatShown [instance:GetId()] + if (last_combat_shown and last_combat_shown ~= combat) then + instance_container:WipeCustomActorContainer() + end + atributo_custom._InstanceLastCombatShown [instance:GetId()] = combat + + --> declare the main locals + local total = 0 + local top = 0 + local amount = 0 + + --> check if is a custom script + if (custom_object:IsScripted()) then + + --> be save reseting the values on every refresh + instance_container:ResetCustomActorContainer() + + --> todo: cache custom scripts + local func = loadstring (custom_object.script) + + if (not func) then + print ("error building the function.", func) end + --> call the loop function + total, top, amount = func (combat, instance_container, instance) + else - local _thisActor = _combat (CustomObject.attribute, CustomObject.source) - if (_thisActor) then - _thisActor:Custom (CustomObject.name, _combat, CustomObject.sattribute, CustomObject.spell, CustomObject.target) + --> get the attribute + local attribute = custom_object:GetAttribute() + + --> get the custom function (actor, source, target, spellid) + local func = atributo_custom [attribute] + + --> get the combat container + local container_index = self:GetCombatContainerIndex (attribute) + local combat_container = combat [container_index]._ActorTable + + --> build container + total, top, amount = atributo_custom:BuildActorList (func, custom_object.source, custom_object.target, custom_object.spellid, combat, combat_container, container_index, instance_container, instance, custom_object) + + end + + if (custom_object:IsSpellTarget()) then + amount = atributo_custom._TargetActorsProcessedAmt + total = atributo_custom._TargetActorsProcessedTotal + top = atributo_custom._TargetActorsProcessedTop + end + + if (amount == 0) then + if (force) then + if (instance:IsGroupMode()) then + for i = 1, instance.rows_fit_in_window do + gump:Fade (instance.barras [i], "in", 0.3) + end + end end + instance:EsconderScrollBar() + return _detalhes:EndRefresh (instance, total, combat, combat [container_index]) end - --> agora result tem os atores que usaram a habilidade - if (CustomObject.attribute == 1) then - return _detalhes.atributo_damage:RefreshWindow (instancia, _combat, forcar, exportar) - elseif (CustomObject.attribute == 2) then - return _detalhes.atributo_heal:RefreshWindow (instancia, _combat, forcar, exportar) + combat.totals [custom_object:GetName()] = total + + instance_container:Sort() + instance_container:Remap() + + if (export) then + return total, instance_container._ActorTable, top, amount end - --> aqui precisa fazer algo para retornar algo pro report reconhecer a tabela + instance:AtualizarScrollBar (amount) + + atributo_custom:Refresh (instance, instance_container, combat, force, total, top) + + return _detalhes:EndRefresh (instance, total, combat, combat [container_index]) end - - - - - - - - - - - - - - - - - +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> refresh functions + + function atributo_custom:Refresh (instance, instance_container, combat, force, total, top) + + local qual_barra = 1 + local barras_container = instance.barras + local percentage_type = instance.row_info.percent_type + + local combat_time = combat:GetCombatTime() + UsingCustomRightText = instance.row_info.textR_enable_custom_text + + --> total bar + local use_total_bar = false + if (instance.total_bar.enabled) then + use_total_bar = true + if (instance.total_bar.only_in_group and (not _IsInGroup() and not _IsInRaid())) then + use_total_bar = false + end + end + + if (instance.bars_sort_direction == 1) then --top to bottom + + if (use_total_bar and instance.barraS[1] == 1) then + + qual_barra = 2 + local iter_last = instance.barraS[2] + if (iter_last == instance.rows_fit_in_window) then + iter_last = iter_last - 1 + end + + local row1 = barras_container [1] + row1.minha_tabela = nil + row1.texto_esquerdo:SetText (Loc ["STRING_TOTAL"]) + row1.texto_direita:SetText (_detalhes:ToK2 (total) .. " (" .. _detalhes:ToK (total / combat_time) .. ")") + + row1.statusbar:SetValue (100) + local r, b, g = unpack (instance.total_bar.color) + row1.textura:SetVertexColor (r, b, g) + + row1.icone_classe:SetTexture (instance.total_bar.icon) + row1.icone_classe:SetTexCoord (0.0625, 0.9375, 0.0625, 0.9375) + + gump:Fade (row1, "out") + + for i = instance.barraS[1], iter_last, 1 do + instance_container._ActorTable[i]:UpdateBar (barras_container, qual_barra, percentage_type, i, total, top, instance, force) + qual_barra = qual_barra+1 + end + + else + for i = instance.barraS[1], instance.barraS[2], 1 do + instance_container._ActorTable[i]:UpdateBar (barras_container, qual_barra, percentage_type, i, total, top, instance, force) + qual_barra = qual_barra+1 + end + end + + elseif (instance.bars_sort_direction == 2) then --bottom to top + + if (use_total_bar and instance.barraS[1] == 1) then + + qual_barra = 2 + local iter_last = instance.barraS[2] + if (iter_last == instance.rows_fit_in_window) then + iter_last = iter_last - 1 + end + + local row1 = barras_container [1] + row1.minha_tabela = nil + row1.texto_esquerdo:SetText (Loc ["STRING_TOTAL"]) + row1.texto_direita:SetText (_detalhes:ToK2 (total) .. " (" .. _detalhes:ToK (total / combat_time) .. ")") + + row1.statusbar:SetValue (100) + local r, b, g = unpack (instance.total_bar.color) + row1.textura:SetVertexColor (r, b, g) + + row1.icone_classe:SetTexture (instance.total_bar.icon) + row1.icone_classe:SetTexCoord (0.0625, 0.9375, 0.0625, 0.9375) + + gump:Fade (row1, "out") + + for i = iter_last, instance.barraS[1], -1 do --> vai atualizar só o range que esta sendo mostrado + instance_container._ActorTable[i]:UpdateBar (barras_container, qual_barra, percentage_type, i, total, top, instance, force) + qual_barra = qual_barra+1 + end + + else + for i = instance.barraS[2], instance.barraS[1], -1 do --> vai atualizar só o range que esta sendo mostrado + instance_container._ActorTable[i]:UpdateBar (barras_container, qual_barra, percentage_type, i, total, top, instance, force) + qual_barra = qual_barra+1 + end + end + + end + + if (force) then + if (instance:IsGroupMode()) then + for i = qual_barra, instance.rows_fit_in_window do + gump:Fade (instance.barras [i], "in", 0.3) + end + end + end + end + + function atributo_custom:BuildActorList (func, source, target, spellid, combat, combat_container, container_index, instance_container, instance, custom_object) + + --> do the loop + + local total = 0 + local top = 0 + local amount = 0 + + --> check if is a spell target custom + if (custom_object:IsSpellTarget()) then + table.wipe (atributo_custom._TargetActorsProcessed) + atributo_custom._TargetActorsProcessedAmt = 0 + atributo_custom._TargetActorsProcessedTotal = 0 + atributo_custom._TargetActorsProcessedTop = 0 + + instance_container:ResetCustomActorContainer() + end + + if (source == "[all]") then + + for _, actor in _ipairs (combat_container) do + local actortotal = func (_, actor, source, target, spellid, combat, instance_container) + if (actortotal > 0) then + total = total + actortotal + amount = amount + 1 + + if (actortotal > top) then + top = actortotal + end + + instance_container:SetValue (actor, actortotal) + end + end + + elseif (source == "[raid]") then + + if (_detalhes.in_combat and instance.segmento == 0 and not export) then + if (container_index == 1) then + combat_container = _detalhes.cache_damage_group + elseif (container_index == 2) then + combat_container = _detalhes.cache_healing_group + end + end + + for _, actor in _ipairs (combat_container) do + if (actor.grupo) then + local actortotal = func (_, actor, source, target, spellid, combat, instance_container) + + if (actortotal > 0) then + total = total + actortotal + amount = amount + 1 + + if (actortotal > top) then + top = actortotal + end + + instance_container:SetValue (actor, actortotal) + end + end + end + + elseif (source == "[player]") then + local pindex = combat [container_index]._NameIndexTable [_detalhes.playername] + if (pindex) then + local actor = combat [container_index]._ActorTable [pindex] + local actortotal = func (_, actor, source, target, spellid, combat, instance_container) + + if (actortotal > 0) then + total = total + actortotal + amount = amount + 1 + + if (actortotal > top) then + top = actortotal + end + + instance_container:SetValue (actor, actortotal) + end + end + else + + local pindex = combat [container_index]._NameIndexTable [source] + if (pindex) then + local actor = combat [container_index]._ActorTable [pindex] + local actortotal = func (_, actor, source, target, spellid, combat, instance_container) + + if (actortotal > 0) then + total = total + actortotal + amount = amount + 1 + + if (actortotal > top) then + top = actortotal + end + + instance_container:SetValue (actor, actortotal) + end + end + end + + return total, top, amount + end + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> attributes functions + + --> damage done + function atributo_custom:damagedoneTooltip (actor, target, spellid, combat, instance) + + if (spellid) then + + if (instance:GetCustomObject():IsSpellTarget()) then + local targetname = actor.nome + local this_actor = combat (1, targetname) + + if (this_actor) then + for name, _ in _pairs (this_actor.damage_from) do + local aggressor = combat (1, name) + if (aggressor) then + local spell = aggressor.spell_tables._ActorTable [spellid] + if (spell) then + local on_me = spell.targets._NameIndexTable [targetname] + if (on_me) then + on_me = spell.targets._ActorTable [on_me] + GameCooltip:AddLine (aggressor.nome, FormatTooltipNumber (_, on_me.total)) + end + end + end + end + end + + return + else + local name, _, icon = _GetSpellInfo (spellid) + GameCooltip:AddLine (name) + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + + GameCooltip:AddLine ("Damage: ", spell.total) --> localize-me + GameCooltip:AddLine ("Hits: ", spell.counter) --> localize-me + GameCooltip:AddLine ("Critical Hits: ", spell.c_amt) --> localize-me + end + + elseif (target) then + + if (target == "[all]") then + actor.targets:SortByKey ("total") + for _, target_object in _ipairs (actor.targets._ActorTable) do + GameCooltip:AddLine (target_object.nome, FormatTooltipNumber (_, target_object.total)) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon ([[Interface\FriendsFrame\StatusIcon-Offline]], 1, 1, 14, 14) + end + + elseif (target == "[raid]") then + local roster = combat.raid_roster + actor.targets:SortByKey ("total") + for _, target_object in _ipairs (actor.targets._ActorTable) do + if (roster [target_object.nome]) then + GameCooltip:AddLine (target_object.nome, FormatTooltipNumber (_, target_object.total)) + end + end + + elseif (target == "[player]") then + local targetactor = actor.targets._NameIndexTable [_detalhes.playername] + if (targetactor) then + targetactor = actor.targets._ActorTable [targetactor] + GameCooltip:AddLine (targetactor.nome, FormatTooltipNumber (_, targetactor.total)) + end + else + local targetactor = actor.targets._NameIndexTable [target] + if (targetactor) then + targetactor = actor.targets._ActorTable [targetactor] + GameCooltip:AddLine (target, FormatTooltipNumber (_, targetactor.total)) + end + end + + else + actor:ToolTip_DamageDone (instance) + end + end + + function atributo_custom:damagedone (actor, source, target, spellid, combat, instance_container) + + if (spellid) then --> spell is always damage done + local spell = actor.spell_tables._ActorTable [spellid] + if (spell) then + if (target) then + if (target == "[all]") then + for _, targetactor in _ipairs (spell.targets._ActorTable) do + --> add amount + instance_container:AddValue (targetactor, targetactor.total, true) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then + atributo_custom._TargetActorsProcessed [targetactor.nome] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + + elseif (target == "[raid]") then + local roster = combat.raid_roster + for _, targetactor in _ipairs (spell.targets._ActorTable) do + if (roster [targetactor.nome]) then + --> add amount + instance_container:AddValue (targetactor, targetactor.total) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then + atributo_custom._TargetActorsProcessed [targetactor.nome] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + end + return 0, true + + elseif (target == "[player]") then + local targetactor = spell.targets._NameIndexTable [_detalhes.playername] + if (targetactor) then + targetactor = spell.targets._ActorTable [targetactor] + --> add amount + instance_container:AddValue (targetactor, targetactor.total) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then + atributo_custom._TargetActorsProcessed [targetactor.nome] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + + else + local targetactor = actor.targets._NameIndexTable [target] + if (targetactor) then + targetactor = spell.targets._ActorTable [targetactor] + --> add amount + instance_container:AddValue (targetactor, targetactor.total) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then + atributo_custom._TargetActorsProcessed [targetactor.nome] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + end + else + return spell.total + end + else + return 0 + end + + elseif (target) then + + if (target == "[all]") then + return actor.targets:GetTotal() + + elseif (target == "[raid]") then + return actor.targets:GetTotalOnRaid (nil, combat) + + elseif (target == "[player]") then + local targetactor = actor.targets._NameIndexTable [_detalhes.playername] + if (targetactor) then + return actor.targets._ActorTable [targetactor].total + else + return 0 + end + + else + local targetactor = actor.targets._NameIndexTable [target] + if (targetactor) then + return actor.targets._ActorTable [targetactor].total + else + return 0 + end + end + else + return actor.total or 0 + + end + + end + + --> healing done + + function atributo_custom:healdoneTooltip (actor, target, spellid, combat, instance) + + if (spellid) then + + if (instance:GetCustomObject():IsSpellTarget()) then + local targetname = actor.nome + local this_actor = combat (2, targetname) + + if (this_actor) then + for name, _ in _pairs (this_actor.healing_from) do + local healer = combat (2, name) + if (healer) then + local spell = healer.spell_tables._ActorTable [spellid] + if (spell) then + local on_me = spell.targets._NameIndexTable [targetname] + if (on_me) then + on_me = spell.targets._ActorTable [on_me] + GameCooltip:AddLine (healer.nome, FormatTooltipNumber (_, on_me.total)) + end + end + end + end + end + + return + else + local name, _, icon = _GetSpellInfo (spellid) + GameCooltip:AddLine (name) + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + + GameCooltip:AddLine ("Healing: ", spell.total) --> localize-me + GameCooltip:AddLine ("Hits: ", spell.counter) --> localize-me + GameCooltip:AddLine ("Critical Hits: ", spell.c_amt) --> localize-me + end + + elseif (target) then + + if (target == "[all]") then + actor.targets:SortByKey ("total") + for _, target_object in _ipairs (actor.targets._ActorTable) do + GameCooltip:AddLine (target_object.nome, FormatTooltipNumber (_, target_object.total)) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon ([[Interface\FriendsFrame\StatusIcon-Offline]], 1, 1, 14, 14) + end + + elseif (target == "[raid]") then + local roster = combat.raid_roster + actor.targets:SortByKey ("total") + for _, target_object in _ipairs (actor.targets._ActorTable) do + if (roster [target_object.nome]) then + GameCooltip:AddLine (target_object.nome, FormatTooltipNumber (_, target_object.total)) + end + end + + elseif (target == "[player]") then + local targetactor = actor.targets._NameIndexTable [_detalhes.playername] + if (targetactor) then + targetactor = actor.targets._ActorTable [targetactor] + GameCooltip:AddLine (targetactor.nome, FormatTooltipNumber (_, targetactor.total)) + end + else + local targetactor = actor.targets._NameIndexTable [target] + if (targetactor) then + targetactor = actor.targets._ActorTable [targetactor] + GameCooltip:AddLine (target, FormatTooltipNumber (_, targetactor.total)) + end + end + + else + actor:ToolTip_DamageDone (instance) + end + end + + function atributo_custom:healdone (actor, source, target, spellid, combat, instance_container) + + if (spellid) then --> spell is always healing done + local spell = actor.spell_tables._ActorTable [spellid] + local melee = actor.spell_tables._ActorTable [1] + if (spell) then + if (target) then + if (target == "[all]") then + for _, targetactor in _ipairs (spell.targets._ActorTable) do + --> add amount + instance_container:AddValue (targetactor, targetactor.total, true) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then + atributo_custom._TargetActorsProcessed [targetactor.nome] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + + elseif (target == "[raid]") then + local roster = combat.raid_roster + for _, targetactor in _ipairs (spell.targets._ActorTable) do + if (roster [targetactor.nome]) then + --> add amount + instance_container:AddValue (targetactor, targetactor.total) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then + atributo_custom._TargetActorsProcessed [targetactor.nome] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + end + return 0, true + + elseif (target == "[player]") then + local targetactor = spell.targets._NameIndexTable [_detalhes.playername] + if (targetactor) then + targetactor = spell.targets._ActorTable [targetactor] + --> add amount + instance_container:AddValue (targetactor, targetactor.total) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then + atributo_custom._TargetActorsProcessed [targetactor.nome] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + + else + local targetactor = actor.targets._NameIndexTable [target] + if (targetactor) then + targetactor = spell.targets._ActorTable [targetactor] + --> add amount + instance_container:AddValue (targetactor, targetactor.total) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then + atributo_custom._TargetActorsProcessed [targetactor.nome] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + end + else + return spell.total + end + else + return 0 + end + + elseif (target) then + + if (target == "[all]") then + return actor.targets:GetTotal() + + elseif (target == "[raid]") then + return actor.targets:GetTotalOnRaid (nil, combat) + + elseif (target == "[player]") then + local targetactor = actor.targets._NameIndexTable [_detalhes.playername] + if (targetactor) then + return actor.targets._ActorTable [targetactor].total + else + return 0 + end + + else + local targetactor = actor.targets._NameIndexTable [target] + if (targetactor) then + return actor.targets._ActorTable [targetactor].total + else + return 0 + end + end + else + return actor.total or 0 + + end + + end + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> custom object functions + + local actor_class_color_r, actor_class_color_g, actor_class_color_b + + function atributo_custom:UpdateBar (row_container, index, percentage_type, rank, total, top, instance, is_forced) + + local row = row_container [index] + + local previous_table = row.minha_tabela + row.colocacao = rank + row.minha_tabela = self + self.minha_barra = row + + local percent + + if (percentage_type == 1) then + percent = _cstr ("%.1f", self.value / total * 100) + elseif (percentage_type == 2) then + percent = _cstr ("%.1f", self.value / top * 100) + end + + local formated_value = SelectedToKFunction (_, self.value) + + if (UsingCustomRightText) then + row.texto_direita:SetText (instance.row_info.textR_custom_text:ReplaceData (formated_value, "", percent, self)) + else + row.texto_direita:SetText (formated_value .. " (" .. percent .. "%)") + end + + local row_value = _math_floor ((self.value / top) * 100) + + --tooltip function-- + + actor_class_color_r, actor_class_color_g, actor_class_color_b = self:GetBarColor() + + self:RefreshBarra2 (row, instance, previous_table, is_forced, row_value, index, row_container) + + end + + function atributo_custom:RefreshBarra2 (esta_barra, instancia, tabela_anterior, forcar, esta_porcentagem, qual_barra, barras_container) + + --> primeiro colocado + if (esta_barra.colocacao == 1) then + if (not tabela_anterior or tabela_anterior ~= esta_barra.minha_tabela or forcar) then + esta_barra.statusbar:SetValue (100) + + if (esta_barra.hidden or esta_barra.fading_in or esta_barra.faded) then + gump:Fade (esta_barra, "out") + end + + return self:RefreshBarra (esta_barra, instancia) + else + return + end + else + + if (esta_barra.hidden or esta_barra.fading_in or esta_barra.faded) then + + esta_barra.statusbar:SetValue (esta_porcentagem) + gump:Fade (esta_barra, "out") + + if (instancia.row_info.texture_class_colors) then + esta_barra.textura:SetVertexColor (actor_class_color_r, actor_class_color_g, actor_class_color_b) + end + if (instancia.row_info.texture_background_class_color) then + esta_barra.background:SetVertexColor (actor_class_color_r, actor_class_color_g, actor_class_color_b) + end + + return self:RefreshBarra (esta_barra, instancia) + + else + --> agora esta comparando se a tabela da barra é diferente da tabela na atualização anterior + if (not tabela_anterior or tabela_anterior ~= esta_barra.minha_tabela or forcar) then --> aqui diz se a barra do jogador mudou de posição ou se ela apenas será atualizada + + esta_barra.statusbar:SetValue (esta_porcentagem) + + esta_barra.last_value = esta_porcentagem --> reseta o ultimo valor da barra + + if (_detalhes.is_using_row_animations and forcar) then + esta_barra.tem_animacao = 0 + esta_barra:SetScript ("OnUpdate", nil) + end + + return self:RefreshBarra (esta_barra, instancia) + + elseif (esta_porcentagem ~= esta_barra.last_value) then --> continua mostrando a mesma tabela então compara a porcentagem + --> apenas atualizar + if (_detalhes.is_using_row_animations) then + + local upRow = barras_container [qual_barra-1] + if (upRow) then + if (upRow.statusbar:GetValue() < esta_barra.statusbar:GetValue()) then + esta_barra.statusbar:SetValue (esta_porcentagem) + else + instancia:AnimarBarra (esta_barra, esta_porcentagem) + end + else + instancia:AnimarBarra (esta_barra, esta_porcentagem) + end + else + esta_barra.statusbar:SetValue (esta_porcentagem) + end + esta_barra.last_value = esta_porcentagem + end + end + + end + + end + + function atributo_custom:RefreshBarra (esta_barra, instancia, from_resize) + + if (from_resize) then + actor_class_color_r, actor_class_color_g, actor_class_color_b = self:GetBarColor() + end + + if (instancia.row_info.texture_class_colors) then + esta_barra.textura:SetVertexColor (actor_class_color_r, actor_class_color_g, actor_class_color_b) + end + if (instancia.row_info.texture_background_class_color) then + esta_barra.background:SetVertexColor (actor_class_color_r, actor_class_color_g, actor_class_color_b) + end + + if (self.classe == "UNKNOW") then + esta_barra.icone_classe:SetTexture ("Interface\\LFGFRAME\\LFGROLE_BW") + esta_barra.icone_classe:SetTexCoord (.25, .5, 0, 1) + esta_barra.icone_classe:SetVertexColor (1, 1, 1) + + elseif (self.classe == "UNGROUPPLAYER") then + if (self.enemy) then + if (_detalhes.faction_against == "Horde") then + esta_barra.icone_classe:SetTexture ("Interface\\ICONS\\Achievement_Character_Orc_Male") + esta_barra.icone_classe:SetTexCoord (0, 1, 0, 1) + else + esta_barra.icone_classe:SetTexture ("Interface\\ICONS\\Achievement_Character_Human_Male") + esta_barra.icone_classe:SetTexCoord (0, 1, 0, 1) + end + else + if (_detalhes.faction_against == "Horde") then + esta_barra.icone_classe:SetTexture ("Interface\\ICONS\\Achievement_Character_Human_Male") + esta_barra.icone_classe:SetTexCoord (0, 1, 0, 1) + else + esta_barra.icone_classe:SetTexture ("Interface\\ICONS\\Achievement_Character_Orc_Male") + esta_barra.icone_classe:SetTexCoord (0, 1, 0, 1) + end + end + esta_barra.icone_classe:SetVertexColor (1, 1, 1) + + elseif (self.classe == "PET") then + esta_barra.icone_classe:SetTexture (instancia.row_info.icon_file) + esta_barra.icone_classe:SetTexCoord (0.25, 0.49609375, 0.75, 1) + esta_barra.icone_classe:SetVertexColor (actor_class_color_r, actor_class_color_g, actor_class_color_b) + + else + esta_barra.icone_classe:SetTexture (instancia.row_info.icon_file) + esta_barra.icone_classe:SetTexCoord (_unpack (CLASS_ICON_TCOORDS [self.classe])) --very slow method + esta_barra.icone_classe:SetVertexColor (1, 1, 1) + end + + if (self.enemy) then + if (self.arena_enemy) then + esta_barra.texto_esquerdo:SetText (esta_barra.colocacao .. ".|TInterface\\LFGFRAME\\UI-LFG-ICON-ROLES:" .. instancia.row_info.height .. ":" .. instancia.row_info.height .. ":0:0:256:256:" .. _detalhes.role_texcoord [self.role or "NONE"] .. "|t" .. self.displayName) + esta_barra.textura:SetVertexColor (actor_class_color_r, actor_class_color_g, actor_class_color_b) + else + if (_detalhes.faction_against == "Horde") then + esta_barra.texto_esquerdo:SetText (esta_barra.colocacao..". |TInterface\\AddOns\\Details\\images\\icones_barra:"..instancia.row_info.height..":"..instancia.row_info.height..":0:0:256:32:0:32:0:32|t"..self.displayName) --seta o texto da esqueda -- HORDA + else + esta_barra.texto_esquerdo:SetText (esta_barra.colocacao..". |TInterface\\AddOns\\Details\\images\\icones_barra:"..instancia.row_info.height..":"..instancia.row_info.height..":0:0:256:32:32:64:0:32|t"..self.displayName) --seta o texto da esqueda -- ALLY + end + + if (instancia.row_info.texture_class_colors) then + esta_barra.textura:SetVertexColor (0.94117, 0, 0.01960, 1) + end + end + else + if (self.arena_ally) then + esta_barra.texto_esquerdo:SetText (esta_barra.colocacao .. ".|TInterface\\LFGFRAME\\UI-LFG-ICON-ROLES:" .. instancia.row_info.height .. ":" .. instancia.row_info.height .. ":0:0:256:256:" .. _detalhes.role_texcoord [self.role or "NONE"] .. "|t" .. self.displayName) + else + esta_barra.texto_esquerdo:SetText (esta_barra.colocacao..". "..self.displayName) --seta o texto da esqueda + end + end + + if (instancia.row_info.textL_class_colors) then + esta_barra.texto_esquerdo:SetTextColor (actor_class_color_r, actor_class_color_g, actor_class_color_b) + end + if (instancia.row_info.textR_class_colors) then + esta_barra.texto_direita:SetTextColor (actor_class_color_r, actor_class_color_g, actor_class_color_b) + end + + esta_barra.texto_esquerdo:SetSize (esta_barra:GetWidth() - esta_barra.texto_direita:GetStringWidth() - 20, 15) + + end + + function atributo_custom:CreateCustomActorContainer() + return _setmetatable ({ + _NameIndexTable = {}, + _ActorTable = {} + }, {__index = atributo_custom}) + end + + function atributo_custom:ResetCustomActorContainer() + for _, actor in _ipairs (self._ActorTable) do + actor.value = 0 + end + end + + function atributo_custom:WipeCustomActorContainer() + table.wipe (self._ActorTable) + table.wipe (self._NameIndexTable) + end + + function atributo_custom:AddValue (actor, actortotal, checktop) + local actor_table = self:GetActorTable (actor) + actor_table.my_actor = actor + actor_table.value = actor_table.value + actortotal + + if (checktop) then + if (actor_table.value > atributo_custom._TargetActorsProcessedTop) then + atributo_custom._TargetActorsProcessedTop = actor_table.value + end + end + end + + function atributo_custom:SetValue (actor, actortotal) + local actor_table = self:GetActorTable (actor) + actor_table.my_actor = actor + actor_table.value = actortotal + end + + function atributo_custom:UpdateClass (actors) + actors.new_actor.classe = actors.actor.classe + end + + function atributo_custom:GetActorTable (actor) + local index = self._NameIndexTable [actor.nome] + if (index) then + return self._ActorTable [index] + else + local new_actor = _setmetatable ({ + nome = actor.nome, + classe = actor.classe, + value = 0, + }, atributo_custom.mt) + + new_actor.displayName = new_actor.nome + + if (not new_actor.classe) then + new_actor.classe = _detalhes:GetClass (actor.nome) or "UNKNOW" + end + if (new_actor.classe == "UNGROUPPLAYER") then + atributo_custom:ScheduleTimer ("UpdateClass", 5, {new_actor = new_actor, actor = actor}) + end + + index = #self._ActorTable+1 + + self._ActorTable [index] = new_actor + self._NameIndexTable [actor.nome] = index + return new_actor + end + end + + function atributo_custom:GetInstanceCustomActorContainer (instance) + if (not atributo_custom._InstanceActorContainer [instance:GetId()]) then + atributo_custom._InstanceActorContainer [instance:GetId()] = self:CreateCustomActorContainer() + end + return atributo_custom._InstanceActorContainer [instance:GetId()] + end + + function atributo_custom:CreateCustomDisplayObject() + return _setmetatable ({ + name = "new custom", + icon = [[Interface\ICONS\TEMP]], + author = "unknown", + attribute = "damagedone", + source = "[all]", + target = "[all]", + spellid = false, + script = false, + }, {__index = atributo_custom}) + end + + local custom_sort = function (t1, t2) + return t1.value > t2.value + end + function atributo_custom:Sort (container) + container = container or self + _table_sort (container._ActorTable, custom_sort) + end + + function atributo_custom:Remap() + local map = self._NameIndexTable + local actors = self._ActorTable + for i = 1, #actors do + map [actors[i].nome] = i + end + end + + function atributo_custom:ToolTip (instance, bar_number, row_object, keydown) + + --> get the custom object + local custom_object = instance:GetCustomObject() + + --> get the actor + local actor = self.my_actor + + local r, g, b = actor:GetClassColor() + + _detalhes:AddTooltipSpellHeaderText (custom_object:GetName(), "yellow", 1, 0, 0, 0) + GameCooltip:AddIcon (custom_object:GetIcon(), 1, 1, 14, 14, 0.90625, 0.109375, 0.15625, 0.875) + GameCooltip:AddStatusBar (100, 1, r, g, b, 1) + + if (custom_object:IsScripted()) then + if (custom_object.tooltip) then + local func = loadstring (custom_object.tooltip) + func (actor, instance.showing, instance) + end + else + --> get the attribute + local attribute = custom_object:GetAttribute() + local container_index = atributo_custom:GetCombatContainerIndex (attribute) + + --> get the tooltip function + local func = atributo_custom [attribute .. "Tooltip"] + + --> build the tooltip + func (_, actor, custom_object.target, custom_object.spellid, instance.showing, instance) + end + + return true + end + + function atributo_custom:GetName() + return self.name + end + function atributo_custom:GetIcon() + return self.icon + end + function atributo_custom:GetAuthor() + return self.author + end + function atributo_custom:GetDesc() + return self.desc + end + function atributo_custom:GetAttribute() + return self.attribute + end + function atributo_custom:GetSource() + return self.source + end + function atributo_custom:GetTarget() + return self.target + end + function atributo_custom:GetSpellId() + return self.spellid + end + function atributo_custom:GetScript() + return self.script + end + function atributo_custom:GetScriptToolip() + return self.tooltip + end + + function atributo_custom:SetName (name) + self.name = name + end + function atributo_custom:SetIcon (path) + self.icon = path + end + function atributo_custom:SetAuthor (author) + self.author = author + end + function atributo_custom:SetDesc (desc) + self.desc = desc + end + function atributo_custom:SetAttribute (newattribute) + self.attribute = newattribute + end + function atributo_custom:SetSource (source) + self.source = source + end + function atributo_custom:SetTarget (target) + self.target = target + end + function atributo_custom:SetSpellId (spellid) + self.spellid = spellid + end + function atributo_custom:SetScript (code) + self.script = code + end + function atributo_custom:SetScriptToolip (code) + self.tooltip = code + end + + function atributo_custom:IsScripted() + return self.script and true or false + end + + function atributo_custom:IsSpellTarget() + return self.spellid and self.target and true + end + + function _detalhes.refresh:r_atributo_custom() + for _, custom_object in _ipairs (_detalhes.custom) do + _setmetatable (custom_object, atributo_custom) + custom_object.__index = atributo_custom + end + end + + function _detalhes.clear:c_atributo_custom() + for _, custom_object in _ipairs (_detalhes.custom) do + custom_object.__index = nil + end + end + + function atributo_custom:UpdateSelectedToKFunction() + SelectedToKFunction = ToKFunctions [_detalhes.ps_abbreviation] + FormatTooltipNumber = ToKFunctions [_detalhes.tooltip.abbreviation] + TooltipMaximizedMethod = _detalhes.tooltip.maximize_method + end + + + function _detalhes:AddDefaultCustomDisplays() + + local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) + + local PotionUsed = { + name = Loc ["STRING_CUSTOM_POT_DEFAULT"], + icon = [[Interface\ICONS\Trade_Alchemy_PotionD4]], + attribute = false, + spellid = false, + author = "Details!", + desc = Loc ["STRING_CUSTOM_POT_DEFAULT_DESC"], + source = false, + target = false, + script = [[ + --init: + local combat, instance_container, instance = ... + local total, top, amount = 0, 0, 0 + + --get the misc actor container + local misc_container = combat:GetActorList ( DETAILS_ATTRIBUTE_MISC ) + + --do the loop: + for _, player in ipairs ( misc_container ) do + + --only player in group + if (player:IsGroupPlayer()) then + + local found_potion = false + + --get the spell debuff uptime container + local debuff_uptime_container = player.debuff_uptime and player.debuff_uptime_spell_tables and player.debuff_uptime_spell_tables._ActorTable + if (debuff_uptime_container) then + --potion of focus (can't use as pre-potion, so, its amount is always 1 + local focus_potion = debuff_uptime_container [105701] + if (focus_potion) then + total = total + 1 + found_potion = true + if (top < 1) then + top = 1 + end + --add amount to the player + instance_container:AddValue (player, 1) + end + end + + --get the spell buff uptime container + local buff_uptime_container = player.buff_uptime and player.buff_uptime_spell_tables and player.buff_uptime_spell_tables._ActorTable + if (buff_uptime_container) then + + --potion of the jade serpent + local jade_serpent_potion = buff_uptime_container [105702] + if (jade_serpent_potion) then + local used = jade_serpent_potion.activedamt + if (used > 0) then + total = total + used + found_potion = true + if (used > top) then + top = used + end + --add amount to the player + instance_container:AddValue (player, used) + end + end + + --potion of mogu power + local mogu_power_potion = buff_uptime_container [105706] + if (mogu_power_potion) then + local used = mogu_power_potion.activedamt + if (used > 0) then + total = total + used + found_potion = true + if (used > top) then + top = used + end + --add amount to the player + instance_container:AddValue (player, used) + end + end + + --virmen's bite + local virmens_bite_potion = buff_uptime_container [105697] + if (virmens_bite_potion) then + local used = virmens_bite_potion.activedamt + if (used > 0) then + total = total + used + found_potion = true + if (used > top) then + top = used + end + --add amount to the player + instance_container:AddValue (player, used) + end + end + + --potion of the mountains + local mountains_potion = buff_uptime_container [105698] + if (mountains_potion) then + local used = mountains_potion.activedamt + if (used > 0) then + total = total + used + found_potion = true + if (used > top) then + top = used + end + --add amount to the player + instance_container:AddValue (player, used) + end + end + end + + if (found_potion) then + amount = amount + 1 + end + end + end + + --return: + return total, top, amount + ]], + tooltip = [[ + --init: + local player, combat, instance = ... + + --get the debuff container for potion of focus + local debuff_uptime_container = player.debuff_uptime and player.debuff_uptime_spell_tables and player.debuff_uptime_spell_tables._ActorTable + if (debuff_uptime_container) then + local focus_potion = debuff_uptime_container [105701] + if (focus_potion) then + local name, _, icon = GetSpellInfo (105701) + GameCooltip:AddLine (name, 1) --> can use only 1 focus potion (can't be pre-potion) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + end + + --get the buff container for all the others potions + local buff_uptime_container = player.buff_uptime and player.buff_uptime_spell_tables and player.buff_uptime_spell_tables._ActorTable + if (buff_uptime_container) then + --potion of the jade serpent + local jade_serpent_potion = buff_uptime_container [105702] + if (jade_serpent_potion) then + local name, _, icon = GetSpellInfo (105702) + GameCooltip:AddLine (name, jade_serpent_potion.activedamt) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + + --potion of mogu power + local mogu_power_potion = buff_uptime_container [105706] + if (mogu_power_potion) then + local name, _, icon = GetSpellInfo (105706) + GameCooltip:AddLine (name, mogu_power_potion.activedamt) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + + --virmen's bite + local virmens_bite_potion = buff_uptime_container [105697] + if (virmens_bite_potion) then + local name, _, icon = GetSpellInfo (105697) + GameCooltip:AddLine (name, virmens_bite_potion.activedamt) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + + --potion of the mountains + local mountains_potion = buff_uptime_container [105698] + if (mountains_potion) then + local name, _, icon = GetSpellInfo (105698) + GameCooltip:AddLine (name, mountains_potion.activedamt) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + end + ]] + } + + setmetatable (PotionUsed, _detalhes.atributo_custom) + PotionUsed.__index = _detalhes.atributo_custom + + self.custom [#self.custom+1] = PotionUsed + + local Healthstone = { + name = Loc ["STRING_CUSTOM_HEALTHSTONE_DEFAULT"], + icon = [[Interface\ICONS\warlock_ healthstone]], + attribute = "healdone", + spellid = 6262, + author = "Details!", + desc = Loc ["STRING_CUSTOM_HEALTHSTONE_DEFAULT_DESC"], + source = "[raid]", + target = "[raid]", + script = false, + tooltip = false + } + + setmetatable (Healthstone, _detalhes.atributo_custom) + Healthstone.__index = _detalhes.atributo_custom + + self.custom [#self.custom+1] = Healthstone + + + + end diff --git a/classes/classe_damage.lua b/classes/classe_damage.lua index aaa9f14f..5d315670 100644 --- a/classes/classe_damage.lua +++ b/classes/classe_damage.lua @@ -127,6 +127,10 @@ return amount end end + +--[[ exported]] function _detalhes:IsGroupPlayer() + return self.grupo + end --[[ exported]] function _detalhes:IsPlayer() if (self.flag_original) then @@ -210,7 +214,7 @@ return _unpack (_detalhes.class_colors.ARENA_ALLY) else - if (not is_player_class [actor.classe] and _bit_band (actor.flag_original, 0x00000020) ~= 0) then --> neutral + if (not is_player_class [actor.classe] and actor.flag_original and _bit_band (actor.flag_original, 0x00000020) ~= 0) then --> neutral return _unpack (_detalhes.class_colors.NEUTRAL) else return _unpack (_detalhes.class_colors [actor.classe]) diff --git a/classes/classe_energy.lua b/classes/classe_energy.lua index 09bd98ec..c634b3f1 100644 --- a/classes/classe_energy.lua +++ b/classes/classe_energy.lua @@ -269,7 +269,7 @@ function atributo_energy:RefreshWindow (instancia, tabela_do_combate, forcar, ex showing:remapear() if (exportar) then - return total, keyName, instancia.top + return total, keyName, instancia.top, amount end if (amount < 1) then --> não há barras para mostrar diff --git a/classes/classe_heal.lua b/classes/classe_heal.lua index d9c42390..ebc6f96a 100644 --- a/classes/classe_heal.lua +++ b/classes/classe_heal.lua @@ -359,7 +359,7 @@ function atributo_heal:RefreshWindow (instancia, tabela_do_combate, forcar, expo showing:remapear() if (exportar) then - return total, keyName, instancia.top + return total, keyName, instancia.top, amount end if (amount < 1) then --> não há barras para mostrar diff --git a/classes/classe_instancia.lua b/classes/classe_instancia.lua index 631cfed2..ffb2fc9e 100644 --- a/classes/classe_instancia.lua +++ b/classes/classe_instancia.lua @@ -158,6 +158,10 @@ function _detalhes:IsRaidMode() return self.modo == _detalhes._detalhes_props["MODO_RAID"] end +function _detalhes:IsGroupMode() + return self.modo == _detalhes._detalhes_props["MODO_GROUP"] +end + function _detalhes:IsNormalMode() if (self:GetInstanceId() == 2 or self:GetInstanceId() == 3) then return true @@ -166,6 +170,19 @@ function _detalhes:IsNormalMode() end end +function _detalhes:GetCustomObject() + return _detalhes.custom [self.sub_atributo] +end + +function _detalhes:ResetAttribute() + if (self.iniciada) then + self:TrocaTabela (nil, 1, 1, true) + else + self.atributo = 1 + self.sub_atributo = 1 + end +end + ------------------------------------------------------------------------------------------------------------------------ --> retorna se a instância esta ou não ativa @@ -1312,7 +1329,10 @@ function _detalhes:InstanceReset (instance) self:AtualizaSegmentos (self) self:AtualizaSoloMode_AfertReset() self:ResetaGump() - _detalhes:AtualizaGumpPrincipal (self, true) --atualiza todas as instancias + + if (not _detalhes.initializing) then + _detalhes:AtualizaGumpPrincipal (self, true) --atualiza todas as instancias + end end function _detalhes:RefreshBars (instance) @@ -1737,6 +1757,7 @@ function _detalhes:TrocaTabela (instancia, segmento, atributo, sub_atributo, ini instancia.sub_atributo = sub_atributo if (sub_attribute_click) then + --print ("aqui", instancia.sub_atributo) instancia.sub_atributo_last [instancia.atributo] = instancia.sub_atributo end @@ -1928,21 +1949,32 @@ function _detalhes:MontaAtributosOption (instancia, func) --> custom CoolTip:AddMenu (1, func, nil, 5, nil, atributos.lista[5], nil, true) CoolTip:AddIcon ("Interface\\AddOns\\Details\\images\\atributos_icones", 1, 1, 20, 20, p*(5-1), p*(5), 0, 1) - CoolTip:AddMenu (2, _detalhes.OpenCustomWindow, nil, nil, nil, Loc ["STRING_CUSTOM_NEW"], "Interface\\PaperDollInfoFrame\\Character-Plus", true) + CoolTip:AddMenu (2, _detalhes.OpenCustomDisplayWindow, nil, nil, nil, Loc ["STRING_CUSTOM_NEW"], "Interface\\PaperDollInfoFrame\\Character-Plus", true) for index, custom in _ipairs (_detalhes.custom) do - CoolTip:AddMenu (2, func, nil, 5, index, custom.name, custom.icon, true) + CoolTip:AddLine (custom.name, nil, 2) + CoolTip:AddMenu (2, func, true, 5, index) + CoolTip:AddIcon (custom.icon, 2, 1, 16, 16) end + + --> set the wallpaper on custom + GameCooltip:SetWallpaper (2, [[Interface\TALENTFRAME\WarriorArm-TopLeft]], {1, 0, 0, 1}, {1, 1, 1, 0.1}) if (#_detalhes.custom == 0) then CoolTip:SetLastSelected (2, 5, 1) else - CoolTip:SetLastSelected (2, 5, instancia.sub_atributo_last [5]+1) + if (instancia.atributo == 5) then + CoolTip:SetLastSelected (2, 5, instancia.sub_atributo+1) + else + CoolTip:SetLastSelected (2, 5, instancia.sub_atributo_last [5]+1) + end end + CoolTip:SetOption ("StatusBarTexture", [[Interface\AddOns\Details\images\bar4_vidro]]) + CoolTip:SetLastSelected (1, atributo_ativo) - CoolTip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) + CoolTip:SetWallpaper (1, [[Interface\SPELLBOOK\DeathKnightBlood-TopLeft]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) --CoolTip:SetWallpaper (1, [[Interface\ACHIEVEMENTFRAME\UI-Achievement-Parchment-Horizontal-Desaturated]], nil, {1, 1, 1, 0.3}) return menu_principal, sub_menus @@ -2235,7 +2267,8 @@ function _detalhes:monta_relatorio (este_relatorio, custom) if (not is_current) then --> assumindo que self é sempre uma instância aqui. - local total, keyName, keyNameSec, first, container_amount + local total, keyName, keyNameSec, first + local container_amount = 0 local atributo = self.atributo local container = self.showing [atributo]._ActorTable @@ -2261,6 +2294,7 @@ function _detalhes:monta_relatorio (este_relatorio, custom) end elseif (atributo == 2) then --> heal total, keyName, first, container_amount = _detalhes.atributo_heal:RefreshWindow (self, self.showing, true, true) + if (self.sub_atributo == 1) then keyNameSec = "hps" end @@ -2281,10 +2315,8 @@ function _detalhes:monta_relatorio (este_relatorio, custom) elseif (atributo == 5) then --> custom if (_detalhes.custom [self.sub_atributo]) then - total, keyName, first, container_amount = _detalhes.atributo_custom:RefreshWindow (self, self.showing, true, {key = "custom"}) - total = self.showing.totals [self.customName] - atributo = _detalhes.custom [self.sub_atributo].attribute - container = self.showing [atributo]._ActorTable + total, container, first, container_amount = _detalhes.atributo_custom:RefreshWindow (self, self.showing, true, true) + keyName = "value" else total, keyName, first, container_amount = _detalhes.atributo_damage:RefreshWindow (self, self.showing, true, true) total = 1 @@ -2294,10 +2326,11 @@ function _detalhes:monta_relatorio (este_relatorio, custom) --print (total, keyName, first, atributo, container_amount) end - amt = math.min (amt, container_amount) + amt = math.min (amt, container_amount or 0) for i = 1, amt do local _thisActor = container [i] + if (_thisActor) then local amount = _thisActor [keyName] @@ -2403,7 +2436,7 @@ function _detalhes:monta_relatorio (este_relatorio, custom) atributo = _detalhes.custom [self.sub_atributo].attribute end - local this_amt = math.min (#container, container_amount, amt) + local this_amt = math.min (#container, container_amount or 0, amt) this_amt = #container - this_amt for i = container_amount, this_amt, -1 do diff --git a/classes/classe_others.lua b/classes/classe_others.lua index a0179e9e..58970d47 100644 --- a/classes/classe_others.lua +++ b/classes/classe_others.lua @@ -566,7 +566,7 @@ function atributo_misc:RefreshWindow (instancia, tabela_do_combate, forcar, expo showing:remapear() if (exportar) then - return total, keyName, instancia.top + return total, keyName, instancia.top, amount end if (amount < 1) then --> não há barras para mostrar diff --git a/classes/container_combatentes.lua b/classes/container_combatentes.lua index e8e45ce3..d7d1276f 100644 --- a/classes/container_combatentes.lua +++ b/classes/container_combatentes.lua @@ -12,6 +12,7 @@ local _setmetatable = setmetatable --lua local local _getmetatable = getmetatable --lua local local _bit_band = bit.band --lua local + local _table_sort = table.sort --lua local local _ipairs = ipairs --lua local local _pairs = pairs --lua local @@ -62,6 +63,29 @@ return 0 end end + + function container_combatentes:GetTotal (key) + local total = 0 + key = key or "total" + for _, actor in _ipairs (self._ActorTable) do + total = total + (actor [key] or 0) + end + + return total + end + + function container_combatentes:GetTotalOnRaid (key, combat) + local total = 0 + key = key or "total" + local roster = combat.raid_roster + for _, actor in _ipairs (self._ActorTable) do + if (roster [actor.nome]) then + total = total + (actor [key] or 0) + end + end + + return total + end ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> internals @@ -435,7 +459,6 @@ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -- grava o objeto no mapa do container - local size = #self._ActorTable+1 self._ActorTable [size] = novo_objeto --> grava na tabela de indexes self._NameIndexTable [nome] = size --> grava no hash map o index deste jogador @@ -490,6 +513,21 @@ end end + local bykey + local sort = function (t1, t2) + return t1 [bykey] > t2 [bykey] + end + + function container_combatentes:SortByKey (key) + bykey = key + _table_sort (self._ActorTable, sort) + self:remapear() + end + + function container_combatentes:Remap() + return self:remapear() + end + function container_combatentes:remapear() local mapa = self._NameIndexTable local conteudo = self._ActorTable diff --git a/classes/container_pets.lua b/classes/container_pets.lua index 5a2e4f8f..4c4a2777 100644 --- a/classes/container_pets.lua +++ b/classes/container_pets.lua @@ -132,6 +132,7 @@ function container_pets:BuscarPets() end end end + elseif (_IsInGroup()) then for i = 1, _GetNumGroupMembers()-1, 1 do local pet_serial = _UnitGUID ("partypet"..i) @@ -149,6 +150,21 @@ function container_pets:BuscarPets() end end end + + local pet_serial = _UnitGUID ("pet") + if (pet_serial) then + if (not _detalhes.tabela_pets.pets [pet_serial]) then + _detalhes.tabela_pets:Adicionar (pet_serial, _UnitName ("pet"), 0x1114, _UnitGUID ("player"), _detalhes.playername, 0x514) + end + end + + else + local pet_serial = _UnitGUID ("pet") + if (pet_serial) then + if (not _detalhes.tabela_pets.pets [pet_serial]) then + _detalhes.tabela_pets:Adicionar (pet_serial, _UnitName ("pet"), 0x1114, _UnitGUID ("player"), _detalhes.playername, 0x514) + end + end end end diff --git a/core/meta.lua b/core/meta.lua index a167ab89..00ff1f45 100644 --- a/core/meta.lua +++ b/core/meta.lua @@ -57,6 +57,8 @@ --> reaplica indexes e metatables function _detalhes:RestauraMetaTables() + _detalhes.refresh:r_atributo_custom() + --> container de pets e histórico _detalhes.refresh:r_container_pets (_detalhes.tabela_pets) _detalhes.refresh:r_historico (_detalhes.tabela_historico) @@ -577,6 +579,8 @@ esta_instancia.waiting_pid = nil end + + _detalhes.clear:c_atributo_custom() end diff --git a/core/parser.lua b/core/parser.lua index 6747e199..cb7289ec 100644 --- a/core/parser.lua +++ b/core/parser.lua @@ -9,6 +9,7 @@ local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) local _tempo = time() local _ + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> local pointers @@ -16,7 +17,8 @@ local _UnitHealth = UnitHealth --wow api local local _UnitHealthMax = UnitHealthMax --wow api local local _UnitIsFeignDeath = UnitIsFeignDeath --wow api local - local _UnitGUID = UnitGUID + local _UnitGUID = UnitGUID --wow api local + local _GetUnitName = GetUnitName --wow api local local _GetInstanceInfo = GetInstanceInfo --wow api local local _IsInRaid = IsInRaid --wow api local local _IsInGroup = IsInGroup --wow api local @@ -34,7 +36,7 @@ local _table_sort = table.sort --lua local local _type = type --lua local local _math_ceil = math.ceil --lua local - local _table_wipe = table.wipe + local _table_wipe = table.wipe --lua local local escudo = _detalhes.escudos --details local local parser = _detalhes.parser --details local @@ -2822,6 +2824,7 @@ end end end + function _detalhes.parser_functions:PET_BATTLE_CLOSE (...) _detalhes.pet_battle = false for index, instance in _ipairs (_detalhes.tabela_instancias) do @@ -2831,6 +2834,10 @@ end end + function _detalhes.parser_functions:UNIT_NAME_UPDATE (...) + _detalhes:SchedulePetUpdate (5) + end + local parser_functions = _detalhes.parser_functions function _detalhes:OnEvent (evento, ...) @@ -2933,34 +2940,52 @@ _table_wipe (raid_members_cache) _table_wipe (tanks_members_cache) + local roster = _detalhes.tabela_vigente.raid_roster + if (_IsInRaid()) then for i = 1, _GetNumGroupMembers() do + local name = _GetUnitName ("raid"..i, true) + raid_members_cache [_UnitGUID ("raid"..i)] = true - local role = _UnitGroupRolesAssigned (GetUnitName ("raid"..i, true)) + roster [name] = true + + local role = _UnitGroupRolesAssigned (name) if (role == "TANK") then tanks_members_cache [_UnitGUID ("raid"..i)] = true - - --print ("tank detected:", GetUnitName ("raid"..i, true)) end end elseif (_IsInGroup()) then + --party for i = 1, _GetNumGroupMembers()-1 do + local name = _GetUnitName ("party"..i, true) + raid_members_cache [_UnitGUID ("party"..i)] = true - local role = _UnitGroupRolesAssigned (GetUnitName ("party"..i, true)) + roster [name] = true + + local role = _UnitGroupRolesAssigned (name) if (role == "TANK") then tanks_members_cache [_UnitGUID ("party"..i)] = true end end + --player + local name = GetUnitName ("player", true) + raid_members_cache [_UnitGUID ("player")] = true - local role = _UnitGroupRolesAssigned (GetUnitName ("player", true)) + roster [name] = true + + local role = _UnitGroupRolesAssigned (name) if (role == "TANK") then tanks_members_cache [_UnitGUID ("player")] = true end else + local name = GetUnitName ("player", true) + raid_members_cache [_UnitGUID ("player")] = true - local role = _UnitGroupRolesAssigned (GetUnitName ("player", true)) + roster [name] = true + + local role = _UnitGroupRolesAssigned (name) if (role == "TANK") then tanks_members_cache [_UnitGUID ("player")] = true end diff --git a/core/windows.lua b/core/windows.lua index f1c3268d..79a9c197 100644 --- a/core/windows.lua +++ b/core/windows.lua @@ -1,12 +1,7 @@ ---File Revision: 1 ---Last Modification: 27/07/2013 --- Change Log: - -- 27/07/2013: Finished alpha version. +--> this file controls the window position, size and others panels ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - - local _detalhes = _G._detalhes - local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) + local _detalhes = _G._detalhes + local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> local pointers @@ -25,7 +20,6 @@ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> core - function _detalhes:AnimarSplit (barra, goal) barra.inicio = barra.split.barra:GetValue() barra.fim = goal @@ -35,16 +29,6 @@ end function _detalhes:FazerAnimacaoSplit (elapsed) - - --[[ - local velocidade = 0.1 - local distancia = self.inicio - self.fim - if (distancia > 40 or distancia < -40) then - velocidade = 0.8 - elseif (distancia > 20 or distancia < -20) then - velocidade = 0.4 - end - --]] local velocidade = 0.8 if (self.fim > self.inicio) then @@ -137,60 +121,23 @@ if (instance) then self = instance end - local mostrando = self.mostrando - --local baseframe_width = math.floor (self.baseframe:GetWidth()) - --local baseframe_height = math.floor (self.baseframe:GetHeight()) + -- local baseframe_width = self.baseframe:GetWidth() local baseframe_height = self.baseframe:GetHeight() - if (not baseframe_width) then return _detalhes:ScheduleTimer ("SaveMainWindowPosition", 1, self) end - - --[[ - if (baseframe_width % 2 ~= 0) then - if (self.posicao[mostrando].w > baseframe_width) then - baseframe_width = baseframe_width +1 - else - baseframe_width = baseframe_width -1 - end - end - self.baseframe:SetWidth (baseframe_width) - if (baseframe_height % 2 ~= 0) then - if (self.posicao[mostrando].h > baseframe_height) then - baseframe_height = baseframe_height +1 - else - baseframe_height = baseframe_height -1 - end - end - self.baseframe:SetHeight (baseframe_height) - --]] - + -- local xOfs, yOfs = self.baseframe:GetCenter() - if (not xOfs) then - --> this is a small and unknow bug when resizing all windows throgh crtl key (all) the last window of a horizontal row can't 'GetCenter'. - --> so, the trick is we start a timer to save pos later. return _detalhes:ScheduleTimer ("SaveMainWindowPosition", 1, self) end - - --xOfs = math.floor (xOfs) - --yOfs = math.floor (yOfs) - - if (xOfs % 2 ~= 0) then - --xOfs = xOfs -1 - end - if (yOfs % 2 ~= 0) then - --yOfs = yOfs -1 - end - - local q, w = self.baseframe:GetCenter() - + -- local _scale = self.baseframe:GetEffectiveScale() local _UIscale = _UIParent:GetScale() - + -- xOfs = xOfs*_scale - _GetScreenWidth()*_UIscale/2 yOfs = yOfs*_scale - _GetScreenHeight()*_UIscale/2 @@ -217,7 +164,7 @@ self.ponto3 = {x = _x + metade_largura, y = _y - metade_altura + statusbar_y_mod} --bottomright self.ponto4 = {x = _x + metade_largura, y = _y + metade_altura + (statusbar_y_mod*-1)} --topright - self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight()-4 --> isso aqui não sei o que esta fazendo aqui + self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight()-4 --> checar isso return {altura = self.baseframe:GetHeight(), largura = self.baseframe:GetWidth(), x = xOfs/_UIscale, y = yOfs/_UIscale} end @@ -243,7 +190,7 @@ self.baseframe:SetWidth (self.posicao[self.mostrando].w) --slider frame self.baseframe:SetHeight (self.posicao[self.mostrando].h) - self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight()-4 --> ????? + self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight()-4 --> checar isso end function _detalhes:RestoreMainWindowPositionNoResize (pre_defined, x, y) @@ -266,7 +213,7 @@ self.baseframe:ClearAllPoints() self.baseframe:SetPoint ("CENTER", _UIParent, "CENTER", novo_x + x, novo_y + y) - self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight()-4 --> ????? + self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight()-4 --> checar isso end function _detalhes:ResetaGump (instancia, tipo, segmento) @@ -338,28 +285,12 @@ end end - --[ --disabled consolidate menu - if (_detalhes.lower_instance == self.meu_id or self.consolidate) then - if (not self.consolidate) then - --if (self.baseframe:GetWidth() < 180) then - --> consolidate menus - --self:ConsolidateIcons() --disabled - --end - else - if (self.baseframe:GetWidth() > 180 or _detalhes.lower_instance ~= self.meu_id) then - --> un consolidade menus - self:UnConsolidateIcons() - end - end - end - --]] - if (self.stretch_button_side == 2) then self:StretchButtonAnchor (2) end + --> reajusta o freeze if (self.freezed) then - --> reajusta o freeze _detalhes:Freeze (self) end @@ -369,7 +300,6 @@ local T = self.rows_fit_in_window if (not T) then --> primeira vez que o gump esta sendo reajustado T = _math_floor (self.baseframe.BoxBarrasAltura / self.row_height) - -- o que mais precisa por aqui? end --> reajustar o local do relógio @@ -378,28 +308,26 @@ self.rows_fit_in_window = _math_floor ( self.baseframe.BoxBarrasAltura / self.row_height) - --if (not _detalhes.initializing) then - - if (self.rows_fit_in_window > #self.barras) then--> verifica se precisa criar mais barras - for i = #self.barras+1, self.rows_fit_in_window, 1 do - gump:CriaNovaBarra (self, i, 30) --> cria nova barra - end - self.rows_created = #self.barras + --> verifica se precisa criar mais barras + if (self.rows_fit_in_window > #self.barras) then--> verifica se precisa criar mais barras + for i = #self.barras+1, self.rows_fit_in_window, 1 do + gump:CriaNovaBarra (self, i, 30) --> cria nova barra end - - --> seta a largura das barras - if (self.bar_mod and self.bar_mod ~= 0) then - for index = 1, self.rows_fit_in_window do - self.barras [index]:SetWidth (self.baseframe:GetWidth()+self.bar_mod) - end - else - for index = 1, self.rows_fit_in_window do - self.barras [index]:SetWidth (self.baseframe:GetWidth()+self.row_info.space.right) - end - end - - --end + self.rows_created = #self.barras + end + --> seta a largura das barras + if (self.bar_mod and self.bar_mod ~= 0) then + for index = 1, self.rows_fit_in_window do + self.barras [index]:SetWidth (self.baseframe:GetWidth()+self.bar_mod) + end + else + for index = 1, self.rows_fit_in_window do + self.barras [index]:SetWidth (self.baseframe:GetWidth()+self.row_info.space.right) + end + end + + --> verifica se precisa esconder ou mostrar alguma barra local A = self.barraS[1] if (not A) then --> primeira vez que o resize esta sendo usado, no caso no startup do addon ou ao criar uma nova instância --> hida as barras não usadas @@ -520,8 +448,64 @@ end end - --> cria o frame de wait for plugin +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> panels + +--> cooltip presets + function _detalhes:CooltipPreset (preset) + local GameCooltip = GameCooltip + GameCooltip:Reset() + + if (preset == 1) then + GameCooltip:SetOption ("TextFont", "Friz Quadrata TT") + GameCooltip:SetOption ("TextColor", "orange") + GameCooltip:SetOption ("TextSize", 12) + GameCooltip:SetOption ("ButtonsYMod", -4) + GameCooltip:SetOption ("YSpacingMod", -4) + GameCooltip:SetOption ("IgnoreButtonAutoHeight", true) + GameCooltip:SetColor (1, 0.5, 0.5, 0.5, 0.5) + + elseif (preset == 2) then + GameCooltip:SetOption ("TextFont", "Friz Quadrata TT") + GameCooltip:SetOption ("TextColor", "orange") + GameCooltip:SetOption ("TextSize", 12) + GameCooltip:SetOption ("FixedWidth", 220) + GameCooltip:SetOption ("ButtonsYMod", -4) + GameCooltip:SetOption ("YSpacingMod", -4) + GameCooltip:SetOption ("IgnoreButtonAutoHeight", true) + GameCooltip:SetColor (1, 0.5, 0.5, 0.5, 0.5) + + end + end + +--> yes no panel + + do + _detalhes.yesNo = _detalhes.gump:NewPanel (UIParent, _, "DetailsYesNoWindow", _, 500, 80) + _detalhes.yesNo:SetPoint ("center", UIParent, "center") + _detalhes.gump:NewLabel (_detalhes.yesNo, _, "$parentAsk", "ask", "") + _detalhes.yesNo ["ask"]:SetPoint ("center", _detalhes.yesNo, "center", 0, 25) + _detalhes.yesNo ["ask"]:SetWidth (480) + _detalhes.yesNo ["ask"]:SetJustifyH ("center") + _detalhes.yesNo ["ask"]:SetHeight (22) + _detalhes.gump:NewButton (_detalhes.yesNo, _, "$parentNo", "no", 100, 30, function() _detalhes.yesNo:Hide() end, nil, nil, nil, Loc ["STRING_NO"]) + _detalhes.gump:NewButton (_detalhes.yesNo, _, "$parentYes", "yes", 100, 30, nil, nil, nil, nil, Loc ["STRING_YES"]) + _detalhes.yesNo ["no"]:SetPoint (10, -45) + _detalhes.yesNo ["yes"]:SetPoint (390, -45) + _detalhes.yesNo ["no"]:InstallCustomTexture() + _detalhes.yesNo ["yes"]:InstallCustomTexture() + _detalhes.yesNo ["yes"]:SetHook ("OnMouseUp", function() _detalhes.yesNo:Hide() end) + function _detalhes:Ask (msg, func, ...) + _detalhes.yesNo ["ask"].text = msg + local p1, p2 = ... + _detalhes.yesNo ["yes"]:SetClickFunction (func, p1, p2) + _detalhes.yesNo:Show() + end + _detalhes.yesNo:Hide() + end + +--> cria o frame de wait for plugin function _detalhes:CreateWaitForPlugin() local WaitForPluginFrame = CreateFrame ("frame", "DetailsWaitForPluginFrame" .. self.meu_id, UIParent) @@ -673,8 +657,8 @@ end end +--> tutorial bubbles do - --[1] criar nova instancia --[2] esticar janela --[3] resize e trava @@ -781,151 +765,151 @@ --> create bubble - local f = CreateFrame ("frame", "DetailsBubble", UIParent) - f:SetPoint ("center", UIParent, "center") - f:SetSize (100, 100) - f:SetFrameStrata ("TOOLTIP") - f.isHorizontalFlipped = false - f.isVerticalFlipped = false - - local t = f:CreateTexture (nil, "artwork") - t:SetTexture ([[Interface\AddOns\Details\images\icons]]) - t:SetSize (131 * 1.2, 81 * 1.2) - --377 328 508 409 0.0009765625 - t:SetTexCoord (0.7373046875, 0.9912109375, 0.6416015625, 0.7978515625) - t:SetPoint ("center", f, "center") - - local line1 = f:CreateFontString (nil, "overlay", "GameFontHighlightSmall") - line1:SetPoint ("topleft", t, "topleft", 24, -10) - _detalhes:SetFontSize (line1, 9) - line1:SetTextColor (.9, .9, .9, 1) - line1:SetSize (110, 12) - line1:SetJustifyV ("center") - line1:SetJustifyH ("center") - - local line2 = f:CreateFontString (nil, "overlay", "GameFontHighlightSmall") - line2:SetPoint ("topleft", t, "topleft", 11, -20) - _detalhes:SetFontSize (line2, 9) - line2:SetTextColor (.9, .9, .9, 1) - line2:SetSize (140, 12) - line2:SetJustifyV ("center") - line2:SetJustifyH ("center") - - local line3 = f:CreateFontString (nil, "overlay", "GameFontHighlightSmall") - line3:SetPoint ("topleft", t, "topleft", 7, -30) - _detalhes:SetFontSize (line3, 9) - line3:SetTextColor (.9, .9, .9, 1) - line3:SetSize (144, 12) - line3:SetJustifyV ("center") - line3:SetJustifyH ("center") - - local line4 = f:CreateFontString (nil, "overlay", "GameFontHighlightSmall") - line4:SetPoint ("topleft", t, "topleft", 11, -40) - _detalhes:SetFontSize (line4, 9) - line4:SetTextColor (.9, .9, .9, 1) - line4:SetSize (140, 12) - line4:SetJustifyV ("center") - line4:SetJustifyH ("center") - - local line5 = f:CreateFontString (nil, "overlay", "GameFontHighlightSmall") - line5:SetPoint ("topleft", t, "topleft", 24, -50) - _detalhes:SetFontSize (line5, 9) - line5:SetTextColor (.9, .9, .9, 1) - line5:SetSize (110, 12) - line5:SetJustifyV ("center") - line5:SetJustifyH ("center") - - f.lines = {line1, line2, line3, line4, line5} - - --t:SetPoint ("center", UIParent, "center") - - function f:FlipHorizontal() - if (not f.isHorizontalFlipped) then - if (f.isVerticalFlipped) then - t:SetTexCoord (0.9912109375, 0.7373046875, 0.7978515625, 0.6416015625) - else - t:SetTexCoord (0.9912109375, 0.7373046875, 0.6416015625, 0.7978515625) - end - f.isHorizontalFlipped = true - else - if (f.isVerticalFlipped) then - t:SetTexCoord (0.7373046875, 0.9912109375, 0.7978515625, 0.6416015625) - else - t:SetTexCoord (0.7373046875, 0.9912109375, 0.6416015625, 0.7978515625) - end - f.isHorizontalFlipped = false - end - end - - function f:FlipVertical() - - if (not f.isVerticalFlipped) then - if (f.isHorizontalFlipped) then - t:SetTexCoord (0.7373046875, 0.9912109375, 0.7978515625, 0.6416015625) - else - t:SetTexCoord (0.9912109375, 0.7373046875, 0.7978515625, 0.6416015625) - end - f.isVerticalFlipped = true - else - if (f.isHorizontalFlipped) then - t:SetTexCoord (0.7373046875, 0.9912109375, 0.6416015625, 0.7978515625) - else - t:SetTexCoord (0.9912109375, 0.7373046875, 0.6416015625, 0.7978515625) - end - f.isVerticalFlipped = false - end - end - - function f:TextConfig (fontsize, fontface, fontcolor) - for i = 1, 5 do - - local line = f.lines [i] - - _detalhes:SetFontSize (line, fontsize or 9) - _detalhes:SetFontFace (line, fontface or [[Fonts\FRIZQT__.TTF]]) - _detalhes:SetFontColor (line, fontcolor or {.9, .9, .9, 1}) - - end - end - - function f:SetBubbleText (line1, line2, line3, line4, line5) - if (not line1) then - for _, line in ipairs (f.lines) do - line:SetText ("") - end - return - end - - if (line1:find ("\n")) then - line1, line2, line3, line4, line5 = strsplit ("\n", line1) - end - - f.lines[1]:SetText (line1) - f.lines[2]:SetText (line2) - f.lines[3]:SetText (line3) - f.lines[4]:SetText (line4) - f.lines[5]:SetText (line5) - end - - function f:SetOwner (frame, myPoint, hisPoint, x, y, alpha) - f:ClearAllPoints() - f:TextConfig() - f:SetBubbleText (nil) - t:SetTexCoord (0.7373046875, 0.9912109375, 0.6416015625, 0.7978515625) + do + local f = CreateFrame ("frame", "DetailsBubble", UIParent) + f:SetPoint ("center", UIParent, "center") + f:SetSize (100, 100) + f:SetFrameStrata ("TOOLTIP") f.isHorizontalFlipped = false f.isVerticalFlipped = false - f:SetPoint (myPoint or "bottom", frame, hisPoint or "top", x or 0, y or 0) - t:SetAlpha (alpha or 1) - end - - function f:ShowBubble() - f:Show() - end - - function f:HideBubble() + + local t = f:CreateTexture (nil, "artwork") + t:SetTexture ([[Interface\AddOns\Details\images\icons]]) + t:SetSize (131 * 1.2, 81 * 1.2) + --377 328 508 409 0.0009765625 + t:SetTexCoord (0.7373046875, 0.9912109375, 0.6416015625, 0.7978515625) + t:SetPoint ("center", f, "center") + + local line1 = f:CreateFontString (nil, "overlay", "GameFontHighlightSmall") + line1:SetPoint ("topleft", t, "topleft", 24, -10) + _detalhes:SetFontSize (line1, 9) + line1:SetTextColor (.9, .9, .9, 1) + line1:SetSize (110, 12) + line1:SetJustifyV ("center") + line1:SetJustifyH ("center") + + local line2 = f:CreateFontString (nil, "overlay", "GameFontHighlightSmall") + line2:SetPoint ("topleft", t, "topleft", 11, -20) + _detalhes:SetFontSize (line2, 9) + line2:SetTextColor (.9, .9, .9, 1) + line2:SetSize (140, 12) + line2:SetJustifyV ("center") + line2:SetJustifyH ("center") + + local line3 = f:CreateFontString (nil, "overlay", "GameFontHighlightSmall") + line3:SetPoint ("topleft", t, "topleft", 7, -30) + _detalhes:SetFontSize (line3, 9) + line3:SetTextColor (.9, .9, .9, 1) + line3:SetSize (144, 12) + line3:SetJustifyV ("center") + line3:SetJustifyH ("center") + + local line4 = f:CreateFontString (nil, "overlay", "GameFontHighlightSmall") + line4:SetPoint ("topleft", t, "topleft", 11, -40) + _detalhes:SetFontSize (line4, 9) + line4:SetTextColor (.9, .9, .9, 1) + line4:SetSize (140, 12) + line4:SetJustifyV ("center") + line4:SetJustifyH ("center") + + local line5 = f:CreateFontString (nil, "overlay", "GameFontHighlightSmall") + line5:SetPoint ("topleft", t, "topleft", 24, -50) + _detalhes:SetFontSize (line5, 9) + line5:SetTextColor (.9, .9, .9, 1) + line5:SetSize (110, 12) + line5:SetJustifyV ("center") + line5:SetJustifyH ("center") + + f.lines = {line1, line2, line3, line4, line5} + + function f:FlipHorizontal() + if (not f.isHorizontalFlipped) then + if (f.isVerticalFlipped) then + t:SetTexCoord (0.9912109375, 0.7373046875, 0.7978515625, 0.6416015625) + else + t:SetTexCoord (0.9912109375, 0.7373046875, 0.6416015625, 0.7978515625) + end + f.isHorizontalFlipped = true + else + if (f.isVerticalFlipped) then + t:SetTexCoord (0.7373046875, 0.9912109375, 0.7978515625, 0.6416015625) + else + t:SetTexCoord (0.7373046875, 0.9912109375, 0.6416015625, 0.7978515625) + end + f.isHorizontalFlipped = false + end + end + + function f:FlipVertical() + + if (not f.isVerticalFlipped) then + if (f.isHorizontalFlipped) then + t:SetTexCoord (0.7373046875, 0.9912109375, 0.7978515625, 0.6416015625) + else + t:SetTexCoord (0.9912109375, 0.7373046875, 0.7978515625, 0.6416015625) + end + f.isVerticalFlipped = true + else + if (f.isHorizontalFlipped) then + t:SetTexCoord (0.7373046875, 0.9912109375, 0.6416015625, 0.7978515625) + else + t:SetTexCoord (0.9912109375, 0.7373046875, 0.6416015625, 0.7978515625) + end + f.isVerticalFlipped = false + end + end + + function f:TextConfig (fontsize, fontface, fontcolor) + for i = 1, 5 do + + local line = f.lines [i] + + _detalhes:SetFontSize (line, fontsize or 9) + _detalhes:SetFontFace (line, fontface or [[Fonts\FRIZQT__.TTF]]) + _detalhes:SetFontColor (line, fontcolor or {.9, .9, .9, 1}) + + end + end + + function f:SetBubbleText (line1, line2, line3, line4, line5) + if (not line1) then + for _, line in ipairs (f.lines) do + line:SetText ("") + end + return + end + + if (line1:find ("\n")) then + line1, line2, line3, line4, line5 = strsplit ("\n", line1) + end + + f.lines[1]:SetText (line1) + f.lines[2]:SetText (line2) + f.lines[3]:SetText (line3) + f.lines[4]:SetText (line4) + f.lines[5]:SetText (line5) + end + + function f:SetOwner (frame, myPoint, hisPoint, x, y, alpha) + f:ClearAllPoints() + f:TextConfig() + f:SetBubbleText (nil) + t:SetTexCoord (0.7373046875, 0.9912109375, 0.6416015625, 0.7978515625) + f.isHorizontalFlipped = false + f.isVerticalFlipped = false + f:SetPoint (myPoint or "bottom", frame, hisPoint or "top", x or 0, y or 0) + t:SetAlpha (alpha or 1) + end + + function f:ShowBubble() + f:Show() + end + + function f:HideBubble() + f:Hide() + end + + f:SetBubbleText (nil) + f:Hide() - end - - f:SetBubbleText (nil) - - f:Hide() \ No newline at end of file + end \ No newline at end of file diff --git a/framework/button.lua b/framework/button.lua index b7a83fbf..ec34d8f9 100644 --- a/framework/button.lua +++ b/framework/button.lua @@ -502,8 +502,10 @@ local ButtonMetaFunctions = {} end end - if (button.MyObject.have_tooltip) then - _detalhes.popup:ShowMe (false) + if (button.MyObject.have_tooltip) then + if (GameCooltip:GetText (1) == button.MyObject.have_tooltip) then + GameCooltip:Hide() + end end local parent = button:GetParent().MyObject diff --git a/framework/cooltip.lua b/framework/cooltip.lua index 9f401fb2..44259734 100644 --- a/framework/cooltip.lua +++ b/framework/cooltip.lua @@ -805,7 +805,7 @@ function DetailsCreateCoolTip() end function CoolTip:StatusBar (menuButton, StatusBar) - + if (StatusBar) then menuButton.statusbar:SetValue (StatusBar [1]) @@ -899,7 +899,8 @@ function DetailsCreateCoolTip() CoolTip.LeftIconTableSub [mainMenuIndex] and CoolTip.LeftIconTableSub [mainMenuIndex] [index], CoolTip.RightIconTableSub [mainMenuIndex] and CoolTip.RightIconTableSub [mainMenuIndex] [index], true) --> setup statusbar - CoolTip:StatusBar (menuButton, CoolTip.StatusBarTable [mainMenuIndex] and CoolTip.StatusBarTable [mainMenuIndex] [index]) + CoolTip:StatusBar (menuButton, CoolTip.StatusBarTableSub [mainMenuIndex] and CoolTip.StatusBarTableSub [mainMenuIndex] [index]) + --> click menuButton:RegisterForClicks ("LeftButtonDown") @@ -1493,7 +1494,7 @@ function DetailsCreateCoolTip() end - end + end function CoolTip:GetText (buttonIndex) local button1 = frame1.Lines [buttonIndex] diff --git a/framework/panel.lua b/framework/panel.lua index 836d34bb..8ee9a0d3 100644 --- a/framework/panel.lua +++ b/framework/panel.lua @@ -875,22 +875,26 @@ function gump:ColorPick (frame, r, g, b, alpha, callback) end ------------icon pick -function gump:IconPick (callback) +function gump:IconPick (callback, close_when_select) if (not gump.IconPickFrame) then + local string_lower = string.lower + gump.IconPickFrame = CreateFrame ("frame", "DetailsIconPickFrame", UIParent) tinsert (UISpecialFrames, "DetailsIconPickFrame") gump.IconPickFrame:SetFrameStrata ("DIALOG") gump.IconPickFrame:SetPoint ("center", UIParent, "center") gump.IconPickFrame:SetWidth (350) - gump.IconPickFrame:SetHeight (200) + gump.IconPickFrame:SetHeight (227) gump.IconPickFrame:EnableMouse (true) gump.IconPickFrame:SetMovable (true) gump.IconPickFrame:SetBackdrop ({bgFile = "Interface\\AddOns\\Details\\images\\background", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 32, edgeSize = 32, insets = {left = 5, right = 5, top = 5, bottom = 5}}) + --local title = gump.IconPickFrame:CreateTitleRegion() + gump.IconPickFrame:SetBackdropBorderColor (170/255, 170/255, 170/255) gump.IconPickFrame:SetBackdropColor (24/255, 24/255, 24/255, .8) gump.IconPickFrame:SetFrameLevel (1) @@ -898,11 +902,29 @@ function gump:IconPick (callback) gump.IconPickFrame.emptyFunction = function() end gump.IconPickFrame.callback = gump.IconPickFrame.emptyFunction + gump.IconPickFrame.preview = gump:NewImage (gump.IconPickFrame, nil, 76, 76) + + gump.IconPickFrame.searchLabel = gump:NewLabel (gump.IconPickFrame, nil, "$parentSearchBoxLabel", nil, "search:", font, size, color) + gump.IconPickFrame.searchLabel:SetPoint ("topleft", gump.IconPickFrame, "topleft", 12, -20) + gump.IconPickFrame.search = gump:NewTextEntry (gump.IconPickFrame, nil, "$parentSearchBox", nil, 140, 20) + gump.IconPickFrame.search:SetPoint ("left", gump.IconPickFrame.searchLabel, "right", 2, 0) + gump.IconPickFrame.search:SetHook ("OnTextChanged", function() + gump.IconPickFrame.searching = gump.IconPickFrame.search:GetText() + if (gump.IconPickFrame.searching == "") then + gump.IconPickFrameScroll:Show() + gump.IconPickFrame.searching = nil + gump.IconPickFrame.updateFunc() + else + gump.IconPickFrameScroll:Hide() + gump.IconPickFrame.updateFunc() + end + end) + --> close button local close_button = CreateFrame ("button", nil, gump.IconPickFrame, "UIPanelCloseButton") close_button:SetWidth (32) close_button:SetHeight (32) - close_button:SetPoint ("TOPRIGHT", gump.IconPickFrame, "TOPRIGHT", -3, 20) + close_button:SetPoint ("TOPRIGHT", gump.IconPickFrame, "TOPRIGHT", -8, -7) close_button:SetFrameLevel (close_button:GetFrameLevel()+2) local MACRO_ICON_FILENAMES = {} @@ -911,7 +933,6 @@ function gump:IconPick (callback) MACRO_ICON_FILENAMES = {}; MACRO_ICON_FILENAMES[1] = "INV_MISC_QUESTIONMARK"; local index = 2; - local numFlyouts = 0; for i = 1, GetNumSpellTabs() do local tab, tabTex, offset, numSpells, _ = GetSpellTabInfo(i); @@ -957,44 +978,69 @@ function gump:IconPick (callback) local OnClickFunction = function (index) local button = gump.IconPickFrame.buttons [index] local texture = button:GetNormalTexture() - gump.IconPickFrame.callback ("INTERFACE\\ICONS\\"..MACRO_ICON_FILENAMES [button.IconID]) + gump.IconPickFrame.callback (button.icon_texture) + if (gump.IconPickFrame.click_close) then + close_button:Click() + end + end + + local onenter = function (self) + gump.IconPickFrame.preview:SetPoint ("bottom", self, "top", 0, 2) + gump.IconPickFrame.preview:SetTexture (self.icon_texture) + gump.IconPickFrame.preview:SetParent (self) + gump.IconPickFrame.preview:Show() + end + local onleave = function (self) + gump.IconPickFrame.preview:Hide() end for i = 0, 9 do local newcheck = gump:NewDetailsButton (gump.IconPickFrame, gump.IconPickFrame, _, OnClickFunction, i+1, i+1, 30, 28, "", "", "", "", _, "DetailsIconPickFrameButton"..(i+1)) - newcheck:SetPoint ("topleft", gump.IconPickFrame, "topleft", 12+(i*30), -13) + newcheck:SetPoint ("topleft", gump.IconPickFrame, "topleft", 12 + (i*30), -40) newcheck:SetID (i+1) gump.IconPickFrame.buttons [#gump.IconPickFrame.buttons+1] = newcheck + newcheck.MouseOnEnterHook = onenter + newcheck.MouseOnLeaveHook = onleave end for i = 11, 20 do local newcheck = gump:NewDetailsButton (gump.IconPickFrame, gump.IconPickFrame, _, OnClickFunction, i, i, 30, 28, "", "", "", "", _, "DetailsIconPickFrameButton"..i) newcheck:SetPoint ("topleft", "DetailsIconPickFrameButton"..(i-10), "bottomleft", 0, -1) newcheck:SetID (i) gump.IconPickFrame.buttons [#gump.IconPickFrame.buttons+1] = newcheck + newcheck.MouseOnEnterHook = onenter + newcheck.MouseOnLeaveHook = onleave end for i = 21, 30 do local newcheck = gump:NewDetailsButton (gump.IconPickFrame, gump.IconPickFrame, _, OnClickFunction, i, i, 30, 28, "", "", "", "", _, "DetailsIconPickFrameButton"..i) newcheck:SetPoint ("topleft", "DetailsIconPickFrameButton"..(i-10), "bottomleft", 0, -1) newcheck:SetID (i) gump.IconPickFrame.buttons [#gump.IconPickFrame.buttons+1] = newcheck + newcheck.MouseOnEnterHook = onenter + newcheck.MouseOnLeaveHook = onleave end for i = 31, 40 do local newcheck = gump:NewDetailsButton (gump.IconPickFrame, gump.IconPickFrame, _, OnClickFunction, i, i, 30, 28, "", "", "", "", _, "DetailsIconPickFrameButton"..i) newcheck:SetPoint ("topleft", "DetailsIconPickFrameButton"..(i-10), "bottomleft", 0, -1) newcheck:SetID (i) gump.IconPickFrame.buttons [#gump.IconPickFrame.buttons+1] = newcheck + newcheck.MouseOnEnterHook = onenter + newcheck.MouseOnLeaveHook = onleave end for i = 41, 50 do local newcheck = gump:NewDetailsButton (gump.IconPickFrame, gump.IconPickFrame, _, OnClickFunction, i, i, 30, 28, "", "", "", "", _, "DetailsIconPickFrameButton"..i) newcheck:SetPoint ("topleft", "DetailsIconPickFrameButton"..(i-10), "bottomleft", 0, -1) newcheck:SetID (i) gump.IconPickFrame.buttons [#gump.IconPickFrame.buttons+1] = newcheck + newcheck.MouseOnEnterHook = onenter + newcheck.MouseOnLeaveHook = onleave end for i = 51, 60 do local newcheck = gump:NewDetailsButton (gump.IconPickFrame, gump.IconPickFrame, _, OnClickFunction, i, i, 30, 28, "", "", "", "", _, "DetailsIconPickFrameButton"..i) newcheck:SetPoint ("topleft", "DetailsIconPickFrameButton"..(i-10), "bottomleft", 0, -1) newcheck:SetID (i) gump.IconPickFrame.buttons [#gump.IconPickFrame.buttons+1] = newcheck + newcheck.MouseOnEnterHook = onenter + newcheck.MouseOnLeaveHook = onleave end local scroll = CreateFrame ("ScrollFrame", "DetailsIconPickFrameScroll", gump.IconPickFrame, "ListScrollFrameTemplate") @@ -1008,27 +1054,65 @@ function gump:IconPick (callback) -- Icon list local texture; - for i = 1, 60 do - macroPopupIcon = _G["DetailsIconPickFrameButton"..i]; - macroPopupButton = _G["DetailsIconPickFrameButton"..i]; - index = (macroPopupOffset * 10) + i; - texture = MACRO_ICON_FILENAMES [index] - if ( index <= numMacroIcons and texture ) then - macroPopupButton:ChangeIcon ("INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture) - macroPopupButton.IconID = index - macroPopupButton:Show(); - else - macroPopupButton:Hide(); + + local filter + if (gump.IconPickFrame.searching) then + filter = string_lower (gump.IconPickFrame.searching) + end + + if (filter and filter ~= "") then + local i = 1 + for o = 1, numMacroIcons do + local text = string_lower (MACRO_ICON_FILENAMES [o]) + if (text:find (filter)) then + macroPopupIcon = _G ["DetailsIconPickFrameButton"..i] + macroPopupButton = _G ["DetailsIconPickFrameButton"..i] + local texture = MACRO_ICON_FILENAMES [o] + macroPopupButton:ChangeIcon ("INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture) + macroPopupButton.IconID = index + macroPopupButton.icon_texture = "INTERFACE\\ICONS\\"..texture + macroPopupButton:Show(); + + i = i + 1 + if (i > 60) then + break + end + end + end + + if (i == 1) then --no resutls + macroPopupButton = _G ["DetailsIconPickFrameButton"..i] + macroPopupButton:Hide() + end + + for o = i+1, 60 do + macroPopupButton = _G ["DetailsIconPickFrameButton"..o] + macroPopupButton:Hide() + end + else + for i = 1, 60 do + macroPopupIcon = _G ["DetailsIconPickFrameButton"..i] + macroPopupButton = _G ["DetailsIconPickFrameButton"..i] + index = (macroPopupOffset * 10) + i; + texture = MACRO_ICON_FILENAMES [index] + if ( index <= numMacroIcons and texture ) then + macroPopupButton:ChangeIcon ("INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture) + macroPopupButton.IconID = index + macroPopupButton.icon_texture = "INTERFACE\\ICONS\\"..texture + macroPopupButton:Show() + else + macroPopupButton:Hide() + end end - end -- Scrollbar stuff FauxScrollFrame_Update (scroll, ceil (numMacroIcons / 10) , 5, 20 ); end + + gump.IconPickFrame.updateFunc = ChecksFrame_Update - - scroll:SetPoint ("topleft", gump.IconPickFrame, "topleft", -18, -10) + scroll:SetPoint ("topleft", gump.IconPickFrame, "topleft", -18, -37) scroll:SetWidth (330) scroll:SetHeight (178) scroll:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (scroll, offset, 20, ChecksFrame_Update) end) @@ -1041,5 +1125,6 @@ function gump:IconPick (callback) gump.IconPickFrame:Show() gump.IconPickFrameScroll.update (gump.IconPickFrameScroll) gump.IconPickFrame.callback = callback or gump.IconPickFrame.emptyFunction + gump.IconPickFrame.click_close = close_when_select end diff --git a/framework/textentry.lua b/framework/textentry.lua index 8473a177..36a2db32 100644 --- a/framework/textentry.lua +++ b/framework/textentry.lua @@ -248,6 +248,29 @@ local TextEntryMetaFunctions = {} end end + function TextEntryMetaFunctions:Enable() + if (not self.editbox:IsEnabled()) then + self.editbox:Enable() + self.editbox:SetBackdropBorderColor (unpack (self.enabled_border_color)) + self.editbox:SetBackdropColor (unpack (self.enabled_backdrop_color)) + self.editbox:SetTextColor (unpack (self.enabled_text_color)) + end + end + + function TextEntryMetaFunctions:Disable() + if (self.editbox:IsEnabled()) then + self.enabled_border_color = {self.editbox:GetBackdropBorderColor()} + self.enabled_backdrop_color = {self.editbox:GetBackdropColor()} + self.enabled_text_color = {self.editbox:GetTextColor()} + + self.editbox:Disable() + + self.editbox:SetBackdropBorderColor (.5, .5, .5, .5) + self.editbox:SetBackdropColor (.5, .5, .5, .5) + self.editbox:SetTextColor (.5, .5, .5, .5) + end + end + ------------------------------------------------------------------------------------------------------------ --> scripts local OnEnter = function (textentry) @@ -269,7 +292,7 @@ local TextEntryMetaFunctions = {} if (textentry:IsEnabled()) then textentry.current_bordercolor = textentry.current_bordercolor or {textentry:GetBackdropBorderColor()} - textentry:SetBackdropBorderColor (0.5, 0.5, 0.5, 1) + textentry:SetBackdropBorderColor (1, 1, 1, 1) end local parent = textentry:GetParent().MyObject @@ -527,16 +550,15 @@ function gump:NewTextEntry (parent, container, name, member, w, h, func, param1, TextEntryObject.editbox:SetJustifyH ("center") TextEntryObject.editbox:EnableMouse (true) TextEntryObject.editbox:SetText ("") - - --TextEntryObject.editbox:SetBackdrop ({bgFile = "Interface\\ChatFrame\\ChatFrameBackground", - --edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", - --tile = true, edgeSize = 1, tileSize = 5}) - - --TextEntryObject.editbox:SetBackdropColor (0, 0, 0, 0.5) - --TextEntryObject.editbox:SetBackdropBorderColor (0.3, 0.3, 0.30, 0.80) - TextEntryObject.editbox.current_bordercolor = {1, 1, 1, 1} + TextEntryObject.editbox:SetAutoFocus (false) TextEntryObject.editbox:SetFontObject ("GameFontHighlightSmall") + + TextEntryObject.editbox.current_bordercolor = {1, 1, 1, 0.7} + TextEntryObject.editbox:SetBackdropBorderColor (1, 1, 1, 0.7) + TextEntryObject.enabled_border_color = {TextEntryObject.editbox:GetBackdropBorderColor()} + TextEntryObject.enabled_backdrop_color = {TextEntryObject.editbox:GetBackdropColor()} + TextEntryObject.enabled_text_color = {TextEntryObject.editbox:GetTextColor()} TextEntryObject.func = func TextEntryObject.param1 = param1 diff --git a/functions/boss.lua b/functions/boss.lua index 46c3f274..6f0e5b51 100644 --- a/functions/boss.lua +++ b/functions/boss.lua @@ -31,6 +31,11 @@ do end end + --> return the EJ boss id + function _detalhes:GetEncounterIdFromBossIndex (mapid, index) + return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounter_ids and _detalhes.EncounterInformation [mapid].encounter_ids [index] + end + --> return the table which contain information about the start of a encounter function _detalhes:GetEncounterStartInfo (mapid, encounterid) local bossindex = _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounter_ids and _detalhes.EncounterInformation [mapid].encounter_ids [encounterid] @@ -83,6 +88,11 @@ do return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounters [bossindex] end + --> return a table with all names of boss enemies + function _detalhes:GetEncounterActors (mapid, bossindex) + + end + --> return a table with spells id of specified encounter function _detalhes:GetEncounterSpells (mapid, bossindex) local encounter = _detalhes:GetBossDetails (mapid, bossindex) @@ -108,6 +118,13 @@ do return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].boss_ids end + function _detalhes:InstanceIsRaid (mapid) + return _detalhes:InstanceisRaid (mapid) + end + function _detalhes:InstanceisRaid (mapid) + return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].is_raid + end + --> return a table with all encounter names present in raid instance function _detalhes:GetBossNames (mapid) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].boss_names @@ -150,6 +167,24 @@ do end end + --> return a list with names of adds and bosses + function _detalhes:GetEncounterActorsName (EJ_EncounterID) + --code snippet from wowpedia + local actors = {} + local stack, encounter, _, _, curSectionID = {}, EJ_GetEncounterInfo (EJ_EncounterID) + repeat + local title, description, depth, abilityIcon, displayInfo, siblingID, nextSectionID, filteredByDifficulty, link, startsOpen, flag1, flag2, flag3, flag4 = EJ_GetSectionInfo (curSectionID) + if (displayInfo ~= 0 and abilityIcon == "") then + actors [title] = {model = displayInfo, info = description} + end + table.insert (stack, siblingID) + table.insert (stack, nextSectionID) + curSectionID = table.remove (stack) + until not curSectionID + + return actors + end + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> core diff --git a/functions/classes.lua b/functions/classes.lua index e3a3278a..92c9579a 100644 --- a/functions/classes.lua +++ b/functions/classes.lua @@ -104,7 +104,13 @@ do return self.nome or actor.nome end function _detalhes:GetName (actor) - return actor.nome or self.nome + return self.nome or actor.nome + end + function _detalhes:GetDisplayName (actor) + return self.displayName or actor.displayName + end + function _detalhes:Class (actor) + return self.classe or actor.classe end end diff --git a/functions/loaddata.lua b/functions/loaddata.lua index bb3827e7..2b236695 100644 --- a/functions/loaddata.lua +++ b/functions/loaddata.lua @@ -288,6 +288,7 @@ function _detalhes:LoadConfig() --> custom _detalhes.custom = _detalhes_global.custom + _detalhes.refresh:r_atributo_custom() --> initialize parser _detalhes.capture_current = {} diff --git a/functions/playerclass.lua b/functions/playerclass.lua index 7e2b5ae3..c1451408 100644 --- a/functions/playerclass.lua +++ b/functions/playerclass.lua @@ -8,6 +8,7 @@ do local _ipairs = ipairs local _UnitClass = UnitClass local _select = select + local _unpack = unpack -- try get the class from actor name function _detalhes:GetClass (name) @@ -28,15 +29,46 @@ do end end + local CLASS_ICON_TCOORDS = CLASS_ICON_TCOORDS + function _detalhes:GetClassIcon (class) + + local c + + if (self.classe) then + c = self.classe + elseif (type (class) == "table" and class.classe) then + c = class.classe + elseif (type (class) == "string") then + c = class + else + c = "UNKNOW" + end + + if (c == "UNKNOW") then + return [[Interface\LFGFRAME\LFGROLE_BW]], 0.25, 0.5, 0, 1 + elseif (c == "UNGROUPPLAYER") then + return [[Interface\ICONS\Achievement_Character_Orc_Male]], 0, 1, 0, 1 + elseif (c == "PET") then + return [[Interface\AddOns\Details\images\classes_small]], 0.25, 0.49609375, 0.75, 1 + else + return [[Interface\AddOns\Details\images\classes_small]], _unpack (CLASS_ICON_TCOORDS [c]) + end + end + + local default_color = {1, 1, 1, 1} function _detalhes:GetClassColor (class) if (self.classe) then - return _detalhes.class_colors [class.classe] + return unpack (_detalhes.class_colors [self.classe] or default_color) elseif (type (class) == "table" and class.classe) then - return _detalhes.class_colors [class.classe] + return unpack (_detalhes.class_colors [class.classe] or default_color) + + elseif (type (class) == "string") then + return unpack (_detalhes.class_colors [class] or default_color) + else + unpack (default_color) end - return _detalhes.class_colors [class] end function _detalhes:GuessClass (t) diff --git a/functions/savedata.lua b/functions/savedata.lua index e8ffc154..70ab2a82 100644 --- a/functions/savedata.lua +++ b/functions/savedata.lua @@ -12,154 +12,9 @@ function _detalhes:SaveData() end function _detalhes:SaveDataOnLogout() - -if (true) then - return -end - -if (_detalhes.wipe_full_config) then - _detalhes_global = nil - _detalhes_database = nil - return -end - ---> cleanup tables - _detalhes:PrepareTablesForSave() - ---> get data - --- On Character - - --> nicktag cache - _detalhes_database.nick_tag_cache = _detalhes.nick_tag_cache - _detalhes_database.only_pvp_frags = _detalhes.only_pvp_frags - - --> minimap - _detalhes_database.minimap = _detalhes.minimap - - --> plugin data - _detalhes_database.plugin_database = _detalhes.plugin_database - - --> save instances (windows) - _detalhes_database.tabela_instancias = _detalhes.tabela_instancias - _detalhes_database.class_icons_small = _detalhes.class_icons_small - _detalhes_database.class_coords = _detalhes.class_coords - _detalhes_database.class_colors = _detalhes.class_colors - --> character info - _detalhes_database.character_data = _detalhes.character_data - --> options data - --window size - _detalhes_database.max_window_size = _detalhes.max_window_size - _detalhes_database.new_window_size = _detalhes.new_window_size - _detalhes_database.window_clamp = _detalhes.window_clamp - --> text sizes - _detalhes_database.font_sizes = _detalhes.font_sizes - _detalhes_database.ps_abbreviation = _detalhes.ps_abbreviation - -- max segments - _detalhes_database.segments_amount = _detalhes.segments_amount - _detalhes_database.segments_amount_to_save = _detalhes.segments_amount_to_save - _detalhes_database.instances_amount = _detalhes.instances_amount - _detalhes_database.clear_ungrouped = _detalhes.clear_ungrouped - _detalhes_database.clear_graphic = _detalhes.clear_graphic - -- row animation - _detalhes_database.use_row_animations = _detalhes.use_row_animations - _detalhes_database.animate_scroll = _detalhes.animate_scroll - _detalhes_database.use_scroll = _detalhes.use_scroll - -- death log - _detalhes_database.deadlog_limit = _detalhes.deadlog_limit - -- report - _detalhes_database.report_lines = _detalhes.report_lines - _detalhes_database.report_to_who = _detalhes.report_to_who - -- colors - _detalhes_database.default_bg_color = _detalhes.default_bg_color - _detalhes_database.default_bg_alpha = _detalhes.default_bg_alpha - -- fades - _detalhes_database.row_fade_in = _detalhes.row_fade_in - _detalhes_database.windows_fade_in = _detalhes.windows_fade_in - _detalhes_database.row_fade_out = _detalhes.row_fade_out - _detalhes_database.windows_fade_out = _detalhes.windows_fade_out - -- modes - _detalhes_database.solo = _detalhes.solo - _detalhes_database.tank = _detalhes.raid - -- switch - _detalhes_database.switch = {} - _detalhes_database.switch.slots = _detalhes.switch.slots - _detalhes_database.switch.table = _detalhes.switch.table - -- capture - _detalhes_database.capture_real = _detalhes.capture_real - _detalhes_database.cloud_capture = _detalhes.cloud_capture - _detalhes_database.minimum_combat_time = _detalhes.minimum_combat_time - --> combat data - -- segments table - _detalhes_database.tabela_historico = _detalhes.tabela_historico - -- combat id - _detalhes_database.combat_id = _detalhes.combat_id - -- modes - _detalhes_database.SoloTables = {} - _detalhes_database.RaidTables = {} - --> precisa pegar o nome do plugin - if (_detalhes.SoloTables.Mode) then - _detalhes_database.SoloTables.Mode = _detalhes.SoloTables.Mode - if (_detalhes.SoloTables.Plugins [_detalhes.SoloTables.Mode]) then - _detalhes_database.SoloTables.LastSelected = _detalhes.SoloTables.Plugins [_detalhes.SoloTables.Mode].real_name - end - end - if (_detalhes.RaidTables.Mode) then - _detalhes_database.RaidTables.Mode = _detalhes.RaidTables.Mode - if (_detalhes.RaidTables.Plugins [_detalhes.RaidTables.Mode]) then - _detalhes_database.RaidTables.LastSelected = _detalhes.RaidTables.Plugins [_detalhes.RaidTables.Mode].real_name - end - end - --> buff data - _detalhes.Buffs:SaveBuffs() - - --> customs - _detalhes_database.custom = _detalhes.custom - - --> version - _detalhes_database.last_realversion = _detalhes.realversion --> core number - _detalhes_database.last_version = _detalhes.userversion --> version - --- On Account - - _detalhes_global = _detalhes_global or {} - - --> profiles - _detalhes_global.__profiiles = _detalhes.__profiiles - - --> skins - _detalhes_global.savedStyles = _detalhes.savedStyles - _detalhes_global.standard_skin = _detalhes.standard_skin - _detalhes_global.got_first_run = true - --max segments - _detalhes_global.segments_amount = _detalhes.segments_amount - _detalhes_global.segments_amount_to_save = _detalhes.segments_amount_to_save - _detalhes_global.segments_panic_mode = _detalhes.segments_panic_mode - -- animations - _detalhes_global.use_row_animations = _detalhes.use_row_animations - _detalhes_global.animate_scroll = _detalhes.animate_scroll - -- scrollbar - _detalhes_global.use_scroll = _detalhes.use_scroll - -- core - _detalhes_global.clear_ungrouped = _detalhes.clear_ungrouped - _detalhes_global.update_speed = _detalhes.update_speed - _detalhes_global.time_type = _detalhes.time_type - _detalhes_global.memory_threshold = _detalhes.memory_threshold - _detalhes_global.memory_ram = _detalhes.memory_ram - _detalhes_global.remove_realm_from_name = _detalhes.remove_realm_from_name - _detalhes_global.trash_concatenate = _detalhes.trash_concatenate - _detalhes_global.trash_auto_remove = _detalhes.trash_auto_remove - - _detalhes_global.SpellOverwriteUser = _detalhes.SpellOverwriteUser - - --tutorial - _detalhes_global.tutorial = _detalhes.tutorial - - --profiles - _detalhes_global.__profiiles = _detalhes.__profiiles - - return true - + if (true) then + return + end end local force_reset = function() diff --git a/functions/slash.lua b/functions/slash.lua index a9243b3d..cf1cd466 100644 --- a/functions/slash.lua +++ b/functions/slash.lua @@ -201,6 +201,55 @@ function SlashCmdList.DETAILS (msg, editbox) --instance.baseframe:SetPoint ("CENTER", UIParent, "CENTER", 300, 100) instance.baseframe:SetPoint ("left", DetailsWelcomeWindow, "right", 10, 0) + elseif (msg == "model") then + local frame = CreateFrame ("PlayerModel"); + frame:SetPoint("center",UIParent,"center"); + frame:SetHeight(600); + frame:SetWidth(300); + frame:SetDisplayInfo (49585); + + elseif (msg == "ej2") then + + --[[ get the EJ_ raid id + local wantRaids = true -- set false to get 5-man list + for i=1,1000 do + instanceID,name,description,bgImage,buttonImage,loreImage, dungeonAreaMapID, link = EJ_GetInstanceByIndex(i,wantRaids) + if not instanceID then break end + DEFAULT_CHAT_FRAME:AddMessage( instanceID.." "..name ,1,0.7,0.5) + end + --]] + + local iid=362 + + for i=1, 100 do + local name, description, encounterID, rootSectionID, link = EJ_GetEncounterInfoByIndex (i, iid) + + if not encounterID then break end + local msg = encounterID .. " , " .. name .. ", ".. rootSectionID.. ", "..link + DEFAULT_CHAT_FRAME:AddMessage(msg, 1,0.7,0.5) + end + + elseif (msg == "ej") then + function PrintAllEncounterSections(encounterID, difficultyID) + EJ_SetDifficulty(difficultyID) + local stack, encounter, _, _, curSectionID = {}, EJ_GetEncounterInfo(encounterID) + print(stack, encounter, _, _, curSectionID) + repeat + local title, desc, depth, icon, model, siblingID, nextSectionID, filteredByDifficulty, link, _, f1, f2, f3, f4 = EJ_GetSectionInfo(curSectionID) + if not filteredByDifficulty then + --print((" "):rep(depth) .. link .. ": " .. desc) + --npcs nao tem icone e possuel modelo diferente de zero. + --spells tem icone e possuel modelo = zero + print (title, icon, model, siblingID) + end + table.insert(stack, siblingID) + table.insert(stack, nextSectionID) + curSectionID = table.remove(stack) + until not curSectionID + end + + -- Print everything in 25-man Normal Madness of Deathwing: + PrintAllEncounterSections (869, 4) elseif (msg == "time") then print ("GetTime()", GetTime()) diff --git a/gumps/janela_custom.lua b/gumps/janela_custom.lua index cf318a9d..9e07ffe7 100644 --- a/gumps/janela_custom.lua +++ b/gumps/janela_custom.lua @@ -1,940 +1,1623 @@ -local _detalhes = _G._detalhes +--> custom window -local AceComm = LibStub ("AceComm-3.0") -local AceSerializer = LibStub ("AceSerializer-3.0") - -local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) - -local gump = _detalhes.gump -local _ -local atributos = _detalhes.atributos -local sub_atributos = _detalhes.sub_atributos ---lua locals -local _cstr = string.format -local _math_ceil = math.ceil -local _math_floor = math.floor -local _ipairs = ipairs -local _pairs = pairs -local _string_lower = string.lower -local _table_sort = table.sort -local _table_insert = table.insert -local _unpack = unpack - ---api locals -local _GetSpellInfo = _detalhes.getspellinfo -local _CreateFrame = CreateFrame -local _GetTime = GetTime -local _GetCursorPosition = GetCursorPosition -local _GameTooltip = GameTooltip -local _UIParent = UIParent -local _GetScreenWidth = GetScreenWidth -local _GetScreenHeight = GetScreenHeight -local _IsAltKeyDown = IsAltKeyDown -local _IsShiftKeyDown = IsShiftKeyDown -local _IsControlKeyDown = IsControlKeyDown - -local CLASS_ICON_TCOORDS = _G.CLASS_ICON_TCOORDS - -local class_type_dano = _detalhes.atributos.dano -local class_type_misc = _detalhes.atributos.misc -local tabela_do_combate - -local master_container - -local function CreateCustomWindow() + local _detalhes = _G._detalhes + local gump = _detalhes.gump + local _ - local gump_fundo_backdrop = { - bgFile = "Interface\\AddOns\\Details\\images\\background", - edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", - tile = true, tileSize = 16, edgeSize = 4, - insets = {left = 0, right = 0, top = 0, bottom = 0}} + local AceComm = LibStub ("AceComm-3.0") + local AceSerializer = LibStub ("AceSerializer-3.0") + local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) - local frame = CreateFrame ("frame", "DetailsCustomPanel", UIParent) - frame:SetPoint ("center", UIParent, "center", 100, -100) - frame:SetWidth (512) - frame:SetHeight (183) - frame:EnableMouse (true) - frame:SetMovable (true) - frame:SetFrameLevel (1) - - local frameD = CreateFrame ("frame", "DetailsCustomPanelDisable", frame) - frameD:SetPoint ("center", frame, "center") - frameD:SetWidth (512) - frameD:SetHeight (183) - frameD:EnableMouse (true) - frameD:SetFrameStrata ("fullscreen") - frameD:SetBackdrop ({ - bgFile = "Interface\\AddOns\\Details\\images\\background", - edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", - tile = true, tileSize = 16, edgeSize = 4}) - frameD:SetBackdropColor (0, 0, 0, .8) - frameD.string = frameD:CreateFontString (nil, "overlay", "GameFontNormal") - frameD.string:SetPoint ("center", frameD, "center") - frameD.string:SetText ("There is a problem connecting some nether tubes\nOur ethereal engineers are already working to fix this issue,\n\nTo avoid mana wyrms proliferation, this panel is disabled for now.\n(Press Escape To Close)") - --frameD:Hide() - - frame.fundo = frame:CreateTexture (nil, "border") - frame.fundo:SetTexture ("Interface\\AddOns\\Details\\images\\custom_bg") - frame.fundo:SetPoint ("topleft", frame, "topleft") - - frame.move = gump:NewDetailsButton (frame, frame, _, function() end, nil, nil, 1, 1, "", "", "", "", nil, "DetailsCustomPanelMoveFrame") - frame.move:SetPoint ("topleft", frame, "topleft") - frame.move:SetPoint ("bottomright", frame, "bottomright") - frame.move:SetFrameLevel (frame:GetFrameLevel()+1) - - --> botão de fechar - frame.fechar = _CreateFrame ("Button", nil, frame, "UIPanelCloseButton") - frame.fechar:SetWidth (32) - frame.fechar:SetHeight (32) - frame.fechar:SetPoint ("TOPRIGHT", frame, "TOPRIGHT", -1, -8) - frame.fechar:SetText ("X") - frame.fechar:SetFrameLevel (frame:GetFrameLevel()+2) - - frame.fechar:SetScript ("OnClick", function() - _detalhes:CloseCustomWindow() - end) - - frame:SetScript ("OnHide", function() - _detalhes:CloseCustomWindow() - end) - - --> help button - local helpButton = CreateFrame ("button", "DetailsCustomPanelHelpButton", frame, "MainHelpPlateButton") - helpButton:SetWidth (36) - helpButton:SetHeight (36) - helpButton.I:SetWidth (25) - helpButton.I:SetHeight (25) - helpButton.Ring:SetWidth (36) - helpButton.Ring:SetHeight (36) - helpButton.Ring:SetPoint ("center", 7, -7) - helpButton:SetPoint ("topright", frame, "topright", -20, -7) - helpButton:SetFrameLevel (frame.fechar:GetFrameLevel()) +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> local pointers - local customHelp = { - FramePos = {x = 0, y = -30}, - FrameSize = {width = 512, height = 120}, - - [1] ={HighLightBox = {x = 15, y = -39, width = 100, height = 70}, - ButtonPos = { x = 43, y = -50}, - ToolTipDir = "LEFT", - ToolTipText = Loc ["STRING_CUSTOM_HELP1"] - }, - [2] ={HighLightBox = {x = 120, y = -9, width = 170, height = 95}, - ButtonPos = { x = 182, y = -30}, - ToolTipDir = "RIGHT", - ToolTipText = Loc ["STRING_CUSTOM_HELP2"] - }, - [3] ={HighLightBox = {x = 295, y = -9, width = 170, height = 75}, - ButtonPos = { x = 363, y = -25}, - ToolTipDir = "RIGHT", - ToolTipText = Loc ["STRING_CUSTOM_HELP3"] - }, - [4] ={HighLightBox = {x = 470, y = -25, width = 30, height = 25}, - ButtonPos = { x = 485, y = -15}, - ToolTipDir = "RIGHT", - ToolTipText = Loc ["STRING_CUSTOM_HELP4"] - } - } - helpButton:SetScript ("OnClick", function() - if (not HelpPlate_IsShowing (customHelp)) then - HelpPlate_Show (customHelp, frame, helpButton, true) - else - HelpPlate_Hide (true) + local _cstr = string.format --lua local + local _math_ceil = math.ceil --lua local + local _math_floor = math.floor --lua local + local _ipairs = ipairs --lua local + local _pairs = pairs --lua local + local _string_lower = string.lower --lua local + local _table_sort = table.sort --lua local + local _table_insert = table.insert --lua local + local _unpack = unpack --lua local + local _setmetatable = setmetatable --lua local + + local _GetSpellInfo = _detalhes.getspellinfo --api local + local _CreateFrame = CreateFrame --api local + local _GetTime = GetTime --api local + local _GetCursorPosition = GetCursorPosition --api local + local _GameTooltip = GameTooltip --api local + local _UIParent = UIParent --api local + local _GetScreenWidth = GetScreenWidth --api local + local _GetScreenHeight = GetScreenHeight --api local + local _IsAltKeyDown = IsAltKeyDown --api local + local _IsShiftKeyDown = IsShiftKeyDown --api local + local _IsControlKeyDown = IsControlKeyDown --api local + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> constants + + local atributos = _detalhes.atributos + local sub_atributos = _detalhes.sub_atributos + + local CLASS_ICON_TCOORDS = _G.CLASS_ICON_TCOORDS + + local class_type_dano = _detalhes.atributos.dano + local class_type_misc = _detalhes.atributos.misc + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> create the window + + function _detalhes:CloseCustomDisplayWindow() + + --> cancel editing or creation + if (DetailsCustomPanel.CodeEditing) then + DetailsCustomPanel:CancelFunc() end - end) - - --> titulo - gump:NewLabel (frame, frame, nil, "titulo", "Custom Display", "GameFontHighlightLeft", 12, {227/255, 186/255, 4/255}) - frame.titulo:SetPoint ("center", frame, "center") - frame.titulo:SetPoint ("top", frame, "top", 0, -18) - - --> icone no canto esquerdo superior - frame.classe_icone = frame:CreateTexture (nil, "BACKGROUND") - frame.classe_icone:SetPoint ("TOPLEFT", frame, "TOPLEFT", 4, 0) - frame.classe_icone:SetWidth (64) - frame.classe_icone:SetHeight (64) - frame.classe_icone:SetDrawLayer ("BACKGROUND", 1) - frame.classe_icone:SetTexture ("Interface\\AddOns\\Details\\images\\classes_plus") - frame.classe_icone:SetTexCoord (0, 0.25, 0.25, 0.5) - - -------------------------------------------------------------------------------------------------------------------------------------------------------- - - frame.atributo = nil - frame.sub_atributo = nil - - local SubMenu = function (atributo) - frame.sub_atributo = atributo - - end - - - local LeftButtons = frame.fechar:CreateTexture (nil, "overlay") - LeftButtons:SetWidth (56) - LeftButtons:SetHeight (70) - LeftButtons:SetPoint ("left", frame, "left", 15, -29) - LeftButtons:SetTexture ("Interface\\Glues\\CHARACTERCREATE\\AlternateForm") - LeftButtons:SetTexCoord (0, 1, 0, 0.62890625) - LeftButtons:SetDrawLayer ("overlay", 4) - - --> botão de deletar um custom - local DeleteButton = gump:NewDetailsButton (frame, frame, _, function()end, nil, nil, 60, 15, "", "", "", "", nil, "DetailsCustomPanelDeleteButton") - DeleteButton.text:SetText (Loc ["STRING_CUSTOM_REMOVE"]) - DeleteButton.text:SetJustifyH ("left") - DeleteButton.text:SetPoint ("left", DeleteButton, "left", 0, -1) - DeleteButton:SetPoint ("topleft", LeftButtons, "topleft", 34, -10) - DeleteButton:SetFrameLevel (frame:GetFrameLevel()+2) - DeleteButton:InstallCustomTexture (_, {x1 = -20, x2 = 0, y1 = -2, y2 = -2}) - --DeleteButton. - - local removeTexture = frame.fechar:CreateTexture (nil, "overlay") - removeTexture:SetWidth (23) - removeTexture:SetHeight (23) - removeTexture:SetTexture ("Interface\\ICONS\\Spell_BrokenHeart") - removeTexture:SetTexCoord (5/64, 60/64, 4/64, 62/64) - removeTexture:SetPoint ("topleft", LeftButtons, "topleft", 6, -8) - removeTexture:SetDrawLayer ("overlay", 3) - - --> botão de dar broadcast em um custom - local BroadcastButton = gump:NewDetailsButton (frame, frame, _, function()end, nil, nil, 60, 15, "", "", "", "", nil, "DetailsCustomPanelBroadcastButton") - BroadcastButton.text:SetText (Loc ["STRING_CUSTOM_BROADCAST"]) - BroadcastButton.text:SetJustifyH ("left") - BroadcastButton.text:SetPoint ("left", BroadcastButton, "left", 0, -1) - BroadcastButton:SetPoint ("topleft", LeftButtons, "topleft", 34, -42) - BroadcastButton:SetFrameLevel (frame:GetFrameLevel()+2) - BroadcastButton:InstallCustomTexture (_, {x1 = -20, x2 = 0, y1 = -2, y2 = -2}) - - local broadcastTexture = frame.fechar:CreateTexture (nil, "overlay") - broadcastTexture:SetWidth (23) - broadcastTexture:SetHeight (23) - broadcastTexture:SetTexture ("Interface\\ICONS\\Ability_Warrior_RallyingCry") - broadcastTexture:SetTexCoord (5/64, 60/64, 4/64, 62/64) - broadcastTexture:SetPoint ("topleft", LeftButtons, "topleft", 6, -40) - broadcastTexture:SetDrawLayer ("overlay", 3) - - - local fundoBrilha = frame:CreateTexture (nil, "overlay") - fundoBrilha:SetWidth (140) - fundoBrilha:SetHeight (36) - fundoBrilha:SetTexture ("Interface\\PetBattles\\Weather-Sunlight") - fundoBrilha:SetTexCoord (.3, 1, 0, 1) - - local MainMenu = function (atributo) - - frame.atributo = atributo - frame.sub_atributo = 1 - - fundoBrilha:SetPoint ("left", frame.MainMenu [atributo].icon , "right", -20, -10) - - frame.selectAttributeDropdown:Select (1, true) - end - - frame.MainMenu = {} - frame.SubMenu = {} - - do - - local x = 140 - local x2 = 170 - - local y = -17 - - local OnEnterHook = function (button) - button.text:SetTextColor (1, 1, 1) + if (DetailsCustomPanel.IsEditing) then + DetailsCustomPanel:CancelFunc() end - local OnLeaveHook = function (button) - button.text:SetTextColor (button.textColor.r, button.textColor.g, button.textColor.b ) - end - - --> 4 atributos principais + DetailsCustomPanel:Reset() - local half = 0.00048828125 - local size = 0.03125 - - local att_names = {Loc ["STRING_CUSTOM_ATT1"], Loc ["STRING_CUSTOM_ATT2"], Loc ["STRING_CUSTOM_ATT3"], Loc ["STRING_CUSTOM_ATT4"]} - - for i = 1, 4 do - - local button = gump:NewDetailsButton (frame, frame, _, MainMenu, i, nil, 120, 15, "", "", "", "", nil, "DetailsCustomPanelAttributeButton"..i) - button.MouseOnEnterHook = OnEnterHook - button.MouseOnLeaveHook = OnLeaveHook - - button.textura = button:CreateTexture (nil, "overlay") - button.textura:SetPoint ("right", button, "left", 60, 0) - button.icon = button:CreateTexture (nil, "background") - button.icon:SetPoint ("center", button.textura, "center", 2, 0) - button.icon:SetTexture ("Interface\\AddOns\\Details\\images\\skins\\default_skin") - button.icon:SetWidth (22) - button.icon:SetHeight (22) - - button.icon:SetTexCoord ( (0.03125 * (i-1)) + half, (0.03125 * i) - half, 0.35693359375, 0.38720703125) - - if (i == 1) then - button.textura:SetTexture ("Interface\\ExtraButton\\ChampionLight") - --button.icon:SetTexCoord (32/256 * (1-1), 32/256 * 1, 0, 1) - - elseif (i == 2) then - button.textura:SetTexture ("Interface\\ExtraButton\\Ysera") - --button.icon:SetTexCoord (32/256 * (2-1), 32/256 * 2, 0, 1) - --button.icon:SetPoint ("center", button.textura, "center", 3, 0) - - elseif (i == 3) then - button.textura:SetTexture ("Interface\\ExtraButton\\FengShroud") - --button.icon:SetTexCoord (32/256 * (3-1), 32/256 * 3, 0, 1) - - elseif (i == 4) then - button.textura:SetTexture ("Interface\\ExtraButton\\BrewmoonKeg") - --button.icon:SetTexCoord (32/256 * (4-1), 32/256 * 4, 0, 1) - - end - - button.textura:SetWidth (76) - button.textura:SetHeight (40) - button:SetPoint ("topleft", frame, "topleft", x, i*-33 + (y)) - button.text:SetText (att_names [i]) - button.text:SetPoint ("left", button, "left", 65, 0) - button:SetFrameLevel (frame:GetFrameLevel()+2) - - frame.MainMenu [i] = button - end - - frame.atributo = 1 - frame.sub_atributo = 1 - fundoBrilha:SetPoint ("left", frame.MainMenu [1].icon , "right", -20, -10) - - --> 5 atributos secundarios - - --[[ - for i = 1, 5 do - local button = gump:NewDetailsButton (frame, frame, _, SubMenu, i, nil, 60, 15, "", "", "", "") - button:SetPoint ("topleft", frame, "topleft", x2, i*-15) - button.text:SetPoint ("left", button, "left", 5, 0) - button.text:SetText ("sub menu "..i) - button:SetFrameLevel (frame:GetFrameLevel()+2) - frame.SubMenu [i] = button - end - --]] + --> hide the frame + _G.DetailsCustomPanel:Hide() end - -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---> Edit Boxes - - local xStart = 290 - local WidthMax = 220 ---> labels - local name_text = gump:NewLabel (frame, nil, "$parentNameBoxLabel", nil, Loc ["STRING_CUSTOM_NAME"], "GameFontHighlightLeft", 11) - local spell_text = gump:NewLabel (frame, nil, "$parentSpellBoxLabel", nil, Loc ["STRING_CUSTOM_SPELLID"]) - local source_text = gump:NewLabel (frame, nil, "$parentSourceBoxLabel", nil, Loc ["STRING_CUSTOM_SOURCE"]) - local target_text = gump:NewLabel (frame, nil, "$parentTargetBoxLabel", nil, Loc ["STRING_CUSTOM_TARGET"]) - local subattribute_text = gump:NewLabel (frame, nil, "$parentSubAttributeBoxLabel", nil, Loc ["STRING_CUSTOM_ATTRIBUTE"]) - - name_text:SetPoint ("topleft", frame, "topleft", xStart, -45) - subattribute_text:SetPoint ("topleft", frame, "topleft", xStart, -65) - source_text:SetPoint ("topleft", frame, "topleft", xStart, -85) - target_text:SetPoint ("topleft", frame, "topleft", xStart, -105) - spell_text:SetPoint ("topleft", frame, "topleft", xStart, -125) + function _detalhes:OpenCustomDisplayWindow() ---> name entry - local name_entry = gump:NewTextEntry (frame, frame, "$parentNameEntry", "TextMyNameEntry", 140, 20) - name_entry:SetFrameLevel (frame:GetFrameLevel()+2) - name_entry:SetPoint ("left", name_text, "right", 2, 0) - ---> sub attribute - - local on_choose_attribute = function (_, _, attribute_number) - frame.sub_atributo = attribute_number - end - local build_attribute_menu = function() - local menu = {} - - local attributes = _detalhes.sub_atributos [frame.atributo].lista - local icons = _detalhes.sub_atributos [frame.atributo].icones - - for index, attribute_name in ipairs (attributes) do - menu [#menu+1] = {value = index, label = attribute_name, onclick = on_choose_attribute, icon = icons [index] [1], texcoord = icons [index] [2]} - end - - return menu - end + if (not _G.DetailsCustomPanel) then - local select_attribute = gump:NewDropDown (frame, frame, "$parentAttributeDropdown", "selectAttributeDropdown", 140, 20, build_attribute_menu) - select_attribute:SetFrameLevel (frame:GetFrameLevel()+2) - select_attribute:SetPoint ("left", subattribute_text, "right", 2, 0) + local GameCooltip = GameCooltip ---> spell id entry - local SpellIDSelected = function (param1, param2, texto, editbox) - local _ThisSpellName, _, _ThisSpellIcon = _GetSpellInfo (tonumber (texto)) - if (_ThisSpellName) then - frame.IconTexture = _ThisSpellIcon - frame.icon:SetTexture (frame.IconTexture) + --> main frame + local custom_window = _CreateFrame ("frame", "DetailsCustomPanel", UIParent) + custom_window:SetPoint ("center", UIParent, "center") + custom_window:SetSize (850, 370) + custom_window:EnableMouse (true) + custom_window:SetMovable (true) + custom_window:SetScript ("OnMouseDown", function (self) + if (not self.moving) then + self.moving = true + self:StartMoving() + end + end) + custom_window:SetScript ("OnMouseUp", function (self) + if (self.moving) then + self.moving = false + self:StopMovingOrSizing() + end + end) + custom_window:SetScript ("OnShow", function() + GameCooltip:Hide() + end) - if (frame ["TextMyNameEntry"].text == "") then - frame ["TextMyNameEntry"].text = _ThisSpellName - frame ["TextMyNameEntry"]:SetText (_ThisSpellName) - end - end - end - - local spellid_entry = gump:NewSpellEntry (frame, SpellIDSelected, 140, 20, nil, nil, "TextSpellIDEntry", "$parentSpellidEntry") - spellid_entry:SetPoint ("left", spell_text, "right", 2, 0) - frame ["TextSpellIDEntry"]:SetFrameLevel (frame:GetFrameLevel()+2) - - local frameEncounterSkill = CreateFrame ("frame", nil, frame) - frameEncounterSkill:SetPoint ("left", frame ["TextSpellIDEntry"].widget, "right") - frameEncounterSkill:SetWidth (20) - frameEncounterSkill:SetHeight (20) - frameEncounterSkill:SetFrameLevel (frame:GetFrameLevel()+2) - local frameEncounterSkillImage = frameEncounterSkill:CreateTexture (nil, "overlay") - frameEncounterSkillImage:SetPoint ("center", frameEncounterSkill) - frameEncounterSkillImage:SetTexture ("Interface\\Buttons\\UI-MicroButton-Raid-Up") - frameEncounterSkillImage:SetTexCoord (0.046875, 0.90625, 0.40625, 0.953125) - frameEncounterSkillImage:SetWidth (20) - frameEncounterSkillImage:SetHeight (16) - - local GameCooltip = GameCooltip - - local spellsFrame = gump:NewPanel (frame, _, "DetailsCustomSpellsFrame", "spellsFrame", 1, 1) - spellsFrame:SetPoint ("bottomleft", frame, "topleft", 62, -14) - spellsFrame:Hide() - - local selectedEncounterSpell = function (spellId) - local nome_magia, _, icone_magia = _GetSpellInfo (spellId) - frame ["TextMyNameEntry"]:SetText (nome_magia) - frame ["TextMyNameEntry"]:PressEnter() - frame ["TextSpellIDEntry"]:SetText (spellId) - frame ["TextSpellIDEntry"]:PressEnter() - frame ["TextSourceEntry"]:SetText ("[all]") - frame ["TextSourceEntry"]:PressEnter() - frame.icon:SetTexture (icone_magia) - spellsFrame:Hide() - end - - local spellsFrameButtons = {} - - local buttonMouseOver = function (button) - button.MyObject.image:SetBlendMode ("ADD") - button.MyObject.line:SetBlendMode ("ADD") - button.MyObject.label:SetTextColor (1, 1, 1, 1) - local OnEnterColors = button:GetParent().Gradient.OnEnter - local _r, _g, _b, _a = button:GetParent():GetBackdropColor() - gump:GradientEffect (button:GetParent(), "frame", _r, _g, _b, _a, OnEnterColors[1], OnEnterColors[2], OnEnterColors[3], OnEnterColors[4], .3) - end - local buttonMouseOut = function (button) - button.MyObject.image:SetBlendMode ("BLEND") - button.MyObject.line:SetBlendMode ("BLEND") - button.MyObject.label:SetTextColor (.8, .8, .8, .8) - local _r, _g, _b, _a = button:GetParent():GetBackdropColor() - if (_r) then - local OnLeaveColors = button:GetParent().Gradient.OnLeave - gump:GradientEffect (button:GetParent(), "frame", _r, _g, _b, _a, OnLeaveColors[1], OnLeaveColors[2], OnLeaveColors[3], OnLeaveColors[4], .3) - end - end - - local EncounterSelect = function (_, _, instanceId, bossIndex) - - spellsFrame:Show() - - local spells = _detalhes:GetEncounterSpells (instanceId, bossIndex) - - local x = 10 - local y = 10 - local i = 1 - - for spell, _ in pairs (spells) do - - local thisButton = spellsFrameButtons [i] + tinsert (UISpecialFrames, "DetailsCustomPanel") - if (not thisButton) then - thisButton = gump:NewButton (spellsFrame.frame, spellsFrame.frame, "DetailsCustomSpellsFrameButton"..i, "button"..i, 80, 20, selectedEncounterSpell) - thisButton:SetPoint ("topleft", "DetailsCustomSpellsFrame", "topleft", x, -y) - local t = gump:NewImage (thisButton, nil, 20, 20, nil, nil, "image", "DetailsCustomEncounterImageButton"..i) - t:SetPoint ("left", thisButton) - thisButton:SetHook ("OnEnter", buttonMouseOver) - thisButton:SetHook ("OnLeave", buttonMouseOut) + --> background texture + custom_window.background = custom_window:CreateTexture (nil, "border") + custom_window.background:SetTexture ([[Interface\AddOns\Details\images\custom_bg]]) + custom_window.background:SetPoint ("topleft", custom_window, "topleft") + --custom_window.background:Hide() + + local bigdog = gump:NewImage (custom_window, [[Interface\MainMenuBar\UI-MainMenuBar-EndCap-Human]], 180*0.7, 200*0.7, "overlay", {0, 1, 0, 1}, "backgroundBigDog", "$parentBackgroundBigDog") + bigdog:SetPoint ("bottomleft", custom_window, "bottomleft", 15, 9) + bigdog:SetAlpha (0.5) - local text = gump:NewLabel (thisButton, nil, "DetailsCustomSpellsFrameButton"..i.."Label", "label", "Spell", nil, 9.5, {.8, .8, .8, .8}) - text:SetPoint ("left", t.image, "right", 2, 0) - text:SetWidth (73) - text:SetHeight (10) + --> close button + custom_window.close = _CreateFrame ("button", nil, custom_window, "UIPanelCloseButton") + custom_window.close:SetSize (32, 32) + custom_window.close:SetPoint ("topright", custom_window, "topright", 5, -8) + custom_window.close:SetFrameLevel (custom_window:GetFrameLevel()+2) + custom_window.close:SetScript ("OnClick", function() + _detalhes:CloseCustomDisplayWindow() + end) + custom_window.close:SetScript ("OnHide", function() + _detalhes:CloseCustomDisplayWindow() + end) + + --> title + custom_window.title = gump:NewLabel (custom_window, nil, nil, nil, "Custom Display", "GameFontHighlightLeft", 12, {227/255, 186/255, 4/255}) + custom_window.title:SetPoint ("center", custom_window, "center") + custom_window.title:SetPoint ("top", custom_window, "top", 0, -18) + + --> icon + custom_window.icon = custom_window:CreateTexture (nil, "background") + custom_window.icon:SetPoint ("topleft", custom_window, "topleft", 4, 0) + custom_window.icon:SetSize (64, 64) + custom_window.icon:SetDrawLayer ("background", 1) + custom_window.icon:SetTexture ([[Interface\AddOns\Details\images\classes_plus]]) + custom_window.icon:SetTexCoord (0, 0.25, 0.25, 0.5) + + DetailsCustomPanel.BoxType = 1 + DetailsCustomPanel.IsEditing = false + DetailsCustomPanel.CodeEditing = false + DetailsCustomPanel.current_attribute = "damagedone" + + DetailsCustomPanel.code1_default = [[ + --get the parameters passed + local combat, instance_container, instance = ... + --declade the values to return + local total, top, amount = 0, 0, 0 + + --do the loop + + --loop end + + --return the values + return total, top, amount + ]] + DetailsCustomPanel.code1 = DetailsCustomPanel.code1_default + + DetailsCustomPanel.code2_default = [[ + --get the parameters passed + local actor, combat, instance = ... + + --get the cooltip object (we dont use the convencional GameTooltip here) + local GameCooltip = GameCooltip + + --Cooltip code + ]] + DetailsCustomPanel.code2 = DetailsCustomPanel.code2_default + + function DetailsCustomPanel:Reset() + self.name_field:SetText ("") + self.icon_image:SetTexture ([[Interface\ICONS\TEMP]]) + self.desc_field:SetText ("") - local border = gump:NewImage (thisButton, "Interface\\SPELLBOOK\\Spellbook-Parts", 40, 38, nil, nil, "border", "DetailsCustomEncounterBorderButton"..i) - border:SetTexCoord (0.00390625, 0.27734375, 0.44140625,0.69531250) - border:SetDrawLayer ("background") - border:SetPoint ("topleft", thisButton.button, "topleft", -9, 9) + self.author_field:SetText (UnitName ("player") .. "-" .. GetRealmName()) + self.author_field:Enable() - local line = gump:NewImage (thisButton, "Interface\\SPELLBOOK\\Spellbook-Parts", 84, 25, nil, nil, "line", "DetailsCustomEncounterLineButton"..i) - line:SetTexCoord (0.31250000, 0.96484375, 0.37109375, 0.52343750) - line:SetDrawLayer ("background") - line:SetPoint ("left", thisButton.button, "right", -60, -3) + self.source_dropdown:Select (1, true) + self.source_field:SetText ("") - table.insert (spellsFrameButtons, #spellsFrameButtons+1, thisButton) + self.target_dropdown:Select (1, true) + self.target_field:SetText ("") + + self.spellid_entry:SetText ("") + + DetailsCustomPanel.code1 = DetailsCustomPanel.code1_default + DetailsCustomPanel.code2 = DetailsCustomPanel.code2_default + + DetailsCustomPanel.current_attribute = "damagedone" + DetailsCustomPanelAttributeMenu1:Click() end - y = y + 20 - if (y >= 110) then - y = 10 - x = x + 100 - end - - local nome_magia, _, icone_magia = _GetSpellInfo (spell) - thisButton.image:SetTexture (icone_magia) - thisButton.label:SetText (nome_magia) - thisButton:SetClickFunction (selectedEncounterSpell, spell) - thisButton:Show() - i = i + 1 - end - - for maxIndex = i, #spellsFrameButtons do - spellsFrameButtons [maxIndex]:Hide() - end - - i = i-1 - spellsFrame:SetSize (math.ceil (i/5)*110, math.min (i*20 + 10, 120)) - - end - - local BuildEncounterMenu = function() - - GameCooltip:Reset() - GameCooltip:SetType ("menu") - GameCooltip:SetOwner (frameEncounterSkill) - - for instanceId, instanceTable in pairs (_detalhes.EncounterInformation) do - - GameCooltip:AddLine (instanceTable.name, _, 1, "white") - GameCooltip:AddIcon (instanceTable.icon, 1, 1, 64, 32) - - for index, encounterName in ipairs (instanceTable.boss_names) do - GameCooltip:AddMenu (2, EncounterSelect, instanceId, index, nil, encounterName, nil, true) - local L, R, T, B, Texture = _detalhes:GetBossIcon (instanceId, index) - GameCooltip:AddIcon (Texture, 2, 1, 20, 20, L, R, T, B) - end - end - - GameCooltip:SetOption ("HeightAnchorMod", -10) - GameCooltip:ShowCooltip() - end - - frameEncounterSkill:SetScript ("OnEnter", function() - frameEncounterSkillImage:SetBlendMode ("ADD") - BuildEncounterMenu() - end) - - frameEncounterSkill:SetScript ("OnLeave", function() - frameEncounterSkillImage:SetBlendMode ("BLEND") - end) - - local _string_lower = string.lower - local _string_sub = string.sub - ---> source - local SourceSelected = function (param1, param2, texto, editbox) end - - local source_entry = gump:NewTextEntry (frame, frame, "$parentSourceEntry", "TextSourceEntry", 140, 20) - - frame ["TextSourceEntry"]:SetFrameLevel (frame:GetFrameLevel()+2) - frame ["TextSourceEntry"]:SetPoint ("left", source_text, "right", 2, 0) - - frame ["TextSourceEntry"].InputHook = function() - local texto = frame ["TextSourceEntry"]:GetText() - texto:gsub ("[raid]", "|cFFFF00FF|r[raid]") - texto:gsub ("[all]", "|cFF0000FF|r[all]") - texto:gsub ("[player]", "|cFFFF0000|r[player]") - frame ["TextSourceEntry"]:SetText (texto) - end - frame ["TextSourceEntry"].EnterHook = function() - local texto = frame ["TextSourceEntry"]:GetText() - if (texto:find ("%[raid%]")) then - frame ["TextSourceEntry"]:SetText ("[raid]") - elseif (texto:find ("%[all%]")) then - frame ["TextSourceEntry"]:SetText ("[all]") - elseif (texto:find ("%[player%]")) then - frame ["TextSourceEntry"]:SetText ("[player]") - end - end - ---> target - - local target_entry = gump:NewTextEntry (frame, frame, "$parentTargetEntry", "TextActorNameEntry", 140, 20) - frame ["TextActorNameEntry"]:SetFrameLevel (frame:GetFrameLevel()+2) - frame ["TextActorNameEntry"]:SetPoint ("left", target_text, "right", 2, 0) - - --> Tab Order - frame ["TextMyNameEntry"]:SetNext (frame ["TextSourceEntry"]) - frame ["TextSourceEntry"]:SetNext (frame ["TextActorNameEntry"]) - frame ["TextActorNameEntry"]:SetNext (frame ["TextSpellIDEntry"]) - frame ["TextSpellIDEntry"]:SetNext (frame ["TextMyNameEntry"]) - - --> Tooltips - --> localize-me - frame ["TextMyNameEntry"].tooltip = Loc ["STRING_CUSTOM_TOOLTIPNAME"] - frame ["TextSpellIDEntry"].tooltip = Loc ["STRING_CUSTOM_TOOLTIPSPELL"] - frame ["TextSourceEntry"].tooltip = Loc ["STRING_CUSTOM_TOOLTIPSOURCE"] - frame ["TextActorNameEntry"].tooltip = Loc ["STRING_CUSTOM_TOOLTIPTARGET"] -- .."\n|cFFFF0000"..Loc ["STRING_CUSTOM_TOOLTIPNOTWORKING"] - - frame.IconTexture = "Interface\\Icons\\TEMP" - - local ChooseIcon = function() - if (not frame.IconFrame) then - - frame.IconFrame = CreateFrame ("frame", "DetailsCustomPanelIcons", frame) - - frame.IconFrame:SetPoint ("bottomright", frame, "topright", 0, 0) - frame.IconFrame:SetWidth (182) - frame.IconFrame:SetHeight (160) - frame.IconFrame:EnableMouse (true) - frame.IconFrame:SetMovable (true) - frame.IconFrame:SetBackdrop (gump_fundo_backdrop) - frame.IconFrame:SetBackdropBorderColor (170/255, 170/255, 170/255) - frame.IconFrame:SetBackdropColor (24/255, 24/255, 24/255, .8) - frame.IconFrame:SetFrameLevel (1) - - local MACRO_ICON_FILENAMES = {}; - frame.IconFrame:SetScript ("OnShow", function() - - MACRO_ICON_FILENAMES = {}; - MACRO_ICON_FILENAMES[1] = "INV_MISC_QUESTIONMARK"; - local index = 2; - local numFlyouts = 0; - - for i = 1, GetNumSpellTabs() do - local tab, tabTex, offset, numSpells, _ = GetSpellTabInfo(i); - offset = offset + 1; - local tabEnd = offset + numSpells; - for j = offset, tabEnd - 1 do - --to get spell info by slot, you have to pass in a pet argument - local spellType, ID = GetSpellBookItemInfo(j, "player"); - if (spellType ~= "FUTURESPELL") then - local spellTexture = strupper(GetSpellBookItemTexture(j, "player")); - if ( not string.match( spellTexture, "INTERFACE\\BUTTONS\\") ) then - MACRO_ICON_FILENAMES[index] = gsub( spellTexture, "INTERFACE\\ICONS\\", ""); - index = index + 1; - end - end - if (spellType == "FLYOUT") then - local _, _, numSlots, isKnown = GetFlyoutInfo(ID); - if (isKnown and numSlots > 0) then - for k = 1, numSlots do - local spellID, overrideSpellID, isKnown = GetFlyoutSlotInfo(ID, k) - if (isKnown) then - MACRO_ICON_FILENAMES[index] = gsub( strupper(GetSpellTexture(spellID)), "INTERFACE\\ICONS\\", ""); - index = index + 1; - end - end - end - end + function DetailsCustomPanel:RemoveDisplay (custom_object, index) + table.remove (_detalhes.custom, index) + + for _, instance in _ipairs (_detalhes.tabela_instancias) do + if (instance.atributo == 5 and instance.sub_atributo == index) then + instance:ResetAttribute() + elseif (instance.atributo == 5 and instance.sub_atributo > index) then + instance.sub_atributo = instance.sub_atributo - 1 + instance.sub_atributo_last [5] = 1 + else + instance.sub_atributo_last [5] = 1 end end - GetMacroIcons (MACRO_ICON_FILENAMES) - GetMacroItemIcons (MACRO_ICON_FILENAMES ) + _detalhes.switch:OnRemoveCustom (index) + end + + function DetailsCustomPanel:StartEdit (custom_object) - end) - - frame.IconFrame:SetScript ("OnHide", function() - MACRO_ICON_FILENAMES = nil; - collectgarbage() - end) - - frame.IconFrame.buttons = {} - - local OnClickFunction = function (index) - local button = frame.IconFrame.buttons [index] - local texture = button:GetNormalTexture() - frame.IconTexture = "INTERFACE\\ICONS\\"..MACRO_ICON_FILENAMES [button.IconID] - frame.icon:SetTexture (frame.IconTexture) - frame.IconFrame:Hide() - end - - for i = 0, 4 do - local newcheck = gump:NewDetailsButton (frame.IconFrame, frame.IconFrame, _, OnClickFunction, i+1, i+1, 30, 28, "", "", "", "", _, "DetailsIconCheckFrame"..(i+1)) - newcheck:SetPoint ("topleft", frame.IconFrame, "topleft", 3+(i*30), -13) - newcheck:SetID (i+1) - frame.IconFrame.buttons [#frame.IconFrame.buttons+1] = newcheck - end - for i = 6, 10 do - local newcheck = gump:NewDetailsButton (frame.IconFrame, frame.IconFrame, _, OnClickFunction, i, i, 30, 28, "", "", "", "", _, "DetailsIconCheckFrame"..i) - newcheck:SetPoint ("topleft", "DetailsIconCheckFrame"..(i-5), "bottomleft", 0, -1) - newcheck:SetID (i) - frame.IconFrame.buttons [#frame.IconFrame.buttons+1] = newcheck - end - for i = 11, 15 do - local newcheck = gump:NewDetailsButton (frame.IconFrame, frame.IconFrame, _, OnClickFunction, i, i, 30, 28, "", "", "", "", _, "DetailsIconCheckFrame"..i) - newcheck:SetPoint ("topleft", "DetailsIconCheckFrame"..(i-5), "bottomleft", 0, -1) - newcheck:SetID (i) - frame.IconFrame.buttons [#frame.IconFrame.buttons+1] = newcheck - end - for i = 16, 20 do - local newcheck = gump:NewDetailsButton (frame.IconFrame, frame.IconFrame, _, OnClickFunction, i, i, 30, 28, "", "", "", "", _, "DetailsIconCheckFrame"..i) - newcheck:SetPoint ("topleft", "DetailsIconCheckFrame"..(i-5), "bottomleft", 0, -1) - newcheck:SetID (i) - frame.IconFrame.buttons [#frame.IconFrame.buttons+1] = newcheck - end - for i = 21, 25 do - local newcheck = gump:NewDetailsButton (frame.IconFrame, frame.IconFrame, _, OnClickFunction, i, i, 30, 28, "", "", "", "", _, "DetailsIconCheckFrame"..i) - newcheck:SetPoint ("topleft", "DetailsIconCheckFrame"..(i-5), "bottomleft", 0, -1) - newcheck:SetID (i) - frame.IconFrame.buttons [#frame.IconFrame.buttons+1] = newcheck - end - - local scroll = CreateFrame ("ScrollFrame", "DetailsIconsFrame", frame.IconFrame, "ListScrollFrameTemplate") - - local ChecksFrame_Update = function (self) - --self = self or MacroPopupFrame; - local numMacroIcons = #MACRO_ICON_FILENAMES; - local macroPopupIcon, macroPopupButton; - local macroPopupOffset = FauxScrollFrame_GetOffset (scroll); - local index; + DetailsCustomPanel:Reset() + DetailsCustomPanel.IsEditing = custom_object - -- Icon list - local texture; - for i = 1, 25 do - macroPopupIcon = _G["DetailsIconCheckFrame"..i]; - macroPopupButton = _G["DetailsIconCheckFrame"..i]; - index = (macroPopupOffset * 5) + i; - texture = MACRO_ICON_FILENAMES [index] - if ( index <= numMacroIcons and texture ) then - macroPopupButton:ChangeIcon ("INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture, "INTERFACE\\ICONS\\"..texture) - macroPopupButton.IconID = index - macroPopupButton:Show(); - else - macroPopupButton:Hide(); - end - - end + self.name_field:SetText (custom_object:GetName()) + self.desc_field:SetText (custom_object:GetDesc()) + self.icon_image:SetTexture (custom_object:GetIcon()) - -- Scrollbar stuff - FauxScrollFrame_Update (scroll, ceil (numMacroIcons / 5) , 5, 20 ); - end - - - scroll:SetPoint ("topleft", frame.IconFrame, "topleft", -18, -10) - scroll:SetWidth (170) - scroll:SetHeight (148) - scroll:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (scroll, offset, 20, ChecksFrame_Update) end) - scroll.update = ChecksFrame_Update - frame.IconFrameScroll = scroll - frame.IconFrame:Hide() - end - - frame.IconFrame:Show() - frame.IconFrameScroll.update (frame.IconFrameScroll) - - end - - local Icon - - local reset = function() - frame ["TextMyNameEntry"]:SetText ("") - frame ["TextSpellIDEntry"]:SetText ("") - frame ["TextActorNameEntry"]:SetText ("") - frame ["TextSourceEntry"]:SetText ("") - Icon:SetTexture ("Interface\\Icons\\TEMP") - frame.atributo = 1 - frame.sub_atributo = 1 - fundoBrilha:SetPoint ("left", frame.MainMenu [1].icon , "right", -20, -10) - end - - --> Create Button - local CreateFunction = function() - - local Atributo = frame.atributo --> healing - local SubAtributo = frame.sub_atributo --> healing done - - if (not Atributo or not SubAtributo) then - print (Loc ["STRING_CUSTOM_NOATTRIBUTO"]) - return - end - - if (frame ["TextMyNameEntry"]:HasFocus()) then - frame ["TextMyNameEntry"]:PressEnter() - elseif (frame ["TextSpellIDEntry"]:HasFocus())then - frame ["TextSpellIDEntry"]:PressEnter() - elseif (frame ["TextActorNameEntry"]:HasFocus())then - frame ["TextActorNameEntry"]:PressEnter() - elseif (frame ["TextSourceEntry"]:HasFocus())then - frame ["TextSourceEntry"]:PressEnter() - end - - local CustomName = frame ["TextMyNameEntry"].text - local SpellID = tonumber (frame ["TextSpellIDEntry"].text) - local Actor = frame ["TextActorNameEntry"].text - local Source = frame ["TextSourceEntry"].text - - if (not CustomName or string.len (CustomName) < 5) then - print (Loc ["STRING_CUSTOM_SHORTNAME"]) - --print ("Nome da customizacao precisa ter pelo menos 5 letras") - frame ["TextMyNameEntry"]:Blink() - return - elseif (string.len (CustomName) > 32) then - --print ("Nome da customizacao nao pode ter mais de 32 letras") - print (Loc ["STRING_CUSTOM_LONGNAME"]) - frame ["TextMyNameEntry"]:Blink() - return - end - - --if (string.len (SpellID) < 1) then - -- --print ("Sem id da magia") - -- print (Loc ["STRING_CUSTOM_NOSPELL"]) - -- frame ["TextSpellIDEntry"]:Blink() - -- return - --end - - _detalhes.custom [#_detalhes.custom+1] = {name = CustomName, spell = SpellID, target = Actor, source = Source, icon = frame.IconTexture, attribute = Atributo, sattribute = SubAtributo} - --print (CustomName, Actor, Source, SpellID, frame.IconTexture, Atributo, SubAtributo) - _detalhes:Msg (Loc ["STRING_CUSTOM_CREATED"]) - _detalhes:CloseCustomWindow() - reset() - end - - local IconButton = gump:NewDetailsButton (frame, frame, _, ChooseIcon, nil, nil, 80, 15, "", "", "", "", nil, "DetailsCustomPanelIconButton") - IconButton.text:SetText (Loc ["STRING_CUSTOM_ICON"]) - IconButton.text:SetPoint ("left", IconButton, "left", 3, 0) - IconButton:SetPoint ("topleft", frame, "topleft", xStart+21, -158) - IconButton:SetFrameLevel (frame:GetFrameLevel()+2) - IconButton:InstallCustomTexture (_, {x1 = -20, x2 = 0, y1 = 0, y2 = 0}) - frame.iconbutton = IconButton - - Icon = IconButton:CreateTexture (nil, "overlay") - Icon:SetTexture (frame.IconTexture) - Icon:SetPoint ("right", IconButton, "left", 0, 0) - Icon:SetWidth (22) - Icon:SetHeight (22) - frame.icon = Icon - - local CreateButton = gump:NewDetailsButton (frame, frame, _, CreateFunction, nil, nil, 80, 15, "", "", "", "", nil, "DetailsCustomPanelCreateButton") - CreateButton.text:SetText (Loc ["STRING_CUSTOM_CREATE"]) - CreateButton:SetPoint ("topleft", frame, "topleft", 413, -158) - CreateButton:SetFrameLevel (frame:GetFrameLevel()+2) - CreateButton:InstallCustomTexture (_, {x1 = -20, x2 = 0, y1 = 0, y2 = 0}) - - local CreateIcon = CreateButton:CreateTexture (nil, "overlay") - CreateIcon:SetTexture ("Interface\\Icons\\Ability_Paladin_HammeroftheRighteous") - CreateIcon:SetWidth (22) - CreateIcon:SetHeight (22) - CreateIcon:SetPoint ("right", CreateButton, "left") - ---------> Install CoolTip on Remove Button - local DeleteFunc = function (_, _, CustomIndex) - table.remove (_detalhes.custom, CustomIndex) - for _, instancia in _ipairs (_detalhes.tabela_instancias) do - if (instancia.atributo == 5 and instancia.sub_atributo == CustomIndex) then - if (instancia.iniciada) then - instancia:TrocaTabela (nil, 1, 1, true) - else - instancia.atributo = 1 - instancia.sub_atributo = 1 - end - elseif (instancia.atributo == 5 and instancia.sub_atributo > CustomIndex) then - instancia.sub_atributo = instancia.sub_atributo - 1 - instancia.sub_atributo_last [5] = 1 + self.author_field:SetText (custom_object:GetAuthor()) + self.author_field:Disable() + + if (custom_object:IsScripted()) then + + custom_window.script_button_attribute:Click() + + DetailsCustomPanel.code1 = custom_object:GetScript() + DetailsCustomPanel.code2 = custom_object:GetScriptToolip() + else - instancia.sub_atributo_last [5] = 1 + + local attribute = custom_object:GetAttribute() + if (attribute == "damagedone") then + DetailsCustomPanelAttributeMenu1:Click() + elseif (attribute == "healdone") then + DetailsCustomPanelAttributeMenu2:Click() + end + + local source = custom_object:GetSource() + if (source == "[all]") then + self.source_dropdown:Select (1, true) + self.source_field:SetText ("") + self.source_field:Disable() + elseif (source == "[raid]") then + self.source_dropdown:Select (2, true) + self.source_field:SetText ("") + self.source_field:Disable() + elseif (source == "[player]") then + self.source_dropdown:Select (3, true) + self.source_field:SetText ("") + self.source_field:Disable() + else + self.source_dropdown:Select (4, true) + self.source_field:SetText (source) + self.source_field:Enable() + end + + local target = custom_object:GetTarget() + + if (not target) then + self.target_dropdown:Select (5, true) + self.target_field:SetText ("") + self.target_field:Disable() + elseif (target == "[all]") then + self.target_dropdown:Select (1, true) + self.target_field:SetText ("") + self.target_field:Disable() + elseif (target == "[raid]") then + self.target_dropdown:Select (2, true) + self.target_field:SetText ("") + self.target_field:Disable() + elseif (target == "[player]") then + self.target_dropdown:Select (3, true) + self.target_field:SetText ("") + self.target_field:Disable() + else + self.target_dropdown:Select (4, true) + self.target_field:SetText (target) + self.target_field:Enable() + end + + self.spellid_entry:SetText (custom_object:GetSpellId() or "") + end + + DetailsCustomPanel:SetAcceptButtonText (Loc ["STRING_CUSTOM_SAVE"]) end - if (#_detalhes.custom > 0) then - _detalhes.popup:ExecFunc (DeleteButton) - else - GameCooltip:Close() - end - _detalhes.switch:OnRemoveCustom (CustomIndex) - end + + function DetailsCustomPanel:CreateNewCustom() + + local name = self.name_field:GetText() + + if (string.len (name) < 5) then + return false, _detalhes:Msg (Loc ["STRING_CUSTOM_SHORTNAME"]) + elseif (string.len (name) > 32) then + return false, _detalhes:Msg (Loc ["STRING_CUSTOM_LONGNAME"]) + end + + local icon = self.icon_image:GetTexture() + local desc = self.desc_field:GetText() + local author = self.author_field:GetText() + + if (DetailsCustomPanel.BoxType == 1) then + local source = self.source_dropdown:GetValue() + local target = self.target_dropdown:GetValue() + local spellid = self.spellid_entry:GetText() + + if (not source) then + source = self.source_field:GetText() + end + + if (not target) then + target = self.target_field:GetText() + elseif (target == "[none]") then + target = false + end + + if (spellid == "") then + spellid = false + end - local CreateCustomList = function() - for index, custom in _ipairs (_detalhes.custom) do - GameCooltip:AddMenu (1, DeleteFunc, index, nil, nil, custom.name, _, true) - GameCooltip:AddIcon (custom.icon, 1, 1, 20, 20, 0, 1, 0, 1) - end - end - - DeleteButton.CoolTip = { - Type = "menu", - BuildFunc = CreateCustomList, - Options = {NoLastSelectedBar = true, TextSize = 9.5, HeightAnchorMod = -10}} - _detalhes.popup:CoolTipInject (DeleteButton, true) + if (DetailsCustomPanel.IsEditing) then + local object = DetailsCustomPanel.IsEditing + object.name = name + object.icon = icon + object.desc = desc + object.author = author + object.attribute = DetailsCustomPanel.current_attribute + object.source = source + object.target = target + object.spellid = tonumber (spellid) + object.script = false + object.tooltip = false + + DetailsCustomPanel.IsEditing = false + _detalhes:Msg (Loc ["STRING_CUSTOM_SAVED"]) + self.author_field:Enable() + return true + else + local new_custom_object = { + ["name"] = name, + ["icon"] = icon, + ["desc"] = desc, + ["author"] = author, + ["attribute"] = DetailsCustomPanel.current_attribute, + ["source"] = source, + ["target"] = target, + ["spellid"] = tonumber (spellid), + ["script"] = false, + ["tooltip"] = false, + } + + tinsert (_detalhes.custom, new_custom_object) + _setmetatable (new_custom_object, _detalhes.atributo_custom) + new_custom_object.__index = _detalhes.atributo_custom + _detalhes:Msg (Loc ["STRING_CUSTOM_CREATED"]) + end + + DetailsCustomPanel:Reset() + + elseif (DetailsCustomPanel.BoxType == 2) then + + local main_code = DetailsCustomPanel.code1 + local tooltip_code = DetailsCustomPanel.code2 + + if (DetailsCustomPanel.IsEditing) then + local object = DetailsCustomPanel.IsEditing + object.name = name + object.icon = icon + object.desc = desc + object.author = author + object.attribute = false + object.source = false + object.target = false + object.spellid = false + object.script = main_code + object.tooltip = tooltip_code + + DetailsCustomPanel.IsEditing = false + _detalhes:Msg (Loc ["STRING_CUSTOM_SAVED"]) + self.author_field:Enable() + return true + else + local new_custom_object = { + ["name"] = name, + ["icon"] = icon, + ["desc"] = desc, + ["author"] = author, + ["attribute"] = false, + ["source"] = false, + ["target"] = false, + ["spellid"] = false, + ["script"] = main_code, + ["tooltip"] = tooltip_code, + } + + tinsert (_detalhes.custom, new_custom_object) + _setmetatable (new_custom_object, _detalhes.atributo_custom) + new_custom_object.__index = _detalhes.atributo_custom + _detalhes:Msg (Loc ["STRING_CUSTOM_CREATED"]) + end + + DetailsCustomPanel:Reset() + + end - ------------------------- - - -------------------------> Install CoolTip on Shout Button - - local addCustomReceived = function (param1) - _detalhes.custom [#_detalhes.custom+1] = param1 - print (Loc ["STRING_CUSTOM_CREATED"]) - end - - function _detalhes:OnReceiveCustom (source, realm, dversion, _customTable) - - if (dversion ~= _detalhes.realversion) then - print (Loc ["STRING_TOOOLD2"]) - return end - - for index, custom in _ipairs (_detalhes.custom) do - if (_customTable.name == custom.name) then + + function DetailsCustomPanel:AcceptFunc() + + if (DetailsCustomPanel.CodeEditing) then + --> close the edit box saving the text + if (DetailsCustomPanel.CodeEditing == 1) then + DetailsCustomPanel.code1 = custom_window.codeeditor:GetText() + elseif (DetailsCustomPanel.CodeEditing == 2) then + DetailsCustomPanel.code2 = custom_window.codeeditor:GetText() + end + + DetailsCustomPanel.CodeEditing = false + if (DetailsCustomPanel.IsEditing) then + DetailsCustomPanel:SetAcceptButtonText (Loc ["STRING_CUSTOM_SAVE"]) + else + DetailsCustomPanel:SetAcceptButtonText (Loc ["STRING_CUSTOM_CREATE"]) + end + custom_window.codeeditor:Hide() + + elseif (DetailsCustomPanel.IsEditing) then + + local succesful_edit = DetailsCustomPanel:CreateNewCustom() + if (succesful_edit) then + DetailsCustomPanel.IsEditing = false + DetailsCustomPanel:SetAcceptButtonText (Loc ["STRING_CUSTOM_CREATE"]) + DetailsCustomPanel:Reset() + end + else + DetailsCustomPanel:CreateNewCustom() + end + + end + + function DetailsCustomPanel:CancelFunc() + + if (DetailsCustomPanel.CodeEditing) then + --> close the edit box without save + custom_window.codeeditor:Hide() + DetailsCustomPanel.CodeEditing = false + + if (DetailsCustomPanel.IsEditing) then + DetailsCustomPanel:SetAcceptButtonText (Loc ["STRING_CUSTOM_SAVE"]) + else + DetailsCustomPanel:SetAcceptButtonText (Loc ["STRING_CUSTOM_CREATE"]) + end + + elseif (DetailsCustomPanel.IsEditing) then + DetailsCustomPanel.IsEditing = false + DetailsCustomPanel:SetAcceptButtonText (Loc ["STRING_CUSTOM_CREATE"]) + DetailsCustomPanel:Reset() + + else + _detalhes:CloseCustomDisplayWindow() + end + + end + + function DetailsCustomPanel:SetAcceptButtonText (text) + custom_window.box0.acceptbutton:SetText (text) + end + + function select_attribute (self) + + if (not self.attribute_table) then return end - end - _detalhes:Ask (source .. "-" .. realm .. " " .. Loc ["STRING_CUSTOM_ACCETP_CUSTOM"], addCustomReceived, _customTable) - end - - --> testing - local ShoutFunc = function (_, _, CustomIndex) - GameCooltip:Close() - _detalhes:SendRaidData ("custom_broadcast", _detalhes.custom [CustomIndex]) - print (Loc ["STRING_CUSTOM_BROADCASTSENT"]) - end - - local CreateCustomListForShout = function() - for index, custom in _ipairs (_detalhes.custom) do - GameCooltip:AddMenu (1, ShoutFunc, index, nil, nil, custom.name, _, true) - GameCooltip:AddIcon (custom.icon, 1, 1, 20, 20, 0, 1, 0, 1) - end - end - - BroadcastButton.CoolTip = { - Type = "menu", - BuildFunc = CreateCustomListForShout, - Options = {NoLastSelectedBar = true, TextSize = 9.5, HeightAnchorMod = -10}} + + custom_window.selected_left:SetPoint ("topleft", self, "topleft") + custom_window.selected_right:SetPoint ("topright", self, "topright") + + DetailsCustomPanel.current_attribute = self.attribute_table.attribute - GameCooltip:CoolTipInject (BroadcastButton, true) + if (not self.attribute_table.attribute) then + --is scripted + DetailsCustomPanel.BoxType = 2 + custom_window.box1:Hide() + custom_window.box2:Show() - function _detalhes:CommReceive (prefix, Msgs, distribution, target) - --print (prefix, Msgs, distribution, target) + else + --no scripted + --> check if is editing the code + if (DetailsCustomPanel.CodeEditing) then + DetailsCustomPanel.AcceptFunc() + end + + DetailsCustomPanel.BoxType = 1 + custom_window.box1:Show() + custom_window.box2:Hide() + custom_window.codeeditor:Hide() + end + end + + function DetailsCustomPanel.StartEditCode (code) + if (code == 1) then --> edit main code + + custom_window.codeeditor:SetText (DetailsCustomPanel.code1) + + elseif (code == 2) then --> edit tooltip code + + custom_window.codeeditor:SetText (DetailsCustomPanel.code2) + + end + + custom_window.codeeditor:Show() + DetailsCustomPanel.CodeEditing = code + DetailsCustomPanel:SetAcceptButtonText (Loc ["STRING_CUSTOM_DONE"]) + end + + + + --> left menu + custom_window.menu = {} + local menu_start = -50 + local menu_up_frame = _CreateFrame ("frame", nil, custom_window) + menu_up_frame:SetFrameLevel (custom_window:GetFrameLevel()+2) + + local onenter = function (self) + self.icontexture:SetVertexColor (1, 1, 1, 1) + end + local onleave = function (self) + self.icontexture:SetVertexColor (.9, .9, .9, 1) + end + + function custom_window:CreateMenuButton (label, icon, clickfunc, param1, param2, tooltip, name, coords) + + local index = #custom_window.menu+1 + + local circle = menu_up_frame:CreateTexture (nil, "overlay") + circle:SetSize (128*0.5, 82*0.5) + circle:SetPoint ("topleft", self, "topleft", 13, ((82*0.5)*index*-1) + menu_start) + circle:SetTexture ("Interface\\Glues\\CHARACTERCREATE\\AlternateForm") + circle:SetTexCoord (0, 1, 0, 0.3203125) + circle:SetDrawLayer ("overlay", 4) + + local texture = menu_up_frame:CreateTexture (nil, "overlay") + texture:SetSize (128*0.23, 82*0.32) + texture:SetTexture (icon) + --texture:SetDesaturated (true) + texture:SetVertexColor (.9, .9, .9, 1) + if (coords) then + texture:SetTexCoord (unpack (coords)) + else + texture:SetTexCoord (5/64, 60/64, 4/64, 62/64) + end + texture:SetPoint ("topleft", circle, "topleft", 5, -9) + texture:SetDrawLayer ("overlay", 3) + + local fillgap = menu_up_frame:CreateTexture (nil, "overlay") + fillgap:SetDrawLayer ("overlay", 2) + fillgap:SetTexture (0, 0, 0, 1) + fillgap:SetSize (2, 10) + fillgap:SetPoint ("left", texture, "right") + + local button = gump:NewButton (self, nil, "$parent" .. name, nil, 110, 20, clickfunc, param1, param2, nil, label) + button:SetPoint ("topleft", circle, "topright", -32, -14) + button:InstallCustomTexture() + button:SetHook ("OnEnter", onenter) + button:SetHook ("OnLeave", onleave) + button.widget.icontexture = texture + button.tooltip = tooltip + + custom_window.menu [index] = {circle = circle, icon = texture, button = button} + end + + local build_menu = function (func, param2, self) + GameCooltip:Reset() + + for index, custom_object in _ipairs (_detalhes.custom) do + GameCooltip:AddLine (custom_object:GetName()) + GameCooltip:AddIcon (custom_object:GetIcon()) + GameCooltip:AddMenu (1, func, custom_object, index, true) + end + + GameCooltip:SetOption ("ButtonsYMod", -2) + GameCooltip:SetOption ("YSpacingMod", 0) + GameCooltip:SetOption ("TextHeightMod", 0) + GameCooltip:SetOption ("IgnoreButtonAutoHeight", false) + GameCooltip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) + + GameCooltip:SetType ("menu") + GameCooltip:SetHost (self, "left", "right", -7, 0) + GameCooltip:Show() + end + + --> edit button + local start_edit = function (_, _, custom_object, index) + GameCooltip:Hide() + DetailsCustomPanel:StartEdit (custom_object) + end + --custom_window:CreateMenuButton ("Edit", "Interface\\ICONS\\INV_Feather_06", build_menu, start_edit, nil, "Select a display to edit.", "Edit", {0.93, 0.07, 0.07, 0.93}) --> localize + custom_window:CreateMenuButton (Loc ["STRING_CUSTOM_EDIT"], "Interface\\ICONS\\INV_Inscription_RunescrollOfFortitude_Red", build_menu, start_edit, nil, nil, "Edit", {0.07, 0.93, 0.07, 0.93}) --> localize + + --> remove button + local remove_display = function (_, _, custom_object, index) + GameCooltip:Hide() + DetailsCustomPanel:RemoveDisplay (custom_object, index) + end + custom_window:CreateMenuButton (Loc ["STRING_CUSTOM_REMOVE"], "Interface\\ICONS\\Spell_BrokenHeart", build_menu, remove_display, nil, nil, "Remove", {1, 0, 0, 1}) --> localize + + --> export button + local export_display = function (_, _, custom_object, index) + GameCooltip:Hide() + --DetailsCustomPanel:RemoveDisplay (custom_object, index) + end + custom_window:CreateMenuButton (Loc ["STRING_CUSTOM_EXPORT"], "Interface\\ICONS\\INV_Misc_Gift_01", build_menu, export_display, nil, nil, "Export", {0.00, 0.9, 0.07, 0.93}) --> localize + DetailsCustomPanelExport:Disable() + + --> import buttonRaceChange + local import_display = function (_, _, custom_object, index) + GameCooltip:Hide() + --DetailsCustomPanel:RemoveDisplay (custom_object, index) + end + custom_window:CreateMenuButton (Loc ["STRING_CUSTOM_IMPORT"], "Interface\\ICONS\\INV_MISC_NOTE_02", build_menu, import_display, nil, nil, "Import", {0.00, 0.9, 0.07, 0.93}) --> localize + DetailsCustomPanelImport:Disable() + + local box_types = { + {}, --normal + {}, --custom script + } + + local attributes = { + {icon = [[Interface\ICONS\Spell_Fire_Fireball02]], label = Loc ["STRING_CUSTOM_ATTRIBUTE_DAMAGE"], box = 1, attribute = "damagedone", boxtype = 1}, + {icon = [[Interface\ICONS\SPELL_NATURE_HEALINGTOUCH]], label = Loc ["STRING_CUSTOM_ATTRIBUTE_HEAL"], box = 1, attribute = "healdone", boxtype = 1}, + {icon = [[Interface\ICONS\INV_Inscription_Scroll]], label = Loc ["STRING_CUSTOM_ATTRIBUTE_SCRIPT"], box = 2, attribute = false, boxtype = 2}, + + --{icon = [[Interface\ICONS\INV_Inscription_Scroll]], label = "Custom Script", box = 2, attribute = false, boxtype = 2}, + --{icon = [[Interface\ICONS\INV_Inscription_Scroll]], label = "Custom Script", box = 2, attribute = false, boxtype = 2}, + --{icon = [[Interface\ICONS\INV_Inscription_Scroll]], label = "Custom Script", box = 2, attribute = false, boxtype = 2}, + --{icon = [[Interface\ICONS\INV_Inscription_Scroll]], label = "Custom Script", box = 2, attribute = false, boxtype = 2}, + --{icon = [[Interface\ICONS\INV_Inscription_Scroll]], label = "Custom Script", box = 2, attribute = false, boxtype = 2}, + --{icon = [[Interface\ICONS\INV_Inscription_Scroll]], label = "Custom Script", box = 2, attribute = false, boxtype = 2}, + --{icon = [[Interface\ICONS\INV_Inscription_Scroll]], label = "Custom Script", box = 2, attribute = false, boxtype = 2}, + --{icon = [[Interface\ICONS\INV_Inscription_Scroll]], label = "Custom Script", box = 2, attribute = false, boxtype = 2}, + --{icon = [[Interface\ICONS\INV_Inscription_Scroll]], label = "Custom Script", box = 2, attribute = false, boxtype = 2}, + } + + --> create box + local attribute_box = _CreateFrame ("frame", nil, custom_window) + attribute_box:SetPoint ("topleft", custom_window, "topleft", 200, -60) + attribute_box:SetSize (180, 260) + --attribute_box:SetBackdrop ({ + -- bgFile = "Interface\\AddOns\\Details\\images\\background", + -- tile = true, tileSize = 16}) + --attribute_box:SetBackdropColor (1, 1, 1, 1) + + local button_onenter = function (self) + self:SetBackdropColor (.3, .3, .3, .3) + self.icon:SetBlendMode ("ADD") + end + local button_onleave = function (self) + self:SetBackdropColor (0, 0, 0, .2) + self.icon:SetBlendMode ("BLEND") + end + + --960 1020 68 101 + + local selected_left = attribute_box:CreateTexture (nil, "overlay") + selected_left:SetTexture ([[Interface\Store\Store-Main]]) + selected_left:SetSize (50, 20) + selected_left:SetVertexColor (1, .8, 0, 1) + selected_left:SetTexCoord (960/1024, 1020/1024, 68/1024, 101/1024) + custom_window.selected_left = selected_left + + local selected_right = attribute_box:CreateTexture (nil, "overlay") + selected_right:SetTexture ([[Interface\Store\Store-Main]]) + selected_right:SetSize (31, 20) + selected_right:SetVertexColor (1, .8, 0, 1) + selected_right:SetTexCoord (270/1024, 311/1024, 873/1024, 906/1024) + custom_window.selected_right = selected_right + + local selected_center = attribute_box:CreateTexture (nil, "overlay") + selected_center:SetTexture ([[Interface\Store\Store-Main]]) + selected_center:SetSize (49, 20) + selected_center:SetVertexColor (1, .8, 0, 1) + selected_center:SetTexCoord (956/1024, 1004/1024, 164/1024, 197/1024) + + selected_center:SetPoint ("left", selected_left, "right") + selected_center:SetPoint ("right", selected_right, "left") + + --selected_center:SetHorizTile (true) + --selected_center:SetVertTile (true) + + local p = 0.0625 --> 32/512 + + for i = 1, 10 do + + if (attributes [i]) then + + local button = _CreateFrame ("button", "DetailsCustomPanelAttributeMenu" .. i, attribute_box) + button:SetPoint ("topleft", attribute_box, "topleft", 2, ((i-1)*23*-1) + (-26)) + button:SetPoint ("topright", attribute_box, "topright", 2, ((i-1)*23*-1) + (-26)) + button:SetHeight (20) + + button:SetBackdrop ({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16}) + button:SetBackdropColor (0, 0, 0, .2) + + button:SetScript ("OnEnter", button_onenter) + button:SetScript ("OnLeave", button_onleave) + + button.attribute_table = attributes [i] + + if (attributes [i] and not attributes [i].attribute) then + custom_window.script_button_attribute = button + end + + button:SetScript ("OnClick", select_attribute) + + button.icon = button:CreateTexture (nil, "overlay") + button.icon:SetPoint ("left", button, "left", 6, 0) + button.icon:SetSize (22, 22) + button.icon:SetTexture ([[Interface\AddOns\Details\images\custom_icones]]) + button.icon:SetTexCoord (p*(i-1), p*(i), 0, 1) + + button.text = button:CreateFontString (nil, "overlay", "GameFontHighlightSmall") + button.text:SetPoint ("left", button.icon, "right", 4, 0) + button.text:SetText (attributes [i] and attributes [i].label or "") + button.text:SetTextColor (.9, .9, .9, 1) + + end + end + + --> create box 0, holds the name, author, desc and icon + local box0 = _CreateFrame ("frame", "DetailsCustomPanelBox0", custom_window) + custom_window.box0 = box0 + box0:SetSize (450, 360) + --box0:SetBackdrop ({ + -- bgFile = "Interface\\AddOns\\Details\\images\\background", + -- edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", + -- tile = true, tileSize = 16, edgeSize = 12}) + --box0:SetBackdropColor (0, 0, 0, .5) + box0:SetPoint ("topleft", attribute_box, "topright", 26, 10) + + --name + local name_label = gump:NewLabel (box0, box0, "$parenNameLabel", "name", Loc ["STRING_CUSTOM_NAME"], "GameFontHighlightLeft") --> localize-me + name_label:SetPoint ("topleft", box0, "topleft", 10, -20) + + local name_field = gump:NewTextEntry (box0, nil, "$parentNameEntry", "nameentry", 200, 20) + name_field:SetPoint ("left", name_label, "left", 62, 0) + custom_window.name_field = name_field + + --author + local author_label = gump:NewLabel (box0, box0, "$parenAuthorLabel", "author", Loc ["STRING_CUSTOM_AUTHOR"], "GameFontHighlightLeft") --> localize-me + author_label:SetPoint ("topleft", name_label, "bottomleft", 0, -12) + + local author_field = gump:NewTextEntry (box0, nil, "$parentAuthorEntry", "authorentry", 200, 20) + author_field:SetPoint ("left", author_label, "left", 62, 0) + author_field:SetText (UnitName ("player") .. "-" .. GetRealmName()) + custom_window.author_field = author_field + + --description + local desc_label = gump:NewLabel (box0, box0, "$parenDescLabel", "desc", Loc ["STRING_CUSTOM_DESCRIPTION"], "GameFontHighlightLeft") --> localize-me + desc_label:SetPoint ("topleft", author_label, "bottomleft", 0, -12) + + local desc_field = gump:NewTextEntry (box0, nil, "$parentDescEntry", "descentry", 200, 20) + desc_field:SetPoint ("left", desc_label, "left", 62, 0) + custom_window.desc_field = desc_field + + --icon + local icon_label = gump:NewLabel (box0, box0, "$parenIconLabel", "icon", Loc ["STRING_CUSTOM_ICON"], "GameFontHighlightLeft") --> localize-me + icon_label:SetPoint ("topleft", desc_label, "bottomleft", 0, -12) + + local pickicon_callback = function (texture) + box0.icontexture:SetTexture (texture) + end + local pickicon = function() + gump:IconPick (pickicon_callback, true) + end + local icon_image = gump:NewImage (box0, [[Interface\ICONS\TEMP]], 20, 20, nil, nil, "icontexture", "$parentIconTexture") + local icon_button = gump:NewButton (box0, nil, "$parentIconButton", "IconButton", 20, 20, pickicon) + icon_button:InstallCustomTexture() + icon_button:SetPoint ("left", icon_label, "left", 64, 0) + icon_image:SetPoint ("left", icon_label, "left", 64, 0) + custom_window.icon_image = icon_image + + --cancel + local cancel_button = gump:NewButton (box0, nil, "$parentCancelButton", "cancelbutton", 130, 20, DetailsCustomPanel.CancelFunc, nil, nil, nil, Loc ["STRING_CUSTOM_CANCEL"]) + cancel_button:SetPoint ("bottomleft", attribute_box, "bottomright", 37, -10) + cancel_button:InstallCustomTexture() + + --accept + local accept_button = gump:NewButton (box0, nil, "$parentAcceptButton", "acceptbutton", 130, 20, DetailsCustomPanel.AcceptFunc, nil, nil, nil, Loc ["STRING_CUSTOM_CREATE"]) + accept_button:SetPoint ("left", cancel_button, "right", 2, 0) + accept_button:InstallCustomTexture() + + + + --> create box type 1 + local box1 = _CreateFrame ("frame", "DetailsCustomPanelBox1", custom_window) + custom_window.box1 = box1 + box1:SetSize (450, 180) + --box1:SetBackdrop ({ + -- bgFile = "Interface\\AddOns\\Details\\images\\background", + -- edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", + -- tile = true, tileSize = 16, edgeSize = 12}) + --box1:SetBackdropColor (1, 0, 0, .9) + box1:SetPoint ("topleft", icon_label.widget, "bottomleft", -10, -20) + + box1:SetFrameLevel (box0:GetFrameLevel()+1) + + --source + local source_label = gump:NewLabel (box1, box1, "$parenSourceLabel", "source", Loc ["STRING_CUSTOM_SOURCE"], "GameFontHighlightLeft") --> localize-me + source_label:SetPoint ("topleft", box1, "topleft", 10, 0) + + local disable_source_field = function() + box1.sourceentry:Disable() + end + local enable_source_field = function() + box1.sourceentry:Enable() + box1.sourceentry:SetFocus (true) + end + + local source_icon = [[Interface\COMMON\Indicator-Yellow]] + + local targeting_options = { + {value = "[all]", label = "All Characters", desc = "Search for matches in all characters.", onclick = disable_source_field, icon = source_icon}, + {value = "[raid]", label = "Raid or Party Group", desc = "Search for matches in all characters which is part of your party or raid group.", onclick = disable_source_field, icon = source_icon}, + {value = "[player]", label = "Only You", desc = "Search for matches only in your character.", onclick = disable_source_field, icon = source_icon}, + {value = false, label = "Specific Character", desc = "Type the name of the character used to search.", onclick = enable_source_field, icon = source_icon}, + } + local build_source_list = function() return targeting_options end + local source_dropdown = gump:NewDropDown (box1, nil, "$parentSourceDropdown", "sourcedropdown", 178, 20, build_source_list, 1) + source_dropdown:SetPoint ("left", source_label, "left", 62, 0) + custom_window.source_dropdown = source_dropdown + + local source_field = gump:NewTextEntry (box1, nil, "$parentSourceEntry", "sourceentry", 201, 20) + source_field:SetPoint ("topleft", source_dropdown, "bottomleft", 0, -2) + source_field:Disable() + custom_window.source_field = source_field + + local adds_boss = CreateFrame ("frame", nil, box1) + adds_boss:SetPoint ("left", source_dropdown.widget, "right", 2, 0) + adds_boss:SetSize (20, 20) + + local adds_boss_image = adds_boss:CreateTexture (nil, "overlay") + adds_boss_image:SetPoint ("center", adds_boss) + adds_boss_image:SetTexture ("Interface\\Buttons\\UI-MicroButton-Raid-Up") + adds_boss_image:SetTexCoord (0.046875, 0.90625, 0.40625, 0.953125) + adds_boss_image:SetWidth (20) + adds_boss_image:SetHeight (16) + + local actorsFrame = gump:NewPanel (custom_window, _, "DetailsCustomActorsFrame2", "actorsFrame", 1, 1) + actorsFrame:SetPoint ("topleft", custom_window, "topright", 5, -60) + actorsFrame:Hide() + + local modelFrame = _CreateFrame ("playermodel", "DetailsCustomActorsFrame2Model", custom_window) + modelFrame:SetSize (138, 261) + modelFrame:SetPoint ("topright", actorsFrame.widget, "topleft", -15, -8) + modelFrame:Hide() + local modelFrameTexture = modelFrame:CreateTexture (nil, "background") + modelFrameTexture:SetAllPoints() + + local modelFrameBackground = custom_window:CreateTexture (nil, "artwork") + modelFrameBackground:SetSize (138, 261) + modelFrameBackground:SetPoint ("topright", actorsFrame.widget, "topleft", -15, -8) + modelFrameBackground:SetTexture ([[Interface\ACHIEVEMENTFRAME\UI-GuildAchievement-Parchment-Horizontal-Desaturated]]) + modelFrameBackground:SetRotation (90) + modelFrameBackground:SetVertexColor (.5, .5, .5, 0.5) + + local modelFrameBackgroundIcon = custom_window:CreateTexture (nil, "overlay") + modelFrameBackgroundIcon:SetPoint ("center", modelFrameBackground, "center") + modelFrameBackgroundIcon:SetTexture ([[Interface\CHARACTERFRAME\Disconnect-Icon]]) + modelFrameBackgroundIcon:SetVertexColor (.5, .5, .5, 0.7) + + + local selectedEncounterActor = function (actorName, model) + source_field:SetText (actorName) + source_dropdown:Select (4, true) + box1.sourceentry:Enable() + actorsFrame:Hide() + GameCooltip:Hide() + end + + local actorsFrameButtons = {} + + local buttonMouseOver = function (button) + button.MyObject.image:SetBlendMode ("ADD") + button.MyObject.line:SetBlendMode ("ADD") + button.MyObject.label:SetTextColor (1, 1, 1, 1) + local OnEnterColors = button:GetParent().Gradient.OnEnter + local _r, _g, _b, _a = button:GetParent():GetBackdropColor() + gump:GradientEffect (button:GetParent(), "frame", _r, _g, _b, _a, OnEnterColors[1], OnEnterColors[2], OnEnterColors[3], OnEnterColors[4], .3) + GameTooltip:SetOwner (button, "ANCHOR_TOPLEFT") + GameTooltip:AddLine (button.MyObject.actor) + GameTooltip:Show() + + local name, description, bgImage, buttonImage, loreImage, dungeonAreaMapID, link = EJ_GetInstanceInfo (button.MyObject.ej_id) + + modelFrameTexture:SetTexture (bgImage) + modelFrameTexture:SetTexCoord (3/512, 370/512, 5/512, 429/512) + modelFrame:Show() + + modelFrame:SetDisplayInfo (button.MyObject.model) + end + local buttonMouseOut = function (button) + button.MyObject.image:SetBlendMode ("BLEND") + button.MyObject.line:SetBlendMode ("BLEND") + button.MyObject.label:SetTextColor (.8, .8, .8, .8) + local _r, _g, _b, _a = button:GetParent():GetBackdropColor() + if (_r) then + local OnLeaveColors = button:GetParent().Gradient.OnLeave + gump:GradientEffect (button:GetParent(), "frame", _r, _g, _b, _a, OnLeaveColors[1], OnLeaveColors[2], OnLeaveColors[3], OnLeaveColors[4], .3) + end + GameTooltip:Hide() + modelFrame:Hide() + end + + local EncounterSelect = function (_, _, instanceId, bossIndex, ej_id) + + DetailsCustomSpellsFrame:Hide() + DetailsCustomActorsFrame:Hide() + DetailsCustomActorsFrame2:Show() + GameCooltip:Hide() + + local encounterID = _detalhes:GetEncounterIdFromBossIndex (instanceId, bossIndex) + + if (encounterID) then + local actors = _detalhes:GetEncounterActorsName (encounterID) + + local x = 10 + local y = 10 + local i = 1 + + for actor, actorTable in pairs (actors) do + + local thisButton = actorsFrameButtons [i] + + if (not thisButton) then + thisButton = gump:NewButton (actorsFrame.frame, actorsFrame.frame, "DetailsCustomActorsFrame2Button"..i, "button"..i, 130, 20, selectedEncounterSpell) + thisButton:SetPoint ("topleft", "DetailsCustomActorsFrame2", "topleft", x, -y) + thisButton:SetHook ("OnEnter", buttonMouseOver) + thisButton:SetHook ("OnLeave", buttonMouseOut) + + local t = gump:NewImage (thisButton, nil, 20, 20, nil, nil, "image", "DetailsCustomActors2EncounterImageButton"..i) + t:SetPoint ("left", thisButton) + t:SetTexture ([[Interface\MINIMAP\TRACKING\Target]]) + t:SetDesaturated (true) + t:SetSize (20, 20) + t:SetAlpha (0.7) + + local text = gump:NewLabel (thisButton, nil, "DetailsCustomActorsFrame2Button"..i.."Label", "label", "Spell", nil, 9.5, {.8, .8, .8, .8}) + text:SetPoint ("left", t.image, "right", 2, 0) + text:SetWidth (123) + text:SetHeight (10) + + local border = gump:NewImage (thisButton, "Interface\\SPELLBOOK\\Spellbook-Parts", 40, 38, nil, nil, "border", "DetailsCustomActors2EncounterBorderButton"..i) + border:SetTexCoord (0.00390625, 0.27734375, 0.44140625,0.69531250) + border:SetDrawLayer ("background") + border:SetPoint ("topleft", thisButton.button, "topleft", -9, 9) + + local line = gump:NewImage (thisButton, "Interface\\SPELLBOOK\\Spellbook-Parts", 134, 25, nil, nil, "line", "DetailsCustomActors2EncounterLineButton"..i) + line:SetTexCoord (0.31250000, 0.96484375, 0.37109375, 0.52343750) + line:SetDrawLayer ("background") + line:SetPoint ("left", thisButton.button, "right", -110, -3) + + table.insert (actorsFrameButtons, #actorsFrameButtons+1, thisButton) + end + + y = y + 20 + if (y >= 260) then + y = 10 + x = x + 150 + end + + thisButton.label:SetText (actor) + thisButton:SetClickFunction (selectedEncounterActor, actor, actorTable.model) + thisButton.actor = actor + thisButton.ej_id = ej_id + thisButton.model = actorTable.model + thisButton:Show() + i = i + 1 + end + + for maxIndex = i, #actorsFrameButtons do + actorsFrameButtons [maxIndex]:Hide() + end + + i = i-1 + actorsFrame:SetSize (math.ceil (i/13)*160, math.min (i*20 + 20, 280)) + + end + end + + local BuildEncounterMenu = function() + + GameCooltip:Reset() + GameCooltip:SetType ("menu") + GameCooltip:SetOwner (adds_boss) + + for instanceId, instanceTable in pairs (_detalhes.EncounterInformation) do + + if (_detalhes:InstanceIsRaid (instanceId)) then + + GameCooltip:AddLine (instanceTable.name, _, 1, "white") + GameCooltip:AddIcon (instanceTable.icon, 1, 1, 64, 32) + + for index, encounterName in ipairs (instanceTable.boss_names) do + GameCooltip:AddMenu (2, EncounterSelect, instanceId, index, instanceTable.ej_id, encounterName, nil, true) + local L, R, T, B, Texture = _detalhes:GetBossIcon (instanceId, index) + GameCooltip:AddIcon (Texture, 2, 1, 20, 20, L, R, T, B) + end + + GameCooltip:SetWallpaper (2, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) + + end + end + + GameCooltip:SetOption ("HeightAnchorMod", -10) + GameCooltip:SetOption ("ButtonsYMod", -2) + GameCooltip:SetOption ("YSpacingMod", 0) + GameCooltip:SetOption ("TextHeightMod", 0) + GameCooltip:SetOption ("IgnoreButtonAutoHeight", false) + GameCooltip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) + + GameCooltip:ShowCooltip() + end + + adds_boss:SetScript ("OnEnter", function() + adds_boss_image:SetBlendMode ("ADD") + BuildEncounterMenu() + end) + + adds_boss:SetScript ("OnLeave", function() + adds_boss_image:SetBlendMode ("BLEND") + end) + + --target + local target_label = gump:NewLabel (box1, box1, "$parenTargetLabel", "target", Loc ["STRING_CUSTOM_TARGET"], "GameFontHighlightLeft") + target_label:SetPoint ("topleft", source_label, "bottomleft", 0, -40) + + local disable_target_field = function() + box1.targetentry:Disable() + end + local enable_target_field = function() + box1.targetentry:Enable() + box1.targetentry:SetFocus (true) + end + + local target_icon = [[Interface\COMMON\Indicator-Yellow]] + local target_icon2 = [[Interface\COMMON\Indicator-Gray]] + + local targeting_options = { + {value = "[all]", label = "All Characters", desc = "Search for matches in all characters.", onclick = disable_target_field, icon = target_icon}, + {value = "[raid]", label = "Raid or Party Group", desc = "Search for matches in all characters which is part of your party or raid group.", onclick = disable_target_field, icon = target_icon}, + {value = "[player]", label = "Only You", desc = "Search for matches only in your character.", onclick = disable_target_field, icon = target_icon}, + {value = false, label = "Specific Character", desc = "Type the name of the character used to search.", onclick = enable_target_field, icon = target_icon}, + {value = "[none]", label = "No Target", desc = "Do not search for targets.", onclick = disable_target_field, icon = target_icon2}, + } + local build_target_list = function() return targeting_options end + local target_dropdown = gump:NewDropDown (box1, nil, "$parentTargetDropdown", "targetdropdown", 178, 20, build_target_list, 1) + target_dropdown:SetPoint ("left", target_label, "left", 62, 0) + custom_window.target_dropdown = target_dropdown + + local target_field = gump:NewTextEntry (box1, nil, "$parentTargetEntry", "targetentry", 201, 20) + target_field:SetPoint ("topleft", target_dropdown, "bottomleft", 0, -2) + target_field:Disable() + custom_window.target_field = target_field + -- + + local adds_boss = CreateFrame ("frame", nil, box1) + adds_boss:SetPoint ("left", target_dropdown.widget, "right", 2, 0) + adds_boss:SetSize (20, 20) + local adds_boss_image = adds_boss:CreateTexture (nil, "overlay") + adds_boss_image:SetPoint ("center", adds_boss) + adds_boss_image:SetTexture ("Interface\\Buttons\\UI-MicroButton-Raid-Up") + adds_boss_image:SetTexCoord (0.046875, 0.90625, 0.40625, 0.953125) + adds_boss_image:SetWidth (20) + adds_boss_image:SetHeight (16) + + local actorsFrame = gump:NewPanel (custom_window, _, "DetailsCustomActorsFrame", "actorsFrame", 1, 1) + actorsFrame:SetPoint ("topleft", custom_window, "topright", 5, -60) + actorsFrame:Hide() + + local modelFrame = _CreateFrame ("playermodel", "DetailsCustomActorsFrameModel", custom_window) + modelFrame:SetSize (138, 261) + modelFrame:SetPoint ("topright", actorsFrame.widget, "topleft", -15, -8) + modelFrame:Hide() + local modelFrameTexture = modelFrame:CreateTexture (nil, "background") + modelFrameTexture:SetAllPoints() + + local selectedEncounterActor = function (actorName) + target_field:SetText (actorName) + target_dropdown:Select (4, true) + box1.targetentry:Enable() + actorsFrame:Hide() + GameCooltip:Hide() + end + + local actorsFrameButtons = {} + + local buttonMouseOver = function (button) + button.MyObject.image:SetBlendMode ("ADD") + button.MyObject.line:SetBlendMode ("ADD") + button.MyObject.label:SetTextColor (1, 1, 1, 1) + local OnEnterColors = button:GetParent().Gradient.OnEnter + local _r, _g, _b, _a = button:GetParent():GetBackdropColor() + gump:GradientEffect (button:GetParent(), "frame", _r, _g, _b, _a, OnEnterColors[1], OnEnterColors[2], OnEnterColors[3], OnEnterColors[4], .3) + GameTooltip:SetOwner (button, "ANCHOR_TOPLEFT") + GameTooltip:AddLine (button.MyObject.actor) + GameTooltip:Show() + + local name, description, bgImage, buttonImage, loreImage, dungeonAreaMapID, link = EJ_GetInstanceInfo (button.MyObject.ej_id) + + modelFrameTexture:SetTexture (bgImage) + modelFrameTexture:SetTexCoord (3/512, 370/512, 5/512, 429/512) + modelFrame:Show() + + modelFrame:SetDisplayInfo (button.MyObject.model) + end + local buttonMouseOut = function (button) + button.MyObject.image:SetBlendMode ("BLEND") + button.MyObject.line:SetBlendMode ("BLEND") + button.MyObject.label:SetTextColor (.8, .8, .8, .8) + local _r, _g, _b, _a = button:GetParent():GetBackdropColor() + if (_r) then + local OnLeaveColors = button:GetParent().Gradient.OnLeave + gump:GradientEffect (button:GetParent(), "frame", _r, _g, _b, _a, OnLeaveColors[1], OnLeaveColors[2], OnLeaveColors[3], OnLeaveColors[4], .3) + end + GameTooltip:Hide() + + modelFrame:Hide() + end + + local EncounterSelect = function (_, _, instanceId, bossIndex, ej_id) + + DetailsCustomSpellsFrame:Hide() + DetailsCustomActorsFrame:Show() + DetailsCustomActorsFrame2:Hide() + GameCooltip:Hide() + + local encounterID = _detalhes:GetEncounterIdFromBossIndex (instanceId, bossIndex) + if (encounterID) then + local actors = _detalhes:GetEncounterActorsName (encounterID) + + local x = 10 + local y = 10 + local i = 1 + + for actor, actorTable in pairs (actors) do + + local thisButton = actorsFrameButtons [i] + + if (not thisButton) then + thisButton = gump:NewButton (actorsFrame.frame, actorsFrame.frame, "DetailsCustomActorsFrameButton"..i, "button"..i, 130, 20, selectedEncounterSpell) + thisButton:SetPoint ("topleft", "DetailsCustomActorsFrame", "topleft", x, -y) + thisButton:SetHook ("OnEnter", buttonMouseOver) + thisButton:SetHook ("OnLeave", buttonMouseOut) + + local t = gump:NewImage (thisButton, nil, 20, 20, nil, nil, "image", "DetailsCustomActorsEncounterImageButton"..i) + t:SetPoint ("left", thisButton) + t:SetTexture ([[Interface\MINIMAP\TRACKING\Target]]) + t:SetDesaturated (true) + t:SetSize (20, 20) + t:SetAlpha (0.7) + + local text = gump:NewLabel (thisButton, nil, "DetailsCustomActorsFrameButton"..i.."Label", "label", "Spell", nil, 9.5, {.8, .8, .8, .8}) + text:SetPoint ("left", t.image, "right", 2, 0) + text:SetWidth (123) + text:SetHeight (10) + + local border = gump:NewImage (thisButton, "Interface\\SPELLBOOK\\Spellbook-Parts", 40, 38, nil, nil, "border", "DetailsCustomActorsEncounterBorderButton"..i) + border:SetTexCoord (0.00390625, 0.27734375, 0.44140625,0.69531250) + border:SetDrawLayer ("background") + border:SetPoint ("topleft", thisButton.button, "topleft", -9, 9) + + local line = gump:NewImage (thisButton, "Interface\\SPELLBOOK\\Spellbook-Parts", 84, 25, nil, nil, "line", "DetailsCustomActorsEncounterLineButton"..i) + line:SetTexCoord (0.31250000, 0.96484375, 0.37109375, 0.52343750) + line:SetDrawLayer ("background") + line:SetPoint ("left", thisButton.button, "right", -110, -3) + + table.insert (actorsFrameButtons, #actorsFrameButtons+1, thisButton) + end + + y = y + 20 + if (y >= 260) then + y = 10 + x = x + 150 + end + + thisButton.label:SetText (actor) + thisButton:SetClickFunction (selectedEncounterActor, actor) + thisButton.actor = actor + thisButton.ej_id = ej_id + thisButton.model = actorTable.model + thisButton:Show() + i = i + 1 + end + + for maxIndex = i, #actorsFrameButtons do + actorsFrameButtons [maxIndex]:Hide() + end + + i = i-1 + actorsFrame:SetSize (math.ceil (i/13)*160, math.min (i*20 + 20, 280)) + + end + end + + local BuildEncounterMenu = function() + + GameCooltip:Reset() + GameCooltip:SetType ("menu") + GameCooltip:SetOwner (adds_boss) + + for instanceId, instanceTable in pairs (_detalhes.EncounterInformation) do + + if (_detalhes:InstanceIsRaid (instanceId)) then + + GameCooltip:AddLine (instanceTable.name, _, 1, "white") + GameCooltip:AddIcon (instanceTable.icon, 1, 1, 64, 32) + + for index, encounterName in ipairs (instanceTable.boss_names) do + GameCooltip:AddMenu (2, EncounterSelect, instanceId, index, instanceTable.ej_id, encounterName, nil, true) + local L, R, T, B, Texture = _detalhes:GetBossIcon (instanceId, index) + GameCooltip:AddIcon (Texture, 2, 1, 20, 20, L, R, T, B) + end + + GameCooltip:SetWallpaper (2, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) + + end + end + + GameCooltip:SetOption ("HeightAnchorMod", -10) + GameCooltip:SetOption ("ButtonsYMod", -2) + GameCooltip:SetOption ("YSpacingMod", 0) + GameCooltip:SetOption ("TextHeightMod", 0) + GameCooltip:SetOption ("IgnoreButtonAutoHeight", false) + GameCooltip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) + GameCooltip:ShowCooltip() + end + + adds_boss:SetScript ("OnEnter", function() + adds_boss_image:SetBlendMode ("ADD") + BuildEncounterMenu() + end) + + adds_boss:SetScript ("OnLeave", function() + adds_boss_image:SetBlendMode ("BLEND") + end) + + --spellid + local spellid_label = gump:NewLabel (box1, box1, "$parenSpellidLabel", "spellid", Loc ["STRING_CUSTOM_SPELLID"], "GameFontHighlightLeft") --> localize-me + spellid_label:SetPoint ("topleft", target_label, "bottomleft", 0, -40) + + local spellid_entry = gump:NewSpellEntry (box1, function()end, 178, 20, nil, nil, "spellidentry", "$parentSpellIdEntry") + spellid_entry:SetPoint ("left", spellid_label, "left", 62, 0) + custom_window.spellid_entry = spellid_entry + + local spell_id_boss = CreateFrame ("frame", nil, box1) + spell_id_boss:SetPoint ("left", spellid_entry.widget, "right", 2, 0) + spell_id_boss:SetSize (20, 20) + local spell_id_boss_image = spell_id_boss:CreateTexture (nil, "overlay") + spell_id_boss_image:SetPoint ("center", spell_id_boss) + spell_id_boss_image:SetTexture ("Interface\\Buttons\\UI-MicroButton-Raid-Up") + spell_id_boss_image:SetTexCoord (0.046875, 0.90625, 0.40625, 0.953125) + spell_id_boss_image:SetWidth (20) + spell_id_boss_image:SetHeight (16) + + local spellsFrame = gump:NewPanel (custom_window, _, "DetailsCustomSpellsFrame", "spellsFrame", 1, 1) + spellsFrame:SetPoint ("topleft", custom_window, "topright", 5, 0) + spellsFrame:Hide() + + local selectedEncounterSpell = function (spellId) + local _, _, icon = _GetSpellInfo (spellId) + spellid_entry:SetText (spellId) + box0.icontexture:SetTexture (icon) + spellsFrame:Hide() + GameCooltip:Hide() + end + + local spellsFrameButtons = {} + + local buttonMouseOver = function (button) + button.MyObject.image:SetBlendMode ("ADD") + button.MyObject.line:SetBlendMode ("ADD") + button.MyObject.label:SetTextColor (1, 1, 1, 1) + local OnEnterColors = button:GetParent().Gradient.OnEnter + local _r, _g, _b, _a = button:GetParent():GetBackdropColor() + gump:GradientEffect (button:GetParent(), "frame", _r, _g, _b, _a, OnEnterColors[1], OnEnterColors[2], OnEnterColors[3], OnEnterColors[4], .3) + + GameTooltip:SetOwner (button, "ANCHOR_TOPLEFT") + GameTooltip:SetSpellByID (button.MyObject.spellid) + GameTooltip:Show() + end + local buttonMouseOut = function (button) + button.MyObject.image:SetBlendMode ("BLEND") + button.MyObject.line:SetBlendMode ("BLEND") + button.MyObject.label:SetTextColor (.8, .8, .8, .8) + local _r, _g, _b, _a = button:GetParent():GetBackdropColor() + if (_r) then + local OnLeaveColors = button:GetParent().Gradient.OnLeave + gump:GradientEffect (button:GetParent(), "frame", _r, _g, _b, _a, OnLeaveColors[1], OnLeaveColors[2], OnLeaveColors[3], OnLeaveColors[4], .3) + end + GameTooltip:Hide() + end + + local EncounterSelect = function (_, _, instanceId, bossIndex) + + DetailsCustomSpellsFrame:Show() + DetailsCustomActorsFrame:Hide() + DetailsCustomActorsFrame2:Hide() + + GameCooltip:Hide() + + local spells = _detalhes:GetEncounterSpells (instanceId, bossIndex) + + local x = 10 + local y = 10 + local i = 1 + + for spell, _ in pairs (spells) do + + local thisButton = spellsFrameButtons [i] + + if (not thisButton) then + thisButton = gump:NewButton (spellsFrame.frame, spellsFrame.frame, "DetailsCustomSpellsFrameButton"..i, "button"..i, 80, 20, selectedEncounterSpell) + thisButton:SetPoint ("topleft", "DetailsCustomSpellsFrame", "topleft", x, -y) + thisButton:SetHook ("OnEnter", buttonMouseOver) + thisButton:SetHook ("OnLeave", buttonMouseOut) + + local t = gump:NewImage (thisButton, nil, 20, 20, nil, nil, "image", "DetailsCustomEncounterImageButton"..i) + t:SetPoint ("left", thisButton) + + local text = gump:NewLabel (thisButton, nil, "DetailsCustomSpellsFrameButton"..i.."Label", "label", "Spell", nil, 9.5, {.8, .8, .8, .8}) + text:SetPoint ("left", t.image, "right", 2, 0) + text:SetWidth (73) + text:SetHeight (10) + + local border = gump:NewImage (thisButton, "Interface\\SPELLBOOK\\Spellbook-Parts", 40, 38, nil, nil, "border", "DetailsCustomEncounterBorderButton"..i) + border:SetTexCoord (0.00390625, 0.27734375, 0.44140625,0.69531250) + border:SetDrawLayer ("background") + border:SetPoint ("topleft", thisButton.button, "topleft", -9, 9) + + local line = gump:NewImage (thisButton, "Interface\\SPELLBOOK\\Spellbook-Parts", 84, 25, nil, nil, "line", "DetailsCustomEncounterLineButton"..i) + line:SetTexCoord (0.31250000, 0.96484375, 0.37109375, 0.52343750) + line:SetDrawLayer ("background") + line:SetPoint ("left", thisButton.button, "right", -60, -3) + + table.insert (spellsFrameButtons, #spellsFrameButtons+1, thisButton) + end + + y = y + 20 + if (y >= 400) then + y = 10 + x = x + 100 + end + + local nome_magia, _, icone_magia = _GetSpellInfo (spell) + thisButton.image:SetTexture (icone_magia) + thisButton.label:SetText (nome_magia) + thisButton:SetClickFunction (selectedEncounterSpell, spell) + thisButton.spellid = spell + thisButton:Show() + i = i + 1 + end + + for maxIndex = i, #spellsFrameButtons do + spellsFrameButtons [maxIndex]:Hide() + end + + i = i-1 + spellsFrame:SetSize (math.ceil (i/20)*110, math.min (i*20 + 20, 420)) + + end + + local BuildEncounterMenu = function() + + GameCooltip:Reset() + GameCooltip:SetType ("menu") + GameCooltip:SetOwner (spell_id_boss) + + for instanceId, instanceTable in pairs (_detalhes.EncounterInformation) do + + if (_detalhes:InstanceisRaid (instanceId)) then + + GameCooltip:AddLine (instanceTable.name, _, 1, "white") + GameCooltip:AddIcon (instanceTable.icon, 1, 1, 64, 32) + + for index, encounterName in ipairs (instanceTable.boss_names) do + GameCooltip:AddMenu (2, EncounterSelect, instanceId, index, nil, encounterName, nil, true) + local L, R, T, B, Texture = _detalhes:GetBossIcon (instanceId, index) + GameCooltip:AddIcon (Texture, 2, 1, 20, 20, L, R, T, B) + end + + GameCooltip:SetWallpaper (2, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) + + end + end + + GameCooltip:SetOption ("ButtonsYMod", -2) + GameCooltip:SetOption ("YSpacingMod", 0) + GameCooltip:SetOption ("TextHeightMod", 0) + GameCooltip:SetOption ("IgnoreButtonAutoHeight", false) + GameCooltip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) + + GameCooltip:SetOption ("HeightAnchorMod", -10) + GameCooltip:ShowCooltip() + end + + spell_id_boss:SetScript ("OnEnter", function() + spell_id_boss_image:SetBlendMode ("ADD") + BuildEncounterMenu() + end) + + spell_id_boss:SetScript ("OnLeave", function() + spell_id_boss_image:SetBlendMode ("BLEND") + end) + + --select target + --select spell + + --> create box type 2 + local box2 = _CreateFrame ("frame", "DetailsCustomPanelBox2", custom_window) + custom_window.box2 = box2 + box2:SetSize (450, 180) + --box2:SetBackdrop ({ + -- bgFile = "Interface\\AddOns\\Details\\images\\background", + -- edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", + -- tile = true, tileSize = 16, edgeSize = 12}) + --box2:SetBackdropColor (1, 0, 0, .9) + box2:SetPoint ("topleft", icon_label.widget, "bottomleft", -10, -20) + + box2:SetFrameLevel (box0:GetFrameLevel()+1) + + --edit main code + local maincode_button = gump:NewButton (box2, nil, "$parentMainCodeButton", "maiccodebutton", 160, 20, DetailsCustomPanel.StartEditCode, 1, nil, nil, Loc ["STRING_CUSTOM_EDIT_SEARCH_CODE"]) + maincode_button:SetPoint ("topleft", box2, "topleft", 10, -25) + maincode_button:InstallCustomTexture() + + --edit tooltip code + local tooltipcode_button = gump:NewButton (box2, nil, "$parentTooltipCodeButton", "tooltipcodebutton", 160, 20, DetailsCustomPanel.StartEditCode, 2, nil, nil, Loc ["STRING_CUSTOM_EDIT_TOOLTIP_CODE"]) + tooltipcode_button:SetPoint ("topleft", maincode_button, "bottomleft", 0, -10) + tooltipcode_button:InstallCustomTexture() + + box2:Hide() + + --> create the code editbox + local code_editor = gump:NewSpecialLuaEditorEntry (custom_window, 420, 238, "codeeditor", "$parentCodeEditor") + code_editor:SetPoint ("topleft", attribute_box, "topright", 30, 0) + code_editor:SetFrameLevel (custom_window:GetFrameLevel()+4) + code_editor:SetBackdrop ({bgFile = [[Interface\AddOns\Details\images\background]], edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], + tile = 1, tileSize = 16, edgeSize = 16, insets = {left = 5, right = 5, top = 5, bottom = 5}}) + code_editor:SetBackdropColor (0, 0, 0, 1) + code_editor:Hide() + + --> select damage + DetailsCustomPanelAttributeMenu1:Click() + else + _G.DetailsCustomPanel:Show() + end + end + + --[[ +--init: +local combat, instance_container, instance = ... +local total, top, amount = 0, 0, 0 + +--get the misc actor container +local misc_container = combat:GetActorList ( DETAILS_ATTRIBUTE_MISC ) + +--do the loop: +for _, player in ipairs ( misc_container ) do + + --only player in group + if (player:IsGroupPlayer()) then + + local found_potion = false + + --get the spell debuff uptime container + local debuff_uptime_container = player.debuff_uptime and player.debuff_uptime_spell_tables and player.debuff_uptime_spell_tables._ActorTable + if (debuff_uptime_container) then + --potion of focus (can't use as pre-potion, so, its amount is always 1) + local focus_potion = debuff_uptime_container [105701] + if (focus_potion) then + total = total + 1 + found_potion = true + if (top < 1) then + top = 1 + end + --add amount to the player + instance_container:AddValue (player, 1) + end end - _detalhes:RegisterComm ("DETAILS", "CommReceive") - ------------------------- - - _detalhes.CustomFrame = frame - - tinsert (UISpecialFrames, "DetailsCustomPanel") - _detalhes.CustomFrame.oponed = false - frame:Hide() -end + --get the spell buff uptime container + local buff_uptime_container = player.buff_uptime and player.buff_uptime_spell_tables and player.buff_uptime_spell_tables._ActorTable + if (buff_uptime_container) then -function _detalhes:InitCustom() - CreateCustomWindow() - return true -end + --potion of the jade serpent + local jade_serpent_potion = buff_uptime_container [105702] + if (jade_serpent_potion) then + local used = jade_serpent_potion.activedamt + if (used > 0) then + total = total + used + found_potion = true + if (used > top) then + top = used + end + --add amount to the player + instance_container:AddValue (player, used) + end + end + + --potion of mogu power + local mogu_power_potion = buff_uptime_container [105706] + if (mogu_power_potion) then + local used = mogu_power_potion.activedamt + if (used > 0) then + total = total + used + found_potion = true + if (used > top) then + top = used + end + --add amount to the player + instance_container:AddValue (player, used) + end + end -function _detalhes:OpenCustomWindow() - --if (InCombatLockdown()) then - -- print ("|cffFF2222"..Loc ["STRING_CUSTOM_INCOMBAT"]) - -- return - --end + --virmen's bite + local virmens_bite_potion = buff_uptime_container [105697] + if (virmens_bite_potion) then + local used = virmens_bite_potion.activedamt + if (used > 0) then + total = total + used + found_potion = true + if (used > top) then + top = used + end + --add amount to the player + instance_container:AddValue (player, used) + end + end + + --potion of the mountains + local mountains_potion = buff_uptime_container [105698] + if (mountains_potion) then + local used = mountains_potion.activedamt + if (used > 0) then + total = total + used + found_potion = true + if (used > top) then + top = used + end + --add amount to the player + instance_container:AddValue (player, used) + end + end + end - if (not _detalhes.CustomFrame.oponed) then - _detalhes.CustomFrame.oponed = true - --_detalhes:BuildSpellList() - _detalhes.CustomFrame:Show() + if (found_potion) then + amount = amount + 1 + end end end -function _detalhes:CloseCustomWindow() - _detalhes.CustomFrame.oponed = false - --_detalhes:ClearSpellList() - _detalhes.CustomFrame:Hide() -end +--return: +return total, top, amount + +tooltip = + --init: + local player, combat, instance = ... + + --get the debuff container for potion of focus + local debuff_uptime_container = player.debuff_uptime and player.debuff_uptime_spell_tables and player.debuff_uptime_spell_tables._ActorTable + if (debuff_uptime_container) then + local focus_potion = debuff_uptime_container [105701] + if (focus_potion) then + local name, _, icon = GetSpellInfo (105701) + GameCooltip:AddLine (name, 1) --> can use only 1 focus potion (can't be pre-potion) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + end + + --get the buff container for all the others potions + local buff_uptime_container = player.buff_uptime and player.buff_uptime_spell_tables and player.buff_uptime_spell_tables._ActorTable + if (buff_uptime_container) then + --potion of the jade serpent + local jade_serpent_potion = buff_uptime_container [105702] + if (jade_serpent_potion) then + local name, _, icon = GetSpellInfo (105702) + GameCooltip:AddLine (name, jade_serpent_potion.activedamt) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + + --potion of mogu power + local mogu_power_potion = buff_uptime_container [105706] + if (mogu_power_potion) then + local name, _, icon = GetSpellInfo (105706) + GameCooltip:AddLine (name, mogu_power_potion.activedamt) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + --virmen's bite + local virmens_bite_potion = buff_uptime_container [105697] + if (virmens_bite_potion) then + local name, _, icon = GetSpellInfo (105697) + GameCooltip:AddLine (name, virmens_bite_potion.activedamt) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + + --potion of the mountains + local mountains_potion = buff_uptime_container [105698] + if (mountains_potion) then + local name, _, icon = GetSpellInfo (105698) + GameCooltip:AddLine (name, mountains_potion.activedamt) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + end + + local spell = actor.spell_tables._ActorTable [15407] + spell.targets:SortByKey ("total") + for _, target in ipairs (spell.targets._ActorTable) do + GameCooltip:AddLine (target.nome, _detalhes.ToKFunctions [_detalhes.tooltip.abbreviation] (_, target.total)) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon ("Interface\\FriendsFrame\\StatusIcon-Offline", 1, 1, 14, 14) + end + + + --]] \ No newline at end of file diff --git a/gumps/janela_options.lua b/gumps/janela_options.lua index 0e330a2e..83cab465 100644 --- a/gumps/janela_options.lua +++ b/gumps/janela_options.lua @@ -183,14 +183,18 @@ function _detalhes:OpenOptionsWindow (instance) local sub_atributo = _this_instance.sub_atributo if (atributo == 5) then --> custom + local CustomObject = _detalhes.custom [sub_atributo] - if (CustomObject) then - InstanceList [#InstanceList+1] = {value = index, label = _detalhes.atributos.lista [atributo] .. " - " .. CustomObject.name, onclick = onSelectInstance, icon = CustomObject.icon} + if (not CustomObject) then + _this_instance:ResetAttribute() + atributo = _this_instance.atributo + sub_atributo = _this_instance.sub_atributo + InstanceList [#InstanceList+1] = {value = index, label = "#".. index .. " " .. _detalhes.atributos.lista [atributo] .. " - " .. _detalhes.sub_atributos [atributo].lista [sub_atributo], onclick = onSelectInstance, icon = _detalhes.sub_atributos [atributo].icones[sub_atributo] [1], texcoord = _detalhes.sub_atributos [atributo].icones[sub_atributo] [2]} else - InstanceList [#InstanceList+1] = {value = index, label = "unknown" .. " - " .. " invalid custom", onclick = onSelectInstance, icon = [[Interface\COMMON\VOICECHAT-MUTED]]} + InstanceList [#InstanceList+1] = {value = index, label = "#".. index .. " " .. CustomObject.name, onclick = onSelectInstance, icon = CustomObject.icon} end - + else local modo = _this_instance.modo @@ -1031,6 +1035,7 @@ function window:CreateFrame20() _detalhes.atributo_heal:UpdateSelectedToKFunction() _detalhes.atributo_energy:UpdateSelectedToKFunction() _detalhes.atributo_misc:UpdateSelectedToKFunction() + _detalhes.atributo_custom:UpdateSelectedToKFunction() end local icon = [[Interface\COMMON\mini-hourglass]] @@ -1067,6 +1072,7 @@ function window:CreateFrame20() _detalhes.atributo_heal:UpdateSelectedToKFunction() _detalhes.atributo_energy:UpdateSelectedToKFunction() _detalhes.atributo_misc:UpdateSelectedToKFunction() + _detalhes.atributo_custom:UpdateSelectedToKFunction() end local icon = [[Interface\Buttons\UI-Panel-BiggerButton-Up]] @@ -3010,6 +3016,7 @@ function window:CreateFrame1() _detalhes.atributo_heal:UpdateSelectedToKFunction() _detalhes.atributo_energy:UpdateSelectedToKFunction() _detalhes.atributo_misc:UpdateSelectedToKFunction() + _detalhes.atributo_custom:UpdateSelectedToKFunction() _detalhes:AtualizaGumpPrincipal (-1, true) end @@ -3294,10 +3301,115 @@ function window:CreateFrame2() -- window:CreateLineBackground2 (frame2, "OverallNewChallengeSlider", "OverallNewChallengeLabel", Loc ["STRING_OPTIONS_OVERALL_CHALLENGE_DESC"]) + --> captures + + --> icons + g:NewImage (frame2, [[Interface\AddOns\Details\images\atributos_captures]], 20, 20, nil, nil, "damageCaptureImage", "$parentCaptureDamage") + frame2.damageCaptureImage:SetTexCoord (0, 0.125, 0, 1) + + g:NewImage (frame2, [[Interface\AddOns\Details\images\atributos_captures]], 20, 20, nil, nil, "healCaptureImage", "$parentCaptureHeal") + frame2.healCaptureImage:SetTexCoord (0.125, 0.25, 0, 1) + + g:NewImage (frame2, [[Interface\AddOns\Details\images\atributos_captures]], 20, 20, nil, nil, "energyCaptureImage", "$parentCaptureEnergy") + frame2.energyCaptureImage:SetTexCoord (0.25, 0.375, 0, 1) + + g:NewImage (frame2, [[Interface\AddOns\Details\images\atributos_captures]], 20, 20, nil, nil, "miscCaptureImage", "$parentCaptureMisc") + frame2.miscCaptureImage:SetTexCoord (0.375, 0.5, 0, 1) + + g:NewImage (frame2, [[Interface\AddOns\Details\images\atributos_captures]], 20, 20, nil, nil, "auraCaptureImage", "$parentCaptureAura") + frame2.auraCaptureImage:SetTexCoord (0.5, 0.625, 0, 1) + + --> labels + g:NewLabel (frame2, _, "$parentCaptureDamageLabel", "damageCaptureLabel", Loc ["STRING_OPTIONS_CDAMAGE"], "GameFontHighlightLeft") + frame2.damageCaptureLabel:SetPoint ("left", frame2.damageCaptureImage, "right", 2) + + g:NewLabel (frame2, _, "$parentCaptureHealLabel", "healCaptureLabel", Loc ["STRING_OPTIONS_CHEAL"], "GameFontHighlightLeft") + frame2.healCaptureLabel:SetPoint ("left", frame2.healCaptureImage, "right", 2) + + g:NewLabel (frame2, _, "$parentCaptureEnergyLabel", "energyCaptureLabel", Loc ["STRING_OPTIONS_CENERGY"], "GameFontHighlightLeft") + frame2.energyCaptureLabel:SetPoint ("left", frame2.energyCaptureImage, "right", 2) + + g:NewLabel (frame2, _, "$parentCaptureMiscLabel", "miscCaptureLabel", Loc ["STRING_OPTIONS_CMISC"], "GameFontHighlightLeft") + frame2.miscCaptureLabel:SetPoint ("left", frame2.miscCaptureImage, "right", 2) + + g:NewLabel (frame2, _, "$parentCaptureAuraLabel", "auraCaptureLabel", Loc ["STRING_OPTIONS_CAURAS"], "GameFontHighlightLeft") + frame2.auraCaptureLabel:SetPoint ("left", frame2.auraCaptureImage, "right", 2) + + --> switches + + local switch_icon_color = function (icon, on_off) + icon:SetDesaturated (not on_off) + end + + g:NewSwitch (frame2, _, "$parentCaptureDamageSlider", "damageCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["damage"]) + frame2.damageCaptureSlider:SetPoint ("left", frame2.damageCaptureLabel, "right", 2) + frame2.damageCaptureSlider.OnSwitch = function (self, _, value) + _detalhes:CaptureSet (value, "damage", true) + switch_icon_color (frame2.damageCaptureImage, value) + end + switch_icon_color (frame2.damageCaptureImage, _detalhes.capture_real ["damage"]) + + window:CreateLineBackground2 (frame2, "damageCaptureSlider", "damageCaptureLabel", Loc ["STRING_OPTIONS_CDAMAGE_DESC"], frame2.damageCaptureImage) + + g:NewSwitch (frame2, _, "$parentCaptureHealSlider", "healCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["heal"]) + frame2.healCaptureSlider:SetPoint ("left", frame2.healCaptureLabel, "right", 2) + frame2.healCaptureSlider.OnSwitch = function (self, _, value) + _detalhes:CaptureSet (value, "heal", true) + switch_icon_color (frame2.healCaptureImage, value) + end + switch_icon_color (frame2.healCaptureImage, _detalhes.capture_real ["heal"]) + + window:CreateLineBackground2 (frame2, "healCaptureSlider", "healCaptureLabel", Loc ["STRING_OPTIONS_CHEAL_DESC"], frame2.healCaptureImage) + + g:NewSwitch (frame2, _, "$parentCaptureEnergySlider", "energyCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["energy"]) + frame2.energyCaptureSlider:SetPoint ("left", frame2.energyCaptureLabel, "right", 2) + + frame2.energyCaptureSlider.OnSwitch = function (self, _, value) + _detalhes:CaptureSet (value, "energy", true) + switch_icon_color (frame2.energyCaptureImage, value) + end + switch_icon_color (frame2.energyCaptureImage, _detalhes.capture_real ["energy"]) + + window:CreateLineBackground2 (frame2, "energyCaptureSlider", "energyCaptureLabel", Loc ["STRING_OPTIONS_CENERGY_DESC"], frame2.energyCaptureImage) + + g:NewSwitch (frame2, _, "$parentCaptureMiscSlider", "miscCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["miscdata"]) + frame2.miscCaptureSlider:SetPoint ("left", frame2.miscCaptureLabel, "right", 2) + frame2.miscCaptureSlider.OnSwitch = function (self, _, value) + _detalhes:CaptureSet (value, "miscdata", true) + switch_icon_color (frame2.miscCaptureImage, value) + end + switch_icon_color (frame2.miscCaptureImage, _detalhes.capture_real ["miscdata"]) + + window:CreateLineBackground2 (frame2, "miscCaptureSlider", "miscCaptureLabel", Loc ["STRING_OPTIONS_CMISC_DESC"], frame2.miscCaptureImage) + + g:NewSwitch (frame2, _, "$parentCaptureAuraSlider", "auraCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["aura"]) + frame2.auraCaptureSlider:SetPoint ("left", frame2.auraCaptureLabel, "right", 2) + frame2.auraCaptureSlider.OnSwitch = function (self, _, value) + _detalhes:CaptureSet (value, "aura", true) + switch_icon_color (frame2.auraCaptureImage, value) + end + switch_icon_color (frame2.auraCaptureImage, _detalhes.capture_real ["aura"]) + + window:CreateLineBackground2 (frame2, "auraCaptureSlider", "auraCaptureLabel", Loc ["STRING_OPTIONS_CAURAS_DESC"], frame2.auraCaptureImage) + + --> cloud capture + g:NewLabel (frame2, _, "$parentCloudCaptureLabel", "cloudCaptureLabel", Loc ["STRING_OPTIONS_CLOUD"], "GameFontHighlightLeft") + + g:NewSwitch (frame2, _, "$parentCloudAuraSlider", "cloudCaptureSlider", 60, 20, _, _, _detalhes.cloud_capture) + frame2.cloudCaptureSlider:SetPoint ("left", frame2.cloudCaptureLabel, "right", 2) + frame2.cloudCaptureSlider.OnSwitch = function (self, _, value) + _detalhes.cloud_capture = value + end + + window:CreateLineBackground2 (frame2, "cloudCaptureSlider", "cloudCaptureLabel", Loc ["STRING_OPTIONS_CLOUD_DESC"] ) + --> anchors + --general anchor g:NewLabel (frame2, _, "$parentGeneralAnchor", "GeneralAnchorLabel", Loc ["STRING_OPTIONS_GENERAL_ANCHOR"], "GameFontNormal") - + --captures anchor + g:NewLabel (frame2, _, "$parentDataCollectAnchor", "DataCollectAnchorLabel", Loc ["STRING_OPTIONS_DATACOLLECT_ANCHOR"], "GameFontNormal") + local x = window.left_start_at titulo_combattweeks:SetPoint (x, -30) @@ -3320,6 +3432,20 @@ function window:CreateFrame2() window:arrange_menu (frame2, left_side, x, window.top_start_at) + local x = window.right_start_at + + local right_side = { + {"DataCollectAnchorLabel", 1, true}, + {"damageCaptureImage", 2}, + {"healCaptureImage", 3}, + {"energyCaptureImage", 4}, + {"miscCaptureImage", 5}, + {"auraCaptureImage", 6}, + {"cloudCaptureLabel", 7, true}, + } + + window:arrange_menu (frame2, right_side, x, -90) + end --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- General Settings - Profiles ~13 @@ -6110,131 +6236,7 @@ function window:CreateFrame11() local frame10 = window.options [10][1] local frame11 = window.options [11][1] - local titulo_performance_captures = g:NewLabel (frame11, _, "$parentTituloPerformanceCaptures", "tituloPerformanceCaptures", Loc ["STRING_OPTIONS_PERFORMANCECAPTURES"], "GameFontNormal", 16) - local titulo_performance_captures_desc = g:NewLabel (frame11, _, "$parentTituloPersonaCaptures2", "tituloPersonaCaptures2Label", Loc ["STRING_OPTIONS_PERFORMANCECAPTURES_DESC"], "GameFontNormal", 9, "white") - titulo_performance_captures_desc.width = 320 - - --------------- Captures - g:NewImage (frame11, [[Interface\AddOns\Details\images\atributos_captures]], 20, 20, nil, nil, "damageCaptureImage", "$parentCaptureDamage") - frame11.damageCaptureImage:SetTexCoord (0, 0.125, 0, 1) - - g:NewImage (frame11, [[Interface\AddOns\Details\images\atributos_captures]], 20, 20, nil, nil, "healCaptureImage", "$parentCaptureHeal") - frame11.healCaptureImage:SetTexCoord (0.125, 0.25, 0, 1) - - g:NewImage (frame11, [[Interface\AddOns\Details\images\atributos_captures]], 20, 20, nil, nil, "energyCaptureImage", "$parentCaptureEnergy") - frame11.energyCaptureImage:SetTexCoord (0.25, 0.375, 0, 1) - - g:NewImage (frame11, [[Interface\AddOns\Details\images\atributos_captures]], 20, 20, nil, nil, "miscCaptureImage", "$parentCaptureMisc") - frame11.miscCaptureImage:SetTexCoord (0.375, 0.5, 0, 1) - - g:NewImage (frame11, [[Interface\AddOns\Details\images\atributos_captures]], 20, 20, nil, nil, "auraCaptureImage", "$parentCaptureAura") - frame11.auraCaptureImage:SetTexCoord (0.5, 0.625, 0, 1) - - g:NewLabel (frame11, _, "$parentCaptureDamageLabel", "damageCaptureLabel", Loc ["STRING_OPTIONS_CDAMAGE"], "GameFontHighlightLeft") - frame11.damageCaptureLabel:SetPoint ("left", frame11.damageCaptureImage, "right", 2) - - g:NewLabel (frame11, _, "$parentCaptureHealLabel", "healCaptureLabel", Loc ["STRING_OPTIONS_CHEAL"], "GameFontHighlightLeft") - frame11.healCaptureLabel:SetPoint ("left", frame11.healCaptureImage, "right", 2) - - g:NewLabel (frame11, _, "$parentCaptureEnergyLabel", "energyCaptureLabel", Loc ["STRING_OPTIONS_CENERGY"], "GameFontHighlightLeft") - frame11.energyCaptureLabel:SetPoint ("left", frame11.energyCaptureImage, "right", 2) - - g:NewLabel (frame11, _, "$parentCaptureMiscLabel", "miscCaptureLabel", Loc ["STRING_OPTIONS_CMISC"], "GameFontHighlightLeft") - frame11.miscCaptureLabel:SetPoint ("left", frame11.miscCaptureImage, "right", 2) - - g:NewLabel (frame11, _, "$parentCaptureAuraLabel", "auraCaptureLabel", Loc ["STRING_OPTIONS_CAURAS"], "GameFontHighlightLeft") - frame11.auraCaptureLabel:SetPoint ("left", frame11.auraCaptureImage, "right", 2) - - local switch_icon_color = function (icon, on_off) - icon:SetDesaturated (not on_off) - end - - g:NewSwitch (frame11, _, "$parentCaptureDamageSlider", "damageCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["damage"]) - frame11.damageCaptureSlider:SetPoint ("left", frame11.damageCaptureLabel, "right", 2) - frame11.damageCaptureSlider.OnSwitch = function (self, _, value) - _detalhes:CaptureSet (value, "damage", true) - switch_icon_color (frame11.damageCaptureImage, value) - end - switch_icon_color (frame11.damageCaptureImage, _detalhes.capture_real ["damage"]) - - window:CreateLineBackground2 (frame11, "damageCaptureSlider", "damageCaptureLabel", Loc ["STRING_OPTIONS_CDAMAGE_DESC"], frame11.damageCaptureImage) - - g:NewSwitch (frame11, _, "$parentCaptureHealSlider", "healCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["heal"]) - frame11.healCaptureSlider:SetPoint ("left", frame11.healCaptureLabel, "right", 2) - frame11.healCaptureSlider.OnSwitch = function (self, _, value) - _detalhes:CaptureSet (value, "heal", true) - switch_icon_color (frame11.healCaptureImage, value) - end - switch_icon_color (frame11.healCaptureImage, _detalhes.capture_real ["heal"]) - - window:CreateLineBackground2 (frame11, "healCaptureSlider", "healCaptureLabel", Loc ["STRING_OPTIONS_CHEAL_DESC"], frame11.healCaptureImage) - - g:NewSwitch (frame11, _, "$parentCaptureEnergySlider", "energyCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["energy"]) - frame11.energyCaptureSlider:SetPoint ("left", frame11.energyCaptureLabel, "right", 2) - frame11.energyCaptureSlider.OnSwitch = function (self, _, value) - _detalhes:CaptureSet (value, "energy", true) - switch_icon_color (frame11.energyCaptureImage, value) - end - switch_icon_color (frame11.energyCaptureImage, _detalhes.capture_real ["energy"]) - - window:CreateLineBackground2 (frame11, "energyCaptureSlider", "energyCaptureLabel", Loc ["STRING_OPTIONS_CENERGY_DESC"], frame11.energyCaptureImage) - - g:NewSwitch (frame11, _, "$parentCaptureMiscSlider", "miscCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["miscdata"]) - frame11.miscCaptureSlider:SetPoint ("left", frame11.miscCaptureLabel, "right", 2) - frame11.miscCaptureSlider.OnSwitch = function (self, _, value) - _detalhes:CaptureSet (value, "miscdata", true) - switch_icon_color (frame11.miscCaptureImage, value) - end - switch_icon_color (frame11.miscCaptureImage, _detalhes.capture_real ["miscdata"]) - - window:CreateLineBackground2 (frame11, "miscCaptureSlider", "miscCaptureLabel", Loc ["STRING_OPTIONS_CMISC_DESC"], frame11.miscCaptureImage) - - g:NewSwitch (frame11, _, "$parentCaptureAuraSlider", "auraCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["aura"]) - frame11.auraCaptureSlider:SetPoint ("left", frame11.auraCaptureLabel, "right", 2) - frame11.auraCaptureSlider.OnSwitch = function (self, _, value) - _detalhes:CaptureSet (value, "aura", true) - switch_icon_color (frame11.auraCaptureImage, value) - end - switch_icon_color (frame11.auraCaptureImage, _detalhes.capture_real ["aura"]) - - window:CreateLineBackground2 (frame11, "auraCaptureSlider", "auraCaptureLabel", Loc ["STRING_OPTIONS_CAURAS_DESC"], frame11.auraCaptureImage) - - --------------- Cloud Capture - - g:NewLabel (frame11, _, "$parentCloudCaptureLabel", "cloudCaptureLabel", Loc ["STRING_OPTIONS_CLOUD"], "GameFontHighlightLeft") - - g:NewSwitch (frame11, _, "$parentCloudAuraSlider", "cloudCaptureSlider", 60, 20, _, _, _detalhes.cloud_capture) - frame11.cloudCaptureSlider:SetPoint ("left", frame11.cloudCaptureLabel, "right", 2) - frame11.cloudCaptureSlider.OnSwitch = function (self, _, value) - _detalhes.cloud_capture = value - end - - window:CreateLineBackground2 (frame11, "cloudCaptureSlider", "cloudCaptureLabel", Loc ["STRING_OPTIONS_CLOUD_DESC"] ) - - --> Anchors - - --general anchor - g:NewLabel (frame11, _, "$parentDataCollectAnchor", "DataCollectAnchorLabel", Loc ["STRING_OPTIONS_DATACOLLECT_ANCHOR"], "GameFontNormal") - - local x = window.left_start_at - - titulo_performance_captures:SetPoint (x, -30) - titulo_performance_captures_desc:SetPoint (x, -50) - - local left_side = { - {"DataCollectAnchorLabel", 1, true}, - {"damageCaptureImage", 2}, - {"healCaptureImage", 3}, - {"energyCaptureImage", 4}, - {"miscCaptureImage", 5}, - {"auraCaptureImage", 6}, - {"cloudCaptureLabel", 7, true}, - } - - window:arrange_menu (frame11, left_side, x, -90) - - -- end window.creating = nil end @@ -6570,6 +6572,13 @@ function window:update_all (editing_instance) _G.DetailsOptionsWindow2OverallNewBossSlider.MyObject:SetValue (_detalhes.overall_clear_newboss) _G.DetailsOptionsWindow2OverallNewChallengeSlider.MyObject:SetValue (_detalhes.overall_clear_newchallenge) + _G.DetailsOptionsWindow2CaptureDamageSlider.MyObject:SetValue (_detalhes.capture_real ["damage"]) + _G.DetailsOptionsWindow2CaptureHealSlider.MyObject:SetValue (_detalhes.capture_real ["heal"]) + _G.DetailsOptionsWindow2CaptureEnergySlider.MyObject:SetValue (_detalhes.capture_real ["energy"]) + _G.DetailsOptionsWindow2CaptureMiscSlider.MyObject:SetValue (_detalhes.capture_real ["miscdata"]) + _G.DetailsOptionsWindow2CaptureAuraSlider.MyObject:SetValue (_detalhes.capture_real ["aura"]) + _G.DetailsOptionsWindow2CloudAuraSlider.MyObject:SetValue (_detalhes.cloud_capture) + --> window 3 local skin = editing_instance.skin @@ -6731,12 +6740,7 @@ function window:update_all (editing_instance) _G.DetailsOptionsWindow10SliderSegmentsSave.MyObject:SetValue (_detalhes.segments_amount_to_save) --> window 11 - _G.DetailsOptionsWindow11CaptureDamageSlider.MyObject:SetValue (_detalhes.capture_real ["damage"]) - _G.DetailsOptionsWindow11CaptureHealSlider.MyObject:SetValue (_detalhes.capture_real ["heal"]) - _G.DetailsOptionsWindow11CaptureEnergySlider.MyObject:SetValue (_detalhes.capture_real ["energy"]) - _G.DetailsOptionsWindow11CaptureMiscSlider.MyObject:SetValue (_detalhes.capture_real ["miscdata"]) - _G.DetailsOptionsWindow11CaptureAuraSlider.MyObject:SetValue (_detalhes.capture_real ["aura"]) - _G.DetailsOptionsWindow11CloudAuraSlider.MyObject:SetValue (_detalhes.cloud_capture) + --> window 13 _G.DetailsOptionsWindow13SelectProfileDropdown.MyObject:Select (_detalhes:GetCurrentProfileName()) diff --git a/gumps/janela_principal.lua b/gumps/janela_principal.lua index 2379bb15..f060f4d7 100644 --- a/gumps/janela_principal.lua +++ b/gumps/janela_principal.lua @@ -4425,6 +4425,7 @@ function _detalhes:ChangeSkin (skin_name) _detalhes.atributo_heal:UpdateSelectedToKFunction() _detalhes.atributo_energy:UpdateSelectedToKFunction() _detalhes.atributo_misc:UpdateSelectedToKFunction() + _detalhes.atributo_custom:UpdateSelectedToKFunction() ----------> call widgets handlers self:SetBarSettings (self.row_info.height) @@ -6037,11 +6038,17 @@ function gump:CriaCabecalho (baseframe, instancia) local CustomObject = _detalhes.custom [sub_atributo] - --> as addmenu dont support textcoords we need to add in parts, first adding text and menu, after we add the icon - --> text and menu can be added in one call if doesnt need more details like color or right text - CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " " .. _detalhes.atributos.lista [atributo] .. " - " .. CustomObject.name, _, true) - CoolTip:AddIcon (CustomObject.icon, 1, 1, 20, 20, 0, 1, 0, 1) - + if (not CustomObject) then + _this_instance:ResetAttribute() + atributo = _this_instance.atributo + sub_atributo = _this_instance.sub_atributo + CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " " .. _detalhes.atributos.lista [atributo] .. " - " .. _detalhes.sub_atributos [atributo].lista [sub_atributo], _, true) + CoolTip:AddIcon (_detalhes.sub_atributos [atributo].icones[sub_atributo] [1], 1, 1, 20, 20, unpack (_detalhes.sub_atributos [atributo].icones[sub_atributo] [2])) + else + CoolTip:AddMenu (1, OnClickNovoMenu, index, nil, nil, "#".. index .. " " .. _detalhes.atributos.lista [atributo] .. " - " .. CustomObject:GetName(), _, true) + CoolTip:AddIcon (CustomObject.icon, 1, 1, 20, 20, 0, 1, 0, 1) + end + else local modo = _this_instance.modo diff --git a/images/custom_bg.tga b/images/custom_bg.tga index c5db4a74a09d3db6a42ea0048da76cdfe66f315a..9b71e06e6d91c5b24a0500dc9c188403d809614e 100644 GIT binary patch literal 930651 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
AU=1DZ+vpFV+k6X=%?Jz0^$K;!! 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 z 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 literal 248798 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

D_Q1 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 HKQ8+JDF0eH diff --git a/images/custom_icones.tga b/images/custom_icones.tga new file mode 100644 index 0000000000000000000000000000000000000000..17c19187d54c2be7f253394d3d349bc2ce2a383f GIT binary patch literal 44302 zcmeI52V7J~_xG{@EGVc57%QNNfC8de5Ja(e#NI105fu~*_TGDmy(=Kb7z?q1 z9jO8$C<4-!vip0_S<%E$#5{TaPu}O*{qViJ?7er+&fJ;bnK?6eR}fT%&kwle{qX zCUglMq7Gq0I1z)1p~NU+1TmGELi8v45S@t*1gj;dqq%}MvJ_?ID62jH$u{%5nyN^J zw7Q~(prBe;P^!_8gw%nA)J?(MZGv(K-$nB6#|03}{FOX5>`@hLC#@ucOP^N=4V|V6 zwOb7%S?wmM>b0j-8j-ZtrQW6LQkGO%`W2SXA}*iBtcTp^WQElr>JkkJ2f~e*KrABo zk}dP6%^p?Sa7Qz^^qD1GoXUC+IV ztJcDAUlvBq>%c-QeF8>GidWXG9^d!1pNQ>)w{!LuV@2gs# zG!ha7=>=p5!ft_s7A*a(2zDTT1Ruct_@hMFLfRy<7m2IJ{}Q46U$6pgmJtI8Tf&lP zKxj!v0J7v|g(IsuvS#&36u2&M97YhNu@h2r4nfx-r(sG?qa8VoZaVfOgUMkmCx>yW z>FV3}hzF$RuZRqCAa95?@)}9xLK4`I#H%!2dhM3su+=BXjjUl;B3IvbI(ZR$@**wB zix|?7LW#YI)L9voI;$$!y%pK}QbJnqpCWSFkC~QbKf)*5WsGl<$MVhT?%OWB?sn|i ztENlC|1FkpKkx{9^U5P6DWiSB-Zu^VPE4!QWmuBs^omiJipU_|5NSjbk-&Z?o<}*ih!eybg3q2#*b^-XLqbV9CgLa) z$JM`PFOrU78#zQ4kxj6@bmBF^pQUORWjT~xLs>1AwZn>(?Qc;UR>6<1(@3aRjop_v zO_LNa?)D@m|lSBd{5J520vCh60&WuDcnwaI2n!Xo}Q%Q0qaZf7=~yd!7e z){!9PhFQZ>_1K-sA@r8*NBm*)NB5s-k7z~O#;KJmS>7cezmlt%-7s`-EQWd zg5W*J#7Rjhl9G}V30*Hq=>sBBp(NsQbe_-AsAP*}KYumP>^!9xT$NH`XU0YjF74d-;_LQgnWJKoT{&5`q-s!E1OFdua~y2t$2SQI9WT^l*(ABH zPUA`yK|!q^En{j=&apQ+#*L;^cU-mE|C}A;Q*w-%YG&@4a#}9M)wI2#*kl&;`rU=D z=XH9%4Xsg0sOk1Il#ItpWj$kwvaWH7QiJv%Oy(V@ynn^IdR6k?bnKQaPv1rPzx)zWOb_Ygf^;>MI4{4T zIC$^*e20ygR33iH4*%xN=k;Q?ukp?=sQk4+w z8J`fhiG9QxViv(`4$KKXsrzM*_%$o+UwQnPPyB92%>R|X`<$LDx5J~`ui261Ms{sv zHSNnf@K0_xtQ}QW0XnwSeaR_k(73K1jlbFm>IPi}1Dh#^edZiHX)L z%1`?b?uz?0?5f%jU5P2gF@gi0PYDi07A~g^ln8cG9D)oX4iN0YoC!YDOzNCe=v8HD zCeVI%N}|tc7Sew&h`*ku>~qS>^MAX3vdgKo9nt>JQeIO~)MzHC>N-|8>FmccPBIor z#L?>yI!$auO8P^f+%6bO_NSrT`2uQoIS9R>7ocLZ8R}hrf|hp#^v1qG?QxM1>K{Qh zgVB(;SjTc+NK*cc2xB>yZ`y6Kpi#$zLw28~yj<%fg!9^LF478{LRN7he% zyY)EZ0e&CqbnGpfd;Jbg=SZ+UI~Qi7{LpjbF>Ig+(zst9!FBIhH0bMtYAU+m4!_H^ zSy&#QjMeFxn0xm{q3MFl73ZCn4$^HZ<&-?hczma6tMX1?x}2MzpD&$$f;I)|@H{5I z*gh!ynbyRz<@pB*uSplT8NsnLKZ50(qq}hgk0?YdX(NrHaTR$+@Jb1mZ=Ra+Algc$ zn=4U8X~ok%j-%y%PK(D8e=RN9=lZs?mzCE)rM$QcRAIfReWemBuR`~%X<1WGxtD^? z=q)6z4~dr~uSJ@zy1c92%nx#H*FdiOY1IB98ckO|L!)&GFx{Ml8l#>-t;{?ibG+#QkDJbLIAsOnwT;kZLu0hqYKGER1@A zh6Cnc>W#+;O3KE-^EcqQ^9CeDwe-~kF~GgVqb0^rr(G}{hp(XYx*22Kksx4 zP1%xfzwSz$$NbIt5s^>d(F}-mtuZuNUiY64D=?aVu1rq;Ag#u9QLTwy#1?{QHeM1% z#Jg3rfdau*;#Y!YbqO(saFa?ZSD5nB;3mzz;NR2Wsf*i0)zgrD4%u~~3L{ih$Nv8M z!P9W%)>Hl%;gnE_*r9I4p zg8p|CsfXE{n{0XZt%A=#>9=f0-oY(Fd56+Bqg|L4%nvsadqs4{fZrU^aBY3)%+-Z) zV12Y&XNfk4zr)PCld$1!FlM|QkErAj+`h62C%2Bn+L;|O!M(AhuFLS8(mv)_?Y9ZO z5M{mer;MrRLJRif7Gmw2Ol)}bUc4+W6>}fP!2e}3rd;|32A)$e_2y%&%n+gbwiD3l z+#hozqY)6Bj9r0Nnam{w(AtizqF70Rr@4+%g<(-UNK7PpONCLMUi~?xC%h-Gf@C-jQ8pQ_k$+A`_JRIb(6SQx=%cwR{$uJ8 zUzBn`5WO$>(9%!^iWu4nnhp9ZwDek|Icj&P=9E(rYHl-g%w}9i+pURcx$K&_%f)1j zekH;tQ6bjniZCiV69b-SVMJ^W)JDWX#o-vVhTezv;Fl0=??I*AMVdTZ0zr8M40+9g1!S-<~B9W86$aLneXbA3FrLN*5A=!;EgeYvIBaH|oFHq=9x z%T^fmqzf!JHHMy_0h+CBiq1#uVX~_c+{1gK%d<}SK6x5aUj2rjLzm<5Qcna8YcA>B zQeWJ7{Dv!4v2VKgN<`qJmpKOu3P?aRu`1=Acv*ZJmc+clyr?+Ly7vMbQ`6wS@gQms znTw#*99T|R0JqIYG5PjWtV@4~A0EYHUCMhbj7x`qY?@@i)+6F(GxmHn|5~GWhuSW? z`t-LKud;quCtm9b4U$gDvEwJjt!D2llMmX@B4|hSCwMY1l!zd5{+tfI#}z_M+$BPY z0D{kB(Je0>j(V2)JoMhDbgt0rs-z?PJe8NTtbG1+xm}d0&pvb~mM(q!fvccx zGLnRH9SLO^31y0cscpVohx1VAbRVicUqEAQHVgyv;C)?$*)K&{nIpoW#6q||%7^); zw@`9A3pKAhXu38FD*fXiZ+8cZwxN)#H;cs5la}h)mXJv0*zA83quO!IRza)L5UEi9 z$-efe9brxTPJ6zvpLKrdp5+L;yB}^5ZZO^72o?vLpz$tK*q&^K@z300waXm33-r)% zWdpR`(+UP_YNO+6TlBu;j4jClxba{IuJ4?T{gZ7av%A-qSdQ|K{F;3o-@Re>yCYJT z#iZu1N=(P9q<2`Bn1-bZZ{bfu`Qyt}EKYihrElJ2RaPE41#Lm&A=BWo?Fc4ajllf7 zFEH)rhw#065A&a=U_o>WmZxS*7Dc}8nMe^h(=r$d#=H_>#RGwZ}ZxlfCavUm- zH=*G{a^sN=g+b}49YnHpLxkNWA_V3Y!ts|J)S3_nW!F%s_Irrd2eaUCISYyoH|f2H z(3zA31xtT%^_pFv)6P>w^6;{z=aOS2PeVV-)0g&jMr;Xd)wNILx+rpf-g}k2jFah%(C1Oo-1~yWBZ#6wHNqmb1 zv8fn(*qO-Jk-tlmbPigbE*?#qi{ZavU$*UmFUyej)gs)8(ZmsgrRnur z+CX|Hzo3VR;D`$kiH8y_OXZyzS?0`aI}GDF#B57c`KHNVFk&2H_lToGO^M!rA zVVka6*|tv@@6{g5ruE11{r-r2b(#8O zEPR%L1&?B|HSImd-%muV;S-=yy_!V7o=J&`@7hZ3H=S|x>Vuf%1nvie%lh|LAx(#dT%~0=rkTF6_h{O*BiMbyiGg1?CHZ@u{B^Ut{qv8 zq{r9sTlN)9j2Q{%n~tcrxgP4Tst@C3#&A4igC1cvP@Sm`&F?i~uviy$R~f?Os0ofF zZ^xS_VR#+)D^3RaU`o$sC0bs~E48mVVn=w5R$V`+)@zQsojl>S`xM58-N%9_37Gxs zL+F|>B{7+f7Hy8eZ{ag+-y4O6%WlG`$$Xf*E=SD|Xr&B)9yX*K)Q7w6IuCWI$3iC~!s zCqD2EThaySe7P?WrwJZ{v4E6!M)o(KA+zzZF;%5>|H)+~Pc@=UE%6~ys9P!ulS@V6 z8i_)Ia`WR*YO)R0jDu)p*bda_{Q|lZlF{o?5oQ#NFf>5~&*vhFb`-$-ZYDg_3Nf>Y zAhB?JSOBwa8L-@&fet^#qw$0_P-^74bgCK zL!3%Kgbyi?5g&CKm)Fn0!lAa%_6n-hzUJt?*J`%+D9~)-0F9q~N=$j#A9(6OBGr5yYOWsAck1qUE+xew|+A3=Y{YdHKOLgzb$m`=@p=?5Bo&}8(_ zVi889iQw=o6XU4=FomYX?e2)sC%zEfuV=z=z%tbG-U0=?@gnLYoKth0zVmlE_|m@C zm;<*Pb@a#|>Dd;Gr+VQ|_#vdk-9ct{0*-&!2cNsc@!cs4m~3xA0}MTA&eBGU^=24; zuQT+6bfEh~E!16Kmjbtq5te-k1(}J6zIP5GTjyieh_0yNy|z;Onqv-LtJ!f#fp)9T z&}&V!b%fmytKoa)7X-$|LBDx0$-!FU0I{3c2_;1;AGPH$tiKf&!vo+HxC2gW4#RcR zaSXe18}5g%z%7={wM%{JcCy;<$oanl^y+M1(&7&|5N#Y5`fRwmj%E`P&eu! zXf++F(0cF&9wcZ^xKym%VmFk(+X-d!9Z)pi57llI&ZLU>OY^sjXeMJ8AVk%Bb<(r z+4#87^lPR2PcJJTI+VHQw918MCscKvXw}Ie)zQx zC9AV&y7&#umb`&B1ubihjz+z$1u#DGa)&M5xfL&k{k)WPmiDP>%iP!{(n%FqE~aQp5uaFkIzHI zg+L@eJ&)-35jdQ-6YbC0&`gLnw5Jf0bDTYKjpxM?2s7=F)COeJM>x?79Vvix@ z&>}1!?^C0iFVeGe%FwrQg`TyGR4#;CjZn99FU*a24!c2@VP&@uqb7&L z-Sa%j#P`HXsMI)$iQ#uK`_WUH@TDb%;Wwe>HWtmMuE3yur^U_ZAF5LR2dz2wJikDc zC!H7heXyV&5phrAu=rS+JkW*ZISwac5Wy`xoM11W@x?qxA-xky@F-*eArR%A`JCR* z`+Oz`qLPTJoGG&@E8CB?@Ao?NDVSNN4vnEDb}IBe88#$7-hy7U2`oMiho7hGTJ;et zT5N)H+p|!z+yV9OVbGtNgqABZU^q1qbym}gkrN`+rJ0i66u&rAAVLTYS{5W{;?(<0 zMC8*ThVBO2^ehqIp9_^V8sJwz4L^nm5e!;RAo20~C_ZKF+wZ&++qF~k+-ZHkLx4|9 zgzle-_{dX;e{c-19{q&$*ekf5aRyGuIznrzE^3U^M8l=EVSmN~*85Fhx!VvuE;-}K z(;XD|Sb;r3BPF&y`?CGpRk3fk>u!4Oc5Y(B4sI}L?*fB14$y7o09BLLFzMAF^Fx2Z z%>B19aOp*K^typMx*;$!yN)pjW3VMRALFh*z|`B1;TIKyv9zYydD(V}UgzOe&cFM~ zm$5hQMM+~9tEtsPg9a;-!LwHsG@em52ee;>upzt&94bOfwU z+NNWuue6b*D%Sqs(|3xshlyFLlsiU1XuJ(V>(l74H4~E`en6`eS!f?FLd%;JQjHSf zD#_Gf8fNv672#}JDiUdxNdkpp_a&rDI?h}tA&JPgIrb)2r=9m2LATimp+>##QmHD> z{-I~Fodb5n4(?(m`Ehs~oLw^t3HJ`;_KCT;dwxD1-dTg!DHriu)+wxvng;)niP#^v z1xp{#g8sZ3@c69*9;f|+>sPnn=Ys)~0Kf5)X4AK4e2aanCCA?x+PI2qcW{M)b!Vwm z>9%%&oJk7`mwKbq*tHnBF$4>*r(*t<6a>CV#fmp+Bv0{J@GKegB4aT7el!+6jg|CY zyHnD1)}AWo-|@)v*!ee-V-pi!Nu+my)uc-&xo{yw(qi6$a&tlZS#(+x99|tmY$RB4 z-VtJHD$<2&+*{5r-NjNgg6PhB1RidGkpRCN%gKKH5T8%a;P;6yPv>g(#p$I-$?VI@ z|L?1R+~+D&|L8rTn^ef;RZMBn*NOUF1E}9Mi3WUOEN1j9QPLj>)iyh!?-2q`yOS{N za0mmp-bcr?*|ah@6&B|UVD+;IYbiMFNXz83Pl_;$=8>M#!0&MM3yE)9HZ6nm&Lk0e z&;1>3Yp-DHZ}k_{3>-fTSvmIY_dbZV89E_vu!|X%4r+tl^PCa7YXr`%_r~qxQxO{; zfR|4;A^q(y$jJK*@mV*KAbNzB%gxbYvpMcv-ilktR!CkvxC)QSi;LU+^g8)l?04KB z729~&e2IQrCm7gJoQOospF3WL8qL~6(Z~`8y~m>GnHyN~_C11=-(e~(pqmvLPs6=< ztawE?HavYL8GZQ{EQZa?Y7}>E(#4WwW@W>3azJtW<8R8% z3tv#el;}k8kd7yo!w420iS*_OC4NQlBa?Vfa6gK7a-_&ns%k7t6{V9`CLNA8B@^G4 zj_mV5sH~i2<@0}8KFU;oKedZ;>oe{D^kpsdQ!|R{&4n699)eC2AE8l~#eGhMzWgz# zps1Pe!a@ZtPiVB>4C_rdXbsL1DAd^iWwS9bnwO3i=RctTOA*$ji?AYzR)^3$+RoHe z98OG>?0WVbt-XB;9CqJMC7$VZ9=S!RY2r0798#Y0qk)cPcsnp);o&}!?9dh@nm)b+<$osx+k zU%bZrXGxg#C;{I;c_j%>NJH28D+`?WM^v11<%(vM@M03J}@F5lxF9{Bh7OtR;^oP?vRSq5yq!Q1FEd&pAdk`PL zX^Z8xqVzc4R$L~%JbE{gctU(zda}<)MJD|M99jAOchx@*1AS_56}AsL=CdGc((m;0 zPm;H%Imf<&q4jhUlTagU$8zSF1e(kbDv!OHjdJ`p(e!+wcB=rL0ek%@SPp% zx{pTpy%!Le@E)6K!Q-k|Z$VNlp84xzcyBu{@w$?f=(tDf3d*<6KfGCC-h*>RMMo}$ zNV2lB5X22tmu5M|?=s#?wx0}-~ zCiubC=93(3rPsp=7WS3|tsJL1!=ApfbXis<(sbE5i1{1|_tUtC%Od^PQk8vLzGkwr zmDSsit+%|Iz@4WGTN&;9^rI#pRfm2DOw&%NW#J>#>)=Ovzliicc4?MKJYeVHJR_Ul zg@R&JC^id(YUi_1ak&e1k7(2ydj++}tQK1x`4zqa%f!ZQoC^&)4=W;_PbOle-QJHn z-%C)|>p(i+kk-%Wl>Vqm1(rRJhrIB6o*?SzTxz9x$D>RtX8V= zWlG!YWY~-K*@dDlH}2&8dOuQ}MK-dx7Dfc555gf^2t>ywD=Ucb6=i z&Q6&Y9XjV)4fM@#J$HM8>xtO-f7xnOz}uXn9}?0^+=ABT>v!}L*Y4O$T-%`+DDo~g z^&BO(88@e>xz`ABhY9mbto;wBbvvC{wY(ZtRKkOHAC6p}B`R2#U0AsAVp!gxi#J5? zGqXx~8TN;q+@dQ#-^iN!Ltti)A-=g?C(h6B;D0co`nHWO!B-#;{1TWT7W~V3^(xxJd zk+hG4R_qtq%dpC@b$+n5EP`hOa*2E*frux*Zk7FXMOJ0`gjjYxW%c%dt9=?(q6q&M z9U^-lM}-uOt0vSDBGrWWMQd7Pd-@7lxM(d+l758HGk!*2OcX=FBrOr{a9{|#n;B(oFlCFgk^ z4ll8qxuV$a$Bp8aiw;n3PyP$Jr9MREh3rp-9GE1^-k)BSyCdR7deF7VjBcARrCF~$ z{mr>$pDOim92+noS`Zxwj_I*qokScb9JF!q5H$p;>@7`5;O`MfCd ze_2GfKY5;HRdPdj487+ZWKT&)kD{{%2sP``5K_yEydDKWm2{_A&54DEM-|~$m+&_ zVM~$rPNjW)CFxK2@XsX5DHurCJ#%bLy|xRBxV&ED{{Hd?<|7noGg8nu8!G6U^d-Cn z?FKB_ok+5+{pmE*YSIw|O++nY(f*%KbupKKv|p}BBFZrCwl-%eik?&#t|C NT6(*5?e5%M_O literal 0 HcmV?d00001 diff --git a/locales/Details-enUS.lua b/locales/Details-enUS.lua index 1f4f3e93..5fe10ced 100644 --- a/locales/Details-enUS.lua +++ b/locales/Details-enUS.lua @@ -3,7 +3,7 @@ if not Loc then return end -------------------------------------------------------------------------------------------------------------------------------------------- - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00a1.16.0 - a1.16.1 - a1.16.3b (|cFFFFCC00Jun 14, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Fixed row creation while resizing where sometimes it was broking the last row in the window.\n\n|cFFFFFF00-|r Fixed small involuntary resizes after resizing a window. |cFF999999(thanks @Morimvudu-Nemesis)|r\n\n|cFFFFFF00-|r Fixed frame strata after stretching the window where was setting its strata to Medium.\n\n|cFFFFFF00-|r Fixed Vanguard strata where it wasnt following the strata from its host window.\n\n|cFFFFFF00-|r Mode menu now have a sub menu for raid plugins.\n\n|cFFFFFF00-|r Red and Green colors under comparison frame has been inverted. |cFF999999(thanks @skmzarn-mmochampion forum)|r\n\n|cFFFFFF00-|r Fixed some report issues with dps and hps, also almost all reports now have guide lines. |cFF999999(thanks @sosleapy-mmochampion forum)|r\n\n|cFFFFFF00-|r Pet dispell and interrupt count also for its owner as well. |cFF999999(thanks @skmzarn-mmochampion forum)|r\n\n|cFFFFFF00-|r Few fixes on comparison panel over Player Details Window.\n\n|cFFFFFF00-|r Added option to be able to save the windows size and position within the profile. |cFF999999(thanks @Torchler-mmochampion forum)|r\n\n|cFFFFFF00-|r Added performance profile settings. |cFF999999(thanks @SlippyCheeze-mmochampion forum)|r\n\n|cFFFFFF00-|r Added auto switch based on group roles also a switch for wipe. |cFF999999(thanks @SlippyCheeze-mmochampion forum)|r\n\n|cFFFFFF00-|r Fixed a bug where sometimes all non boss segments was considered boss encounters.\n\n|cFFFFFF00v1.15.4 (|cFFFFCC00Jun 06, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added a compare tab under Player Details Window:\nThis new tab showns up when there is too characters with the same class and spec.\nIts useful to compare skills used, uptimes and targets.\n\n|cFFFFFF00-|r Few improvements on Default and ElvUI skins.\n\n|cFFFFFF00-|r Added a button for auto align two windows within right chat window when ElvUI skin is active.\n\n|cFFFFFF00-|r Fixed problem with Damage -> Enemies display.\n\n|cFFFFFF00-|r Fixed report Player Detail Window report buttons.\n\n|cFFFFFF00-|r Fixed some report lines where the numbers wasnt properly formatted.\n\n|cFFFFFF00-|r Fixed a rare bug where the owner of some pets wasnt detected.\n\n|cFFFFFF00-|r Fixed issue in dungeons where capture data get paused after a boss kill.\n\n|cFFFFFF00-|r Fixed issue with Encounter Details showing its icon for dungeons bosses.\n\n|cFFFFFF00-|r Fixed a rare bug where the capture of damage stops after erasing a trash segment.\n\n|cFFFFFF00v1.15.0 - v1.15.3 - v1.15.3b (|cFFFFCC00Jun 03, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Emergencial fix for death logs which sometimes was breaking the addon data capture.\n\n|cFFFFFF00-|r Fixed window alerts which was showing behind the bars.\n\n|cFFFFFF00-|r Fixed death log issue with friendly fire hits.\n\n|cFFFFFF00-|r Fixed a issue where Details! windows wasn't hidden when a pet battle starts.\n\n|cFFFFFF00-|r Fixed a issue with segments menu when a window is placed on the right side of the screen.\n\n|cFFFFFF00-|r Damage -> Enemies now also show neutral creatures.\n\n|cFFFFFF00-|r Added support to dungeons, bosses and trash mobs are now recognized.\n\n|cFFFFFF00-|r Added target information for each spell in Player Detail Window.\n\n|cFFFFFF00-|r Added options for change the location of tooltips.\n\n|cFFFFFF00-|r Added options for change the Overall Data functionality.\n\n|cFFFFFF00-|r Added tooltips for lock and detach buttons.\n\n|cFFFFFF00-|r Added new row texture: Details Vidro.\n\n|cFFFFFF00-|r Revamp on death log tooltips.\n\n|cFFFFFF00-|r Improved the visual effect for the instance which current moving window can snap to.\n\n|cFFFFFF00v1.14.5 - 1.14.6 (|cFFFFCC00May 24, 2014|r|cFFFFFF00):|r\n\n|cFFFFFF00-|r Added option for lock segments display, so, when a segment is chosen, the other windows also change it.\n\n|cFFFFFF00-|r Added option for show the total amount of spells, targets and pets in tooltips.\n\n|cFFFFFF00-|r Finished another revamp on options panel.\n\n|cFFFFFF00-|r Now its possible open more then 1 Raid Plugins at once on diferent windows.\n\n|cFFFFFF00-|r Added a large text editor for make changes on custom texts.\n\n|cFFFFFF00-|r Added new option for enable borders on the bars.\n\n|cFFFFFF00-|r Added Death Barrier as a absorb spell.\n\n|cFFFFFF00-|r Fixed a bug on overheal tooltip where was showing the Hps instead of overheal.\n\n|cFFFFFF00v1.14.0 - v1.14.0b (|cFFFFCC00May 17, 2014|r|cFFFFFF00):\n\n|cFFFFFF00-|r Added a new tab on options panel for tooltip configuration.\n\n|cFFFFFF00-|r Added a new tab on options panel for broker config.\n\n|cFFFFFF00-|r Added new abbreviation method called comma.\n\n|cFFFFFF00-|r All instances now have a delete button.\n\n|cFFFFFF00-|r Full re-write on the instance, delete and close buttons.\n\n|cFFFFFF00-|r HotCorners now sort icons according with most used.\n\n|cFFFFFF00-|r Few changes on all skins in order to fit on the new right menu buttons.\n\n|cFFFFFF00-|r Added Horde avatars.\n\n|cFFFFFF00-|r Fixed issue where shortcut panel shows below thw windows when its in Dialog strata.\n\n|cFFFFFF00v1.13.8 - v1.13.8a (|cFFFFCC00May 09, 2014|r|cFFFFFF00):\n\n|cFFFFFF00-|r Fixed issue with Vanguard where it wasn't showing debuffs stacks on the tanks if you are a healer os dps.\n\n|cFFFFFF00-|r Added option for put stretch button on the fullscreen strata which makes it always on top of others frames.\n\n|cFFFFFF00-|r Added background and dialog stratas.\n\n|cFFFFFF00-|r Added option for percentage: follow the combat totals or the first player total.\n\n|cFFFFFF00-|r Added option for show or hide the left buttons on menu bar.\n\n|cFFFFFF00-|r Added option for change the left buttons size in the menu bar.\n\n|cFFFFFF00-|r Added option for delete a instance.\n\n|cFFFFFF00-|r Instance Segment Mini display now is more accuracy about telling the enemy in the segment.\n\n|cFFFFFF00-|r Player Details Window now show all pet abilities instead of just the total pet damage.\n\n|cFFFFFF00-|r Rework done on report texts, now the title is more shorter and also format Dps and Hps numbers.\n\n|cFFFFFF00-|r Simple Gray and again ElvUI skins got some rework.\n\n|cFFFFFF00-|r Lib HotCorner now is data broker based and shows up all broker plugins in the bar.\n\n|cFFFFFF00v1.13.5 / v1.13.5a (|cFFFFCC00May 02, 2014|r|cFFFFFF00):|r\n\n|cFFFFFF00-|r Added keybinds to reset segments and scroll up/down.\n\n|cFFFFFF00-|r Added Spell Customization options where icon and the name of a spell can be changed.\n\n|cFFFFFF00-|r Added option to change the micro displays side, now it can be shown on the window top side.\n\n|cFFFFFF00-|r Micro Displays, also, should now give less problems and be more dynamic.\n\n|cFFFFFF00-|r Added options to change the transparency when out of combat and out of a group.\n\n|cFFFFFF00-|r Added and Still under development the panel for create data captures for charts.\n\n|cFFFFFF00-|r Fixed a issue with flat skin where the close button was just too big." + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00a1.17.0 (|cFFFFCC00Jun 21, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Support for Custom Displays has been rewrited, to access the new panel go to Sword Menu -> Custom -> Create New Display.\n\n|cFFFFFF00-|r Added a custom display for show potion usage.\n\n|cFFFFFF00-|r Fixed a bug where the player pet wasnt being tracked after logon in the game. This bug was affecting directly classes with pets playing out of a raid group.\n\n|cFFFFFF00-|r Fixed the report bug on healing, energy and misc attributes |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00a1.16.0 - a1.16.1 - a1.16.3b (|cFFFFCC00Jun 14, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Fixed row creation while resizing where sometimes it was broking the last row in the window.\n\n|cFFFFFF00-|r Fixed small involuntary resizes after resizing a window. |cFF999999(thanks @Morimvudu-Nemesis)|r\n\n|cFFFFFF00-|r Fixed frame strata after stretching the window where was setting its strata to Medium.\n\n|cFFFFFF00-|r Fixed Vanguard strata where it wasnt following the strata from its host window.\n\n|cFFFFFF00-|r Mode menu now have a sub menu for raid plugins.\n\n|cFFFFFF00-|r Red and Green colors under comparison frame has been inverted. |cFF999999(thanks @skmzarn-mmochampion forum)|r\n\n|cFFFFFF00-|r Fixed some report issues with dps and hps, also almost all reports now have guide lines. |cFF999999(thanks @sosleapy-mmochampion forum)|r\n\n|cFFFFFF00-|r Pet dispell and interrupt count also for its owner as well. |cFF999999(thanks @skmzarn-mmochampion forum)|r\n\n|cFFFFFF00-|r Few fixes on comparison panel over Player Details Window.\n\n|cFFFFFF00-|r Added option to be able to save the windows size and position within the profile. |cFF999999(thanks @Torchler-mmochampion forum)|r\n\n|cFFFFFF00-|r Added performance profile settings. |cFF999999(thanks @SlippyCheeze-mmochampion forum)|r\n\n|cFFFFFF00-|r Added auto switch based on group roles also a switch for wipe. |cFF999999(thanks @SlippyCheeze-mmochampion forum)|r\n\n|cFFFFFF00-|r Fixed a bug where sometimes all non boss segments was considered boss encounters.\n\n|cFFFFFF00v1.15.4 (|cFFFFCC00Jun 06, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added a compare tab under Player Details Window:\nThis new tab showns up when there is too characters with the same class and spec.\nIts useful to compare skills used, uptimes and targets.\n\n|cFFFFFF00-|r Few improvements on Default and ElvUI skins.\n\n|cFFFFFF00-|r Added a button for auto align two windows within right chat window when ElvUI skin is active.\n\n|cFFFFFF00-|r Fixed problem with Damage -> Enemies display.\n\n|cFFFFFF00-|r Fixed report Player Detail Window report buttons.\n\n|cFFFFFF00-|r Fixed some report lines where the numbers wasnt properly formatted.\n\n|cFFFFFF00-|r Fixed a rare bug where the owner of some pets wasnt detected.\n\n|cFFFFFF00-|r Fixed issue in dungeons where capture data get paused after a boss kill.\n\n|cFFFFFF00-|r Fixed issue with Encounter Details showing its icon for dungeons bosses.\n\n|cFFFFFF00-|r Fixed a rare bug where the capture of damage stops after erasing a trash segment.\n\n|cFFFFFF00v1.15.0 - v1.15.3 - v1.15.3b (|cFFFFCC00Jun 03, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Emergencial fix for death logs which sometimes was breaking the addon data capture.\n\n|cFFFFFF00-|r Fixed window alerts which was showing behind the bars.\n\n|cFFFFFF00-|r Fixed death log issue with friendly fire hits.\n\n|cFFFFFF00-|r Fixed a issue where Details! windows wasn't hidden when a pet battle starts.\n\n|cFFFFFF00-|r Fixed a issue with segments menu when a window is placed on the right side of the screen.\n\n|cFFFFFF00-|r Damage -> Enemies now also show neutral creatures.\n\n|cFFFFFF00-|r Added support to dungeons, bosses and trash mobs are now recognized.\n\n|cFFFFFF00-|r Added target information for each spell in Player Detail Window.\n\n|cFFFFFF00-|r Added options for change the location of tooltips.\n\n|cFFFFFF00-|r Added options for change the Overall Data functionality.\n\n|cFFFFFF00-|r Added tooltips for lock and detach buttons.\n\n|cFFFFFF00-|r Added new row texture: Details Vidro.\n\n|cFFFFFF00-|r Revamp on death log tooltips.\n\n|cFFFFFF00-|r Improved the visual effect for the instance which current moving window can snap to.\n\n|cFFFFFF00v1.14.5 - 1.14.6 (|cFFFFCC00May 24, 2014|r|cFFFFFF00):|r\n\n|cFFFFFF00-|r Added option for lock segments display, so, when a segment is chosen, the other windows also change it.\n\n|cFFFFFF00-|r Added option for show the total amount of spells, targets and pets in tooltips.\n\n|cFFFFFF00-|r Finished another revamp on options panel.\n\n|cFFFFFF00-|r Now its possible open more then 1 Raid Plugins at once on diferent windows.\n\n|cFFFFFF00-|r Added a large text editor for make changes on custom texts.\n\n|cFFFFFF00-|r Added new option for enable borders on the bars.\n\n|cFFFFFF00-|r Added Death Barrier as a absorb spell.\n\n|cFFFFFF00-|r Fixed a bug on overheal tooltip where was showing the Hps instead of overheal.\n\n|cFFFFFF00v1.14.0 - v1.14.0b (|cFFFFCC00May 17, 2014|r|cFFFFFF00):\n\n|cFFFFFF00-|r Added a new tab on options panel for tooltip configuration.\n\n|cFFFFFF00-|r Added a new tab on options panel for broker config.\n\n|cFFFFFF00-|r Added new abbreviation method called comma.\n\n|cFFFFFF00-|r All instances now have a delete button.\n\n|cFFFFFF00-|r Full re-write on the instance, delete and close buttons.\n\n|cFFFFFF00-|r HotCorners now sort icons according with most used.\n\n|cFFFFFF00-|r Few changes on all skins in order to fit on the new right menu buttons.\n\n|cFFFFFF00-|r Added Horde avatars.\n\n|cFFFFFF00-|r Fixed issue where shortcut panel shows below thw windows when its in Dialog strata.\n\n|cFFFFFF00v1.13.8 - v1.13.8a (|cFFFFCC00May 09, 2014|r|cFFFFFF00):\n\n|cFFFFFF00-|r Fixed issue with Vanguard where it wasn't showing debuffs stacks on the tanks if you are a healer os dps.\n\n|cFFFFFF00-|r Added option for put stretch button on the fullscreen strata which makes it always on top of others frames.\n\n|cFFFFFF00-|r Added background and dialog stratas.\n\n|cFFFFFF00-|r Added option for percentage: follow the combat totals or the first player total.\n\n|cFFFFFF00-|r Added option for show or hide the left buttons on menu bar.\n\n|cFFFFFF00-|r Added option for change the left buttons size in the menu bar.\n\n|cFFFFFF00-|r Added option for delete a instance.\n\n|cFFFFFF00-|r Instance Segment Mini display now is more accuracy about telling the enemy in the segment.\n\n|cFFFFFF00-|r Player Details Window now show all pet abilities instead of just the total pet damage.\n\n|cFFFFFF00-|r Rework done on report texts, now the title is more shorter and also format Dps and Hps numbers.\n\n|cFFFFFF00-|r Simple Gray and again ElvUI skins got some rework.\n\n|cFFFFFF00-|r Lib HotCorner now is data broker based and shows up all broker plugins in the bar.\n\n|cFFFFFF00v1.13.5 / v1.13.5a (|cFFFFCC00May 02, 2014|r|cFFFFFF00):|r\n\n|cFFFFFF00-|r Added keybinds to reset segments and scroll up/down.\n\n|cFFFFFF00-|r Added Spell Customization options where icon and the name of a spell can be changed.\n\n|cFFFFFF00-|r Added option to change the micro displays side, now it can be shown on the window top side.\n\n|cFFFFFF00-|r Micro Displays, also, should now give less problems and be more dynamic." Loc ["STRING_DETAILS1"] = "|cffffaeaeDetails:|r " --> color and details name @@ -129,39 +129,48 @@ if not Loc then return end --> Custom Window + Loc ["STRING_CUSTOM_EDIT"] = "Edit" Loc ["STRING_CUSTOM_REMOVE"] = "Remove" - Loc ["STRING_CUSTOM_BROADCAST"] = "Shout" + Loc ["STRING_CUSTOM_EXPORT"] = "Export" + Loc ["STRING_CUSTOM_IMPORT"] = "Import" + + --Loc ["STRING_CUSTOM_EDIT_DESC"] = "make changes on a\nalready created display" + --Loc ["STRING_CUSTOM_REMOVE_DESC"] = "removes a " + --Loc ["STRING_CUSTOM_EXPORT_DESC"] = "Select a display to edit." + --Loc ["STRING_CUSTOM_IMPORT_DESC"] = "Select a display to edit." + Loc ["STRING_CUSTOM_NAME"] = "Name:" - Loc ["STRING_CUSTOM_SPELLID"] = "Spell Id:" + Loc ["STRING_CUSTOM_AUTHOR"] = "Author:" + Loc ["STRING_CUSTOM_DESCRIPTION"] = "Desc:" + Loc ["STRING_CUSTOM_ICON"] = "Icon:" + + Loc ["STRING_CUSTOM_CREATE"] = "Create" + Loc ["STRING_CUSTOM_SAVE"] = "Save Changes" + Loc ["STRING_CUSTOM_CANCEL"] = "Cancel" + Loc ["STRING_CUSTOM_DONE"] = "Done" + Loc ["STRING_CUSTOM_SOURCE"] = "Source:" Loc ["STRING_CUSTOM_TARGET"] = "Target:" - Loc ["STRING_CUSTOM_ATTRIBUTE"] = "Attribute:" + Loc ["STRING_CUSTOM_SPELLID"] = "Spell Id:" - Loc ["STRING_CUSTOM_ATT1"] = "Damage" - Loc ["STRING_CUSTOM_ATT2"] = "Heal" - Loc ["STRING_CUSTOM_ATT3"] = "Energy" - Loc ["STRING_CUSTOM_ATT4"] = "Misc" + Loc ["STRING_CUSTOM_EDIT_SEARCH_CODE"] = "Edit Search Code" + Loc ["STRING_CUSTOM_EDIT_TOOLTIP_CODE"] = "Edit Tooltip Code" + + Loc ["STRING_CUSTOM_ATTRIBUTE_DAMAGE"] = "Damage" + Loc ["STRING_CUSTOM_ATTRIBUTE_HEAL"] = "Heal" + Loc ["STRING_CUSTOM_ATTRIBUTE_SCRIPT"] = "Custom Script" - Loc ["STRING_CUSTOM_TOOLTIPNAME"] = "Insert here the name of your custom display.\nAllow letters and numbers, minimum of 5 characters and 32 max." - Loc ["STRING_CUSTOM_TOOLTIPSPELL"] = "Select a boss ability from the menu on the right\nor type the spell name to filter." - Loc ["STRING_CUSTOM_TOOLTIPSOURCE"] = "Source is who is triggering the attribute chosen.\nIt allows (maintain the brackets):\n\n|cFF00FF00[all]|r: search for matches in all characters.\n|cFFFFFF00[raid]|r: search only in your raid or party members.\n|cFF33CCFF[player]|r: only you are checked during the search for results.\n\nAny other text is considered an spesific character." - Loc ["STRING_CUSTOM_TOOLTIPTARGET"] = "Source target." - Loc ["STRING_CUSTOM_TOOLTIPNOTWORKING"] = "Ouch, some gnome engineer touched this and broke it =(" - Loc ["STRING_CUSTOM_BROADCASTSENT"] = "Sent" Loc ["STRING_CUSTOM_CREATED"] = "The new display has been created." - Loc ["STRING_CUSTOM_ICON"] = "Icon" - Loc ["STRING_CUSTOM_CREATE"] = "Create" - Loc ["STRING_CUSTOM_INCOMBAT"] = "You are in combat." - Loc ["STRING_CUSTOM_NOATTRIBUTO"] = "No attribute has been selected." + Loc ["STRING_CUSTOM_SAVED"] = "The display has been saved." + Loc ["STRING_CUSTOM_SHORTNAME"] = "Name need at least 5 characters." Loc ["STRING_CUSTOM_LONGNAME"] = "Name too long, maximum allowed 32 characters." - Loc ["STRING_CUSTOM_NOSPELL"] = "Spell field cannot be empty." - Loc ["STRING_CUSTOM_HELP1"] = "When you mouse over the Remove button, a menu is shown asking which one of previously created customs you want to erase.\n\nThe send button shows up a menu for broadcast your custom to your raid group." - Loc ["STRING_CUSTOM_HELP2"] = "Choose here the attribute type of the spell, if your spell is a Healing spell, you may click on Heal." - Loc ["STRING_CUSTOM_HELP3"] = "Custom name will be used on Details attribute menu, and also, shown when reporting.\n\nOn spell id field, type some letters to filter spell names, you can also choose a spell from encounter menu on the right.\n\nOver source field, type where Details will serach for the spell, more info at his tooltip." - Loc ["STRING_CUSTOM_HELP4"] = "You can choose a spell from a raid encounter, mouse over this button and the options will be shown to you." - Loc ["STRING_CUSTOM_ACCETP_CUSTOM"] = "sent a custom display to you, Do you want add this to your custom library?" - + + Loc ["STRING_CUSTOM_POT_DEFAULT"] = "Potion Used" + Loc ["STRING_CUSTOM_POT_DEFAULT_DESC"] = "Show who in your raid used a potion during the encounter." + Loc ["STRING_CUSTOM_HEALTHSTONE_DEFAULT"] = "Healthstone Used" + Loc ["STRING_CUSTOM_HEALTHSTONE_DEFAULT_DESC"] = "Show who in your raid group used the healthstone." + --> Switch Window Loc ["STRING_SWITCH_CLICKME"] = "left click me" @@ -330,7 +339,7 @@ if not Loc then return end --> Details Instances Loc ["STRING_SOLO_SWITCHINCOMBAT"] = "Cannot switch while in combat" - Loc ["STRING_CUSTOM_NEW"] = "Create New" + Loc ["STRING_CUSTOM_NEW"] = "Create New Display" Loc ["STRING_CUSTOM_REPORT"] = "(custom)" Loc ["STRING_REPORT"] = "for" Loc ["STRING_REPORT_LEFTCLICK"] = "Click to open report dialog" diff --git a/locales/Details-ptBR.lua b/locales/Details-ptBR.lua index 714e1cd3..8771bc93 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"] = "|cFFFFFF00a1.16.0 - a1.16.1 - a1.16.3b (|cFFFFCC00Jun 14, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Fixed row creation while resizing where sometimes it was broking the last row in the window.\n\n|cFFFFFF00-|r Fixed small involuntary resizes after resizing a window. |cFF999999(thanks @Morimvudu-Nemesis)|r\n\n|cFFFFFF00-|r Fixed frame strata after stretching the window where was setting its strata to Medium.\n\n|cFFFFFF00-|r Fixed Vanguard strata where it wasnt following the strata from its host window.\n\n|cFFFFFF00-|r Mode menu now have a sub menu for raid plugins.\n\n|cFFFFFF00-|r Red and Green colors under comparison frame has been inverted. |cFF999999(thanks @skmzarn-mmochampion forum)|r\n\n|cFFFFFF00-|r Fixed some report issues with dps and hps, also almost all reports now have guide lines. |cFF999999(thanks @sosleapy-mmochampion forum)|r\n\n|cFFFFFF00-|r Pet dispell and interrupt count also for its owner as well. |cFF999999(thanks @skmzarn-mmochampion forum)|r\n\n|cFFFFFF00-|r Few fixes on comparison panel over Player Details Window.\n\n|cFFFFFF00-|r Added option to be able to save the windows size and position within the profile. |cFF999999(thanks @Torchler-mmochampion forum)|r\n\n|cFFFFFF00-|r Added performance profile settings. |cFF999999(thanks @SlippyCheeze-mmochampion forum)|r\n\n|cFFFFFF00-|r Added auto switch based on group roles also a switch for wipe. |cFF999999(thanks @SlippyCheeze-mmochampion forum)|r\n\n|cFFFFFF00-|r Fixed a bug where sometimes all non boss segments was considered boss encounters.\n\n|cFFFFFF00v1.15.4 (|cFFFFCC00Jun 06, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added a compare tab under Player Details Window:\nThis new tab showns up when there is too characters with the same class and spec.\nIts useful to compare skills used, uptimes and targets.\n\n|cFFFFFF00-|r Few improvements on Default and ElvUI skins.\n\n|cFFFFFF00-|r Added a button for auto align two windows within right chat window when ElvUI skin is active.\n\n|cFFFFFF00-|r Fixed problem with Damage -> Enemies display.\n\n|cFFFFFF00-|r Fixed report Player Detail Window report buttons.\n\n|cFFFFFF00-|r Fixed some report lines where the numbers wasnt properly formatted.\n\n|cFFFFFF00-|r Fixed a rare bug where the owner of some pets wasnt detected.\n\n|cFFFFFF00-|r Fixed issue in dungeons where capture data get paused after a boss kill.\n\n|cFFFFFF00-|r Fixed issue with Encounter Details showing its icon for dungeons bosses.\n\n|cFFFFFF00-|r Fixed a rare bug where the capture of damage stops after erasing a trash segment.\n\n|cFFFFFF00v1.15.0 - v1.15.3 - v1.15.3b (|cFFFFCC00Jun 03, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Emergencial fix for death logs which sometimes was breaking the addon data capture.\n\n|cFFFFFF00-|r Fixed window alerts which was showing behind the bars.\n\n|cFFFFFF00-|r Fixed death log issue with friendly fire hits.\n\n|cFFFFFF00-|r Fixed a issue where Details! windows wasn't hidden when a pet battle starts.\n\n|cFFFFFF00-|r Fixed a issue with segments menu when a window is placed on the right side of the screen.\n\n|cFFFFFF00-|r Damage -> Enemies now also show neutral creatures.\n\n|cFFFFFF00-|r Added support to dungeons, bosses and trash mobs are now recognized.\n\n|cFFFFFF00-|r Added target information for each spell in Player Detail Window.\n\n|cFFFFFF00-|r Added options for change the location of tooltips.\n\n|cFFFFFF00-|r Added options for change the Overall Data functionality.\n\n|cFFFFFF00-|r Added tooltips for lock and detach buttons.\n\n|cFFFFFF00-|r Added new row texture: Details Vidro.\n\n|cFFFFFF00-|r Revamp on death log tooltips.\n\n|cFFFFFF00-|r Improved the visual effect for the instance which current moving window can snap to.\n\n|cFFFFFF00v1.14.5 - 1.14.6 (|cFFFFCC00May 24, 2014|r|cFFFFFF00):|r\n\n|cFFFFFF00-|r Added option for lock segments display, so, when a segment is chosen, the other windows also change it.\n\n|cFFFFFF00-|r Added option for show the total amount of spells, targets and pets in tooltips.\n\n|cFFFFFF00-|r Finished another revamp on options panel.\n\n|cFFFFFF00-|r Now its possible open more then 1 Raid Plugins at once on diferent windows.\n\n|cFFFFFF00-|r Added a large text editor for make changes on custom texts.\n\n|cFFFFFF00-|r Added new option for enable borders on the bars.\n\n|cFFFFFF00-|r Added Death Barrier as a absorb spell.\n\n|cFFFFFF00-|r Fixed a bug on overheal tooltip where was showing the Hps instead of overheal.\n\n|cFFFFFF00v1.14.0 - v1.14.0b (|cFFFFCC00May 17, 2014|r|cFFFFFF00):\n\n|cFFFFFF00-|r Added a new tab on options panel for tooltip configuration.\n\n|cFFFFFF00-|r Added a new tab on options panel for broker config.\n\n|cFFFFFF00-|r Added new abbreviation method called comma.\n\n|cFFFFFF00-|r All instances now have a delete button.\n\n|cFFFFFF00-|r Full re-write on the instance, delete and close buttons.\n\n|cFFFFFF00-|r HotCorners now sort icons according with most used.\n\n|cFFFFFF00-|r Few changes on all skins in order to fit on the new right menu buttons.\n\n|cFFFFFF00-|r Added Horde avatars.\n\n|cFFFFFF00-|r Fixed issue where shortcut panel shows below thw windows when its in Dialog strata.\n\n|cFFFFFF00v1.13.8 - v1.13.8a (|cFFFFCC00May 09, 2014|r|cFFFFFF00):\n\n|cFFFFFF00-|r Fixed issue with Vanguard where it wasn't showing debuffs stacks on the tanks if you are a healer os dps.\n\n|cFFFFFF00-|r Added option for put stretch button on the fullscreen strata which makes it always on top of others frames.\n\n|cFFFFFF00-|r Added background and dialog stratas.\n\n|cFFFFFF00-|r Added option for percentage: follow the combat totals or the first player total.\n\n|cFFFFFF00-|r Added option for show or hide the left buttons on menu bar.\n\n|cFFFFFF00-|r Added option for change the left buttons size in the menu bar.\n\n|cFFFFFF00-|r Added option for delete a instance.\n\n|cFFFFFF00-|r Instance Segment Mini display now is more accuracy about telling the enemy in the segment.\n\n|cFFFFFF00-|r Player Details Window now show all pet abilities instead of just the total pet damage.\n\n|cFFFFFF00-|r Rework done on report texts, now the title is more shorter and also format Dps and Hps numbers.\n\n|cFFFFFF00-|r Simple Gray and again ElvUI skins got some rework.\n\n|cFFFFFF00-|r Lib HotCorner now is data broker based and shows up all broker plugins in the bar.\n\n|cFFFFFF00v1.13.5 / v1.13.5a (|cFFFFCC00May 02, 2014|r|cFFFFFF00):|r\n\n|cFFFFFF00-|r Added keybinds to reset segments and scroll up/down.\n\n|cFFFFFF00-|r Added Spell Customization options where icon and the name of a spell can be changed.\n\n|cFFFFFF00-|r Added option to change the micro displays side, now it can be shown on the window top side.\n\n|cFFFFFF00-|r Micro Displays, also, should now give less problems and be more dynamic.\n\n|cFFFFFF00-|r Added options to change the transparency when out of combat and out of a group.\n\n|cFFFFFF00-|r Added and Still under development the panel for create data captures for charts.\n\n|cFFFFFF00-|r Fixed a issue with flat skin where the close button was just too big." + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00a1.17.0 (|cFFFFCC00Jun 21, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Support for Custom Displays has been rewrited, to access the new panel go to Sword Menu -> Custom -> Create New Display.\n\n|cFFFFFF00-|r Added a custom display for show potion usage.\n\n|cFFFFFF00-|r Fixed a bug where the player pet wasnt being tracked after logon in the game. This bug was affecting directly classes with pets playing out of a raid group.\n\n|cFFFFFF00-|r Fixed the report bug on healing, energy and misc attributes |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00a1.16.0 - a1.16.1 - a1.16.3b (|cFFFFCC00Jun 14, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Fixed row creation while resizing where sometimes it was broking the last row in the window.\n\n|cFFFFFF00-|r Fixed small involuntary resizes after resizing a window. |cFF999999(thanks @Morimvudu-Nemesis)|r\n\n|cFFFFFF00-|r Fixed frame strata after stretching the window where was setting its strata to Medium.\n\n|cFFFFFF00-|r Fixed Vanguard strata where it wasnt following the strata from its host window.\n\n|cFFFFFF00-|r Mode menu now have a sub menu for raid plugins.\n\n|cFFFFFF00-|r Red and Green colors under comparison frame has been inverted. |cFF999999(thanks @skmzarn-mmochampion forum)|r\n\n|cFFFFFF00-|r Fixed some report issues with dps and hps, also almost all reports now have guide lines. |cFF999999(thanks @sosleapy-mmochampion forum)|r\n\n|cFFFFFF00-|r Pet dispell and interrupt count also for its owner as well. |cFF999999(thanks @skmzarn-mmochampion forum)|r\n\n|cFFFFFF00-|r Few fixes on comparison panel over Player Details Window.\n\n|cFFFFFF00-|r Added option to be able to save the windows size and position within the profile. |cFF999999(thanks @Torchler-mmochampion forum)|r\n\n|cFFFFFF00-|r Added performance profile settings. |cFF999999(thanks @SlippyCheeze-mmochampion forum)|r\n\n|cFFFFFF00-|r Added auto switch based on group roles also a switch for wipe. |cFF999999(thanks @SlippyCheeze-mmochampion forum)|r\n\n|cFFFFFF00-|r Fixed a bug where sometimes all non boss segments was considered boss encounters.\n\n|cFFFFFF00v1.15.4 (|cFFFFCC00Jun 06, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added a compare tab under Player Details Window:\nThis new tab showns up when there is too characters with the same class and spec.\nIts useful to compare skills used, uptimes and targets.\n\n|cFFFFFF00-|r Few improvements on Default and ElvUI skins.\n\n|cFFFFFF00-|r Added a button for auto align two windows within right chat window when ElvUI skin is active.\n\n|cFFFFFF00-|r Fixed problem with Damage -> Enemies display.\n\n|cFFFFFF00-|r Fixed report Player Detail Window report buttons.\n\n|cFFFFFF00-|r Fixed some report lines where the numbers wasnt properly formatted.\n\n|cFFFFFF00-|r Fixed a rare bug where the owner of some pets wasnt detected.\n\n|cFFFFFF00-|r Fixed issue in dungeons where capture data get paused after a boss kill.\n\n|cFFFFFF00-|r Fixed issue with Encounter Details showing its icon for dungeons bosses.\n\n|cFFFFFF00-|r Fixed a rare bug where the capture of damage stops after erasing a trash segment.\n\n|cFFFFFF00v1.15.0 - v1.15.3 - v1.15.3b (|cFFFFCC00Jun 03, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Emergencial fix for death logs which sometimes was breaking the addon data capture.\n\n|cFFFFFF00-|r Fixed window alerts which was showing behind the bars.\n\n|cFFFFFF00-|r Fixed death log issue with friendly fire hits.\n\n|cFFFFFF00-|r Fixed a issue where Details! windows wasn't hidden when a pet battle starts.\n\n|cFFFFFF00-|r Fixed a issue with segments menu when a window is placed on the right side of the screen.\n\n|cFFFFFF00-|r Damage -> Enemies now also show neutral creatures.\n\n|cFFFFFF00-|r Added support to dungeons, bosses and trash mobs are now recognized.\n\n|cFFFFFF00-|r Added target information for each spell in Player Detail Window.\n\n|cFFFFFF00-|r Added options for change the location of tooltips.\n\n|cFFFFFF00-|r Added options for change the Overall Data functionality.\n\n|cFFFFFF00-|r Added tooltips for lock and detach buttons.\n\n|cFFFFFF00-|r Added new row texture: Details Vidro.\n\n|cFFFFFF00-|r Revamp on death log tooltips.\n\n|cFFFFFF00-|r Improved the visual effect for the instance which current moving window can snap to.\n\n|cFFFFFF00v1.14.5 - 1.14.6 (|cFFFFCC00May 24, 2014|r|cFFFFFF00):|r\n\n|cFFFFFF00-|r Added option for lock segments display, so, when a segment is chosen, the other windows also change it.\n\n|cFFFFFF00-|r Added option for show the total amount of spells, targets and pets in tooltips.\n\n|cFFFFFF00-|r Finished another revamp on options panel.\n\n|cFFFFFF00-|r Now its possible open more then 1 Raid Plugins at once on diferent windows.\n\n|cFFFFFF00-|r Added a large text editor for make changes on custom texts.\n\n|cFFFFFF00-|r Added new option for enable borders on the bars.\n\n|cFFFFFF00-|r Added Death Barrier as a absorb spell.\n\n|cFFFFFF00-|r Fixed a bug on overheal tooltip where was showing the Hps instead of overheal.\n\n|cFFFFFF00v1.14.0 - v1.14.0b (|cFFFFCC00May 17, 2014|r|cFFFFFF00):\n\n|cFFFFFF00-|r Added a new tab on options panel for tooltip configuration.\n\n|cFFFFFF00-|r Added a new tab on options panel for broker config.\n\n|cFFFFFF00-|r Added new abbreviation method called comma.\n\n|cFFFFFF00-|r All instances now have a delete button.\n\n|cFFFFFF00-|r Full re-write on the instance, delete and close buttons.\n\n|cFFFFFF00-|r HotCorners now sort icons according with most used.\n\n|cFFFFFF00-|r Few changes on all skins in order to fit on the new right menu buttons.\n\n|cFFFFFF00-|r Added Horde avatars.\n\n|cFFFFFF00-|r Fixed issue where shortcut panel shows below thw windows when its in Dialog strata.\n\n|cFFFFFF00v1.13.8 - v1.13.8a (|cFFFFCC00May 09, 2014|r|cFFFFFF00):\n\n|cFFFFFF00-|r Fixed issue with Vanguard where it wasn't showing debuffs stacks on the tanks if you are a healer os dps.\n\n|cFFFFFF00-|r Added option for put stretch button on the fullscreen strata which makes it always on top of others frames.\n\n|cFFFFFF00-|r Added background and dialog stratas.\n\n|cFFFFFF00-|r Added option for percentage: follow the combat totals or the first player total.\n\n|cFFFFFF00-|r Added option for show or hide the left buttons on menu bar.\n\n|cFFFFFF00-|r Added option for change the left buttons size in the menu bar.\n\n|cFFFFFF00-|r Added option for delete a instance.\n\n|cFFFFFF00-|r Instance Segment Mini display now is more accuracy about telling the enemy in the segment.\n\n|cFFFFFF00-|r Player Details Window now show all pet abilities instead of just the total pet damage.\n\n|cFFFFFF00-|r Rework done on report texts, now the title is more shorter and also format Dps and Hps numbers.\n\n|cFFFFFF00-|r Simple Gray and again ElvUI skins got some rework.\n\n|cFFFFFF00-|r Lib HotCorner now is data broker based and shows up all broker plugins in the bar.\n\n|cFFFFFF00v1.13.5 / v1.13.5a (|cFFFFCC00May 02, 2014|r|cFFFFFF00):|r\n\n|cFFFFFF00-|r Added keybinds to reset segments and scroll up/down.\n\n|cFFFFFF00-|r Added Spell Customization options where icon and the name of a spell can be changed.\n\n|cFFFFFF00-|r Added option to change the micro displays side, now it can be shown on the window top side.\n\n|cFFFFFF00-|r Micro Displays, also, should now give less problems and be more dynamic." Loc ["STRING_DETAILS1"] = "|cffffaeaeDetalhes:|r " --> color and details name @@ -144,6 +144,9 @@ if not Loc then return end Loc ["STRING_CUSTOM_HELP4"] = "Voce pode escolher uma magia de algum encontro de uma raide, basta deixar o ponteiro do mouse sobre o botao para que o menu seja mostrado." Loc ["STRING_CUSTOM_ACCETP_CUSTOM"] = "lhe enviou um display customizado. Voce deseja adicionar esta customizacao a sua biblioteca de displays customizados?" + Loc ["STRING_CUSTOM_POT_DEFAULT"] = "Pocao Usada" + Loc ["STRING_CUSTOM_HEALTHSTONE_DEFAULT"] = "Pedra de Vida Usada" + --> Switch Window Loc ["STRING_SWITCH_CLICKME"] = "clique-me" diff --git a/startup.lua b/startup.lua index a9ed0e55..dc81a940 100644 --- a/startup.lua +++ b/startup.lua @@ -1,5 +1,3 @@ ---no inicio da luta gravar tabela com os coolsdowns de cada jogador e ir anotando quando eles sao usados. - --File Revision: 1 --Last Modification: 27/07/2013 -- Change Log: @@ -7,51 +5,10 @@ function _G._detalhes:Start() ---teste de box ---[[ - local f = CreateFrame ("frame", "TestBoxFrame", UIParent) - f:SetPoint ("center", UIParent, "center") - f:SetSize (256, 256) - f:SetMovable (true) - - local t = f:CreateTexture (nil, "artwork") - t:SetSize (90, 90) - t:SetPoint ("topleft", f, "topleft") - t:SetTexture ("Interface\\Addons\\Details\\box") - t:SetTexCoord (0.29296875, 0.64453125, 0.265625-0.001953125, 0.6171875+0.001953125) -- 75 68 165 158 0.001953125 // - - local left = f:CreateFontString (nil, "overlay", "GameFontNormal") - local right = f:CreateFontString (nil, "overlay", "GameFontNormal") - local top = f:CreateFontString (nil, "overlay", "GameFontNormal") - local bottom = f:CreateFontString (nil, "overlay", "GameFontNormal") - - left:SetPoint ("right", t, "left", -20, 0) - right:SetPoint ("left", t, "right", 20, 0) - top:SetPoint ("bottom", t, "top", 0, 20) - bottom:SetPoint ("top", t, "bottom", 0, -20) - - function f:UpdateLeftRight() - left:SetText ("left: " .. string.format ("%.3f", t:GetLeft())) - right:SetText ("right: " .. string.format ("%.3f", t:GetRight())) - top:SetText ("top: " .. string.format ("%.3f", t:GetTop())) - bottom:SetText ("bottom: " .. string.format ("%.3f", t:GetBottom())) - end - f:UpdateLeftRight() - - f:SetScript ("OnMouseDown", function() f:StartMoving(); f:SetScript("OnUpdate", function() f:UpdateLeftRight() end) end) - f:SetScript ("OnMouseUp", function() f:StopMovingOrSizing(); f:SetScript("OnUpdate", nil); f:UpdateLeftRight() end) - - function _detalhes:updatetestbox() - f:UpdateLeftRight() - end - _detalhes:ScheduleTimer("updatetestbox", 5) - ---]] + local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> details defaults - - --> parse all config - --_detalhes:CountDataOnLoad() --> single click row function replace --damage, dps, damage taken, friendly fire @@ -64,7 +21,7 @@ function _G._detalhes:Start() self.row_singleclick_overwrite [4] = {true, true, true, true, self.atributo_misc.ReportSingleDeadLine, self.atributo_misc.ReportSingleCooldownLine, self.atributo_misc.ReportSingleBuffUptimeLine, self.atributo_misc.ReportSingleDebuffUptimeLine} self.click_to_report_color = {1, 0.8, 0, 1} - --self.click_to_report_color = {0, 1, 0, 1} + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> initialize @@ -74,60 +31,38 @@ function _G._detalhes:Start() if (self.switch.InitSwitch) then self.switch:InitSwitch() end + --> custom window self.custom = self.custom or {} - self:InitCustom() + --self:InitCustom() + --> actor info self.janela_info = self.gump:CriaJanelaInfo() self.gump:Fade (self.janela_info, 1) + --> copy and paste window self:CreateCopyPasteWindow() self.CreateCopyPasteWindow = nil - --> yesno frame - self.yesNo = self.gump:NewPanel (UIParent, _, "DetailsYesNoWindow", _, 500, 80) - self.yesNo:SetPoint ("center", UIParent, "center") - self.gump:NewLabel (self.yesNo, _, "$parentAsk", "ask", "") - self.yesNo ["ask"]:SetPoint ("center", self.yesNo, "center", 0, 25) - self.yesNo ["ask"]:SetWidth (480) - self.yesNo ["ask"]:SetJustifyH ("center") - self.yesNo ["ask"]:SetHeight (22) - local Loc = LibStub ("AceLocale-3.0"):GetLocale ("Details") - self.gump:NewButton (self.yesNo, _, "$parentNo", "no", 100, 30, function() self.yesNo:Hide() end, nil, nil, nil, Loc ["STRING_NO"]) - self.gump:NewButton (self.yesNo, _, "$parentYes", "yes", 100, 30, nil, nil, nil, nil, Loc ["STRING_YES"]) - self.yesNo ["no"]:SetPoint (10, -45) - self.yesNo ["yes"]:SetPoint (390, -45) - self.yesNo ["no"]:InstallCustomTexture() - self.yesNo ["yes"]:InstallCustomTexture() - self.yesNo ["yes"]:SetHook ("OnMouseUp", function() self.yesNo:Hide() end) - function _detalhes:Ask (msg, func, ...) - self.yesNo ["ask"].text = msg - local p1, p2 = ... - self.yesNo ["yes"]:SetClickFunction (func, p1, p2) - self.yesNo:Show() - end - self.yesNo:Hide() - + --> start instances - --_detalhes.custom = {} - --_detalhes.tabela_instancias = {} - if (self:QuantasInstancias() == 0) then self:CriarInstancia() - else - --self:ReativarInstancias() end self:GetLowerInstanceNumber() self:CheckConsolidates() --> start time machine + self.timeMachine:Ligar() --> update abbreviation shorcut + self.atributo_damage:UpdateSelectedToKFunction() self.atributo_heal:UpdateSelectedToKFunction() self.atributo_energy:UpdateSelectedToKFunction() self.atributo_misc:UpdateSelectedToKFunction() + self.atributo_custom:UpdateSelectedToKFunction() --> start instances updater @@ -187,9 +122,9 @@ function _G._detalhes:Start() end self:ScheduleTimer ("RefreshAfterStartup", 5) - --> start garbage collector + self.ultima_coleta = 0 self.intervalo_coleta = 720 --self.intervalo_coleta = 10 @@ -204,8 +139,7 @@ function _G._detalhes:Start() --> load parser capture options self:CaptureRefresh() --> register parser events - --self.listener:RegisterEvent ("COMBAT_LOG_EVENT_UNFILTERED") - self.parser_frame:RegisterEvent ("COMBAT_LOG_EVENT_UNFILTERED") + self.listener:RegisterEvent ("PLAYER_REGEN_DISABLED") self.listener:RegisterEvent ("PLAYER_REGEN_ENABLED") self.listener:RegisterEvent ("SPELL_SUMMON") @@ -224,354 +158,277 @@ function _G._detalhes:Start() self.listener:RegisterEvent ("ENCOUNTER_END") self.listener:RegisterEvent ("START_TIMER") - --self.listener:RegisterEvent ("ARENA_PREP_OPPONENT_SPECIALIZATIONS") - --self.listener:RegisterEvent ("ARENA_OPPONENT_UPDATE") - + self.listener:RegisterEvent ("UNIT_NAME_UPDATE") + self.listener:RegisterEvent ("PET_BATTLE_OPENING_START") self.listener:RegisterEvent ("PET_BATTLE_CLOSE") - - --self.listener:RegisterAllEvents() - - -- self.listener:RegisterEvent ("SPELL_CAST_START") - -- self.listener:RegisterEvent ("UNIT_SPELLCAST_STOP") - -- self.listener:RegisterEvent ("UNIT_SPELLCAST_SUCCEEDED") - -- self.listener:RegisterEvent ("UNIT_SPELLCAST_FAILED") - -- self.listener:RegisterEvent ("UNIT_SPELLCAST_FAILED_QUIET") - -- self.listener:RegisterEvent ("UNIT_SPELLCAST_INTERRUPTED") - ---------------------------------------------------------------------------------------------------------------------------------------- + + self.parser_frame:RegisterEvent ("COMBAT_LOG_EVENT_UNFILTERED") - function _detalhes:CooltipPreset (preset) - - local GameCooltip = GameCooltip - - GameCooltip:Reset() - - if (preset == 1) then - GameCooltip:SetOption ("TextFont", "Friz Quadrata TT") - GameCooltip:SetOption ("TextColor", "orange") - GameCooltip:SetOption ("TextSize", 12) - GameCooltip:SetOption ("ButtonsYMod", -4) - GameCooltip:SetOption ("YSpacingMod", -4) - GameCooltip:SetOption ("IgnoreButtonAutoHeight", true) - GameCooltip:SetColor (1, 0.5, 0.5, 0.5, 0.5) - - elseif (preset == 2) then - GameCooltip:SetOption ("TextFont", "Friz Quadrata TT") - GameCooltip:SetOption ("TextColor", "orange") - GameCooltip:SetOption ("TextSize", 12) - GameCooltip:SetOption ("FixedWidth", 220) - GameCooltip:SetOption ("ButtonsYMod", -4) - GameCooltip:SetOption ("YSpacingMod", -4) - GameCooltip:SetOption ("IgnoreButtonAutoHeight", true) - GameCooltip:SetColor (1, 0.5, 0.5, 0.5, 0.5) - - end - end - - --> done - self.initializing = nil - --> group - self.details_users = {} - self.in_group = IsInGroup() or IsInRaid() - + self.details_users = {} + self.in_group = IsInGroup() or IsInRaid() + + --> done + self.initializing = nil + + --> scan pets + _detalhes:SchedulePetUpdate (1) + --> send messages gathered on initialization - self:ScheduleTimer ("ShowDelayMsg", 10) + self:ScheduleTimer ("ShowDelayMsg", 10) --> send instance open signal - for index, instancia in ipairs (self.tabela_instancias) do - if (instancia.ativa) then - self:SendEvent ("DETAILS_INSTANCE_OPEN", nil, instancia) - --instancia:SetBarGrowDirection() + for index, instancia in ipairs (self.tabela_instancias) do + if (instancia.ativa) then + self:SendEvent ("DETAILS_INSTANCE_OPEN", nil, instancia) + end end - end - --> all done, send started signal and we are ready - function self:AnnounceStartup() - self:SendEvent ("DETAILS_STARTED", "SEND_TO_ALL") - end - self:ScheduleTimer ("AnnounceStartup", 5) - + --> send details startup done signal + function self:AnnounceStartup() + self:SendEvent ("DETAILS_STARTED", "SEND_TO_ALL") + end + self:ScheduleTimer ("AnnounceStartup", 5) + --> announce alpha version - function self:AnnounceVersion() - for index, instancia in ipairs (self.tabela_instancias) do - if (instancia.ativa) then - self.gump:Fade (instancia._version, "in", 0.1) + function self:AnnounceVersion() + for index, instancia in ipairs (self.tabela_instancias) do + if (instancia.ativa) then + self.gump:Fade (instancia._version, "in", 0.1) + end end end - end + + --> restore cooltip anchor position + DetailsTooltipAnchor:Restore() - --> cooltip anchor - DetailsTooltipAnchor:Restore() + --> check is this is the first run + if (self.is_first_run) then + _detalhes:OpenWelcomeWindow() + + if (#self.custom == 0) then + _detalhes:AddDefaultCustomDisplays() + end + + _detalhes:FillUserCustomSpells() + end + + --> start tutorial if this is first run + if (self.tutorial.logons < 2 and self.is_first_run) then + self:StartTutorial() + end + + --> send feedback panel if the user got 100 or more logons with details + if (self.tutorial.logons > 100) then -- and self.tutorial.logons < 104 - --[[ - if (self.tutorial.version_announce < 4) then - self:ScheduleTimer ("AnnounceVersion", 20) - self.tutorial.version_announce = self.tutorial.version_announce + 1 - else - - for index, instancia in ipairs (self.tabela_instancias) do - if (instancia.ativa) then - self.gump:Fade (instancia._version, 0) - instancia._version:SetText ("Details! Alpha " .. _detalhes.userversion .. " (core: " .. self.realversion .. ")") - instancia._version:SetPoint ("bottomleft", instancia.baseframe, "bottomleft", 0, 1) - self.gump:Fade (instancia._version, "in", 10) + if (not self.tutorial.feedback_window1) then + self.tutorial.feedback_window1 = true + + local feedback_frame = CreateFrame ("FRAME", "DetailsFeedbackWindow", UIParent, "ButtonFrameTemplate") + tinsert (UISpecialFrames, "DetailsFeedbackWindow") + feedback_frame:SetPoint ("center", UIParent, "center") + feedback_frame:SetSize (512, 200) + feedback_frame.portrait:SetTexture ([[Interface\CHARACTERFRAME\TEMPORARYPORTRAIT-FEMALE-GNOME]]) + + feedback_frame.TitleText:SetText ("Details! Need Your Help!") + + feedback_frame.uppertext = feedback_frame:CreateFontString (nil, "artwork", "GameFontNormal") + feedback_frame.uppertext:SetText ("Tell us about your experience using Details!, what you liked most, where we could improve, what things you want to see in the future?") + feedback_frame.uppertext:SetPoint ("topleft", feedback_frame, "topleft", 60, -32) + local font, _, flags = feedback_frame.uppertext:GetFont() + feedback_frame.uppertext:SetFont (font, 10, flags) + feedback_frame.uppertext:SetTextColor (1, 1, 1, .8) + feedback_frame.uppertext:SetWidth (440) - if (instancia.auto_switch_to_old) then - instancia:SwitchBack() - end - end - end - end - --]] - - - - if (self.is_first_run) then - - _detalhes:OpenWelcomeWindow() - - if (#self.custom == 0) then - local Healthstone = { - ["attribute"] = 2, - ["spell"] = "6262", - ["name"] = "Healthstone", - ["sattribute"] = 1, - ["target"] = "", - ["source"] = "[raid]", - ["icon"] = "Interface\\Icons\\warlock_ healthstone", - } - self.custom [#self.custom+1] = Healthstone - local HealingPotion = { - ["attribute"] = 2, - ["spell"] = "105708", - ["name"] = "Healing Potion", - ["sattribute"] = 1, - ["target"] = "", - ["source"] = "[raid]", - ["icon"] = "Interface\\Icons\\trade_alchemy_potiond3", - } - self.custom [#self.custom+1] = HealingPotion - end - - _detalhes:FillUserCustomSpells() - - end - - -- _detalhes:OpenWelcomeWindow() - - --desligado por precaução - if (self.tutorial.logons < 2 and self.is_first_run) then - self:StartTutorial() - end - - --> feedback trhead - if (self.tutorial.logons > 100) then -- and self.tutorial.logons < 104 - - --desligado por preocaução - - if (not self.tutorial.feedback_window1) then - self.tutorial.feedback_window1 = true - - local feedback_frame = CreateFrame ("FRAME", "DetailsFeedbackWindow", UIParent, "ButtonFrameTemplate") - tinsert (UISpecialFrames, "DetailsFeedbackWindow") - feedback_frame:SetPoint ("center", UIParent, "center") - feedback_frame:SetSize (512, 200) - feedback_frame.portrait:SetTexture ([[Interface\CHARACTERFRAME\TEMPORARYPORTRAIT-FEMALE-GNOME]]) - - feedback_frame.TitleText:SetText ("Details! Need Your Help!") - - feedback_frame.uppertext = feedback_frame:CreateFontString (nil, "artwork", "GameFontNormal") - feedback_frame.uppertext:SetText ("Tell us about your experience using Details!, what you liked most, where we could improve, what things you want to see in the future?") - feedback_frame.uppertext:SetPoint ("topleft", feedback_frame, "topleft", 60, -32) - local font, _, flags = feedback_frame.uppertext:GetFont() - feedback_frame.uppertext:SetFont (font, 10, flags) - feedback_frame.uppertext:SetTextColor (1, 1, 1, .8) - feedback_frame.uppertext:SetWidth (440) - - - local editbox = _detalhes.gump:NewTextEntry (feedback_frame, nil, "$parentTextEntry", "text", 387, 14) - editbox:SetPoint (20, -106) - editbox:SetAutoFocus (false) - editbox:SetHook ("OnEditFocusGained", function() - editbox.text = "http://www.mmo-champion.com/threads/1480721-New-damage-meter-%28Details!%29-need-help-with-tests-and-feedbacks" - editbox:HighlightText() - end) - editbox:SetHook ("OnEditFocusLost", function() - editbox.text = "http://www.mmo-champion.com/threads/1480721-New-damage-meter-%28Details!%29-need-help-with-tests-and-feedbacks" - editbox:HighlightText() - end) - editbox:SetHook ("OnChar", function() + local editbox = _detalhes.gump:NewTextEntry (feedback_frame, nil, "$parentTextEntry", "text", 387, 14) + editbox:SetPoint (20, -106) + editbox:SetAutoFocus (false) + editbox:SetHook ("OnEditFocusGained", function() + editbox.text = "http://www.mmo-champion.com/threads/1480721-New-damage-meter-%28Details!%29-need-help-with-tests-and-feedbacks" + editbox:HighlightText() + end) + editbox:SetHook ("OnEditFocusLost", function() + editbox.text = "http://www.mmo-champion.com/threads/1480721-New-damage-meter-%28Details!%29-need-help-with-tests-and-feedbacks" + editbox:HighlightText() + end) + editbox:SetHook ("OnChar", function() + editbox.text = "http://www.mmo-champion.com/threads/1480721-New-damage-meter-%28Details!%29-need-help-with-tests-and-feedbacks" + editbox:HighlightText() + end) editbox.text = "http://www.mmo-champion.com/threads/1480721-New-damage-meter-%28Details!%29-need-help-with-tests-and-feedbacks" - editbox:HighlightText() - end) - editbox.text = "http://www.mmo-champion.com/threads/1480721-New-damage-meter-%28Details!%29-need-help-with-tests-and-feedbacks" - - - feedback_frame.midtext = feedback_frame:CreateFontString (nil, "artwork", "GameFontNormal") - feedback_frame.midtext:SetText ("visit the link above and let's make Details! stronger!") - feedback_frame.midtext:SetPoint ("center", editbox.widget, "center") - feedback_frame.midtext:SetPoint ("top", editbox.widget, "bottom", 0, -2) - feedback_frame.midtext:SetJustifyH ("center") - local font, _, flags = feedback_frame.midtext:GetFont() - feedback_frame.midtext:SetFont (font, 10, flags) - --feedback_frame.midtext:SetTextColor (1, 1, 1, 1) - feedback_frame.midtext:SetWidth (440) - - - feedback_frame.gnoma = feedback_frame:CreateTexture (nil, "artwork") - feedback_frame.gnoma:SetPoint ("topright", feedback_frame, "topright", -1, -59) - feedback_frame.gnoma:SetTexture ("Interface\\AddOns\\Details\\images\\icons2") - feedback_frame.gnoma:SetSize (105*1.05, 107*1.05) - feedback_frame.gnoma:SetTexCoord (0.2021484375, 0, 0.7919921875, 1) + + + feedback_frame.midtext = feedback_frame:CreateFontString (nil, "artwork", "GameFontNormal") + feedback_frame.midtext:SetText ("visit the link above and let's make Details! stronger!") + feedback_frame.midtext:SetPoint ("center", editbox.widget, "center") + feedback_frame.midtext:SetPoint ("top", editbox.widget, "bottom", 0, -2) + feedback_frame.midtext:SetJustifyH ("center") + local font, _, flags = feedback_frame.midtext:GetFont() + feedback_frame.midtext:SetFont (font, 10, flags) + --feedback_frame.midtext:SetTextColor (1, 1, 1, 1) + feedback_frame.midtext:SetWidth (440) + + + feedback_frame.gnoma = feedback_frame:CreateTexture (nil, "artwork") + feedback_frame.gnoma:SetPoint ("topright", feedback_frame, "topright", -1, -59) + feedback_frame.gnoma:SetTexture ("Interface\\AddOns\\Details\\images\\icons2") + feedback_frame.gnoma:SetSize (105*1.05, 107*1.05) + feedback_frame.gnoma:SetTexCoord (0.2021484375, 0, 0.7919921875, 1) - feedback_frame.close = CreateFrame ("Button", "DetailsFeedbackWindowCloseButton", feedback_frame, "OptionsButtonTemplate") - feedback_frame.close:SetPoint ("bottomleft", feedback_frame, "bottomleft", 8, 4) - feedback_frame.close:SetText ("Close") - feedback_frame.close:SetScript ("OnClick", function (self) - editbox:ClearFocus() - feedback_frame:Hide() - end) + feedback_frame.close = CreateFrame ("Button", "DetailsFeedbackWindowCloseButton", feedback_frame, "OptionsButtonTemplate") + feedback_frame.close:SetPoint ("bottomleft", feedback_frame, "bottomleft", 8, 4) + feedback_frame.close:SetText ("Close") + feedback_frame.close:SetScript ("OnClick", function (self) + editbox:ClearFocus() + feedback_frame:Hide() + end) + + feedback_frame.postpone = CreateFrame ("Button", "DetailsFeedbackWindowPostPoneButton", feedback_frame, "OptionsButtonTemplate") + feedback_frame.postpone:SetPoint ("bottomright", feedback_frame, "bottomright", -10, 4) + feedback_frame.postpone:SetText ("Remind-me Later") + feedback_frame.postpone:SetScript ("OnClick", function (self) + editbox:ClearFocus() + feedback_frame:Hide() + _detalhes.tutorial.feedback_window1 = false + end) + feedback_frame.postpone:SetWidth (130) + + feedback_frame:SetScript ("OnHide", function() + editbox:ClearFocus() + end) + + --0.0009765625 512 + function _detalhes:FeedbackSetFocus() + DetailsFeedbackWindow:Show() + DetailsFeedbackWindowTextEntry.MyObject:SetFocus() + DetailsFeedbackWindowTextEntry.MyObject:HighlightText() + end + _detalhes:ScheduleTimer ("FeedbackSetFocus", 5) - feedback_frame.postpone = CreateFrame ("Button", "DetailsFeedbackWindowPostPoneButton", feedback_frame, "OptionsButtonTemplate") - feedback_frame.postpone:SetPoint ("bottomright", feedback_frame, "bottomright", -10, 4) - feedback_frame.postpone:SetText ("Remind-me Later") - feedback_frame.postpone:SetScript ("OnClick", function (self) - editbox:ClearFocus() - feedback_frame:Hide() - _detalhes.tutorial.feedback_window1 = false - end) - feedback_frame.postpone:SetWidth (130) - - feedback_frame:SetScript ("OnHide", function() - editbox:ClearFocus() - end) - - --0.0009765625 512 - function _detalhes:FeedbackSetFocus() - DetailsFeedbackWindow:Show() - DetailsFeedbackWindowTextEntry.MyObject:SetFocus() - DetailsFeedbackWindowTextEntry.MyObject:HighlightText() end - _detalhes:ScheduleTimer ("FeedbackSetFocus", 5) - + end + + --> check is this is the first run of this version + if (self.is_version_first_run) then - end - - if (self.is_version_first_run) then - - local enable_reset_warning = true - - local lower_instance = _detalhes:GetLowerInstanceNumber() - if (lower_instance) then - lower_instance = _detalhes:GetInstance (lower_instance) + local enable_reset_warning = true + + local lower_instance = _detalhes:GetLowerInstanceNumber() if (lower_instance) then - lower_instance:InstanceAlert (Loc ["STRING_VERSION_UPDATE"], {[[Interface\GossipFrame\AvailableQuestIcon]], 16, 16, false}, 60, {_detalhes.OpenNewsWindow}) + lower_instance = _detalhes:GetInstance (lower_instance) + if (lower_instance) then + lower_instance:InstanceAlert (Loc ["STRING_VERSION_UPDATE"], {[[Interface\GossipFrame\AvailableQuestIcon]], 16, 16, false}, 60, {_detalhes.OpenNewsWindow}) + end end - end - - _detalhes:FillUserCustomSpells() - - if (_detalhes_database.last_realversion and _detalhes_database.last_realversion < 18 and enable_reset_warning) then - --print ("Last Version:", _detalhes_database.last_version, "Last Interval Version:", _detalhes_database.last_realversion) + _detalhes:FillUserCustomSpells() + + if (_detalhes_database.last_realversion and _detalhes_database.last_realversion < 20 and enable_reset_warning) then + table.wipe (self.custom) + _detalhes:AddDefaultCustomDisplays() + end + + if (_detalhes_database.last_realversion and _detalhes_database.last_realversion < 18 and enable_reset_warning) then + + --print ("Last Version:", _detalhes_database.last_version, "Last Interval Version:", _detalhes_database.last_realversion) - local resetwarning_frame = CreateFrame ("FRAME", "DetailsResetConfigWarningDialog", UIParent, "ButtonFrameTemplate") - resetwarning_frame:SetFrameStrata ("LOW") - tinsert (UISpecialFrames, "DetailsResetConfigWarningDialog") - resetwarning_frame:SetPoint ("center", UIParent, "center") - resetwarning_frame:SetSize (512, 200) - resetwarning_frame.portrait:SetTexture ([[Interface\CHARACTERFRAME\TEMPORARYPORTRAIT-FEMALE-GNOME]]) - resetwarning_frame:SetScript ("OnHide", function() - DetailsBubble:HideBubble() - end) - - resetwarning_frame.TitleText:SetText ("Noooooooooooo!!!") + local resetwarning_frame = CreateFrame ("FRAME", "DetailsResetConfigWarningDialog", UIParent, "ButtonFrameTemplate") + resetwarning_frame:SetFrameStrata ("LOW") + tinsert (UISpecialFrames, "DetailsResetConfigWarningDialog") + resetwarning_frame:SetPoint ("center", UIParent, "center") + resetwarning_frame:SetSize (512, 200) + resetwarning_frame.portrait:SetTexture ([[Interface\CHARACTERFRAME\TEMPORARYPORTRAIT-FEMALE-GNOME]]) + resetwarning_frame:SetScript ("OnHide", function() + DetailsBubble:HideBubble() + end) + + resetwarning_frame.TitleText:SetText ("Noooooooooooo!!!") - resetwarning_frame.midtext = resetwarning_frame:CreateFontString (nil, "artwork", "GameFontNormal") - resetwarning_frame.midtext:SetText ("A pack of murlocs has attacked Details! tech center, our gnomes engineers are working on fixing the damage.\n\n If something is messed in your Details!, especially the close, instance and reset buttons, you can either 'Reset Skin' or access the options panel.") - resetwarning_frame.midtext:SetPoint ("topleft", resetwarning_frame, "topleft", 10, -90) - resetwarning_frame.midtext:SetJustifyH ("center") - resetwarning_frame.midtext:SetWidth (370) + resetwarning_frame.midtext = resetwarning_frame:CreateFontString (nil, "artwork", "GameFontNormal") + resetwarning_frame.midtext:SetText ("A pack of murlocs has attacked Details! tech center, our gnomes engineers are working on fixing the damage.\n\n If something is messed in your Details!, especially the close, instance and reset buttons, you can either 'Reset Skin' or access the options panel.") + resetwarning_frame.midtext:SetPoint ("topleft", resetwarning_frame, "topleft", 10, -90) + resetwarning_frame.midtext:SetJustifyH ("center") + resetwarning_frame.midtext:SetWidth (370) + + resetwarning_frame.gnoma = resetwarning_frame:CreateTexture (nil, "artwork") + resetwarning_frame.gnoma:SetPoint ("topright", resetwarning_frame, "topright", -3, -80) + resetwarning_frame.gnoma:SetTexture ("Interface\\AddOns\\Details\\images\\icons2") + resetwarning_frame.gnoma:SetSize (89*1.00, 97*1.00) + --resetwarning_frame.gnoma:SetTexCoord (0.212890625, 0.494140625, 0.798828125, 0.99609375) -- 109 409 253 510 + resetwarning_frame.gnoma:SetTexCoord (0.17578125, 0.001953125, 0.59765625, 0.787109375) -- 1 306 90 403 + + resetwarning_frame.close = CreateFrame ("Button", "DetailsFeedbackWindowCloseButton", resetwarning_frame, "OptionsButtonTemplate") + resetwarning_frame.close:SetPoint ("bottomleft", resetwarning_frame, "bottomleft", 8, 4) + resetwarning_frame.close:SetText ("Close") + resetwarning_frame.close:SetScript ("OnClick", function (self) + resetwarning_frame:Hide() + end) - resetwarning_frame.gnoma = resetwarning_frame:CreateTexture (nil, "artwork") - resetwarning_frame.gnoma:SetPoint ("topright", resetwarning_frame, "topright", -3, -80) - resetwarning_frame.gnoma:SetTexture ("Interface\\AddOns\\Details\\images\\icons2") - resetwarning_frame.gnoma:SetSize (89*1.00, 97*1.00) - --resetwarning_frame.gnoma:SetTexCoord (0.212890625, 0.494140625, 0.798828125, 0.99609375) -- 109 409 253 510 - resetwarning_frame.gnoma:SetTexCoord (0.17578125, 0.001953125, 0.59765625, 0.787109375) -- 1 306 90 403 - - resetwarning_frame.close = CreateFrame ("Button", "DetailsFeedbackWindowCloseButton", resetwarning_frame, "OptionsButtonTemplate") - resetwarning_frame.close:SetPoint ("bottomleft", resetwarning_frame, "bottomleft", 8, 4) - resetwarning_frame.close:SetText ("Close") - resetwarning_frame.close:SetScript ("OnClick", function (self) - resetwarning_frame:Hide() - end) - - resetwarning_frame.see_updates = CreateFrame ("Button", "DetailsResetWindowSeeUpdatesButton", resetwarning_frame, "OptionsButtonTemplate") - resetwarning_frame.see_updates:SetPoint ("bottomright", resetwarning_frame, "bottomright", -10, 4) - resetwarning_frame.see_updates:SetText ("Update Info") - resetwarning_frame.see_updates:SetScript ("OnClick", function (self) - _detalhes.OpenNewsWindow() - DetailsBubble:HideBubble() - --resetwarning_frame:Hide() - end) - resetwarning_frame.see_updates:SetWidth (130) - - resetwarning_frame.reset_skin = CreateFrame ("Button", "DetailsResetWindowResetSkinButton", resetwarning_frame, "OptionsButtonTemplate") - resetwarning_frame.reset_skin:SetPoint ("right", resetwarning_frame.see_updates, "left", -5, 0) - resetwarning_frame.reset_skin:SetText ("Reset Skin") - resetwarning_frame.reset_skin:SetScript ("OnClick", function (self) - --do the reset - for index, instance in ipairs (_detalhes.tabela_instancias) do - if (not instance.iniciada) then - instance:RestauraJanela() - local skin = instance.skin - instance:ChangeSkin ("Default Skin") - instance:ChangeSkin ("Minimalistic") - instance:ChangeSkin (skin) - instance:DesativarInstancia() - else - local skin = instance.skin - instance:ChangeSkin ("Default Skin") - instance:ChangeSkin ("Minimalistic") - instance:ChangeSkin (skin) + resetwarning_frame.see_updates = CreateFrame ("Button", "DetailsResetWindowSeeUpdatesButton", resetwarning_frame, "OptionsButtonTemplate") + resetwarning_frame.see_updates:SetPoint ("bottomright", resetwarning_frame, "bottomright", -10, 4) + resetwarning_frame.see_updates:SetText ("Update Info") + resetwarning_frame.see_updates:SetScript ("OnClick", function (self) + _detalhes.OpenNewsWindow() + DetailsBubble:HideBubble() + --resetwarning_frame:Hide() + end) + resetwarning_frame.see_updates:SetWidth (130) + + resetwarning_frame.reset_skin = CreateFrame ("Button", "DetailsResetWindowResetSkinButton", resetwarning_frame, "OptionsButtonTemplate") + resetwarning_frame.reset_skin:SetPoint ("right", resetwarning_frame.see_updates, "left", -5, 0) + resetwarning_frame.reset_skin:SetText ("Reset Skin") + resetwarning_frame.reset_skin:SetScript ("OnClick", function (self) + --do the reset + for index, instance in ipairs (_detalhes.tabela_instancias) do + if (not instance.iniciada) then + instance:RestauraJanela() + local skin = instance.skin + instance:ChangeSkin ("Default Skin") + instance:ChangeSkin ("Minimalistic") + instance:ChangeSkin (skin) + instance:DesativarInstancia() + else + local skin = instance.skin + instance:ChangeSkin ("Default Skin") + instance:ChangeSkin ("Minimalistic") + instance:ChangeSkin (skin) + end end - end - end) - resetwarning_frame.reset_skin:SetWidth (130) + end) + resetwarning_frame.reset_skin:SetWidth (130) + + resetwarning_frame.open_options = CreateFrame ("Button", "DetailsResetWindowOpenOptionsButton", resetwarning_frame, "OptionsButtonTemplate") + resetwarning_frame.open_options:SetPoint ("right", resetwarning_frame.reset_skin, "left", -5, 0) + resetwarning_frame.open_options:SetText ("Options Panel") + resetwarning_frame.open_options:SetScript ("OnClick", function (self) + local lower_instance = _detalhes:GetLowerInstanceNumber() + if (not lower_instance) then + local instance = _detalhes:GetInstance (1) + _detalhes.CriarInstancia (_, _, 1) + _detalhes:OpenOptionsWindow (instance) + else + _detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance)) + end + end) + resetwarning_frame.open_options:SetWidth (130) - resetwarning_frame.open_options = CreateFrame ("Button", "DetailsResetWindowOpenOptionsButton", resetwarning_frame, "OptionsButtonTemplate") - resetwarning_frame.open_options:SetPoint ("right", resetwarning_frame.reset_skin, "left", -5, 0) - resetwarning_frame.open_options:SetText ("Options Panel") - resetwarning_frame.open_options:SetScript ("OnClick", function (self) - local lower_instance = _detalhes:GetLowerInstanceNumber() - if (not lower_instance) then - local instance = _detalhes:GetInstance (1) - _detalhes.CriarInstancia (_, _, 1) - _detalhes:OpenOptionsWindow (instance) - else - _detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance)) + function _detalhes:ResetWarningDialog() + DetailsResetConfigWarningDialog:Show() + DetailsBubble:SetOwner (resetwarning_frame.gnoma, "bottomright", "topleft", 30, -37, 1) + DetailsBubble:FlipHorizontal() + DetailsBubble:SetBubbleText ("", "", "WWHYYYYYYYYY!!!!", "", "") + DetailsBubble:TextConfig (14, nil, "deeppink") + DetailsBubble:ShowBubble() + + end - end) - resetwarning_frame.open_options:SetWidth (130) - - function _detalhes:ResetWarningDialog() - DetailsResetConfigWarningDialog:Show() - DetailsBubble:SetOwner (resetwarning_frame.gnoma, "bottomright", "topleft", 30, -37, 1) - DetailsBubble:FlipHorizontal() - DetailsBubble:SetBubbleText ("", "", "WWHYYYYYYYYY!!!!", "", "") - DetailsBubble:TextConfig (14, nil, "deeppink") - DetailsBubble:ShowBubble() - - + _detalhes:ScheduleTimer ("ResetWarningDialog", 7) + end - _detalhes:ScheduleTimer ("ResetWarningDialog", 7) - end - end --> interface menu local f = CreateFrame ("frame", "DetailsInterfaceOptionsPanel", UIParent) @@ -1053,6 +910,7 @@ function _G._detalhes:Start() --_detalhes:OpenWelcomeWindow() --for debug end _detalhes:ScheduleTimer ("OpenOptionsWindowAtStart", 2) + --_detalhes:OpenCustomDisplayWindow() --BNSendFriendInvite ("tercio#1488")

8#^JLaBdE|YSDfCh@g+7~9o+px;{*S)-&Gkzk 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