- Added several options and tools for streamers and youtubers.

- Bar animation now uses delta time and speed shouldn't variate with framerate.
- Test bars got improvement!
- Fixed balance druid sometimes being detected as resto druid.

- API: added new events: COMBAT_ARENA_START, COMBAT_ARENA_END, COMBAT_MYTHICDUNGEON_START, COMBAT_MYTHICDUNGEON_END.
- API: added Details:AddColorString (player_name, class), add the player class color in the name string.
- API: added Details:AddRoleIcon (player_name, role, size), add the role icon in the name string.
- API: framework updated to v57.
This commit is contained in:
Tercio
2017-10-09 22:43:26 -03:00
parent 54cc5f5b65
commit f55511e337
17 changed files with 2353 additions and 87 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
local dversion = 56
local dversion = 57
local major, minor = "DetailsFramework-1.0", dversion
local DF, oldminor = LibStub:NewLibrary (major, minor)
+119 -9
View File
@@ -3618,13 +3618,6 @@ end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- ~scrollbox
-- preciso de uma fauxscroll que seja facil de lidar
-- ele cria scroll aqui, preciso falar a função que cria a linha e a função que atualiza
-- precisa passsar o tamanho em height width quantas barras vai mostrar
-- search box incluso opcionalmente
DF.SortFunctions = {}
local SortMember = ""
@@ -3659,7 +3652,7 @@ DF.ScrollBoxFunctions.Refresh = function (self)
offset = FauxScrollFrame_GetOffset (self)
end
local okay, totalLines = pcall (self.refresh_func, self, self.data, offset, #self.Frames)
local okay, totalLines = pcall (self.refresh_func, self, self.data, offset, self.LineAmount)
if (not okay) then
error ("Details! FrameWork: Refresh(): " .. totalLines)
end
@@ -3674,6 +3667,19 @@ DF.ScrollBoxFunctions.Refresh = function (self)
self:Show()
if (self.HideScrollBar) then
local frameName = self:GetName()
if (frameName) then
local scrollBar = _G [frameName .. "ScrollBar"]
if (scrollBar) then
scrollBar:Hide()
end
else
end
end
return self.Frames
end
@@ -3683,9 +3689,13 @@ DF.ScrollBoxFunctions.OnVerticalScroll = function (self, offset)
end
DF.ScrollBoxFunctions.CreateLine = function (self, func)
if (not func) then
func = self.CreateLineFunc
end
local okay, newLine = pcall (func, self, #self.Frames+1)
if (okay) then
tinsert (self.Frames, newLine)
newLine.Index = #self.Frames
return newLine
else
error ("Details! FrameWork: CreateLine(): " .. newLine)
@@ -3707,14 +3717,85 @@ DF.ScrollBoxFunctions.GetData = function (self)
return self.data
end
function DF:CreateScrollBox (parent, name, refresh_func, data, width, height, line_amount, line_height)
DF.ScrollBoxFunctions.GetFrames = function (self)
return self.Frames
end
DF.ScrollBoxFunctions.GetNumFramesCreated = function (self)
return #self.Frames
end
DF.ScrollBoxFunctions.GetNumFramesShown = function (self)
return self.LineAmount
end
DF.ScrollBoxFunctions.SetNumFramesShown = function (self, new_amount)
--> hide frames which won't be used
if (new_amount < #self.Frames) then
for i = new_amount+1, #self.Frames do
self.Frames [i]:Hide()
end
end
--> set the new amount
self.LineAmount = new_amount
end
DF.ScrollBoxFunctions.SetFramesHeight = function (self, new_height)
self.LineHeight = new_height
self:OnSizeChanged()
self:Refresh()
end
DF.ScrollBoxFunctions.OnSizeChanged = function (self)
if (self.ReajustNumFrames) then
--> how many lines the scroll can show
local amountOfFramesToShow = floor (self:GetHeight() / self.LineHeight)
--> how many lines the scroll already have
local totalFramesCreated = self:GetNumFramesCreated()
--> how many lines are current shown
local totalFramesShown = self:GetNumFramesShown()
--> the amount of frames increased
if (amountOfFramesToShow > totalFramesShown) then
for i = totalFramesShown+1, amountOfFramesToShow do
--> check if need to create a new line
if (i > totalFramesCreated) then
self:CreateLine (self.CreateLineFunc)
end
end
--> the amount of frames decreased
elseif (amountOfFramesToShow < totalFramesShown) then
--> hide all frames above the new amount to show
for i = totalFramesCreated, amountOfFramesToShow, -1 do
if (self.Frames [i]) then
self.Frames [i]:Hide()
end
end
end
--> set the new amount of frames
self:SetNumFramesShown (amountOfFramesToShow)
--> refresh lines
self:Refresh()
end
end
function DF:CreateScrollBox (parent, name, refresh_func, data, width, height, line_amount, line_height, create_line_func, auto_amount, no_scroll)
local scroll = CreateFrame ("scrollframe", name, parent, "FauxScrollFrameTemplate")
scroll:SetSize (width, height)
scroll.LineAmount = line_amount
scroll.LineHeight = line_height
scroll.IsFauxScroll = true
scroll.HideScrollBar = no_scroll
scroll.Frames = {}
scroll.ReajustNumFrames = auto_amount
scroll.CreateLineFunc = create_line_func
DF:Mixin (scroll, DF.SortFunctions)
DF:Mixin (scroll, DF.ScrollBoxFunctions)
@@ -3723,9 +3804,38 @@ function DF:CreateScrollBox (parent, name, refresh_func, data, width, height, li
scroll.data = data
scroll:SetScript ("OnVerticalScroll", scroll.OnVerticalScroll)
scroll:SetScript ("OnSizeChanged", DF.ScrollBoxFunctions.OnSizeChanged)
return scroll
end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- ~resizers
function DF:CreateResizeGrips (parent)
if (parent) then
local parentName = parent:GetName()
local leftResizer = CreateFrame ("button", parentName and parentName .. "LeftResizer" or nil, parent)
local rightResizer = CreateFrame ("button", parentName and parentName .. "RightResizer" or nil, parent)
leftResizer:SetPoint ("bottomleft", parent, "bottomleft")
rightResizer:SetPoint ("bottomright", parent, "bottomright")
leftResizer:SetSize (16, 16)
rightResizer:SetSize (16, 16)
rightResizer:SetNormalTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Up]])
rightResizer:SetHighlightTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Highlight]])
rightResizer:SetPushedTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Down]])
leftResizer:SetNormalTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Up]])
leftResizer:SetHighlightTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Highlight]])
leftResizer:SetPushedTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Down]])
leftResizer:GetNormalTexture():SetTexCoord (1, 0, 0, 1)
leftResizer:GetHighlightTexture():SetTexCoord (1, 0, 0, 1)
leftResizer:GetPushedTexture():SetTexCoord (1, 0, 0, 1)
return leftResizer, rightResizer
end
end
+5 -6
View File
File diff suppressed because one or more lines are too long
+12 -2
View File
@@ -160,11 +160,21 @@
if (have_cached) then
novo_objeto.spec = have_cached
--> check is didn't changed the spec:
if (_detalhes.streamer_config.quick_detection) then
--> validate the spec more times if on quick detection
_detalhes:ScheduleTimer ("ReGuessSpec", 2, {novo_objeto, self})
_detalhes:ScheduleTimer ("ReGuessSpec", 4, {novo_objeto, self})
_detalhes:ScheduleTimer ("ReGuessSpec", 6, {novo_objeto, self})
end
_detalhes:ScheduleTimer ("ReGuessSpec", 15, {novo_objeto, self})
--print (nome, "spec em cache:", have_cached)
else
_detalhes:ScheduleTimer ("GuessSpec", 3, {novo_objeto, self, 1})
--print (nome, "nao tem")
if (_detalhes.streamer_config.quick_detection) then
--> shoot detection early if in quick detection
_detalhes:ScheduleTimer ("GuessSpec", 1, {novo_objeto, self, 1})
else
_detalhes:ScheduleTimer ("GuessSpec", 3, {novo_objeto, self, 1})
end
end
end
+6
View File
@@ -424,6 +424,9 @@ function historico:resetar_overall()
end
end
--> stop bar testing if any
_detalhes:StopTestBarUpdate()
_detalhes:ClockPluginTickOnSegment()
end
@@ -433,6 +436,9 @@ function historico:resetar()
_detalhes.bosswindow:Reset()
end
--> stop bar testing if any
_detalhes:StopTestBarUpdate()
if (_detalhes.tabela_vigente.verifica_combate) then --> finaliza a checagem se esta ou não no combate
_detalhes:CancelTimer (_detalhes.tabela_vigente.verifica_combate)
end
+5
View File
@@ -415,6 +415,9 @@
_detalhes:CheckSwitchToCurrent()
_detalhes:CheckForTextTimeCounter (true)
--> stop bar testing if any
_detalhes:StopTestBarUpdate()
end
function _detalhes:DelayedSyncAlert()
@@ -900,6 +903,7 @@
_detalhes.tabela_vigente.arena = true
_detalhes.tabela_vigente.is_arena = {name = _detalhes.zone_name, zone = _detalhes.zone_name, mapid = _detalhes.zone_id}
_detalhes:SendEvent ("COMBAT_ARENA_START")
end
function _detalhes:StartArenaSegment (...)
@@ -946,6 +950,7 @@
_detalhes:TimeDataUnregister ("Your Team Healing")
_detalhes:TimeDataUnregister ("Enemy Team Healing")
_detalhes:SendEvent ("COMBAT_ARENA_END")
end
local validSpells = {
+19 -2
View File
@@ -461,17 +461,34 @@ function _detalhes:ResetSpecCache (forced)
end
function _detalhes:RefreshUpdater (suggested_interval)
local updateInterval = suggested_interval or _detalhes.update_speed
if (_detalhes.streamer_config.faster_updates) then
--> force 60 updates per second
updateInterval = 0.016
end
if (_detalhes.atualizador) then
_detalhes:CancelTimer (_detalhes.atualizador)
end
_detalhes.atualizador = _detalhes:ScheduleRepeatingTimer ("AtualizaGumpPrincipal", updateInterval, -1)
end
function _detalhes:SetWindowUpdateSpeed (interval, nosave)
if (not interval) then
interval = _detalhes.update_speed
end
if (type (interval) ~= "number") then
interval = _detalhes.update_speed or 0.3
end
if (not nosave) then
_detalhes.update_speed = interval
end
_detalhes:CancelTimer (_detalhes.atualizador)
_detalhes.atualizador = _detalhes:ScheduleRepeatingTimer ("AtualizaGumpPrincipal", interval, -1)
_detalhes:RefreshUpdater (interval)
end
function _detalhes:SetUseAnimations (enabled, nosave)
+7
View File
@@ -4060,6 +4060,13 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
_detalhes.time_type = 1
end
if (not _detalhes.is_in_arena) then
--> reset spec cache if broadcaster requested
if (_detalhes.streamer_config.reset_spec_cache) then
wipe (_detalhes.cached_specs)
end
end
_detalhes.is_in_arena = true
_detalhes:EnteredInArena()
+1640 -22
View File
File diff suppressed because it is too large Load Diff
+9 -1
View File
@@ -39,7 +39,11 @@
["COMBAT_CHARTTABLES_CREATING"] = {},
["COMBAT_CHARTTABLES_CREATED"] = {},
["COMBAT_ENCOUNTER_PHASE_CHANGED"] = {},
["COMBAT_ARENA_START"] = {},
["COMBAT_ARENA_END"] = {},
["COMBAT_MYTHICDUNGEON_START"] = {},
["COMBAT_MYTHICDUNGEON_END"] = {},
--> area
["ZONE_TYPE_CHANGED"] = {},
@@ -96,6 +100,10 @@ local common_events = {
["COMBAT_CHARTTABLES_CREATING"] = true,
["COMBAT_CHARTTABLES_CREATED"] = true,
["COMBAT_ENCOUNTER_PHASE_CHANGED"] = true,
["COMBAT_ARENA_START"] = true,
["COMBAT_ARENA_END"] = true,
["COMBAT_MYTHICDUNGEON_START"] = true,
["COMBAT_MYTHICDUNGEON_END"] = true,
["GROUP_ONENTER"] = true,
["GROUP_ONLEAVE"] = true,
["ZONE_TYPE_CHANGED"] = true,
+41 -4
View File
@@ -459,13 +459,50 @@ do
return spec
end
if (tries and tries < 10) then
t[3] = tries + 1
_detalhes:ScheduleTimer ("GuessSpec", 3, t)
if (_detalhes.streamer_config.quick_detection) then
if (tries and tries < 30) then
t[3] = tries + 1
_detalhes:ScheduleTimer ("GuessSpec", 1, t)
end
else
if (tries and tries < 10) then
t[3] = tries + 1
_detalhes:ScheduleTimer ("GuessSpec", 3, t)
end
end
return false
end
end
function _detalhes:AddColorString (player_name, class)
--> check if the class colors exists
local classColors = _G.RAID_CLASS_COLORS
if (classColors) then
local color = classColors [class]
--> check if the player name is valid
if (type (player_name) == "string" and color) then
player_name = "|c" .. color.colorStr .. player_name .. "|r"
return player_name
end
end
--> if failed, return the player name without modifications
return player_name
end
function _detalhes:AddRoleIcon (player_name, role, size)
--> check if is a valid role
local roleIcon = _detalhes.role_texcoord [role]
if (type (player_name) == "string" and roleIcon and role ~= "NONE") then
--> add the role icon
size = size or 14
player_name = "|TInterface\\LFGFRAME\\UI-LFG-ICON-ROLES:" .. size .. ":" .. size .. ":0:0:256:256:" .. roleIcon .. "|t " .. player_name
return player_name
end
return player_name
end
+93 -8
View File
@@ -234,14 +234,20 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy)
--> update profile keys before go
for key, value in pairs (_detalhes.default_profile) do
--> the entire key doesn't exist
if (profile [key] == nil) then
if (type (value) == "table") then
profile [key] = table_deepcopy (_detalhes.default_profile [key])
else
profile [key] = value
end
--> the key exist and is a table, check for missing values on sub tables
elseif (type (value) == "table") then
--> deploy only copy non existing data
_detalhes.table.deploy (profile [key], value)
--[=[
for key2, value2 in pairs (value) do
if (profile [key] [key2] == nil) then
if (type (value2) == "table") then
@@ -251,7 +257,7 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy)
end
end
end
--]=]
end
end
@@ -542,6 +548,15 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy)
--> update the numerical system
_detalhes:SelectNumericalSystem()
--> refresh the update interval
_detalhes:RefreshUpdater()
--> refresh animation functions
_detalhes:RefreshAnimationFunctions()
--> refresh broadcaster tools
_detalhes:LoadFramesForBroadcastTools()
if (_detalhes.initializing) then
_detalhes.profile_loaded = true
@@ -864,14 +879,14 @@ local default_profile = {
0.23, -- [3]
},
["ARENA_GREEN"] = {
0.1, -- [1]
0.85, -- [2]
0.1, -- [3]
0.4, -- [1]
1, -- [2]
0.4, -- [3]
},
["ARENA_YELLOW"] = {
0.90, -- [1]
0.90, -- [2]
0, -- [3]
1, -- [1]
1, -- [2]
0.25, -- [3]
},
["NEUTRAL"] = {
1, -- [1]
@@ -942,6 +957,10 @@ local default_profile = {
--> performance
use_row_animations = false,
animation_speed = 33,
animation_speed_triggertravel = 5,
animation_speed_mintravel = 0.45,
animation_speed_maxtravel = 3,
animate_scroll = false,
use_scroll = false,
scroll_speed = 2,
@@ -1013,7 +1032,64 @@ local default_profile = {
tab_name = "",
single_window = false,
},
--> broadcaster options
broadcaster_enabled = false,
--> event tracker
event_tracker = {
frame = {
locked = false,
width = 250,
height = 300,
backdrop_color = {0, 0, 0, 0.2},
show_title = true,
strata = "LOW",
},
options_frame = {},
enabled = false,
font_size = 10,
font_color = {1, 1, 1, 1},
font_shadow = "NONE",
font_face = "Friz Quadrata TT",
line_height = 16,
line_texture = "Details Serenity",
line_color = {.1, .1, .1, 0.3},
},
--> current damage
current_dps_meter = {
frame = {
locked = false,
width = 220,
height = 65,
backdrop_color = {0, 0, 0, 0.2},
show_title = false,
strata = "LOW",
},
options_frame = {},
enabled = false,
arena_enabled = true,
mythic_dungeon_enabled = true,
font_size = 18,
font_color = {1, 1, 1, 1},
font_shadow = "NONE",
font_face = "Friz Quadrata TT",
update_interval = 0.10,
sample_size = 5, --in seconds
},
--> streamer
-- _detalhes.streamer_config.
streamer_config = {
reset_spec_cache = false,
disable_mythic_dungeon = false,
no_alerts = false,
quick_detection = false,
faster_updates = false,
use_animation_accel = false,
},
--> tooltip
tooltip = {
fontface = "Friz Quadrata TT",
@@ -1303,6 +1379,11 @@ local default_global_data = {
_detalhes.default_global_data = default_global_data
function _detalhes:GetTutorialCVar (key, default)
--> is disabling all popups from the streamer options
if (_detalhes.streamer_config.no_alerts) then
return true
end
local value = _detalhes.tutorial [key]
if (value == nil and default) then
_detalhes.tutorial [key] = default
@@ -1401,6 +1482,10 @@ function _detalhes:RestoreState_CurrentMythicDungeonRun()
_detalhes.MythicPlus.PreviousBossKilledAt = savedTable.previous_boss_killed_at
_detalhes.MythicPlus.IsRestoredState = true
DetailsMythicPlusFrame.IsDoingMythicDungeon = true
C_Timer.After (2, function()
_detalhes:SendEvent ("COMBAT_MYTHICDUNGEON_START")
end)
return
end
end
+30 -2
View File
@@ -135,14 +135,14 @@ do
-- Restoration Druid:
[145518] = 105, -- Genesis
[145518] = 105, -- Genesis --no exists
[145205] = 105, -- Wild Mushroom
[48438] = 105, -- Wild Growth
[740] = 105, -- Tranquility
[102342] = 105, -- Ironbark
[33763] = 105, -- Lifebloom
[88423] = 105, -- Nature's Cure
[8936] = 105, -- Regrowth
--[8936] = 105, -- Regrowth -overlap
[18562] = 105, -- Swiftmend
-- Beast Mastery Hunter:
@@ -1572,6 +1572,34 @@ do
--[29842] = "WARRIOR", --undribled wrath
}
_detalhes.HardCrowdControlSpells = {
--> death knight
--> deamon hunter
--> druid
[33786] = true, -- Cyclone
--> hunter
--> mage
--> monk
--> paladin
--> priest
--> rogue
--> shaman
--> warlock
--> warrior
}
-- updated on 25/04/2015 (@Tonyleila - WoWInterface)
_detalhes.CrowdControlSpells = {
+309 -20
View File
@@ -20,7 +20,7 @@
15 - custom spells
16 - data for charts
17 - automatization settings
18 - misc settings
18 - broadcaster options
19 - externals widgets (data feed)
20 - tooltip
--]]
@@ -478,8 +478,16 @@ function _detalhes:OpenOptionsWindow (instance, no_reopen, section)
local extra_buttons_on_leave = function (self, capsule)
capsule.textcolor = "C_OptionsButtonOrange"
end
local fillbars = g:NewButton (window, _, "$parentCreateExampleBarsButton", nil, 110, 14, _detalhes.CreateTestBars, nil, nil, nil, Loc ["STRING_OPTIONS_TESTBARS"], 1)
local create_test_bars_func = function()
_detalhes.CreateTestBars()
if (not _detalhes.test_bar_update) then
_detalhes:StartTestBarUpdate()
else
_detalhes:StopTestBarUpdate()
end
end
local fillbars = g:NewButton (window, _, "$parentCreateExampleBarsButton", nil, 110, 14, create_test_bars_func, nil, nil, nil, Loc ["STRING_OPTIONS_TESTBARS"], 1)
fillbars:SetPoint ("bottomleft", window.widget, "bottomleft", 41, 12)
fillbars.textalign = "left"
fillbars.textcolor = "C_OptionsButtonOrange"
@@ -566,7 +574,7 @@ function _detalhes:OpenOptionsWindow (instance, no_reopen, section)
17, --auto hide settings
9, --wallpaper
18, --misc
18, --streamer options
--advanced
11, --raid tools
@@ -600,7 +608,7 @@ local menus = { --labels nos menus
Loc ["STRING_OPTIONSMENU_AUTOMATIC"],
Loc ["STRING_OPTIONSMENU_WALLPAPER"],
"-- -- --", --Loc ["STRING_OPTIONSMENU_MISC"]
"Streamer Settings", --Loc ["STRING_OPTIONSMENU_MISC"]
},
{
@@ -631,7 +639,7 @@ local menus2 = {
Loc ["STRING_OPTIONSMENU_DATACHART"], --16
Loc ["STRING_OPTIONSMENU_AUTOMATIC"], --17
--Loc ["STRING_OPTIONSMENU_MISC"], --18
"-- -- --", --18
"Streamer Settings", --18
Loc ["STRING_OPTIONSMENU_DATAFEED"], --19
Loc ["STRING_OPTIONSMENU_TOOLTIP"], --20
}
@@ -647,10 +655,13 @@ local menus2 = {
[9] = true,
[14] = true,
[17] = true,
[18] = true,
--[18] = true,
}
window.is_window_settings = is_window_settings
local newIcon = g:CreateImage (window, [[Interface\AddOns\Details\images\icons2]], 62*0.6, 40*0.6, "overlay", {443/512, 505/512, 306/512, 346/512})
newIcon:SetPoint ("topleft", window.widget, "topleft", 135, -351)
local select_options = function (options_type, true_index)
window.current_selected = options_type
@@ -2198,7 +2209,7 @@ function window:CreateFrame19()
end
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Advanced Settings - Miscellaneous ~18
-- Advanced Settings - options for broadcasters ~18
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function window:CreateFrame18()
@@ -2209,19 +2220,287 @@ function window:CreateFrame18()
titulo_misc_settings_desc.width = 350
titulo_misc_settings_desc.height = 20
local right_side = {
--{"instancesMiscLabel", 1, true},
--{"deleteInstanceLabel", 2},
--{"DisableGroupsLabel", 5, true},
--{"DisableLockResizeUngroupLabel", 7},
--{"DisableStretchButtonLabel", 8},
--{"DisableBarHighlightLabel", 9},
--{"DisableAllDisplaysWindowLabel", 10},
--{"DamageTakenEverythingLabel", 10},
-->
local button_width = 180
local titleFrame18 = g:NewLabel (frame18, _, "$parentTitleText", "TitleTextLabel", "Streamer Settings", "GameFontNormal", 16)
local titleFrame18Desc = g:NewLabel (frame18, _, "$parentTitleDescText", "TitleDescTextLabel", "Set of tools for streamers, youtubers and broadcasters in general", "GameFontNormal", 10, "white")
titleFrame18Desc:SetSize (450, 20)
--fazer os headers com espaço para images
--fazer o botão para abrir o painel de opçopoes
--> streamer plugin - a.k.a. player spell tracker
--> title anchor
g:NewLabel (frame18, _, "$parentStreamerPluginAnchor", "streamerPluginAnchor", "Streamer Plugin: Action Tracker", "GameFontNormal")
local streamerTitleDesc = g:NewLabel (frame18, _, "$parentStreamerTitleDescText", "StreamerTitleDescTextLabel", "Show the spells you are casting, allowing the viewer to follow your decision making and learn your rotation.", "GameFontNormal", 10, "white")
streamerTitleDesc:SetSize (270, 40)
streamerTitleDesc:SetJustifyV ("top")
streamerTitleDesc:SetPoint ("topleft", frame18.streamerPluginAnchor, "bottomleft", 0, -4)
--{"scrollLabel", 11, true},
local streamerTitleImage = g:CreateImage (frame18, [[Interface\AddOns\Details\images\icons2]], 256, 41, "overlay", {0.5, 1, 0.49, 0.57})
streamerTitleImage:SetPoint ("topleft", frame18.streamerPluginAnchor, "bottomleft", 0, -40)
--> get the plugin object
local StreamerPlugin = _detalhes:GetPlugin ("DETAILS_PLUGIN_STREAM_OVERLAY")
if (StreamerPlugin) then
--> get the plugin settings table
local tPluginSettings = _detalhes:GetPluginSavedTable ("DETAILS_PLUGIN_STREAM_OVERLAY")
if (tPluginSettings) then
local bIsPluginEnabled = tPluginSettings.enabled
--> plugin already enabled
if (bIsPluginEnabled) then
--> config button
local configure_streamer_plugin = function()
StreamerPlugin.OpenOptionsPanel (true)
C_Timer.After (0.2, function()
window:Hide()
end)
end
local configurePluginButton = g:NewButton (frame18, _, "$parentConfigureStreamerPluginButton", "configureStreamerPlugin", 100, 20, configure_streamer_plugin, nil, nil, nil, "Action Tracker Options", nil, options_button_template)
configurePluginButton:SetWidth (button_width)
configurePluginButton:SetPoint ("topleft", streamerTitleImage, "bottomleft", 0, -7)
--> text telling how to disable
local pluginAlreadyEnabled = g:NewLabel (frame18, _, "$parentStreamerAlreadyEnabledText", "StreamerAlreadyEnabledTextLabel", "Plugin is enabled. You may disable it on Plugin Management section.", "GameFontNormal", 10, "white")
pluginAlreadyEnabled:SetJustifyV ("top")
pluginAlreadyEnabled:SetSize (270, 40)
pluginAlreadyEnabled:SetPoint ("topleft", configurePluginButton, "bottomleft", 0, -7)
else
--> plugin isnt enabled, create the enable button
local enable_streamer_plugin = function()
tPluginSettings.enabled = true
StreamerPlugin.__enabled = true
_detalhes:SendEvent ("PLUGIN_ENABLED", StreamerPlugin)
frame18.enableStreamerPluginButton:Hide()
--> config button
local configure_streamer_plugin = function()
StreamerPlugin.OpenOptionsPanel()
end
local configurePluginButton = g:NewButton (frame18, _, "$parentConfigureStreamerPluginButton", "configureStreamerPlugin", 100, 20, configure_streamer_plugin, nil, nil, nil, "Action Tracker Options", nil, options_button_template)
configurePluginButton:SetWidth (button_width)
configurePluginButton:SetPoint ("topleft", streamerTitleImage, "bottomleft", 0, -7)
--> text telling how to disable
local pluginAlreadyEnabled = g:NewLabel (frame18, _, "$parentStreamerAlreadyEnabledText", "StreamerAlreadyEnabledTextLabel", "Plugin is enabled. You may disable it on Plugin Management section.", "GameFontNormal", 10, "white")
pluginAlreadyEnabled:SetJustifyV ("top")
pluginAlreadyEnabled:SetSize (270, 40)
pluginAlreadyEnabled:SetPoint ("topleft", configurePluginButton, "bottomleft", 0, -7)
end
local enablePluginButton = g:NewButton (frame18, _, "$parentEnableStreamerPluginButton", "enableStreamerPluginButton", 100, 20, enable_streamer_plugin, nil, nil, nil, "Enable Plugin", nil, options_button_template)
enablePluginButton:SetWidth (button_width)
enablePluginButton:SetPoint ("topleft", streamerTitleImage, "bottomleft", 0, -5)
end
end
else
--> plugin is disabled at the addon control panel
local pluginDisabled = g:NewLabel (frame18, _, "$parentStreamerDisabledText", "StreamerDisabledTextLabel", "Details!: Streamer Plugin is disabled on the AddOns Control Panel.", "GameFontNormal", 10, "red")
pluginDisabled:SetSize (270, 40)
pluginDisabled:SetPoint ("topleft", streamerTitleImage, "bottomleft", 0, -2)
end
--> event tracker
g:NewLabel (frame18, _, "$parentEventTrackerAnchor", "eventTrackerAnchor", "Event Tracker", "GameFontNormal")
local eventTrackerTitleDesc = g:NewLabel (frame18, _, "$parentEventTrackerTitleDescText", "EventTrackerTitleDescTextLabel", "Show what's happening near you so the viewer can follow what's going on. Show cooldowns, CC, spell interruption. Useful on any group content.", "GameFontNormal", 10, "white")
eventTrackerTitleDesc:SetJustifyV ("top")
eventTrackerTitleDesc:SetSize (270, 40)
eventTrackerTitleDesc:SetPoint ("topleft", frame18.eventTrackerAnchor, "bottomleft", 0, -4)
local eventTrackerTitleImage = g:CreateImage (frame18, [[Interface\AddOns\Details\images\icons2]], 256, 50, "overlay", {0.5, 1, 134/512, 184/512})
eventTrackerTitleImage:SetPoint ("topleft", frame18.eventTrackerAnchor, "bottomleft", 0, -40)
--> enable feature checkbox
g:NewLabel (frame18, _, "$parentEnableEventTrackerLabel", "EventTrackerLabel", "Enable Event Tracker", "GameFontHighlightLeft")
g:NewSwitch (frame18, _, "$parentEventTrackerSlider", "EventTrackerSlider", 60, 20, _, _, _detalhes.event_tracker.enabled, nil, nil, nil, nil, options_switch_template)
frame18.EventTrackerSlider:SetPoint ("left", frame18.EventTrackerLabel, "right", 2)
frame18.EventTrackerSlider:SetAsCheckBox()
frame18.EventTrackerSlider.OnSwitch = function (_, _, value)
_detalhes.event_tracker.enabled = not _detalhes.event_tracker.enabled
Details:LoadFramesForBroadcastTools()
_detalhes:SendOptionsModifiedEvent (DetailsOptionsWindow.instance)
end
window:CreateLineBackground2 (frame18, "EventTrackerSlider", "EventTrackerLabel", "Enable Event Tracker")
frame18.EventTrackerLabel:SetPoint ("topleft", eventTrackerTitleImage, "bottomleft", 0, -10)
frame18.EventTrackerSlider:SetPoint ("left", frame18.EventTrackerLabel, "right", 2, 0)
--> configure feature button
local configure_event_tracker = function()
_detalhes:OpenEventTrackerOptions (true)
C_Timer.After (0.2, function()
window:Hide()
end)
end
local configureEventTrackerButton = g:NewButton (frame18, _, "$parentConfigureEventTrackerButton", "configureEventTracker", 100, 20, configure_event_tracker, nil, nil, nil, "Event Tracker Options", nil, options_button_template)
configureEventTrackerButton:SetWidth (button_width)
configureEventTrackerButton:SetPoint ("topleft", frame18.EventTrackerLabel, "bottomleft", 0, -7)
--> current dps
g:NewLabel (frame18, _, "$parentCurrentDPSAnchor", "currentDPSAnchor", "The Real Current DPS", "GameFontNormal")
local currentDPSTitleDesc = g:NewLabel (frame18, _, "$parentCurrentDPSTitleDescText", "CurrentDPSTitleDescTextLabel", "Show a frame with DPS done only in the last 5 seconds, making it change very quickly when the group uses attack cooldowns.", "GameFontNormal", 10, "white")
currentDPSTitleDesc:SetJustifyV ("top")
currentDPSTitleDesc:SetSize (270, 40)
currentDPSTitleDesc:SetPoint ("topleft", frame18.currentDPSAnchor, "bottomleft", 0, -4)
local currentDPSTitleImage = g:CreateImage (frame18, [[Interface\AddOns\Details\images\icons2]], 250, 61, "overlay", {259/512, 509/512, 186/512, 247/512})
currentDPSTitleImage:SetPoint ("topleft", frame18.currentDPSAnchor, "bottomleft", 0, -40)
--> enable feature checkbox
g:NewLabel (frame18, _, "$parentEnableCurrentDPSLabel", "CurrentDPSLabel", "Enable The Real Current Dps", "GameFontHighlightLeft")
g:NewSwitch (frame18, _, "$parentCurrentDPSSlider", "CurrentDPSSlider", 60, 20, _, _, _detalhes.current_dps_meter.enabled, nil, nil, nil, nil, options_switch_template)
frame18.CurrentDPSSlider:SetPoint ("left", frame18.CurrentDPSLabel, "right", 2)
frame18.CurrentDPSSlider:SetAsCheckBox()
frame18.CurrentDPSSlider.OnSwitch = function (_, _, value)
_detalhes.current_dps_meter.enabled = not _detalhes.current_dps_meter.enabled
Details:LoadFramesForBroadcastTools()
_detalhes:SendOptionsModifiedEvent (DetailsOptionsWindow.instance)
end
window:CreateLineBackground2 (frame18, "CurrentDPSSlider", "CurrentDPSLabel", "Enable The Real Current Dps")
frame18.CurrentDPSLabel:SetPoint ("topleft", currentDPSTitleImage, "bottomleft", 0, -10)
frame18.CurrentDPSSlider:SetPoint ("left", frame18.CurrentDPSLabel, "right", 2, 0)
--> configure feature button
local configure_current_dps = function()
_detalhes:OpenCurrentRealDPSOptions (true)
C_Timer.After (0.2, function()
window:Hide()
end)
end
local configureCurrentDPSButton = g:NewButton (frame18, _, "$parentConfigureCurrentDPSButton", "configureCurrentDPS", 100, 20, configure_current_dps, nil, nil, nil, "Current Real DPS Options", nil, options_button_template)
configureCurrentDPSButton:SetWidth (button_width)
configureCurrentDPSButton:SetPoint ("topleft", frame18.CurrentDPSLabel, "bottomleft", 0, -7)
--> suppress alerts and tutorial popups
g:NewLabel (frame18, _, "$parentAlertsAndPopupsAnchor", "alertsAndPopupsAnchor", "Settings:", "GameFontNormal")
--> no alerts
g:NewLabel (frame18, _, "$parentNoAlertsLabel", "NoAlertsLabel", "No Window Alerts", "GameFontHighlightLeft")
g:NewSwitch (frame18, _, "$parentNoAlertsSlider", "NoAlertsSlider", 60, 20, _, _, _detalhes.streamer_config.no_alerts, nil, nil, nil, nil, options_switch_template)
frame18.NoAlertsSlider:SetPoint ("left", frame18.NoAlertsLabel, "right", 2)
frame18.NoAlertsSlider:SetAsCheckBox()
frame18.NoAlertsSlider.OnSwitch = function (_, _, value)
_detalhes.streamer_config.no_alerts = not _detalhes.streamer_config.no_alerts
_detalhes:SendOptionsModifiedEvent (DetailsOptionsWindow.instance)
end
window:CreateLineBackground2 (frame18, "NoAlertsSlider", "NoAlertsLabel", "Don't show alerts in the bottom of the window and avoid show tutorial popups.")
--> faster updates
g:NewLabel (frame18, _, "$parentFasterUpdatesLabel", "FasterUpdatesLabel", "60 Updates Per Second", "GameFontHighlightLeft")
g:NewSwitch (frame18, _, "$parentFasterUpdatesSlider", "FasterUpdatesSlider", 60, 20, _, _, _detalhes.streamer_config.faster_updates, nil, nil, nil, nil, options_switch_template)
frame18.FasterUpdatesSlider:SetPoint ("left", frame18.FasterUpdatesLabel, "right", 2)
frame18.FasterUpdatesSlider:SetAsCheckBox()
frame18.FasterUpdatesSlider.OnSwitch = function (_, _, value)
_detalhes.streamer_config.faster_updates = not _detalhes.streamer_config.faster_updates
_detalhes:RefreshUpdater()
_detalhes:SendOptionsModifiedEvent (DetailsOptionsWindow.instance)
end
window:CreateLineBackground2 (frame18, "FasterUpdatesSlider", "FasterUpdatesLabel", "Increase the refresh rate to 60 times per second.")
--> quick detection
g:NewLabel (frame18, _, "$parentQuickDetectionLabel", "QuickDetectionLabel", "Quick Player Info", "GameFontHighlightLeft")
g:NewSwitch (frame18, _, "$parentQuickDetectionSlider", "QuickDetectionSlider", 60, 20, _, _, _detalhes.streamer_config.quick_detection, nil, nil, nil, nil, options_switch_template)
frame18.QuickDetectionSlider:SetPoint ("left", frame18.QuickDetectionLabel, "right", 2)
frame18.QuickDetectionSlider:SetAsCheckBox()
frame18.QuickDetectionSlider.OnSwitch = function (_, _, value)
_detalhes.streamer_config.quick_detection = not _detalhes.streamer_config.quick_detection
_detalhes:SendOptionsModifiedEvent (DetailsOptionsWindow.instance)
end
window:CreateLineBackground2 (frame18, "QuickDetectionSlider", "QuickDetectionLabel", "Attempt to acquire player information such as class, spec or item level faster.")
--> disable mythic dungeon
g:NewLabel (frame18, _, "$parentDisableMythicDungeonLabel", "DisableMythicDungeonLabel", "No Mythic Dungeon Shenanigans", "GameFontHighlightLeft")
g:NewSwitch (frame18, _, "$parentDisableMythicDungeonSlider", "DisableMythicDungeonSlider", 60, 20, _, _, _detalhes.streamer_config.disable_mythic_dungeon, nil, nil, nil, nil, options_switch_template)
frame18.DisableMythicDungeonSlider:SetPoint ("left", frame18.DisableMythicDungeonLabel, "right", 2)
frame18.DisableMythicDungeonSlider:SetAsCheckBox()
frame18.DisableMythicDungeonSlider.OnSwitch = function (_, _, value)
_detalhes.streamer_config.disable_mythic_dungeon = not _detalhes.streamer_config.disable_mythic_dungeon
_detalhes:SendOptionsModifiedEvent (DetailsOptionsWindow.instance)
end
window:CreateLineBackground2 (frame18, "DisableMythicDungeonSlider", "DisableMythicDungeonLabel", "Threat mythic dungeon as a normal dungeon: no trash merge, no mythic run overall segment.")
--> clear cache
g:NewLabel (frame18, _, "$parentClearCacheLabel", "ClearCacheLabel", "Clear Cache on New Event", "GameFontHighlightLeft")
g:NewSwitch (frame18, _, "$parentClearCacheSlider", "ClearCacheSlider", 60, 20, _, _, _detalhes.streamer_config.reset_spec_cache, nil, nil, nil, nil, options_switch_template)
frame18.ClearCacheSlider:SetPoint ("left", frame18.ClearCacheLabel, "right", 2)
frame18.ClearCacheSlider:SetAsCheckBox()
frame18.ClearCacheSlider.OnSwitch = function (_, _, value)
_detalhes.streamer_config.reset_spec_cache = not _detalhes.streamer_config.reset_spec_cache
_detalhes:SendOptionsModifiedEvent (DetailsOptionsWindow.instance)
end
window:CreateLineBackground2 (frame18, "ClearCacheSlider", "ClearCacheLabel", "Reduces the chance of getting a serial number overlap when working with multiple realms.")
--> advanced animations
g:NewLabel (frame18, _, "$parentAdvancedAnimationsLabel", "AdvancedAnimationsLabel", "Use Animation Acceleration", "GameFontHighlightLeft")
g:NewSwitch (frame18, _, "$parentAdvancedAnimationsSlider", "AdvancedAnimationsSlider", 60, 20, _, _, _detalhes.streamer_config.use_animation_accel, nil, nil, nil, nil, options_switch_template)
frame18.AdvancedAnimationsSlider:SetPoint ("left", frame18.AdvancedAnimationsLabel, "right", 2)
frame18.AdvancedAnimationsSlider:SetAsCheckBox()
frame18.AdvancedAnimationsSlider.OnSwitch = function (_, _, value)
_detalhes.streamer_config.use_animation_accel = not _detalhes.streamer_config.use_animation_accel
_detalhes:RefreshAnimationFunctions()
_detalhes:SendOptionsModifiedEvent (DetailsOptionsWindow.instance)
end
window:CreateLineBackground2 (frame18, "AdvancedAnimationsSlider", "AdvancedAnimationsLabel", "Animation speed changes accordly to the amount of space the bar needs to travel.")
--> anchoring
local x = window.left_start_at
titleFrame18:SetPoint (x, window.title_y_pos)
titleFrame18Desc:SetPoint (x, window.title_y_pos2)
local a = frame18:CreateFontString (nil, "overlay", "GameFontNormal")
frame18.a = a
local left_side = {
{"streamerPluginAnchor", 0, true},
{"eventTrackerAnchor", 0, true},
{"eventTrackerAnchor", 0, true},
{"eventTrackerAnchor", 0, true},
{"eventTrackerAnchor", 0, true},
{"eventTrackerAnchor", 0, true},
}
window:arrange_menu (frame18, left_side, x, window.top_start_at)
local right_side = {
{"currentDPSAnchor", 0, true},
{"alertsAndPopupsAnchor", 0, true},
{"alertsAndPopupsAnchor", 0, true},
{"alertsAndPopupsAnchor", 0, true},
{"alertsAndPopupsAnchor", 0, true},
{"alertsAndPopupsAnchor", 0, true},
{"NoAlertsLabel"},
{"FasterUpdatesLabel"},
{"QuickDetectionLabel"},
{"DisableMythicDungeonLabel"},
{"ClearCacheLabel"},
{"AdvancedAnimationsLabel"},
}
window:arrange_menu (frame18, right_side, window.right_start_at, window.top_start_at)
@@ -11339,6 +11618,16 @@ end --> if not window
--> window 16
_G.DetailsOptionsWindow16UserTimeCapturesFillPanel.MyObject:Refresh()
--> window 18
_G.DetailsOptionsWindow18EventTrackerSlider.MyObject:SetValue (_detalhes.event_tracker.enabled)
_G.DetailsOptionsWindow18CurrentDPSSlider.MyObject:SetValue (_detalhes.current_dps_meter.enabled)
_G.DetailsOptionsWindow18NoAlertsSlider.MyObject:SetValue (_detalhes.streamer_config.no_alerts)
_G.DetailsOptionsWindow18FasterUpdatesSlider.MyObject:SetValue (_detalhes.streamer_config.faster_updates)
_G.DetailsOptionsWindow18QuickDetectionSlider.MyObject:SetValue (_detalhes.streamer_config.quick_detection)
_G.DetailsOptionsWindow18DisableMythicDungeonSlider.MyObject:SetValue (_detalhes.streamer_config.disable_mythic_dungeon)
_G.DetailsOptionsWindow18ClearCacheSlider.MyObject:SetValue (_detalhes.streamer_config.reset_spec_cache)
_G.DetailsOptionsWindow18AdvancedAnimationsSlider.MyObject:SetValue (_detalhes.streamer_config.use_animation_accel)
--> window 17
_G.DetailsOptionsWindow17CombatAlphaDropdown.MyObject:Select (editing_instance.hide_in_combat_type, true)
_G.DetailsOptionsWindow17HideOnCombatAlphaSlider.MyObject:SetFixedParameter (editing_instance)
+8 -8
View File
@@ -1493,8 +1493,7 @@ local resize_scripts_onmousedown = function (self, button)
_detalhes:SendEvent ("DETAILS_INSTANCE_STARTRESIZE", nil, self._instance)
if (_detalhes.update_speed > 0.3) then
_detalhes:CancelTimer (_detalhes.atualizador)
_detalhes.atualizador = _detalhes:ScheduleRepeatingTimer ("AtualizaGumpPrincipal", 0.3, -1)
_detalhes:SetWindowUpdateSpeed (0.3, true)
_detalhes.resize_changed_update_speed = true
end
@@ -1591,8 +1590,7 @@ local resize_scripts_onmouseup = function (self, button)
end
if (_detalhes.resize_changed_update_speed) then
_detalhes:CancelTimer (_detalhes.atualizador)
_detalhes.atualizador = _detalhes:ScheduleRepeatingTimer ("AtualizaGumpPrincipal", _detalhes.update_speed, -1)
_detalhes:SetWindowUpdateSpeed (false, true)
_detalhes.resize_changed_update_speed = nil
end
@@ -2636,8 +2634,7 @@ local function button_stretch_scripts (baseframe, backgrounddisplay, instancia)
--> change the update speed
if (_detalhes.update_speed > 0.3) then
_detalhes:CancelTimer (_detalhes.atualizador)
_detalhes.atualizador = _detalhes:ScheduleRepeatingTimer ("AtualizaGumpPrincipal", 0.3, -1)
_detalhes:SetWindowUpdateSpeed (0.3, true)
_detalhes.stretch_changed_update_speed = true
end
@@ -2723,8 +2720,7 @@ local function button_stretch_scripts (baseframe, backgrounddisplay, instancia)
_detalhes:SendEvent ("DETAILS_INSTANCE_ENDSTRETCH", nil, instancia)
if (_detalhes.stretch_changed_update_speed) then
_detalhes:CancelTimer (_detalhes.atualizador)
_detalhes.atualizador = _detalhes:ScheduleRepeatingTimer ("AtualizaGumpPrincipal", _detalhes.update_speed, -1)
_detalhes:SetWindowUpdateSpeed (false, true)
_detalhes.stretch_changed_update_speed = nil
end
@@ -2991,6 +2987,10 @@ end
function _detalhes:InstanceAlert (msg, icon, time, clickfunc, doflash)
if (_detalhes.streamer_config.no_alerts) then
return
end
if (not self.meu_id) then
local lower = _detalhes:GetLowerInstanceNumber()
if (lower) then
BIN
View File
Binary file not shown.
+49 -2
View File
@@ -133,7 +133,7 @@ function _G._detalhes:Start()
end
self:AtualizaGumpPrincipal (-1, true)
self.atualizador = self:ScheduleRepeatingTimer ("AtualizaGumpPrincipal", _detalhes.update_speed, -1)
_detalhes:RefreshUpdater()
for index = 1, #self.tabela_instancias do
local instance = self.tabela_instancias [index]
@@ -571,6 +571,7 @@ function _G._detalhes:Start()
local segment = segmentsToMerge [i]
if (segment == _detalhes.tabela_vigente) then
_detalhes:Msg ("unhandled exception > merged trash segment is current segment > MergeTrashCleanup() is scheduled:", isFromSchedule)
--happened after killing one mob and leaving the dungeon, lots of /reload has done inside the dungeon
end
end
@@ -1040,10 +1041,27 @@ function _G._detalhes:Start()
elseif (event == "CHALLENGE_MODE_START") then
--> CHALLENGE_MODE_START does trigger every time the player enters a mythic dungeon already in progress
--> send mythic dungeon start event
local zoneName, instanceType, difficultyID, difficultyName, maxPlayers, dynamicDifficulty, isDynamic, instanceMapID, instanceGroupSize = GetInstanceInfo()
if (difficultyID == 8) then
_detalhes:SendEvent ("COMBAT_MYTHICDUNGEON_START")
end
if (newFrame.DevelopmentDebug) then
print ("Details!", event, ...)
end
--> reset spec cache if broadcaster requested
if (_detalhes.streamer_config.reset_spec_cache) then
wipe (_detalhes.cached_specs)
end
--> ignore the event if ignoring mythic dungeon special treatment
if (_detalhes.streamer_config.disable_mythic_dungeon) then
return
end
C_Timer.After (0.5, newFrame.OnChallengeModeStart)
elseif (event == "CHALLENGE_MODE_COMPLETED") then
@@ -1051,6 +1069,17 @@ function _G._detalhes:Start()
print ("Details!", event, ...)
end
--> send mythic dungeon end event
local zoneName, instanceType, difficultyID, difficultyName, maxPlayers, dynamicDifficulty, isDynamic, instanceMapID, instanceGroupSize = GetInstanceInfo()
if (difficultyID == 8) then
_detalhes:SendEvent ("COMBAT_MYTHICDUNGEON_END")
end
--> ignore the event if ignoring mythic dungeon special treatment
if (_detalhes.streamer_config.disable_mythic_dungeon) then
return
end
--> delay to wait the encounter_end trigger first
--> assuming here the party cleaned the mobs kill objective before going to kill the last boss
C_Timer.After (2, newFrame.MythicDungeonFinished)
@@ -1060,6 +1089,11 @@ function _G._detalhes:Start()
print ("Details!", event, ...)
end
--> ignore the event if ignoring mythic dungeon special treatment
if (_detalhes.streamer_config.disable_mythic_dungeon) then
return
end
if (newFrame.IsDoingMythicDungeon) then
local encounterID, encounterName, difficultyID, raidSize, endStatus = ...
if (endStatus == 1) then
@@ -1100,11 +1134,21 @@ function _G._detalhes:Start()
print ("Details!", event, ...)
print ("Zone changed and is Doing Mythic Dungeon")
end
--> ignore the event if ignoring mythic dungeon special treatment
if (_detalhes.streamer_config.disable_mythic_dungeon) then
return
end
local _, _, difficulty, _, _, _, _, currentZoneID = GetInstanceInfo()
if (currentZoneID ~= self.MythicPlus.DungeonID) then
if (newFrame.DevelopmentDebug) then
print ("Zone changed and the zone is different than the dungeon")
end
--> send mythic dungeon end event
_detalhes:SendEvent ("COMBAT_MYTHICDUNGEON_END")
--> finish the segment
newFrame.BossDefeated (true)
@@ -1450,6 +1494,9 @@ function _G._detalhes:Start()
_detalhes:OpenWelcomeWindow()
end
--> load broadcaster tools
_detalhes:LoadFramesForBroadcastTools()
--_detalhes:OpenWelcomeWindow() --debug
-- /run _detalhes:OpenWelcomeWindow()