diff --git a/classes/classe_damage.lua b/classes/classe_damage.lua index f8048717..e1d7b18e 100644 --- a/classes/classe_damage.lua +++ b/classes/classe_damage.lua @@ -81,7 +81,8 @@ function atributo_damage:NovaTabela (serial, nome, link) _new_damageActor.damage_taken = 0 --> total de dano que este jogador levou _new_damageActor.damage_from = {} --> armazena os nomes que deram dano neste jogador - _new_damageActor.last_events_table = {} --> log da morte + _new_damageActor.last_events_table = _detalhes:CreateActorLastEventTable() + _new_damageActor.last_events_table.original = true _new_damageActor.avoidance = {["DODGE"] = 0, ["PARRY"] = 0, ["HITS"] = 0} --> avoidance @@ -117,6 +118,12 @@ function atributo_damage:NovaTabela (serial, nome, link) return _new_damageActor end +--[[exported]] function _detalhes:CreateActorLastEventTable() + local t = { {}, {}, {}, {}, {}, {}, {}, {} } + t.n = 1 + return t + end + --[[exported]] function _detalhes.SortGroup (container, keyName2) keyName = keyName2 return _table_sort (container, _detalhes.SortKeyGroup) @@ -660,7 +667,13 @@ end --[[exported]] function _detalhes.Sort2 (table1, table2) return table1 [2] > table2 [2] end - +--[[exported]] function _detalhes.Sort3 (table1, table2) + return table1 [3] > table2 [3] + end +--[[exported]] function _detalhes.Sort4 (table1, table2) + return table1 [4] > table2 [4] + end + ---------> DAMAGE DONE & DPS function atributo_damage:ToolTip_DamageDone (instancia, numero, barra) @@ -943,7 +956,7 @@ function atributo_damage:MontaInfoFriendlyFire() local amt = #DamagedPlayers gump:JI_AtualizaContainerBarras (amt) - local FirstPlaceDamage = DamagedPlayers [1][2] + local FirstPlaceDamage = DamagedPlayers [1] and DamagedPlayers [1][2] or 0 for index, tabela in _ipairs (DamagedPlayers) do local barra = barras [index] @@ -1012,7 +1025,7 @@ function atributo_damage:MontaInfoFriendlyFire() gump:JI_AtualizaContainerAlvos (amt) - FirstPlaceDamage = SkillTable [1][2] + FirstPlaceDamage = SkillTable [1] and SkillTable [1][2] or 0 for index, tabela in _ipairs (SkillTable) do local barra = barras2 [index] @@ -1072,7 +1085,7 @@ function atributo_damage:MontaInfoDamageTaken() gump:JI_AtualizaContainerBarras (amt) - local max_ = meus_agressores [1][2] + local max_ = meus_agressores [1] and meus_agressores [1][2] or 0 for index, tabela in _ipairs (meus_agressores) do @@ -1232,7 +1245,7 @@ function atributo_damage:MontaInfoDamageDone() gump:JI_AtualizaContainerBarras (#ActorSkillsSortTable) - local max_ = ActorSkillsSortTable[1][2] --> dano que a primeiro magia vez + local max_ = ActorSkillsSortTable[1] and ActorSkillsSortTable[1][2] or 0 --> dano que a primeiro magia vez local barra for index, tabela in _ipairs (ActorSkillsSortTable) do @@ -1263,7 +1276,7 @@ function atributo_damage:MontaInfoDamageDone() gump:JI_AtualizaContainerAlvos (amt_alvos) - local max_inimigos = meus_inimigos[1][2] + local max_inimigos = meus_inimigos[1] and meus_inimigos[1][2] or 0 local barra for index, tabela in _ipairs (meus_inimigos) do @@ -1350,7 +1363,7 @@ function atributo_damage:MontaDetalhesFriendlyFire (nome, barra) --local amt = #minhas_magias --gump:JI_AtualizaContainerBarras (amt) - local max_ = minhas_magias[1][2] --> dano que a primeiro magia vez + local max_ = minhas_magias[1] and minhas_magias[1][2] or 0 --> dano que a primeiro magia vez local barra for index, tabela in _ipairs (minhas_magias) do @@ -1428,7 +1441,7 @@ function atributo_damage:MontaDetalhesDamageTaken (nome, barra) --local amt = #minhas_magias --gump:JI_AtualizaContainerBarras (amt) - local max_ = minhas_magias[1][2] --> dano que a primeiro magia vez + local max_ = minhas_magias[1] and minhas_magias[1][2] or 0 --> dano que a primeiro magia vez local barra for index, tabela in _ipairs (minhas_magias) do diff --git a/classes/classe_heal.lua b/classes/classe_heal.lua index 3d889510..7a76377a 100644 --- a/classes/classe_heal.lua +++ b/classes/classe_heal.lua @@ -79,7 +79,8 @@ function atributo_heal:NovaTabela (serial, nome, link) esta_tabela.total_without_pet = 0 --> pet de DK cura esta_tabela.totalover_without_pet = 0 --> pet de DK cura - esta_tabela.last_events_table = {} --> log da morte + esta_tabela.last_events_table = _detalhes:CreateActorLastEventTable() + esta_tabela.last_events_table.original = true esta_tabela.healing_taken = 0 --> total de cura que este jogador recebeu esta_tabela.healing_from = {} --> armazena os nomes que deram cura neste jogador @@ -532,7 +533,7 @@ function atributo_heal:MontaInfoHealTaken() gump:JI_AtualizaContainerBarras (amt) - local max_ = meus_curandeiros [1][2] + local max_ = meus_curandeiros [1] and meus_curandeiros [1][2] or 0 for index, tabela in _ipairs (meus_curandeiros) do @@ -610,7 +611,7 @@ function atributo_heal:MontaInfoOverHealing() local amt = #minhas_curas gump:JI_AtualizaContainerBarras (amt) - local max_ = minhas_curas[1][2] + local max_ = minhas_curas[1] and minhas_curas[1][2] or 0 for index, tabela in _ipairs (minhas_curas) do @@ -671,7 +672,7 @@ function atributo_heal:MontaInfoOverHealing() local amt_alvos = #meus_inimigos gump:JI_AtualizaContainerAlvos (amt_alvos) - local max_inimigos = meus_inimigos[1][2] + local max_inimigos = meus_inimigos[1] and meus_inimigos[1][2] or 0 for index, tabela in _ipairs (meus_inimigos) do @@ -727,7 +728,7 @@ function atributo_heal:MontaInfoHealingDone() local amt = #minhas_curas gump:JI_AtualizaContainerBarras (amt) - local max_ = minhas_curas[1][2] + local max_ = minhas_curas[1] and minhas_curas[1][2] or 0 for index, tabela in _ipairs (minhas_curas) do @@ -763,7 +764,7 @@ function atributo_heal:MontaInfoHealingDone() local amt_alvos = #meus_inimigos gump:JI_AtualizaContainerAlvos (amt_alvos) - local max_inimigos = meus_inimigos[1][2] + local max_inimigos = meus_inimigos[1] and meus_inimigos[1][2] or 0 for index, tabela in _ipairs (meus_inimigos) do @@ -905,7 +906,7 @@ function atributo_heal:MontaDetalhesHealingTaken (nome, barra) --local amt = #minhas_magias --gump:JI_AtualizaContainerBarras (amt) - local max_ = minhas_magias[1][2] --> dano que a primeiro magia vez + local max_ = minhas_magias[1] and minhas_magias[1][2] or 0 --> dano que a primeiro magia vez local barra for index, tabela in _ipairs (minhas_magias) do diff --git a/classes/classe_instancia.lua b/classes/classe_instancia.lua index 80807dae..3c065640 100644 --- a/classes/classe_instancia.lua +++ b/classes/classe_instancia.lua @@ -831,6 +831,7 @@ function _detalhes:RestauraJanela (index, temp) self.StatusBar.left = nil self.StatusBar.center = nil self.StatusBar.right = nil + self.StatusBarSaved = self.StatusBarSaved or {options = {}} self.StatusBar.options = self.StatusBarSaved.options if (self.StatusBarSaved.center and self.StatusBarSaved.center == "NONE") then diff --git a/classes/container_pets.lua b/classes/container_pets.lua index 095de055..990ee119 100644 --- a/classes/container_pets.lua +++ b/classes/container_pets.lua @@ -35,7 +35,7 @@ function container_pets:PegaDono (pet_serial, pet_nome, pet_flags) if (_IsInRaid()) then --print ("estou em RAIDE") - for i = 1, _GetNumGroupMembers(), 1 do + for i = 1, _GetNumGroupMembers() do if (pet_serial == _UnitGUID ("raidpet"..i)) then dono_serial = _UnitGUID ("raid"..i) dono_flags = 0x00000417 --> emulate sourceflag flag @@ -51,7 +51,7 @@ function container_pets:PegaDono (pet_serial, pet_nome, pet_flags) elseif (_IsInGroup()) then --print ("DEBUG estou em PARTY") - for i = 1, _GetNumGroupMembers()-1, 1 do + for i = 1, _GetNumGroupMembers()-1 do if (pet_serial == _UnitGUID ("partypet"..i)) then dono_serial = _UnitGUID ("party"..i) dono_flags = 0x00000417 --> emulate sourceflag flag diff --git a/core/control.lua b/core/control.lua index eb307ad8..72307e3a 100644 --- a/core/control.lua +++ b/core/control.lua @@ -196,6 +196,17 @@ _detalhes:UpdateParserGears() + _detalhes.host_of = nil + _detalhes.host_by = nil + + if (_detalhes.in_group and _detalhes.cloud_capture) then + if (_detalhes:IsInInstance() or _detalhes.debug) then + if (not _detalhes:CaptureIsAllEnabled()) then + _detalhes:SendCloudRequest() + end + end + end + _detalhes:SendEvent ("COMBAT_PLAYER_ENTER", nil, _detalhes.tabela_vigente) end @@ -324,6 +335,13 @@ _detalhes:UpdateParserGears() end + _detalhes.host_of = nil + _detalhes.host_by = nil + + if (_detalhes.cloud_process) then + _detalhes:CancelTimer (_detalhes.cloud_process) + end + _detalhes.in_combat = false --sinaliza ao addon que não há combate no momento _detalhes:UpdateParserGears() diff --git a/core/network.lua b/core/network.lua index 7ca99cb6..f0953671 100644 --- a/core/network.lua +++ b/core/network.lua @@ -14,6 +14,8 @@ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> api + local temp = {} + function _detalhes:RaidComm (_, data, _, source) local type = select (2, _detalhes:Deserialize (data)) @@ -21,7 +23,125 @@ print ("comm received", type) end - if (type == "custom_broadcast") then + if (type == "highfive") then + local player, realm, dversion = select (3, _detalhes:Deserialize (data)) + if (player ~= _detalhes.playername) then + _detalhes.details_users [#_detalhes.details_users+1] = {player, realm, dversion} + end + + elseif (type == "clouddatareceived") then + + local atributo, atributo_name, data = select (3, _detalhes:Deserialize (data)) + + local container = _detalhes.tabela_vigente [atributo] + + for i = 1, #data do + local _this = data [i] + + local name = _this [1] + local actor = container:PegarCombatente (_, name) + + if (not actor) then + if (IsInRaid()) then + for i = 1, GetNumGroupMembers() do + if (UnitName ("raid"..i) == name) then + actor = container:PegarCombatente (UnitGUID ("raid"..i), name, 0x00000417, true) + break + end + end + elseif (IsInGroup()) then + for i = 1, GetNumGroupMembers()-1 do + if (UnitName ("party"..i) == name or _detalhes.playername == name) then + actor = container:PegarCombatente (UnitGUID ("party"..i), name, 0x00000417, true) + break + end + end + end + end + + if (actor) then + actor [atributo_name] = _this [2] + container.need_refresh = true + else + if (_detalhes.debug) then + print ("Actor not found on cloud data received", name, atributo_name) + end + end + + end + + elseif (type == "clouddatarequest") then + + if (not _detalhes.host_of) then + --> delayed response + return + end + + local atributo, subatributo = select (3, _detalhes:Deserialize (data)) + + local data + local atributo_name = _detalhes:GetInternalSubAttributeName (atributo, subatributo) + + if (atributo == 1) then + data = _detalhes.atributo_damage:RefreshWindow ({}, _detalhes.tabela_vigente, _, { key = atributo_name, modo = _detalhes.modos.group }) + elseif (atributo == 2) then + data = _detalhes.atributo_heal:RefreshWindow ({}, _detalhes.tabela_vigente, _, { key = atributo_name, modo = _detalhes.modos.group }) + elseif (atributo == 3) then + data = _detalhes.atributo_energy:RefreshWindow ({}, _detalhes.tabela_vigente, _, { key = atributo_name, modo = _detalhes.modos.group }) + elseif (atributo == 4) then + data = _detalhes.atributo_misc:RefreshWindow ({}, _detalhes.tabela_vigente, _, { key = atributo_name, modo = _detalhes.modos.group }) + else + return + end + + if (data) then + + local export = temp + local container = _detalhes.tabela_vigente [atributo]._ActorTable + for i = 1, math.min (6, #container) do + local actor = container [i] + + if (not actor.grupo) then + break + end + + export [#export+1] = {actor.nome, actor [atributo_name]} + end + + _detalhes:SendCommMessage ("details_comm", _detalhes:Serialize ("clouddatareceived", atributo, atributo_name, export), "WHISPER", _detalhes.host_of) + table.wipe (temp) + end + + elseif (type == "foundcloud") then + + if (_detalhes.host_by) then + return + end + + local player, realm, dversion = select (3, _detalhes:Deserialize (data)) + if (realm ~= GetRealmName()) then + player = player .."-"..realm + end + _detalhes.host_by = player + + if (_detalhes.debug) then + print ("Details found a cloud for disabled captures.") + end + + _detalhes.cloud_process = _detalhes:ScheduleRepeatingTimer ("RequestData", 7) + + elseif (type == "needcloud") then + local player, realm, dversion = select (3, _detalhes:Deserialize (data)) + if (_detalhes.debug) then + print (player, _detalhes.host_of, _detalhes:CaptureIsAllEnabled(), dversion == _detalhes.realversion) + end + if (player ~= _detalhes.playername) then + if (not _detalhes.host_of and _detalhes:CaptureIsAllEnabled() and dversion == _detalhes.realversion) then + _detalhes:SendCloudResponse (player, realm) + end + end + + elseif (type == "custom_broadcast") then _detalhes:OnReceiveCustom (select (3, _detalhes:Deserialize (data))) elseif (type == "equalize_actors") then @@ -44,4 +164,29 @@ function _detalhes:SendRaidData (type, ...) _detalhes:SendCommMessage ("details_comm", _detalhes:Serialize (type, UnitName ("player"), GetRealmName(), _detalhes.realversion, ...), "RAID") end + + function _detalhes:SendHighFive() + _detalhes:SendCommMessage ("details_comm", _detalhes:Serialize ("highfive", UnitName ("player"), GetRealmName(), _detalhes.realversion), "RAID") + end + + function _detalhes:SendCloudRequest() + _detalhes:SendCommMessage ("details_comm", _detalhes:Serialize ("needcloud", UnitName ("player"), GetRealmName(), _detalhes.realversion), "RAID") + end + + function _detalhes:SendCloudResponse (player, realm) + if (realm ~= GetRealmName()) then + player = player .."-"..realm + end + _detalhes.host_of = player + _detalhes:SendCommMessage ("details_comm", _detalhes:Serialize ("foundcloud", UnitName ("player"), GetRealmName(), _detalhes.realversion), "WHISPER", player) + end + function _detalhes:RequestData() + for index = 1, #_detalhes.tabela_instancias do + local instancia = _detalhes.tabela_instancias [index] + if (instancia.ativa) then + _detalhes:SendCommMessage ("details_comm", _detalhes:Serialize ("clouddatarequest", instancia.atributo, instancia.sub_atributo), "WHISPER", _detalhes.host_by) + break + end + end + end \ No newline at end of file diff --git a/core/parser.lua b/core/parser.lua index dcfe83c9..959da0b6 100644 --- a/core/parser.lua +++ b/core/parser.lua @@ -1620,6 +1620,15 @@ _detalhes.capture_types = {"damage", "heal", "energy", "miscdata", "aura"} + function _detalhes:CaptureIsAllEnabled() + for _, _thisType in _ipairs (_detalhes.capture_types) do + if (not _detalhes.capture_real [_thisType]) then + return false + end + end + return true + end + function _detalhes:CaptureRefresh() for _, _thisType in _ipairs (_detalhes.capture_types) do if (_detalhes.capture_current [_thisType]) then @@ -1629,6 +1638,10 @@ end end end + + function _detalhes:CaptureGet (capture_type) + return _detalhes.capture_real [capture_type] + end function _detalhes:CaptureSet (on_off, capture_type, real, time) @@ -1788,6 +1801,8 @@ --serach key: ~event function _detalhes:OnEvent (evento, ...) + + --print (evento, select (1, ...)) if (evento == "COMBAT_LOG_EVENT_UNFILTERED") then return parser:do_parser (...) @@ -1836,6 +1851,10 @@ if (_detalhes.EncounterInformation [_detalhes.zone_id]) then _detalhes:ScheduleTimer ("ReadBossFrames", 1) end + + if (not _detalhes:CaptureGet ("damage")) then + _detalhes:EntrarEmCombate() + end --> essa parte do solo mode ainda sera usada? if (_detalhes.solo and _detalhes.PluginCount.SOLO > 0) then --> solo mode @@ -1854,8 +1873,20 @@ end return - elseif (evento == "RAID_ROSTER_UPDATE") then + elseif (evento == "GROUP_ROSTER_UPDATE") then _detalhes.container_pets:BuscarPets() + if (not _detalhes.in_group) then + _detalhes.in_group = IsInGroup() or IsInRaid() + if (_detalhes.in_group) then + _detalhes:SendHighFive() + end + else + _detalhes.in_group = IsInGroup() or IsInRaid() + if (not _detalhes.in_group) then + table.wipe (_detalhes.details_users) + end + end + return elseif (evento == "PARTY_MEMBERS_CHANGED") then diff --git a/functions/attributes.lua b/functions/attributes.lua index a1ce8fd6..775b3877 100644 --- a/functions/attributes.lua +++ b/functions/attributes.lua @@ -66,7 +66,8 @@ do {"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.125, .25, 0, 1}}, {"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.25, .375, 0, 1}}, {"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.375, .5, 0, 1}} - } + }, + internal = {"total", "last_dps", "damage_taken", "friendlyfire_total"} }, { @@ -87,7 +88,8 @@ do {"Interface\\AddOns\\Details\\images\\atributos_icones_heal", {.125, .25, 0, 1}}, {"Interface\\AddOns\\Details\\images\\atributos_icones_heal", {.25, .375, 0, 1}}, {"Interface\\AddOns\\Details\\images\\atributos_icones_heal", {.375, .5, 0, 1}} - } + }, + internal = {"total", "last_hps", "totalover", "healing_taken"} }, { @@ -149,9 +151,7 @@ do end function _detalhes:GetInternalSubAttributeName (attribute, subAttribute) - if (attribute == 3 or attribute == 4) then - return _detalhes.sub_atributos [attribute].internal [subAttribute] - end + return _detalhes.sub_atributos [attribute].internal [subAttribute] end end diff --git a/functions/savedata.lua b/functions/savedata.lua index cd9fadd1..8977bf0a 100644 --- a/functions/savedata.lua +++ b/functions/savedata.lua @@ -63,6 +63,7 @@ function _detalhes:SaveDataOnLogout() _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 @@ -255,6 +256,8 @@ end --]] ["miscdata"] = true, ["aura"] = true, } + _detalhes.cloud_capture = _detalhes_database.cloud_capture + _detalhes.capture_current = {} for captureType, captureValue in pairs (_detalhes.capture_real) do _detalhes.capture_current [captureType] = captureValue diff --git a/functions/slash.lua b/functions/slash.lua index ce4b6664..dd100263 100644 --- a/functions/slash.lua +++ b/functions/slash.lua @@ -67,10 +67,9 @@ function SlashCmdList.DETAILS (msg, editbox) elseif (msg == "comm") then - --_detalhes:SendData ("RAID", "Hello There!") - local s = _detalhes:Serialize ("tercio", "jose") - local d, e, f = _detalhes:Deserialize (s) - print (d, e, f) + _detalhes:SendCommMessage ("details_comm", _detalhes:Serialize ("foundcloud", UnitName ("player"), GetRealmName(), _detalhes.realversion), "WHISPER", "Marleyieu-Azralon") + SendAddonMessage ("details_comm", "text", "WHISPER", "Marleyieu-Azralon") + SendChatMessage ("Hello Bob!", "WHISPER", "Common", "Marleyieu-Azralon") elseif (msg == "visao") then --_detalhes:VisiblePlayers() diff --git a/gumps/janela_options.lua b/gumps/janela_options.lua index 2a76d6c7..4c6ac46e 100644 --- a/gumps/janela_options.lua +++ b/gumps/janela_options.lua @@ -15,7 +15,7 @@ function _detalhes:OpenOptionsWindow (instance) -- Most of details widgets have the same 6 first parameters: parent, container, global name, parent key, width, height - window = g:NewPanel (UIParent, _, "DetailsOptionsWindow", _, 500, 300) + window = g:NewPanel (UIParent, _, "DetailsOptionsWindow", _, 500, 320) window.instance = instance tinsert (UISpecialFrames, "DetailsOptionsWindow") window:SetPoint ("center", UIParent, "Center") @@ -163,6 +163,85 @@ function _detalhes:OpenOptionsWindow (instance) g:NewDropDown (window, _, "$parentTTDropdown", "timetypeDropdown", 160, 20, buildTimeTypeMenu, nil) -- func, default window.timetypeDropdown:SetPoint ("left", window.timetypeLabel, "right") + --------------- Captures + g:NewImage (window, _, "$parentCaptureDamage", "damageCaptureImage", 20, 20, [[Interface\AddOns\Details\images\atributos_captures]]) + window.damageCaptureImage:SetPoint (10, -163) + window.damageCaptureImage:SetTexCoord (0, 0.125, 0, 1) + + g:NewImage (window, _, "$parentCaptureHeal", "healCaptureImage", 20, 20, [[Interface\AddOns\Details\images\atributos_captures]]) + window.healCaptureImage:SetPoint (10, -183) + window.healCaptureImage:SetTexCoord (0.125, 0.25, 0, 1) + + g:NewImage (window, _, "$parentCaptureEnergy", "energyCaptureImage", 20, 20, [[Interface\AddOns\Details\images\atributos_captures]]) + window.energyCaptureImage:SetPoint (10, -203) + window.energyCaptureImage:SetTexCoord (0.25, 0.375, 0, 1) + + g:NewImage (window, _, "$parentCaptureMisc", "miscCaptureImage", 20, 20, [[Interface\AddOns\Details\images\atributos_captures]]) + window.miscCaptureImage:SetPoint (10, -223) + window.miscCaptureImage:SetTexCoord (0.375, 0.5, 0, 1) + + g:NewImage (window, _, "$parentCaptureAura", "auraCaptureImage", 20, 20, [[Interface\AddOns\Details\images\atributos_captures]]) + window.auraCaptureImage:SetPoint (10, -243) + window.auraCaptureImage:SetTexCoord (0.5, 0.625, 0, 1) + + g:NewLabel (window, _, "$parentCaptureDamageLabel", "damageCaptureLabel", "Damage") + window.damageCaptureLabel:SetPoint ("left", window.damageCaptureImage, "right", 2) + g:NewLabel (window, _, "$parentCaptureDamageLabel", "healCaptureLabel", "Healing") + window.healCaptureLabel:SetPoint ("left", window.healCaptureImage, "right", 2) + g:NewLabel (window, _, "$parentCaptureDamageLabel", "energyCaptureLabel", "Energy") + window.energyCaptureLabel:SetPoint ("left", window.energyCaptureImage, "right", 2) + g:NewLabel (window, _, "$parentCaptureDamageLabel", "miscCaptureLabel", "Misc") + window.miscCaptureLabel:SetPoint ("left", window.miscCaptureImage, "right", 2) + g:NewLabel (window, _, "$parentCaptureDamageLabel", "auraCaptureLabel", "Auras") + window.auraCaptureLabel:SetPoint ("left", window.auraCaptureImage, "right", 2) + + g:NewSwitch (window, _, "$parentCaptureDamageSlider", "damageCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["damage"]) + window.damageCaptureSlider:SetPoint ("left", window.damageCaptureLabel, "right", 2) + window.damageCaptureSlider.tooltip = "Pause or enable capture of:\n- damage done\n- damage per second\n- friendly fire\n- damage taken" + window.damageCaptureSlider.OnSwitch = function (self, _, value) + _detalhes:CaptureSet (value, "damage", true) + end + + g:NewSwitch (window, _, "$parentCaptureHealSlider", "healCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["heal"]) + window.healCaptureSlider:SetPoint ("left", window.healCaptureLabel, "right", 2) + window.healCaptureSlider.tooltip = "Pause or enable capture of:\n- healing done (not absorbs)\n- healing per second\n- overheal\n- healing taken" + window.healCaptureSlider.OnSwitch = function (self, _, value) + _detalhes:CaptureSet (value, "heal", true) + end + + g:NewSwitch (window, _, "$parentCaptureEnergySlider", "energyCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["energy"]) + window.energyCaptureSlider:SetPoint ("left", window.energyCaptureLabel, "right", 2) + window.energyCaptureSlider.tooltip = "Pause or enable capture of:\n- mana restored\n- rage generated\n- energy generated\n- runic power generated" + window.energyCaptureSlider.OnSwitch = function (self, _, value) + _detalhes:CaptureSet (value, "energy", true) + end + + g:NewSwitch (window, _, "$parentCaptureMiscSlider", "miscCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["miscdata"]) + window.miscCaptureSlider:SetPoint ("left", window.miscCaptureLabel, "right", 2) + window.miscCaptureSlider.tooltip = "Pause or enable capture of:\n- cc breaks\n- dispell\n- interrupts\n- ress\n- deaths" + window.miscCaptureSlider.OnSwitch = function (self, _, value) + _detalhes:CaptureSet (value, "miscdata", true) + end + + g:NewSwitch (window, _, "$parentCaptureAuraSlider", "auraCaptureSlider", 60, 20, _, _, _detalhes.capture_real ["aura"]) + window.auraCaptureSlider:SetPoint ("left", window.auraCaptureLabel, "right", 2) + window.auraCaptureSlider.tooltip = "Pause or enable capture of:\n- buffs and debufs\n- absorbs (heal)" + window.auraCaptureSlider.OnSwitch = function (self, _, value) + _detalhes:CaptureSet (value, "aura", true) + end + + --------------- Cload Capture + + g:NewLabel (window, _, "$parentCloudCaptureLabel", "cloudCaptureLabel", "Cloud Capture") + window.cloudCaptureLabel:SetPoint (10, -268) + + g:NewSwitch (window, _, "$parentCloudAuraSlider", "cloudCaptureSlider", 60, 20, _, _, _detalhes.cloud_capture) + window.cloudCaptureSlider:SetPoint ("left", window.cloudCaptureLabel, "right", 2) + window.cloudCaptureSlider.tooltip = "Download capture data from another\nraid member when a capture are disabled." + window.cloudCaptureSlider.OnSwitch = function (self, _, value) + _detalhes.cloud_capture = value + end + -- Current Instalnce -------------------------------------------------------------------------------------------------------------------------------------------- @@ -487,7 +566,7 @@ function _detalhes:OpenOptionsWindow (instance) ----- style name g:NewTextEntry (window, _, "$parentSaveStyleName", "saveStyleName", nil, 20, _, _, _, 178) --width will be auto adjusted if space parameter is passed window.saveStyleName:SetLabelText ("style name:") - window.saveStyleName:SetPoint (250, -280) + window.saveStyleName:SetPoint (250, -300) local saveStyleFunc = function() if (not window.saveStyleName.text or window.saveStyleName.text == "") then diff --git a/plugins/Details_Vanguard/Details_Vanguard.lua b/plugins/Details_Vanguard/Details_Vanguard.lua index 9462830c..b9ab6a7a 100644 --- a/plugins/Details_Vanguard/Details_Vanguard.lua +++ b/plugins/Details_Vanguard/Details_Vanguard.lua @@ -60,7 +60,7 @@ local function CreatePluginFrames (data) if (event == "HIDE") then --> plugin hidded, disabled VanguardFrame:SetScript ("OnUpdate", nil) VanguardFrame:UnregisterEvent ("ROLE_CHANGED_INFORM") - VanguardFrame:UnregisterEvent ("RAID_ROSTER_UPDATE") + VanguardFrame:UnregisterEvent ("GROUP_ROSTER_UPDATE") VanguardFrame:UnregisterEvent ("PLAYER_TARGET_CHANGED") Vanguard:Cancel() @@ -75,7 +75,7 @@ local function CreatePluginFrames (data) Vanguard:OnResize() VanguardFrame:RegisterEvent ("ROLE_CHANGED_INFORM") - VanguardFrame:RegisterEvent ("RAID_ROSTER_UPDATE") + VanguardFrame:RegisterEvent ("GROUP_ROSTER_UPDATE") VanguardFrame:RegisterEvent ("PLAYER_TARGET_CHANGED") Vanguard:ResetBars() @@ -1234,7 +1234,7 @@ function Vanguard:OnEvent (_, event, ...) elseif (event == "PLAYER_TARGET_CHANGED") then Vanguard:TargetChanged() - elseif (event == "ROLE_CHANGED_INFORM" or event == "RAID_ROSTER_UPDATE") then --> raid changes + elseif (event == "ROLE_CHANGED_INFORM" or event == "GROUP_ROSTER_UPDATE") then --> raid changes Vanguard:IdentifyTanks() elseif (event == "ZONE_CHANGED_NEW_AREA" or event == "PLAYER_ENTERING_WORLD") then --> logon or map changes diff --git a/startup.lua b/startup.lua index c7440ffe..85aceea5 100644 --- a/startup.lua +++ b/startup.lua @@ -33,6 +33,10 @@ function _G._detalhes:Start() self.deadlog_limit = self.deadlog_limit or 12 self.minimum_combat_time = self.minimum_combat_time or 5 + if (type (self.cloud_capture) ~= "boolean") then + self.cloud_capture = true + end + if (type (self.segments_panic_mode) ~= "boolean") then self.segments_panic_mode = true end @@ -227,7 +231,7 @@ function _G._detalhes:Start() self.listener:RegisterEvent ("UNIT_PET") self.listener:RegisterEvent ("PARTY_MEMBERS_CHANGED") - self.listener:RegisterEvent ("RAID_ROSTER_UPDATE") + self.listener:RegisterEvent ("GROUP_ROSTER_UPDATE") self.listener:RegisterEvent ("PARTY_CONVERTED_TO_RAID") self.listener:RegisterEvent ("INSTANCE_ENCOUNTER_ENGAGE_UNIT") @@ -235,6 +239,8 @@ function _G._detalhes:Start() self.listener:RegisterEvent ("ZONE_CHANGED_NEW_AREA") self.listener:RegisterEvent ("PLAYER_ENTERING_WORLD") + --self.listener:RegisterAllEvents() + -- self.listener:RegisterEvent ("SPELL_CAST_START") -- self.listener:RegisterEvent ("UNIT_SPELLCAST_STOP") -- self.listener:RegisterEvent ("UNIT_SPELLCAST_SUCCEEDED") @@ -247,6 +253,13 @@ function _G._detalhes:Start() --> done self.initializing = nil + --> group + self.details_users = {} + self.in_group = IsInGroup() or IsInRaid() + if (self.in_group) then + _detalhes:SendHighFive() + end + --> send messages gathered on initialization self:ScheduleTimer ("ShowDelayMsg", 7)