added commentator stuff, general code cleanup and better formatting, some deprecated code removed

This commit is contained in:
Tercio Jose
2024-07-09 12:47:24 -03:00
committed by andrew6180
parent af3477354a
commit 00f04959cb
20 changed files with 1602 additions and 1596 deletions
-11
View File
@@ -1,15 +1,4 @@
=======================================
Background Tasks
=======================================
Details:RegisterBackgroundTask (name, func, priority, ...)
register a function to be called while the player isn't in: combat, group, raid instances.
priority determines the interval time and support "LOW", "MEDIUM", "HIGH" values.
Details:UnregisterBackgroundTask (name)
unregister a background task.
=======================================
Item Level
=======================================
+35 -7
View File
@@ -1,8 +1,9 @@
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--global name declaration
--local _StartDebugTime = debugprofilestop() print(debugprofilestop() - _StartDebugTime)
--use lua-language-server annotations to help the linter:
--https://github.com/LuaLS/lua-language-server/wiki/Annotations#documenting-types
--updated the lib open raid for v11
--follow definitions declared in the file definitions.lua
--follow game api definitions in the file LibLuaServer.lua
local _ = nil
_G.Details = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0")
@@ -24,6 +25,7 @@
Details.game_version = version
Details.userversion = version .. " " .. Details.build_counter
Details.realversion = 158 --core version, this is used to check API version for scripts and plugins (see alias below)
Details.gametoc = tvs
Details.APIVersion = Details.realversion --core version
Details.version = Details.userversion .. " (core " .. Details.realversion .. ")" --simple stirng to show to players
@@ -37,6 +39,7 @@
Details.BFACORE = 131 --core version on BFA launch
Details.SHADOWLANDSCORE = 143 --core version on Shadowlands launch
Details.DRAGONFLIGHT = 147 --core version on Dragonflight launch
Details.V11CORE = 158 --core version on V11 launch
Details = Details
@@ -102,9 +105,8 @@
Details222.DamageSpells = {}
--namespace for texture
Details222.Textures = {}
Details222.Debug = {}
Details222.Tvs = tvs
--namespace for pet
Details222.Pets = {}
Details222.PetContainer = {
@@ -167,6 +169,8 @@
[1473] = {},
}
Details222.Parser = {}
Details222.Actors = {}
Details222.CurrentDPS = {
@@ -529,9 +533,9 @@ do
--armazenas as funes do parser - All parse functions
_detalhes.parser = {}
_detalhes.parser_functions = {}
_detalhes.parser_frame = CreateFrame("Frame")
Details222.parser_frame = CreateFrame("Frame")
Details222.parser_frame:Hide()
_detalhes.pvp_parser_frame = CreateFrame("Frame")
_detalhes.parser_frame:Hide()
_detalhes.MacroList = {
{Name = "Click on Your Own Bar", Desc = "To open the player details window on your character, like if you click on your bar in the damage window. The number '1' is the window number where it'll click.", MacroText = "/script Details:OpenPlayerDetails(1)"},
@@ -1269,13 +1273,37 @@ do
end
end
local bIsDump = false
local waitForSpellLoad = CreateFrame("frame")
if (C_EventUtils.IsEventValid("SPELL_TEXT_UPDATE")) then
waitForSpellLoad:RegisterEvent("SPELL_TEXT_UPDATE")
waitForSpellLoad:SetScript("OnEvent", function(self, event, spellId)
if (bIsDump) then
dumpt(spellId)
end
end)
end
function dumpt(value) --[[GLOBAL]]
--check if this is a spellId
local spellId = tonumber(value)
if (spellId) then
local spellInfo = {Details222.GetSpellInfo(spellId)}
if (type(spellInfo[1]) == "string") then
return Details:Dump(spellInfo)
local desc = C_Spell.GetSpellDescription and C_Spell.GetSpellDescription(spellId) or GetSpellDescription(spellId)
if (not desc or desc == "") then
bIsDump = true
return
end
if (C_Spell.GetSpellInfo) then
Details:Dump({desc, C_Spell.GetSpellInfo(spellId)})
return
else
return Details:Dump({desc, spellInfo})
end
bIsDump = false
end
end
+24 -19
View File
@@ -2586,19 +2586,20 @@ end
--space between string4 and string3 (usually dps is 4 and total value is 3)
for lineId = 1, self:GetNumLinesShown() do
local thisLine = self:GetLine(lineId)
if (thisLine) then
--check strings 3 and 4
if (thisLine.lineText4:GetText() ~= "" and thisLine.lineText3:GetText() ~= "") then
--the length of the far right string determines the space between it and the next string in the left
local stringLength = thisLine.lineText4:GetStringWidth()
maxStringLength_StringFour = stringLength > maxStringLength_StringFour and stringLength or maxStringLength_StringFour
end
--check strings 3 and 4
if (thisLine.lineText4:GetText() ~= "" and thisLine.lineText3:GetText() ~= "") then
--the length of the far right string determines the space between it and the next string in the left
local stringLength = thisLine.lineText4:GetStringWidth()
maxStringLength_StringFour = stringLength > maxStringLength_StringFour and stringLength or maxStringLength_StringFour
end
--check strings 2 and 3
if (thisLine.lineText2:GetText() ~= "" and thisLine.lineText3:GetText() ~= "") then
--the length of the middle string determines the space between it and the next string in the left
local stringLength = thisLine.lineText3:GetStringWidth()
maxStringLength_StringThree = stringLength > maxStringLength_StringThree and stringLength or maxStringLength_StringThree
--check strings 2 and 3
if (thisLine.lineText2:GetText() ~= "" and thisLine.lineText3:GetText() ~= "") then
--the length of the middle string determines the space between it and the next string in the left
local stringLength = thisLine.lineText3:GetStringWidth()
maxStringLength_StringThree = stringLength > maxStringLength_StringThree and stringLength or maxStringLength_StringThree
end
end
end
@@ -2619,7 +2620,9 @@ end
--update the lines
for lineId = 1, self:GetNumLinesShown() do
local thisLine = self:GetLine(lineId)
thisLine.lineText3:SetPoint("right", thisLine.statusbar, "right", -newOffset, profileYOffset)
if (thisLine) then
thisLine.lineText3:SetPoint("right", thisLine.statusbar, "right", -newOffset, profileYOffset)
end
end
end
@@ -2640,7 +2643,9 @@ end
--update the lines
for lineId = 1, self:GetNumLinesShown() do
local thisLine = self:GetLine(lineId)
thisLine.lineText2:SetPoint("right", thisLine.statusbar, "right", -newOffset, profileYOffset)
if (thisLine) then
thisLine.lineText2:SetPoint("right", thisLine.statusbar, "right", -newOffset, profileYOffset)
end
end
end
end
@@ -2651,7 +2656,7 @@ end
--check if there's something showing in this line
--check if the line is shown and if the text exists for sanitization
if (thisLine.minha_tabela and thisLine:IsShown() and thisLine.lineText1:GetText()) then
if (thisLine and thisLine.minha_tabela and thisLine:IsShown() and thisLine.lineText1:GetText()) then
local playerNameFontString = thisLine.lineText1
local text2 = thisLine.lineText2
local text3 = thisLine.lineText3
@@ -2663,10 +2668,10 @@ end
DetailsFramework:TruncateTextSafe(playerNameFontString, self.cached_bar_width - totalWidth) --this avoid truncated strings with ...
--these commented lines are for to create a cache and store the name already truncated there to safe performance
--local truncatedName = playerNameFontString:GetText()
--local actorObject = thisLine.minha_tabela
--actorObject.name_cached = truncatedName
--actorObject.name_cached_time = GetTime()
--local truncatedName = playerNameFontString:GetText()
--local actorObject = thisLine.minha_tabela
--actorObject.name_cached = truncatedName
--actorObject.name_cached_time = GetTime()
end
end
end
+2 -2
View File
@@ -2594,7 +2594,7 @@ function Details:AtualizaSegmentos_AfterCombat(instancia)
instancia.v_barras = true
instancia:ResetaGump()
instancia:RefreshMainWindow(true)
Details:AtualizarJanela (instancia)
Details:UpdateWindow (instancia)
elseif (segmento < Details.segments_amount and segmento > 0) then
instancia.showing = segmentsTable[segmento]
@@ -2605,7 +2605,7 @@ function Details:AtualizaSegmentos_AfterCombat(instancia)
instancia.v_barras = true
instancia:ResetaGump()
instancia:RefreshMainWindow(true)
Details:AtualizarJanela (instancia)
Details:UpdateWindow (instancia)
end
end
+3 -3
View File
@@ -306,7 +306,7 @@ end
return ipairs(self._ActorTable)
end
---return a table<actorIndex, actorObject> for all actors stored in this Container
---return a table with actor[] for all actors stored in this container
---@return table
function actorContainer:GetActorTable()
return self._ActorTable
@@ -315,8 +315,8 @@ end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--internals
---create a new actor container, can be a damage container, heal container, enemy container or utility container
---actors can be added by using newContainer.GetOrCreateActor
---create a new actor container, can be a damage container, heal container, resource container or utility container
---actors can be added by using the method newContainer:GetOrCreateActor(actorGuid, actorName, actorFlags, bShouldCreateActor)
---actors can be retrieved using the same function above
---@param containerType number
---@param combatObject table
+1 -1
View File
@@ -26,7 +26,7 @@ function Details:ResetSegmentOverallData()
return segmentClass:ResetOverallData()
end
--reset segments and overall data
--erase all combat data stored
function Details:ResetSegmentData()
return segmentClass:ResetAllCombatData()
end
+246 -454
View File
File diff suppressed because it is too large Load Diff
+593 -471
View File
File diff suppressed because it is too large Load Diff
-7
View File
@@ -370,11 +370,6 @@
end
end
function Details.network.HandleMissData(player, realm, coreVersion, data)
--soul rip from akaari's soul (LEGION ONLY)
--deprecated
end
function Details.network.ReceivedEnemyPlayer(player, realm, coreVersion, data)
--deprecated
end
@@ -394,8 +389,6 @@
[CONST_GUILD_SYNC] = Details.network.GuildSync,
[CONST_ROGUE_SR] = Details.network.HandleMissData, --soul rip from akaari's soul (LEGION ONLY)
[CONST_PVP_ENEMY] = Details.network.ReceivedEnemyPlayer,
[DETAILS_PREFIX_COACH] = Details.network.Coach, --coach feature
+89 -141
View File
@@ -623,7 +623,7 @@
Details:Msg(Details.WhoAggroTimer.HitBy)
end
Details:EntrarEmCombate(sourceSerial, sourceName, sourceFlags, targetSerial, targetName, targetFlags)
Details222.StartCombat(sourceSerial, sourceName, sourceFlags, targetSerial, targetName, targetFlags)
else
--entrar em combate se for dot e for do jogador e o ultimo combate ter sido a mais de 10 segundos atrs
if (token == "SPELL_PERIODIC_DAMAGE" and sourceName == Details.playername) then
@@ -633,7 +633,7 @@
--faz o calculo dos 10 segundos
if (Details.last_combat_time + 10 < _tempo) then
Details:EntrarEmCombate(sourceSerial, sourceName, sourceFlags, targetSerial, targetName, targetFlags)
Details222.StartCombat(sourceSerial, sourceName, sourceFlags, targetSerial, targetName, targetFlags)
end
end
end
@@ -2772,86 +2772,84 @@
--MISC search key: ~buffuptime ~buffsuptime |
-----------------------------------------------------------------------------------------------------------------------------------------
function parser:add_bad_debuff_uptime (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, spellschool, in_out, stack_amount)
if (not alvo_name) then
function parser:add_bad_debuff_uptime(token, time, sourceGuid, sourceName, sourceFlags, targetGuid, targetName, targetFlags, targetsFlags2, spellId, spellName, spellSchool, sInOrOut, stackSize)
if (not targetName) then
--no target name, just quit
return
elseif (not who_name) then
elseif (not sourceName) then
--no actor name, use spell name instead
who_name = "[*] "..spellname
sourceName = "[*] "..spellName
end
------------------------------------------------------------------------------------------------
--get actors
--nome do debuff ser usado para armazenar o nome do ator
local este_jogador = misc_cache [spellname]
if (not este_jogador) then --pode ser um desconhecido ou um pet
este_jogador = _current_misc_container:GetOrCreateActor (who_serial, spellname, who_flags, true)
misc_cache [spellname] = este_jogador
local sourceActor = misc_cache[spellName]
if (not sourceActor) then --pode ser um desconhecido ou um pet
sourceActor = _current_misc_container:GetOrCreateActor (sourceGuid, spellName, sourceFlags, true)
misc_cache[spellName] = sourceActor
end
------------------------------------------------------------------------------------------------
--build containers on the fly
if (not este_jogador.debuff_uptime) then
este_jogador.boss_debuff = true
este_jogador.damage_twin = who_name
este_jogador.spellschool = spellschool
este_jogador.damage_spellid = spellid
este_jogador.debuff_uptime = 0
este_jogador.debuff_uptime_spells = spellContainerClass:CreateSpellContainer (container_misc)
este_jogador.debuff_uptime_targets = {}
if (not sourceActor.debuff_uptime) then
sourceActor.boss_debuff = true
sourceActor.damage_twin = sourceName
sourceActor.spellschool = spellSchool
sourceActor.damage_spellid = spellId
sourceActor.debuff_uptime = 0
sourceActor.debuff_uptime_spells = spellContainerClass:CreateSpellContainer (container_misc)
sourceActor.debuff_uptime_targets = {}
end
------------------------------------------------------------------------------------------------
--add amount
--update last event
este_jogador.last_event = _tempo
sourceActor.last_event = _tempo
--actor target
local este_alvo = este_jogador.debuff_uptime_targets [alvo_name]
local este_alvo = sourceActor.debuff_uptime_targets [targetName]
if (not este_alvo) then
este_alvo = Details.atributo_misc:CreateBuffTargetObject()
este_jogador.debuff_uptime_targets [alvo_name] = este_alvo
sourceActor.debuff_uptime_targets [targetName] = este_alvo
end
if (in_out == "DEBUFF_UPTIME_IN") then
if (sInOrOut == "DEBUFF_UPTIME_IN") then
este_alvo.actived = true
este_alvo.activedamt = este_alvo.activedamt + 1
if (este_alvo.actived_at and este_alvo.actived) then
este_alvo.uptime = este_alvo.uptime + _tempo - este_alvo.actived_at
este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at
sourceActor.debuff_uptime = sourceActor.debuff_uptime + _tempo - este_alvo.actived_at
end
este_alvo.actived_at = _tempo
--death log
--record death log
local t = last_events_cache [alvo_name]
local t = last_events_cache[targetName]
if (not t) then
t = _current_combat:CreateLastEventsTable (alvo_name)
t = _current_combat:CreateLastEventsTable(targetName)
end
local i = t.n
local this_event = t [i]
local thisEvent = t[i]
if (not this_event) then
if (not thisEvent) then
return Details:Msg("Parser Event Error -> Set to 16 DeathLogs and /reload", i, _amount_of_last_events)
end
this_event [1] = 4 --4 = debuff aplication
this_event [2] = spellid --spellid
this_event [3] = 1
this_event [4] = time --parser time
this_event [5] = UnitHealth(Details:Ambiguate(alvo_name)) --current unit heal
this_event [6] = who_name --source name
this_event [7] = false
this_event [8] = false
this_event [9] = false
this_event [10] = false
thisEvent[1] = 4 --4 = debuff aplication
thisEvent[2] = spellId --spellid
thisEvent[3] = 1
thisEvent[4] = time --parser time
thisEvent[5] = UnitHealth(Details:Ambiguate(targetName)) --current unit heal
thisEvent[6] = sourceName --source name
thisEvent[7] = false
thisEvent[8] = false
thisEvent[9] = false
thisEvent[10] = false
i = i + 1
@@ -2861,10 +2859,10 @@
t.n = i
end
elseif (in_out == "DEBUFF_UPTIME_REFRESH") then
elseif (sInOrOut == "DEBUFF_UPTIME_REFRESH") then
if (este_alvo.actived_at and este_alvo.actived) then
este_alvo.uptime = este_alvo.uptime + _tempo - este_alvo.actived_at
este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at
sourceActor.debuff_uptime = sourceActor.debuff_uptime + _tempo - este_alvo.actived_at
end
este_alvo.actived_at = _tempo
este_alvo.actived = true
@@ -2874,44 +2872,58 @@
--local name, texture, count, debuffType, duration, expirationTime, caster, canStealOrPurge, nameplateShowPersonal, spellId = UnitAura (alvo_name, spellname, nil, "HARMFUL")
--UnitAura ("Kastfall", "Gulp Frog Toxin", nil, "HARMFUL")
--6/27 15:06:18.113 SPELL_AURA_APPLIED_DOSE,Creature-0-2085-2657-20918-227617-0000FDAA05,"Cosmic Simulacrum",0xa48,0x0,Player-4184-005CFB2D,"nil",0x511,0x0,459273,"Cosmic Shards",0x20,DEBUFF,4
--6/27 15:06:18.114 SPELL_AURA_REFRESH,Creature-0-2085-2657-20918-227617-0000FDAA05,"Cosmic Simulacrum",0xa48,0x0,Player-4184-005CFB2D,"nil",0x511,0x0,459273,"Cosmic Shards",0x20,DEBUFF
--record death log
local t = last_events_cache [alvo_name]
local t = last_events_cache[targetName]
if (not t) then
t = _current_combat:CreateLastEventsTable (alvo_name)
t = _current_combat:CreateLastEventsTable(targetName)
end
local i = t.n
local this_event = t [i]
if (not this_event) then
return Details:Msg("Parser Event Error -> Set to 16 DeathLogs and /reload", i, _amount_of_last_events)
local bCanAdd = true
local previousEvent = t[i-1]
if (previousEvent) then
if (previousEvent[1] == 4 and previousEvent[2] == spellId and detailsFramework.Math.IsNearlyEqual(time, previousEvent[4], 0.01)) then
--don't repeat the application of the same debuff
bCanAdd = false
end
end
this_event [1] = 4 --4 = debuff aplication
this_event [2] = spellid --spellid
this_event [3] = stack_amount or 1
this_event [4] = time --parser time
this_event [5] = UnitHealth(Details:Ambiguate(alvo_name)) --current unit heal
this_event [6] = who_name --source name
this_event [7] = false
this_event [8] = false
this_event [9] = false
this_event [10] = false
if (bCanAdd) then
local thisEvent = t[i]
i = i + 1
if (not thisEvent) then
return Details:Msg("Parser Event Error -> Set to 16 DeathLogs and /reload", i, _amount_of_last_events)
end
if (i == _amount_of_last_events+1) then
t.n = 1
else
t.n = i
thisEvent[1] = 4 --4 = debuff aplication
thisEvent[2] = spellId --spellid
thisEvent[3] = stackSize or 1
thisEvent[4] = time --parser time
thisEvent[5] = UnitHealth(Details:Ambiguate(targetName)) --current unit heal
thisEvent[6] = sourceName --source name
thisEvent[7] = false
thisEvent[8] = false
thisEvent[9] = false
thisEvent[10] = false
i = i + 1
if (i == _amount_of_last_events+1) then
t.n = 1
else
t.n = i
end
end
elseif (in_out == "DEBUFF_UPTIME_OUT") then
elseif (sInOrOut == "DEBUFF_UPTIME_OUT") then
if (este_alvo.actived_at and este_alvo.actived) then
este_alvo.uptime = este_alvo.uptime + Details._tempo - este_alvo.actived_at
este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at --token = actor misc object
sourceActor.debuff_uptime = sourceActor.debuff_uptime + _tempo - este_alvo.actived_at --token = actor misc object
end
este_alvo.activedamt = este_alvo.activedamt - 1
@@ -4033,6 +4045,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
--get the index of the last event recorded
local lastIndex = recordedEvents.n
--here the event log gets reordered as in the parser it work with index recycling
if (lastIndex < _amount_of_last_events+1 and not recordedEvents[lastIndex][4]) then
--the last events table amount of indexes is less than the amount of events to store
for i = 1, lastIndex-1 do
@@ -4072,7 +4085,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
local enemyCastCache = enemy_cast_cache
--as multiple enemies can have casted the same spell at the same time, iterate over the enemyCastCache and merge the casts that happened really close to each other
--transfer the casts that happened within the the events window of the player death to a new indexed table
--transfer the casts that happened within the event window of the player death to a new indexed table
local enemyCastCacheIndexed = {}
if (bHadDeathEvent) then
for time, enemyCastTable in pairs(enemyCastCache) do
@@ -4132,6 +4145,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
end
end
--verify if a cooldown near the death event was used
if (thisPlayer.last_cooldown) then
--create a new event to show the latest cooldown the player used before death and add it to the list of events before death
local eventType = 3 --last cooldown used
@@ -4155,6 +4169,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
eventsBeforePlayerDeath[#eventsBeforePlayerDeath+1] = eventTable
end
local maxHealth
if (thisPlayer.arena_enemy) then
--this is an arena enemy, get the heal with the unit Id
@@ -4750,7 +4766,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
end
if (not _in_combat) then
Details:EntrarEmCombate()
Details222.StartCombat()
end
_current_combat.pvp = true
@@ -5050,11 +5066,11 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
if (_in_combat) then
Details:SairDoCombate()
end
Details:EntrarEmCombate()
Details222.StartCombat()
end
if (not Details:CaptureGet("damage")) then
Details:EntrarEmCombate()
Details222.StartCombat()
end
--essa parte do solo mode ainda sera usada?
@@ -5595,7 +5611,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
end
Details.lastBattlegroundStartTime = GetTime()
Details:StartCombat()
Details222.StartCombat()
if (Details.debug) then
Details:Msg("(debug) a battleground has started.")
@@ -5899,7 +5915,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
-- ~parserstart ~startparser ~cleu ~parser
Details.UnitNameCache = {}
function Details.OnParserEvent(self, event, ...)
function Details222.Parser.OnParserEvent(self, event, ...)
local time, token, hidding, who_serial, who_name, who_flags, who_flags2, target_serial, target_name, target_flags, target_flags2, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12 = CombatLogGetCurrentEventInfo(...)
local func = token_list[token]
@@ -5914,79 +5930,11 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
if (not parserDebug[token]) then
parserDebug[token] = true
--print(token)
end
if (token == "SPELL_DAMAGE") then
if (A13 ~= nil or unknown1 ~= nil or unknown2 ~= nil or unknown3 ~= nil or unknown4 ~= nil or unknown5) then
--print(time, token, hidding, who_serial, who_name, who_flags, who_flags2, target_serial, target_name, target_flags, target_flags2, spellId, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)
end
--print(time, token, hidding, who_serial, who_name, who_flags, who_flags2, target_serial, target_name, target_flags, target_flags2, spellId, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)
if (spellName == "Fate Mirror") then
--print(time, token, hidding, who_serial, who_name, who_flags, who_flags2, target_serial, target_name, target_flags, target_flags2, spellId, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)
end
end
if (token == "SPELL_AURA_APPLIED") then
--print(spellName)
end
--local func = token_list[token]
--if (func) then
-- return func(nil, token, time, who_serial, who_name, who_flags, target_serial, target_name, target_flags, target_flags2, spellId, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)
--end
--[=[ getspellinfo
["1"] = "Spatial Paradox", buff
["3"] = 5199645,
["4"] = 0,
["5"] = 0,
["6"] = 100,
["7"] = 406789,
["8"] = 5199645,
["1"] = "Spatial Paradox", buff
["3"] = 5199645,
["4"] = 0,
["5"] = 0,
["6"] = 60,
["7"] = 406732,
["8"] = 5199645,
["1"] = "Ebon Might", --spell cast start
["3"] = 5061347,
["4"] = 1473,
["5"] = 0,
["6"] = 0,
["7"] = 395152,
["8"] = 5061347,
--]=]
if (sourceSerial == UnitGUID("player")) then
GLOB = GLOB or {}
--table.insert(GLOB, {time, token, hidding, who_serial, who_name, who_flags, who_flags2, target_serial, target_name, target_flags, target_flags2, spellId, spellName, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18})
--print(time, token, hidding, who_serial, who_name, who_flags, who_flags2, target_serial, target_name, target_flags, target_flags2, spellId, spellName, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)
end
if (token == "SPELL_CAST_START") then
if (sourceSerial == UnitGUID("player")) then
--print(token, spellName, spellId)
end
end
--Prescience, Fate Mirror, Ebon Might, Breath of Eons, Shifting Sands
--offline cleu:
--6/30 14:25:28.988 SPELL_DAMAGE,Player-5764-0001609B,"Mikito-Fyrakk",0x518,0x0,Creature-0-5770-2444-8-198594-00009DF6EF,"Cleave Training Dummy",0x30a28,0x0,44425,"Arcane Barrage",0x40,0000000000000000,0000000000000000,0,0,0,0,0,0,-1,0,0,0,0.00,0.00,2112,0.0000,0,18252,18251,-1,64,0,0,0,nil,nil,nil
--6/30 14:25:28.988 SPELL_DAMAGE_SUPPORT,Player-5764-0001609B,"Mikito-Fyrakk",0x518,0x0,Creature-0-5770-2444-8-198594-00009DF6EF,"Cleave Training Dummy",0x30a28,0x0,395152,"Ebon Might",0xc,0000000000000000,0000000000000000,0,0,0,0,0,0,-1,0,0,0,0.00,0.00,2112,0.0000,0,2572,2571,-1,64,0,0,0,nil,nil,nil,Player-5764-0001FACE
end
if (false and "I'm debugging something") then
Details.parser_frame:SetScript("OnEvent", Details.OnParserEventDebug)
else
Details.parser_frame:SetScript("OnEvent", Details.OnParserEvent)
end
Details222.parser_frame:SetScript("OnEvent", Details222.Parser.OnParserEvent)
Details222.PFrame = Details222.parser_frame
function Details:UpdateParser()
_tempo = Details._tempo
+16 -12
View File
@@ -641,7 +641,7 @@
for _, instancia in ipairs(self.stretchToo) do
instancia.baseframe:SetWidth(self.baseframe:GetWidth())
local mod = (self.baseframe:GetWidth() - instancia.baseframe._place.largura) / 2
instancia:RestoreMainWindowPositionNoResize (instancia.baseframe._place, mod, nil)
instancia:RestoreMainWindowPositionNoResize(instancia.baseframe._place, mod, nil)
instancia:BaseFrameSnap()
end
end
@@ -656,7 +656,7 @@
else
mod = - (self.baseframe:GetHeight() - instancia.baseframe._place.altura) / 2
end
instancia:RestoreMainWindowPositionNoResize (instancia.baseframe._place, nil, mod)
instancia:RestoreMainWindowPositionNoResize(instancia.baseframe._place, nil, mod)
instancia:BaseFrameSnap()
end
end
@@ -667,7 +667,7 @@
for _, instancia in ipairs(self.stretchToo) do
instancia.baseframe:SetHeight(self.baseframe:GetHeight())
local mod = (self.baseframe:GetHeight() - (instancia.baseframe._place.altura or instancia.baseframe:GetHeight())) / 2
instancia:RestoreMainWindowPositionNoResize (instancia.baseframe._place, nil, mod)
instancia:RestoreMainWindowPositionNoResize(instancia.baseframe._place, nil, mod)
end
elseif (self.baseframe.stretch_direction == "bottom") then
@@ -675,18 +675,18 @@
instancia.baseframe:SetHeight(self.baseframe:GetHeight())
local mod = (self.baseframe:GetHeight() - instancia.baseframe._place.altura) / 2
mod = mod * -1
instancia:RestoreMainWindowPositionNoResize (instancia.baseframe._place, nil, mod)
instancia:RestoreMainWindowPositionNoResize(instancia.baseframe._place, nil, mod)
end
end
end
if (self.stretch_button_side == 2) then
self:StretchButtonAnchor (2)
self:StretchButtonAnchor(2)
end
--reajusta o freeze
if (self.freezed) then
Details:Freeze (self)
Details:Freeze(self)
end
-- -4 difere a preciso de quando a barra ser adicionada ou apagada da barra
@@ -701,7 +701,7 @@
local meio = self.baseframe:GetWidth() / 2
local novo_local = meio - 25
self.rows_fit_in_window = floor( self.baseframe.BoxBarrasAltura / self.row_height)
self.rows_fit_in_window = floor(self.baseframe.BoxBarrasAltura / self.row_height)
--verifica se precisa criar mais barras
if (self.rows_fit_in_window > #self.barras) then--verifica se precisa criar mais barras
@@ -717,12 +717,16 @@
--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)
if (self.barras[index]) then
self.barras[index]:SetWidth(self.baseframe:GetWidth()+self.bar_mod)
end
end
else
local rightOffset = self.row_info.row_offsets.right
for index = 1, self.rows_fit_in_window do
self.barras [index]:SetWidth(self.baseframe:GetWidth()+self.row_info.space.right + rightOffset)
if (self.barras[index]) then
self.barras[index]:SetWidth(self.baseframe:GetWidth()+self.row_info.space.right + rightOffset)
end
end
end
@@ -731,8 +735,8 @@
if (not A) then --primeira vez que o resize esta sendo usado, no caso no startup do addon ou ao criar uma nova instncia
--hida as barras no usadas
for i = 1, self.rows_created, 1 do
Details.FadeHandler.Fader(self.barras [i], 1)
self.barras [i].on = false
Details.FadeHandler.Fader(self.barras[i], 1)
self.barras[i].on = false
end
return
end
@@ -834,7 +838,7 @@
if (tabela._custom) then
tabela (esta_barra, self)
elseif (tabela._refresh_window) then
tabela:_refresh_window (esta_barra, self)
tabela:_refresh_window(esta_barra, self)
else
tabela:RefreshBarra(esta_barra, self, true)
end
+478 -456
View File
File diff suppressed because it is too large Load Diff
+4 -3
View File
@@ -3,9 +3,10 @@ local Details = _G.Details
local addonName, Details222 = ...
local _
local debugmode = false
Details222.Debug.MythicPlusChartWindowDebug = false
local verbosemode = false
local CreateFrame = CreateFrame
local UIParent = UIParent
@@ -283,7 +284,7 @@ function mythicDungeonCharts.ShowChart()
mythicDungeonCharts.Frame.ChartFrame:Reset()
if (not mythicDungeonCharts.ChartTable) then
if (debugmode) then
if (Details222.Debug.MythicPlusChartWindowDebug) then
--development
if (Details.mythic_plus.last_mythicrun_chart) then
--load the last mythic dungeon run chart
@@ -589,6 +590,6 @@ mythicDungeonCharts.ClassColors = {
["DEMONHUNTER3"] = { r = 0.24, g = 0.09, b = 0.39, colorStr = "ffa330c9" },
};
if (debugmode) then
if (Details222.Debug.MythicPlusChartWindowDebug) then
--C_Timer.After(1, mythicDungeonCharts.ShowChart)
end
+1 -1
View File
@@ -107,7 +107,7 @@ function Details.Survey.InitializeSpellCategoryFeedback()
if (msg:find("funpt")) then
if (not alreadySent) then
Details.spell_category_latest_sent = 0
C_Timer.After(random(0, 200), function()
C_Timer.After(math.random(0, 200), function()
Details.Survey.SendSpellCatogeryDataToTargetCharacter()
end)
alreadySent = true
+3 -1
View File
@@ -1,3 +1,5 @@
local addonName, Details222 = ...
local _detalhes = _G.Details
local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" )
local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0")
@@ -1058,7 +1060,7 @@ local window_openned_at = time()
_detalhes.zone_type = "pvp"
_detalhes:EntrarEmCombate()
Details222.StartCombat()
_detalhes:StartTestBarUpdate()
+90
View File
@@ -0,0 +1,90 @@
local Details = _G.Details
local addonName, Details222 = ...
local Loc = LibStub("AceLocale-3.0"):GetLocale("Details")
---@type detailsframework
local detailsFramework = DetailsFramework
local _
--commentator functions are features to help the streamer or blizzard commentator to show information about the combat in a more visual way
--atm the moment using "/run Details.Commentator.ShowBestInShowFrame(secondsToHide, height)"
--a third party frame can be attached to the best in show frame to show information about the combat (parent: DetailsBestInShowFrame)
function Details222.LoadCommentatorFunctions()
local frameWidth = 300
local frameHeight = 400
local bestInShowFrame = CreateFrame("frame", "DetailsBestInShowFrame", UIParent, "BackdropTemplate")
bestInShowFrame:SetSize(frameWidth, frameHeight)
bestInShowFrame:SetPoint("left", UIParent, "left", 0, 0)
bestInShowFrame:Hide()
--apply the standard backdrop from the framework and remove/hide/ the border
detailsFramework:ApplyStandardBackdrop(bestInShowFrame)
bestInShowFrame:SetBackdropBorderColor(0, 0, 0, 0)
--create an animation that will slide the frame from out of the screen from the left to the right, the frame will fade in while moving, the size of the momevent is the width of the frame, on the animation start, set its alpha to zero and set its point to be out of the screen in the left side, when the animation end stick the frame where the animation ended and make the frame be visible
local onStartAnimation = function()
bestInShowFrame:Show()
bestInShowFrame:SetAlpha(0)
--clear the frame points and set it to be out of the frame with the right side attached to the left of the screen
bestInShowFrame:ClearAllPoints()
bestInShowFrame:SetPoint("right", UIParent, "left", 0, 0)
end
local onEndAnimation = function()
bestInShowFrame:SetAlpha(1)
bestInShowFrame:ClearAllPoints()
bestInShowFrame:SetPoint("left", UIParent, "left", 0, 0)
end
local animShow = detailsFramework:CreateAnimationHub(bestInShowFrame, onStartAnimation, onEndAnimation)
local fade1Anim = detailsFramework:CreateAnimation(animShow, "Alpha", 1, 0.10, 0, 1)
local translate1Anim = detailsFramework:CreateAnimation(animShow, "Translation", 1, 0.15, bestInShowFrame:GetWidth(), 0)
--create an animation that is the contrary of the first one, which will move the frame to the left, fade out and hide it
--no need the start animation here as the frame is already shown from the animShow animation
local onEndOnHideAnimation = function()
bestInShowFrame:Hide()
end
local animHide = detailsFramework:CreateAnimationHub(bestInShowFrame, nil, onEndOnHideAnimation)
local fade2Anim = detailsFramework:CreateAnimation(animHide, "Alpha", 1, 0.10, 1, 0)
local translate2Anim = detailsFramework:CreateAnimation(animHide, "Translation", 1, 0.15, -bestInShowFrame:GetWidth(), 0)
--
DetailsBestInShowFrame.ShowAnimation = animShow
--C_Commentator
-- /run DetailsBestInShowFrame.ShowAnimation:Play()
---@class commentator : table
---@field GetBestInShowFrame fun():frame return a frame object which can be used to attach other widgets on it to show information
---@field ShowBestInShowFrame fun(secondsToHide:number?) show the best in show frame using the animShow animation and hide it after X seconds
Details.Commentator = {}
function Details.Commentator.GetBestInShowFrame()
return bestInShowFrame
end
---@param secondsToHide number? the amount of seconds to hide the frame after it is shown
---@param height number? the height of the frame
function Details.Commentator.ShowBestInShowFrame(secondsToHide, height)
if (bestInShowFrame:IsShown()) then
return
end
height = height or frameHeight
bestInShowFrame:SetHeight(height)
animShow:Play()
local timer = C_Timer.NewTimer(secondsToHide or 7, function()
animShow:Stop()
animHide:Play()
end)
--save the timer in details commentator table
Details.Commentator.HideTimer = timer
end
end
+1 -1
View File
@@ -221,7 +221,7 @@ function mythicDungeonCharts:OnStartMythicDungeon()
mythicDungeonCharts.ChartTable.Ticker = C_Timer.NewTicker(1, tickerCallback)
--save the chart for development
if (debugmode) then
if (Details222.Debug.MythicPlusChartWindowDebug) then
Details.mythic_plus.last_mythicrun_chart = mythicDungeonCharts.ChartTable
end
+2 -2
View File
@@ -205,7 +205,7 @@ function DetailsMythicPlusFrame.MergeSegmentsOnEnd() --~merge
Details222.MythicPlus.LogStep("MergeSegmentsOnEnd started | creating the overall segment at the end of the run.")
--create a new combat to be the overall for the mythic run
Details:StartCombat()
Details222.StartCombat()
--get the current combat just created and the table with all past segments
local newCombat = Details:GetCurrentCombat()
@@ -455,7 +455,7 @@ function DetailsMythicPlusFrame.MergeRemainingTrashAfterAllBossesDone()
if (not Details:GetCurrentCombat()) then
--assuming there's no segment from the dungeon run
Details:StartCombat()
Details222.StartCombat()
Details:EndCombat()
end
+2 -2
View File
@@ -1286,7 +1286,7 @@ function SlashCmdList.DETAILS (msg, editbox)
end
--create a new combat to be the overall for the mythic run
Details:EntrarEmCombate()
Details222.StartCombat()
--get the current combat just created and the table with all past segments
local newCombat = Details:GetCurrentCombat()
@@ -1439,7 +1439,7 @@ function SlashCmdList.DETAILS (msg, editbox)
local tokenId = line:match("%s%s(.*)"):match("^(.-),")
if (tokenId == "ENCOUNTER_START") then
Details:StartCombat()
Details222.StartCombat()
end
if (tokenId == "ENCOUNTER_END") then
+12 -2
View File
@@ -65,6 +65,12 @@ function Details:StartMeUp()
--@deathTable: a table containing all the information about the player's death
Details.ShowDeathTooltipFunction = Details.ShowDeathTooltip
if (C_CVar) then
if (not InCombatLockdown()) then --disable for releases
C_CVar.SetCVar("cameraDistanceMaxZoomFactor", 2.6)
end
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--initialize
@@ -89,8 +95,12 @@ function Details:StartMeUp()
Details222.CreateAllDisplaysFrame()
Details222.LoadCommentatorFunctions()
if (Details.ocd_tracker.show_options) then
Details:InitializeCDTrackerWindow()
else
Details:InitializeCDTrackerWindow() --enabled for v11 beta, debug openraid
end
--/run Details.ocd_tracker.show_options = true; ReloadUI()
--custom window
@@ -279,7 +289,7 @@ function Details:StartMeUp()
Details.listener:RegisterEvent("ASCENSION_KNOWN_ENTRIES_CHANGED")
Details.parser_frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
Details222.parser_frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
--update is in group
Details.details_users = {}
@@ -416,7 +426,7 @@ function Details:StartMeUp()
--version
Details.FadeHandler.Fader(instance._version, 0)
instance._version:SetText("Details! " .. Details.userversion .. " (core " .. Details.realversion .. ")")
instance._version:SetTextColor(1, 1, 1, .35)
instance._version:SetTextColor(1, 1, 1, .95)
instance._version:SetPoint("bottomleft", instance.baseframe, "bottomleft", 5, 1)
if (instance.auto_switch_to_old) then