chore: hoist plugins to root and move main into Details/
Each Details_* plugin and the main Details addon now lives in its own repo-root folder, matching the Exiles fork-layout convention.
This commit is contained in:
@@ -0,0 +1,526 @@
|
||||
do
|
||||
local addonId, edTable = ...
|
||||
local Details = _G._detalhes
|
||||
local AceLocale = LibStub("AceLocale-3.0")
|
||||
local Loc = AceLocale:GetLocale("Details_EncounterDetails")
|
||||
local Graphics = LibStub:GetLibrary("LibGraph-2.0")
|
||||
local ipairs = ipairs
|
||||
local _GetSpellInfo = Details.getspellinfo
|
||||
local unpack = unpack
|
||||
local detailsFramework = DetailsFramework
|
||||
local CreateFrame = CreateFrame
|
||||
local GameCooltip = GameCooltip
|
||||
local _
|
||||
|
||||
Details.EncounterDetailsTempWindow = function(encounterDetails)
|
||||
--options panel
|
||||
encounterDetails.SetBarBackdrop_OnEnter = function(self)
|
||||
self:SetBackdropColor(unpack(edTable.defaultBackgroundColor_OnEnter))
|
||||
end
|
||||
|
||||
encounterDetails.SetBarBackdrop_OnLeave = function(self)
|
||||
self:SetBackdropColor(unpack(edTable.defaultBackgroundColor))
|
||||
end
|
||||
|
||||
function encounterDetails:AutoShowIcon()
|
||||
local bFoundBoss = false
|
||||
for _, combatObject in ipairs(encounterDetails:GetCombatSegments()) do
|
||||
---@cast combatObject combat
|
||||
if (combatObject.is_boss) then
|
||||
encounterDetails:ShowIcon()
|
||||
bFoundBoss = true
|
||||
end
|
||||
end
|
||||
|
||||
if (encounterDetails:GetCurrentCombat().is_boss) then
|
||||
encounterDetails:ShowIcon()
|
||||
bFoundBoss = true
|
||||
end
|
||||
|
||||
if (not bFoundBoss) then
|
||||
encounterDetails:HideIcon()
|
||||
end
|
||||
end
|
||||
|
||||
local buildOptionsPanel = function()
|
||||
local pluginIcon = "Interface\\AddOns\\Details_EncounterDetails\\images\\icon"
|
||||
local pluginIconCoords = {0.15, 0.85, 0.15, 0.85}
|
||||
local optionsFrame = encounterDetails:CreatePluginOptionsFrame("EncounterDetailsOptionsWindow", "Encounter Breakdown Options", 3, pluginIcon, pluginIconCoords)
|
||||
-- 1 = only when inside a raid map
|
||||
-- 2 = only when in raid group
|
||||
-- 3 = only after a boss encounter
|
||||
-- 4 = always show
|
||||
-- 5 = automatic show when have at least 1 encounter with boss
|
||||
|
||||
local onShowIconCallback = function(_, _, value)
|
||||
encounterDetails.db.show_icon = value
|
||||
if (value == 1) then
|
||||
if (encounterDetails:GetZoneType() == "raid") then
|
||||
encounterDetails:ShowIcon()
|
||||
else
|
||||
encounterDetails:HideIcon()
|
||||
end
|
||||
|
||||
elseif (value == 2) then
|
||||
if (encounterDetails:InGroup()) then
|
||||
encounterDetails:ShowIcon()
|
||||
else
|
||||
encounterDetails:HideIcon()
|
||||
end
|
||||
|
||||
elseif (value == 3) then
|
||||
if (encounterDetails:GetCurrentCombat().is_boss) then
|
||||
encounterDetails:ShowIcon()
|
||||
else
|
||||
encounterDetails:HideIcon()
|
||||
end
|
||||
|
||||
elseif (value == 4) then
|
||||
encounterDetails:ShowIcon()
|
||||
|
||||
elseif (value == 5) then
|
||||
encounterDetails:AutoShowIcon()
|
||||
end
|
||||
end
|
||||
|
||||
local on_show_menu = {
|
||||
{value = 1, label = "Inside Raid", onclick = onShowIconCallback, desc = "Only show the icon while inside a raid."},
|
||||
{value = 2, label = "In Group", onclick = onShowIconCallback, desc = "Only show the icon while in group."},
|
||||
{value = 3, label = "After Encounter", onclick = onShowIconCallback, desc = "Show the icon after a raid boss encounter."},
|
||||
{value = 4, label = "Always", onclick = onShowIconCallback, desc = "Always show the icon."},
|
||||
{value = 5, label = "Auto", onclick = onShowIconCallback, desc = "The plugin decides when the icon needs to be shown."},
|
||||
}
|
||||
|
||||
--/dump DETAILS_PLUGIN_ENCOUNTER_DETAILS.db.show_icon
|
||||
|
||||
local menu = {
|
||||
{
|
||||
type = "select",
|
||||
get = function() return encounterDetails.db.show_icon end,
|
||||
values = function() return on_show_menu end,
|
||||
desc = "When the icon is shown in the Details! tooltip.",
|
||||
name = "Show Icon"
|
||||
},
|
||||
{
|
||||
type = "toggle",
|
||||
get = function() return encounterDetails.db.hide_on_combat end,
|
||||
set = function(self, fixedparam, value) encounterDetails.db.hide_on_combat = value end,
|
||||
desc = "Encounter Breakdown window automatically close when you enter in combat.",
|
||||
name = "Hide on Combat"
|
||||
},
|
||||
{
|
||||
type = "range",
|
||||
get = function() return encounterDetails.db.max_emote_segments end,
|
||||
set = function(self, fixedparam, value) encounterDetails.db.max_emote_segments = value end,
|
||||
min = 1,
|
||||
max = 10,
|
||||
step = 1,
|
||||
desc = "Keep how many segments emotes.",
|
||||
name = "Emote Segments Amount",
|
||||
usedecimals = true,
|
||||
},
|
||||
{
|
||||
type = "range",
|
||||
get = function() return encounterDetails.db.window_scale end,
|
||||
set = function(self, fixedparam, value) encounterDetails.db.window_scale = value; encounterDetails:RefreshScale() end,
|
||||
min = 0.65,
|
||||
max = 1.50,
|
||||
step = 0.1,
|
||||
desc = "Set the window size",
|
||||
name = "Window Scale",
|
||||
usedecimals = true,
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
local options_text_template = detailsFramework:GetTemplate("font", "OPTIONS_FONT_TEMPLATE")
|
||||
local options_dropdown_template = detailsFramework:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")
|
||||
local options_switch_template = detailsFramework:GetTemplate("switch", "OPTIONS_CHECKBOX_TEMPLATE")
|
||||
local options_slider_template = detailsFramework:GetTemplate("slider", "OPTIONS_SLIDER_TEMPLATE")
|
||||
local options_button_template = detailsFramework:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE")
|
||||
|
||||
detailsFramework:BuildMenu(optionsFrame, menu, 15, -75, 260, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
||||
end
|
||||
|
||||
encounterDetails.OpenOptionsPanel = function()
|
||||
if (not EncounterDetailsOptionsWindow) then
|
||||
buildOptionsPanel()
|
||||
end
|
||||
EncounterDetailsOptionsWindow:Show()
|
||||
end
|
||||
|
||||
function encounterDetails:RefreshScale()
|
||||
local scale = encounterDetails.db.window_scale
|
||||
if (encounterDetails.Frame) then
|
||||
encounterDetails.Frame:SetScale(scale)
|
||||
end
|
||||
end
|
||||
|
||||
-- ~start ~main ~frame ~baseframe ~bossframe
|
||||
local edFrame = encounterDetails.Frame
|
||||
detailsFramework:ApplyStandardBackdrop(edFrame)
|
||||
edFrame:SetFrameStrata("high")
|
||||
edFrame:SetToplevel(true)
|
||||
edFrame:SetWidth(898)
|
||||
edFrame:SetHeight(504)
|
||||
edFrame:EnableMouse(true)
|
||||
edFrame:SetResizable(false)
|
||||
edFrame:SetMovable(true)
|
||||
edFrame:SetPoint("center", UIParent, "center", 0, 0)
|
||||
|
||||
--background
|
||||
edFrame.bosFrameBackgroundTexture = edFrame:CreateTexture(nil, "background")
|
||||
edFrame.bosFrameBackgroundTexture:SetTexture([[Interface\AddOns\Details\images\background]], true)
|
||||
edFrame.bosFrameBackgroundTexture:SetAlpha(0.7)
|
||||
edFrame.bosFrameBackgroundTexture:SetVertexColor(0.27, 0.27, 0.27)
|
||||
edFrame.bosFrameBackgroundTexture:SetVertTile(true)
|
||||
edFrame.bosFrameBackgroundTexture:SetHorizTile(true)
|
||||
edFrame.bosFrameBackgroundTexture:SetSize(790, 454)
|
||||
edFrame.bosFrameBackgroundTexture:SetAllPoints()
|
||||
|
||||
--title bar
|
||||
local titleBar = detailsFramework:CreateTitleBar(edFrame, Loc ["STRING_WINDOW_TITLE"])
|
||||
titleBar.CloseButton:Hide()
|
||||
|
||||
--close button
|
||||
titleBar.CloseButton = detailsFramework:CreateCloseButton(titleBar)
|
||||
titleBar.CloseButton:SetScript("OnClick", function(self)
|
||||
encounterDetails:CloseWindow()
|
||||
end)
|
||||
|
||||
titleBar.CloseButton:SetPoint("right", titleBar, "right", -2, 0)
|
||||
|
||||
--header background
|
||||
local headerFrame = CreateFrame("frame", "EncounterDetailsHeaderFrame", edFrame, "BackdropTemplate")
|
||||
headerFrame:EnableMouse(false)
|
||||
headerFrame:SetPoint("topleft", titleBar, "bottomleft", -1, -1)
|
||||
headerFrame:SetPoint("topright", titleBar, "bottomright", 1, -1)
|
||||
headerFrame:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], tileSize = 64, tile = true})
|
||||
headerFrame:SetBackdropColor(.7, .7, .7, .4)
|
||||
headerFrame:SetHeight(48)
|
||||
|
||||
edFrame.raidBackgroundTexture = edFrame:CreateTexture(nil, "border")
|
||||
edFrame.raidBackgroundTexture:SetPoint("topleft", edFrame, "topleft", 0, -74)
|
||||
edFrame.raidBackgroundTexture:SetPoint("bottomright", edFrame, "bottomright", 0, 0)
|
||||
edFrame.raidBackgroundTexture:SetDrawLayer("border", 2)
|
||||
edFrame.raidBackgroundTexture:SetAlpha(0.1)
|
||||
|
||||
local gradientBelow = detailsFramework:CreateTexture(headerFrame,
|
||||
{gradient = "vertical", fromColor = {0, 0, 0, 0.5}, toColor = "transparent"}, 1, 48, "artwork", {0, 1, 0, 1})
|
||||
gradientBelow:SetPoint("bottoms", 1, 1)
|
||||
|
||||
--boss icon in the top left corner
|
||||
edFrame.bossIcon = headerFrame:CreateTexture(nil, "overlay")
|
||||
edFrame.bossIcon:SetPoint("topleft", edFrame, "topleft", 9, -24)
|
||||
edFrame.bossIcon:SetWidth(46)
|
||||
edFrame.bossIcon:SetHeight(46)
|
||||
|
||||
--raid name
|
||||
detailsFramework:NewLabel(headerFrame, headerFrame, nil, "raidNameLabel", "Unknown Raid", "GameFontHighlightSmall")
|
||||
edFrame.raidNameLabel = headerFrame.raidNameLabel
|
||||
edFrame.raidNameLabel:SetPoint("topleft", edFrame, "topleft", 60, -34)
|
||||
|
||||
--encounter name
|
||||
detailsFramework:NewLabel(headerFrame, headerFrame, nil, "bossNameLabel", "Unknown Encounter", "QuestFont_Large")
|
||||
edFrame.bossNameLabel = headerFrame.bossNameLabel
|
||||
edFrame.bossNameLabel:SetPoint("topleft", edFrame.raidNameLabel, "bottomleft", 0, -2)
|
||||
|
||||
edFrame.bossIcon:Hide()
|
||||
edFrame.raidNameLabel.show = false
|
||||
edFrame.bossNameLabel.show = false
|
||||
|
||||
edFrame:SetScript("OnMouseDown", function(self, button)
|
||||
if (button == "LeftButton") then
|
||||
self:StartMoving()
|
||||
self.isMoving = true
|
||||
|
||||
elseif (button == "RightButton" and not self.isMoving) then
|
||||
encounterDetails:CloseWindow()
|
||||
end
|
||||
end)
|
||||
|
||||
edFrame:SetScript("OnMouseUp", function(self)
|
||||
if (self.isMoving) then
|
||||
self:StopMovingOrSizing()
|
||||
self.isMoving = false
|
||||
end
|
||||
end)
|
||||
|
||||
edFrame.ShowType = "main"
|
||||
|
||||
--> revisar
|
||||
edFrame.Reset = function()
|
||||
edFrame.switch(nil, nil, "main")
|
||||
if (encounterDetails.chartPanel) then
|
||||
encounterDetails.chartPanel:ResetData()
|
||||
end
|
||||
edFrame.linhas = nil
|
||||
end
|
||||
|
||||
local hide_Graph = function()
|
||||
if (encounterDetails.chartPanel) then
|
||||
encounterDetails.chartPanel:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
local hide_Emote = function()
|
||||
for _, widget in pairs(edFrame.EmoteWidgets) do
|
||||
widget:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
local hide_Summary = function()
|
||||
for _, frame in ipairs(edFrame.encounterSummaryWidgets) do
|
||||
frame:Hide()
|
||||
|
||||
frame:SetScript("OnShow", function()
|
||||
--print(debugstack())
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
local resetSelectedButtonTemplate = function()
|
||||
edFrame.buttonSwitchNormal:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
edFrame.buttonSwitchPhases:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
edFrame.buttonSwitchGraphic:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
edFrame.buttonSwitchBossEmotes:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
end
|
||||
|
||||
edFrame.switch = function(buttonObject, _, tabName)
|
||||
local tabSelected
|
||||
if (type(buttonObject) == "string") then
|
||||
tabSelected = buttonObject
|
||||
|
||||
elseif (type(tabName) == "string") then
|
||||
tabSelected = tabName
|
||||
end
|
||||
|
||||
if (not edFrame:IsShown()) then
|
||||
Details:OpenPlugin("DETAILS_PLUGIN_ENCOUNTER_DETAILS")
|
||||
end
|
||||
|
||||
EncounterDetailsPhaseFrame:Hide()
|
||||
resetSelectedButtonTemplate()
|
||||
|
||||
if (tabSelected == "main") then
|
||||
edFrame.raidBackgroundTexture:Show()
|
||||
|
||||
for _, frame in ipairs(edFrame.encounterSummaryWidgets) do
|
||||
frame:Show()
|
||||
end
|
||||
|
||||
hide_Graph()
|
||||
hide_Emote()
|
||||
|
||||
edFrame.ShowType = "main"
|
||||
edFrame.segmentsDropdown:Enable()
|
||||
edFrame.buttonSwitchNormal:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTONSELECTED_TEMPLATE"))
|
||||
encounterDetails.db.last_section_selected = edFrame.ShowType
|
||||
|
||||
if (encounterDetails.LastSegmentShown) then
|
||||
encounterDetails.RefreshSummaryPage(encounterDetails.LastSegmentShown)
|
||||
else
|
||||
encounterDetails.RefreshSummaryPage(Details:GetCurrentCombat())
|
||||
end
|
||||
|
||||
elseif (tabSelected == "emotes") then
|
||||
Details:SetTutorialCVar("ENCOUNTER_BREAKDOWN_EMOTES", true)
|
||||
if (encounterDetails.Frame.buttonSwitchBossEmotes.AntsFrame) then
|
||||
encounterDetails.Frame.buttonSwitchBossEmotes.AntsFrame:Hide()
|
||||
end
|
||||
|
||||
--hide boss frames
|
||||
for _, frame in ipairs(edFrame.encounterSummaryWidgets) do
|
||||
frame:Hide()
|
||||
end
|
||||
|
||||
edFrame.raidBackgroundTexture:Show()
|
||||
|
||||
--hide graph
|
||||
if (encounterDetails.chartPanel) then
|
||||
encounterDetails.chartPanel:Hide()
|
||||
end
|
||||
|
||||
--show emote frames
|
||||
for _, widget in pairs(edFrame.EmoteWidgets) do
|
||||
widget:Show()
|
||||
end
|
||||
|
||||
edFrame.ShowType = "emotes"
|
||||
encounterDetails.EmoteScrollFrame:Update()
|
||||
edFrame.EmotesSegment:Refresh()
|
||||
edFrame.EmotesSegment:Select(encounterDetails.emoteSegmentIndex)
|
||||
edFrame.segmentsDropdown:Disable()
|
||||
edFrame.buttonSwitchBossEmotes:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTONSELECTED_TEMPLATE"))
|
||||
encounterDetails.db.last_section_selected = edFrame.ShowType
|
||||
|
||||
elseif (tabSelected == "phases") then
|
||||
Details:SetTutorialCVar("ENCOUNTER_BREAKDOWN_PHASES", true)
|
||||
if (encounterDetails.Frame.buttonSwitchPhases.AntsFrame) then
|
||||
encounterDetails.Frame.buttonSwitchPhases.AntsFrame:Hide()
|
||||
end
|
||||
|
||||
hide_Summary()
|
||||
hide_Graph()
|
||||
hide_Emote()
|
||||
|
||||
edFrame.ShowType = "phases"
|
||||
|
||||
EncounterDetailsPhaseFrame:Show()
|
||||
|
||||
edFrame.buttonSwitchPhases:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTONSELECTED_TEMPLATE"))
|
||||
|
||||
encounterDetails.db.last_section_selected = edFrame.ShowType
|
||||
|
||||
elseif (tabSelected == "graph") then
|
||||
Details:SetTutorialCVar("ENCOUNTER_BREAKDOWN_CHART", true)
|
||||
if (encounterDetails.Frame.buttonSwitchGraphic.AntsFrame) then
|
||||
encounterDetails.Frame.buttonSwitchGraphic.AntsFrame:Hide()
|
||||
end
|
||||
|
||||
encounterDetails:ShowChartFrame()
|
||||
|
||||
if (not encounterDetails.chartPanel) then
|
||||
return
|
||||
end
|
||||
|
||||
edFrame.raidBackgroundTexture:Hide()
|
||||
|
||||
for _, frame in ipairs(edFrame.encounterSummaryWidgets) do
|
||||
frame:Hide()
|
||||
end
|
||||
|
||||
encounterDetails.chartPanel:Show()
|
||||
edFrame.ShowType = "graph"
|
||||
|
||||
--hide emote frames
|
||||
for _, widget in pairs(edFrame.EmoteWidgets) do
|
||||
widget:Hide()
|
||||
end
|
||||
|
||||
edFrame.segmentsDropdown:Enable()
|
||||
edFrame.buttonSwitchGraphic:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTONSELECTED_TEMPLATE"))
|
||||
encounterDetails.db.last_section_selected = edFrame.ShowType
|
||||
end
|
||||
end
|
||||
|
||||
-- ~button ~menu
|
||||
local BUTTON_WIDTH = 120
|
||||
local BUTTON_HEIGHT = 20
|
||||
local HEADER_MENUBUTTONS_SPACEMENT = 4
|
||||
local HEADER_MENUBUTTONS_X = 290
|
||||
local HEADER_MENUBUTTONS_Y = -38
|
||||
|
||||
--create selection tab buttons
|
||||
do
|
||||
--summary
|
||||
edFrame.buttonSwitchNormal = detailsFramework:CreateButton(edFrame, edFrame.switch, BUTTON_WIDTH, BUTTON_HEIGHT, "Summary", "main")
|
||||
edFrame.buttonSwitchNormal:SetIcon("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 18, 18, "overlay", {0, 32/256, 0, 0.505625})
|
||||
edFrame.buttonSwitchNormal:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTONSELECTED_TEMPLATE"))
|
||||
edFrame.buttonSwitchNormal:SetWidth(BUTTON_WIDTH)
|
||||
--summary for the breakdown window
|
||||
edFrame.buttonSwitchNormalBreakdown = detailsFramework:CreateButton(edFrame, edFrame.switch, BUTTON_WIDTH, BUTTON_HEIGHT, "Summary", "main")
|
||||
edFrame.buttonSwitchNormalBreakdown:SetIcon("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 18, 18, "overlay", {0, 32/256, 0, 0.505625})
|
||||
edFrame.buttonSwitchNormalBreakdown:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTONSELECTED_TEMPLATE"))
|
||||
edFrame.buttonSwitchNormalBreakdown:SetWidth(BUTTON_WIDTH)
|
||||
_G.DetailsBreakdownWindow.RegisterPluginButton(edFrame.buttonSwitchNormalBreakdown, edTable.PluginObject, edTable.PluginAbsoluteName)
|
||||
|
||||
--phases
|
||||
edFrame.buttonSwitchPhases = detailsFramework:CreateButton(edFrame, edFrame.switch, BUTTON_WIDTH, BUTTON_HEIGHT, "Phases", "phases")
|
||||
edFrame.buttonSwitchPhases:SetIcon("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 18, 18, "overlay", {65/256, 96/256, 0, 0.505625})
|
||||
edFrame.buttonSwitchPhases:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
edFrame.buttonSwitchPhases:SetWidth(BUTTON_WIDTH)
|
||||
--phases for the breakdown window
|
||||
edFrame.buttonSwitchPhasesBreakdown = detailsFramework:CreateButton(edFrame, edFrame.switch, BUTTON_WIDTH, BUTTON_HEIGHT, "Phases", "phases")
|
||||
edFrame.buttonSwitchPhasesBreakdown:SetIcon("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 18, 18, "overlay", {65/256, 96/256, 0, 0.505625})
|
||||
edFrame.buttonSwitchPhasesBreakdown:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
edFrame.buttonSwitchPhasesBreakdown:SetWidth(BUTTON_WIDTH)
|
||||
_G.DetailsBreakdownWindow.RegisterPluginButton(edFrame.buttonSwitchPhasesBreakdown, edTable.PluginObject, edTable.PluginAbsoluteName)
|
||||
|
||||
--chart
|
||||
edFrame.buttonSwitchGraphic = detailsFramework:CreateButton(edFrame, edFrame.switch, BUTTON_WIDTH, BUTTON_HEIGHT, "Damage Graphic", "graph")
|
||||
edFrame.buttonSwitchGraphic:SetIcon("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 18, 18, "overlay", {97/256, 128/256, 0, 0.505625})
|
||||
edFrame.buttonSwitchGraphic:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
edFrame.buttonSwitchGraphic:SetWidth(BUTTON_WIDTH)
|
||||
--charts for the breakdown window
|
||||
edFrame.buttonSwitchGraphicBreakdown = detailsFramework:CreateButton(edFrame, edFrame.switch, BUTTON_WIDTH, BUTTON_HEIGHT, "Damage Graphic", "graph")
|
||||
edFrame.buttonSwitchGraphicBreakdown:SetIcon("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 18, 18, "overlay", {97/256, 128/256, 0, 0.505625})
|
||||
edFrame.buttonSwitchGraphicBreakdown:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
edFrame.buttonSwitchGraphicBreakdown:SetWidth(BUTTON_WIDTH)
|
||||
_G.DetailsBreakdownWindow.RegisterPluginButton(edFrame.buttonSwitchGraphicBreakdown, edTable.PluginObject, edTable.PluginAbsoluteName)
|
||||
|
||||
--emotes
|
||||
edFrame.buttonSwitchBossEmotes = detailsFramework:CreateButton(edFrame, edFrame.switch, BUTTON_WIDTH, BUTTON_HEIGHT, "Emotes", "emotes")
|
||||
edFrame.buttonSwitchBossEmotes:SetIcon("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 18, 18, "overlay", {129/256, 160/256, 0, 0.505625})
|
||||
edFrame.buttonSwitchBossEmotes:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
edFrame.buttonSwitchBossEmotes:SetWidth(BUTTON_WIDTH)
|
||||
--emotes for the breakdown window
|
||||
edFrame.buttonSwitchBossEmotesBreakdown = detailsFramework:CreateButton(edFrame, edFrame.switch, BUTTON_WIDTH, BUTTON_HEIGHT, "Emotes", "emotes")
|
||||
edFrame.buttonSwitchBossEmotesBreakdown:SetIcon("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 18, 18, "overlay", {129/256, 160/256, 0, 0.505625})
|
||||
edFrame.buttonSwitchBossEmotesBreakdown:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
edFrame.buttonSwitchBossEmotesBreakdown:SetWidth(BUTTON_WIDTH)
|
||||
_G.DetailsBreakdownWindow.RegisterPluginButton(edFrame.buttonSwitchBossEmotesBreakdown, edTable.PluginObject, edTable.PluginAbsoluteName)
|
||||
|
||||
--anchors
|
||||
edFrame.buttonSwitchNormal:SetPoint("topleft", edFrame, "topleft", 5, -26)
|
||||
edFrame.buttonSwitchPhases:SetPoint("left", edFrame.buttonSwitchNormal, "right", HEADER_MENUBUTTONS_SPACEMENT, 0)
|
||||
edFrame.buttonSwitchGraphic:SetPoint("topleft", edFrame.buttonSwitchNormal, "bottomleft", 0, -3)
|
||||
edFrame.buttonSwitchBossEmotes:SetPoint("left", edFrame.buttonSwitchGraphic, "right", HEADER_MENUBUTTONS_SPACEMENT, 0)
|
||||
|
||||
edFrame.AllButtons = {edFrame.buttonSwitchNormal, edFrame.buttonSwitchGraphic, edFrame.buttonSwitchBossEmotes, edFrame.buttonSwitchPhases}
|
||||
end
|
||||
|
||||
--segment selection
|
||||
C_Timer.After(5, function()
|
||||
local buildSegmentosMenu = function(self)
|
||||
local segmentList = Details:GetCombatSegments()
|
||||
local resultTable = {}
|
||||
|
||||
for index, combate in ipairs(segmentList) do
|
||||
if (combate.is_boss and combate.is_boss.index) then
|
||||
local bossIcon = Details:GetBossEncounterTexture(combate.is_boss.id or combate.is_boss.encounter or combate.is_boss.name)
|
||||
resultTable[#resultTable+1] = {
|
||||
value = index,
|
||||
label = "#" .. index .. " " .. (combate.is_boss.encounter or combate.is_boss.name or _G["UNKNOWN"]),
|
||||
icon = bossIcon,
|
||||
iconsize = {32, 20},
|
||||
texcoord = {0, 1, 0, 0.9},
|
||||
onclick = encounterDetails.OpenAndRefresh
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
return resultTable
|
||||
end
|
||||
|
||||
--space between the 4 tab buttons and the segments and macro frames
|
||||
local xSpacement = 20
|
||||
--~dropdown
|
||||
local segmentDropdown = detailsFramework:NewDropDown(edFrame, _, "$parentSegmentsDropdown", "segmentsDropdown", 218, 20, buildSegmentosMenu, nil)
|
||||
segmentDropdown:SetPoint("left", edFrame.buttonSwitchPhases, "right", xSpacement, 0)
|
||||
segmentDropdown:SetTemplate(detailsFramework:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
||||
|
||||
--options button
|
||||
local optionsButton = detailsFramework:NewButton(edFrame, nil, "$parentOptionsButton", "OptionsButton", 120, 20, encounterDetails.OpenOptionsPanel, nil, nil, nil, "Options")
|
||||
optionsButton:SetPoint("left", segmentDropdown, "right", 10, 0)
|
||||
optionsButton:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
optionsButton:SetIcon([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3)
|
||||
end)
|
||||
|
||||
--macro box
|
||||
edFrame.MacroEditBox = detailsFramework:CreateTextEntry(edFrame, function()end, 300, 20)
|
||||
edFrame.MacroEditBox:SetPoint("left", edFrame.buttonSwitchBossEmotes, "right", xSpacement, 0)
|
||||
edFrame.MacroEditBox:SetAlpha(0.7)
|
||||
edFrame.MacroEditBox:SetText("/run Details:OpenPlugin('Encounter Breakdown')")
|
||||
edFrame.MacroEditBox:SetTemplate(detailsFramework:GetTemplate("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
edFrame.MacroEditBox:SetSize(348, 20)
|
||||
|
||||
edFrame.MacroEditBox:HookScript("OnEditFocusGained", function()
|
||||
C_Timer.After(0, function() edFrame.MacroEditBox:HighlightText() end)
|
||||
end)
|
||||
|
||||
edFrame.MacroEditBox.BackgroundLabel = detailsFramework:CreateLabel(edFrame.MacroEditBox, "macro")
|
||||
edFrame.MacroEditBox.BackgroundLabel:SetPoint("left", edFrame.MacroEditBox, "left", 6, 0)
|
||||
edFrame.MacroEditBox.BackgroundLabel:SetTextColor(.3, .3, .3, .98)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user