You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
266 lines
12 KiB
266 lines
12 KiB
|
3 years ago
|
|
||
|
|
local Details = Details
|
||
|
|
local DF = DetailsFramework
|
||
|
|
|
||
|
|
--create the main frame for the options panel
|
||
|
|
|
||
|
|
local createOptionsPanel = function()
|
||
|
|
local startX = 5
|
||
|
|
local startY = -32
|
||
|
|
local heightSize = 540
|
||
|
|
|
||
|
|
local DetailsSpellBreakdownTab = DetailsSpellBreakdownTab
|
||
|
|
local UIParent = UIParent
|
||
|
|
|
||
|
|
local options_text_template = DF:GetTemplate("font", "OPTIONS_FONT_TEMPLATE")
|
||
|
|
local options_dropdown_template = DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")
|
||
|
|
local options_switch_template = DF:GetTemplate("switch", "OPTIONS_CHECKBOX_TEMPLATE")
|
||
|
|
local options_slider_template = DF:GetTemplate("slider", "OPTIONS_SLIDER_TEMPLATE")
|
||
|
|
local options_button_template = DF:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE")
|
||
|
|
|
||
|
|
local optionsFrame = DF:CreateSimplePanel(UIParent, 550, 500, "Details! Breakdown Options", "DetailsSpellBreakdownOptionsPanel")
|
||
|
|
optionsFrame:SetFrameStrata("DIALOG")
|
||
|
|
optionsFrame:SetPoint("topleft", UIParent, "topleft", 2, -40)
|
||
|
|
optionsFrame:Show()
|
||
|
|
|
||
|
|
local bUseSolidColor = true
|
||
|
|
DF:ApplyStandardBackdrop(optionsFrame, bUseSolidColor)
|
||
|
|
|
||
|
|
local resetSettings = function()
|
||
|
|
for key, value in pairs (Details.default_global_data.breakdown_spell_tab) do
|
||
|
|
if (type(value) == "table") then
|
||
|
|
local t = DF.table.copy({}, value)
|
||
|
|
Details.breakdown_spell_tab[key] = t
|
||
|
|
else
|
||
|
|
Details.breakdown_spell_tab[key] = value
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local instanceObject = Details:GetActiveWindowFromBreakdownWindow()
|
||
|
|
local actorObject = Details:GetActorObjectFromBreakdownWindow()
|
||
|
|
local bFromAttributeChange = true
|
||
|
|
local bIsRefresh = true
|
||
|
|
local bIsShiftKeyDown = false
|
||
|
|
local bIsControlKeyDown = false
|
||
|
|
|
||
|
|
Details:CloseBreakdownWindow()
|
||
|
|
Details:OpenBreakdownWindow(instanceObject, actorObject, bFromAttributeChange, bIsRefresh, bIsShiftKeyDown, bIsControlKeyDown)
|
||
|
|
DetailsSpellBreakdownTab.GetSpellBlockFrame():UpdateBlocks()
|
||
|
|
DetailsSpellBreakdownTab.UpdateShownSpellBlock()
|
||
|
|
DetailsSpellBreakdownTab.UpdateHeadersSettings("spells")
|
||
|
|
DetailsSpellBreakdownOptionsPanel:RefreshOptions()
|
||
|
|
|
||
|
|
Details:Msg("Settings reseted to default.")
|
||
|
|
end
|
||
|
|
|
||
|
|
local resetSettingsButton = DF:CreateButton(optionsFrame, resetSettings, 130, 20, "Reset Settings")
|
||
|
|
resetSettingsButton:SetPoint("bottomleft", optionsFrame, "bottomleft", 5, 5)
|
||
|
|
resetSettingsButton:SetTemplate(options_button_template)
|
||
|
|
|
||
|
|
local subSectionTitleTextTemplate = DF:GetTemplate("font", "ORANGE_FONT_TEMPLATE")
|
||
|
|
|
||
|
|
local optionsTable = {
|
||
|
|
{type = "label", get = function() return "Spell Details Block" end, text_template = subSectionTitleTextTemplate},
|
||
|
|
{--block height
|
||
|
|
type = "range",
|
||
|
|
get = function() return Details.breakdown_spell_tab.blockspell_height end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.blockspell_height = value
|
||
|
|
DetailsSpellBreakdownTab.GetSpellBlockFrame():UpdateBlocks()
|
||
|
|
end,
|
||
|
|
min = 50,
|
||
|
|
max = 80,
|
||
|
|
step = 1,
|
||
|
|
name = "Block Height",
|
||
|
|
desc = "Block Height",
|
||
|
|
},
|
||
|
|
|
||
|
|
{type = "blank"},
|
||
|
|
{type = "blank"},
|
||
|
|
|
||
|
|
{type = "label", get = function() return "Spell Header Options" end, text_template = subSectionTitleTextTemplate},
|
||
|
|
{ --per second
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.spellcontainer_headers["persecond"].enabled end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.spellcontainer_headers["persecond"].enabled = value
|
||
|
|
DetailsSpellBreakdownTab.UpdateHeadersSettings("spells")
|
||
|
|
end,
|
||
|
|
name = "Per Second",
|
||
|
|
desc = "Per Second",
|
||
|
|
},
|
||
|
|
|
||
|
|
{ --amount of casts
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.spellcontainer_headers["casts"].enabled end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.spellcontainer_headers["casts"].enabled = value
|
||
|
|
DetailsSpellBreakdownTab.UpdateHeadersSettings("spells")
|
||
|
|
end,
|
||
|
|
name = "Casts",
|
||
|
|
desc = "Casts",
|
||
|
|
},
|
||
|
|
|
||
|
|
{ --critical hits percent
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.spellcontainer_headers["critpercent"].enabled end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.spellcontainer_headers["critpercent"].enabled = value
|
||
|
|
DetailsSpellBreakdownTab.UpdateHeadersSettings("spells")
|
||
|
|
end,
|
||
|
|
name = "Critical Hits Percent",
|
||
|
|
desc = "Critical Hits Percent",
|
||
|
|
},
|
||
|
|
|
||
|
|
{ --amount of hits
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.spellcontainer_headers["hits"].enabled end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.spellcontainer_headers["hits"].enabled = value
|
||
|
|
DetailsSpellBreakdownTab.UpdateHeadersSettings("spells")
|
||
|
|
end,
|
||
|
|
name = "Hits Amount",
|
||
|
|
desc = "Hits Amount",
|
||
|
|
},
|
||
|
|
|
||
|
|
{ --average damage of healing per cast amount
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.spellcontainer_headers["castavg"].enabled end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.spellcontainer_headers["castavg"].enabled = value
|
||
|
|
DetailsSpellBreakdownTab.UpdateHeadersSettings("spells")
|
||
|
|
end,
|
||
|
|
name = "Cast Average",
|
||
|
|
desc = "Cast Average",
|
||
|
|
},
|
||
|
|
|
||
|
|
{ --debuff uptime
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.spellcontainer_headers["uptime"].enabled end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.spellcontainer_headers["uptime"].enabled = value
|
||
|
|
DetailsSpellBreakdownTab.UpdateHeadersSettings("spells")
|
||
|
|
end,
|
||
|
|
name = "Uptime",
|
||
|
|
desc = "Uptime",
|
||
|
|
},
|
||
|
|
|
||
|
|
{ --overheal
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.spellcontainer_headers["overheal"].enabled end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.spellcontainer_headers["overheal"].enabled = value
|
||
|
|
DetailsSpellBreakdownTab.UpdateHeadersSettings("spells")
|
||
|
|
end,
|
||
|
|
name = "Overheal",
|
||
|
|
desc = "Overheal",
|
||
|
|
},
|
||
|
|
|
||
|
|
{ --absorbed
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.spellcontainer_headers["absorbed"].enabled end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.spellcontainer_headers["absorbed"].enabled = value
|
||
|
|
DetailsSpellBreakdownTab.UpdateHeadersSettings("spells")
|
||
|
|
end,
|
||
|
|
name = "Heal Absorbed",
|
||
|
|
desc = "Heal Absorbed",
|
||
|
|
},
|
||
|
|
|
||
|
|
{type = "breakline"},
|
||
|
|
{type = "label", get = function() return "Scroll Options" end, text_template = subSectionTitleTextTemplate},
|
||
|
|
|
||
|
|
{ --locked
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.spellcontainer_islocked end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
---@type df_framecontainer
|
||
|
|
local container = DetailsSpellBreakdownTab.GetSpellScrollContainer()
|
||
|
|
container:SetResizeLocked(value)
|
||
|
|
|
||
|
|
local container = DetailsSpellBreakdownTab.GetTargetScrollContainer()
|
||
|
|
container:SetResizeLocked(value)
|
||
|
|
end,
|
||
|
|
name = "Is Locked",
|
||
|
|
desc = "Is Locked",
|
||
|
|
},
|
||
|
|
|
||
|
|
{--background alpha
|
||
|
|
type = "range",
|
||
|
|
get = function() return Details.breakdown_spell_tab.spellbar_background_alpha end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.spellbar_background_alpha = value
|
||
|
|
DetailsSpellBreakdownTab.GetSpellScrollFrame():Refresh()
|
||
|
|
end,
|
||
|
|
min = 0,
|
||
|
|
max = 1,
|
||
|
|
step = 0.1,
|
||
|
|
usedecimals = true,
|
||
|
|
name = "Background Alpha",
|
||
|
|
desc = "Background Alpha",
|
||
|
|
},
|
||
|
|
|
||
|
|
{type = "blank"},
|
||
|
|
{type = "label", get = function() return "Group Player Spells:" end, text_template = subSectionTitleTextTemplate},
|
||
|
|
{ --nest player spells | merge player spells
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.nest_players_spells_with_same_name end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.nest_players_spells_with_same_name = value
|
||
|
|
end,
|
||
|
|
name = "Group Player Spells With Same Name",
|
||
|
|
desc = "Group spells casted by players which has the same name",
|
||
|
|
},
|
||
|
|
|
||
|
|
{type = "blank"},
|
||
|
|
{type = "label", get = function() return "Group Pet Spells:" end, text_template = subSectionTitleTextTemplate},
|
||
|
|
|
||
|
|
{ --nest pet spells with the same name
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.nest_pet_spells_by_name end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.nest_pet_spells_by_name = value
|
||
|
|
end,
|
||
|
|
name = "Group Pet Names Under a Pet Spell Bar",
|
||
|
|
desc = "Group Pets By Name",
|
||
|
|
hooks = {["OnSwitch"] = function()
|
||
|
|
if (Details.breakdown_spell_tab.nest_pet_spells_by_name) then
|
||
|
|
Details.breakdown_spell_tab.nest_pet_spells_by_caster = false
|
||
|
|
DetailsSpellBreakdownOptionsPanel:RefreshOptions()
|
||
|
|
end
|
||
|
|
end}
|
||
|
|
},
|
||
|
|
|
||
|
|
{ --nest pet spells with the same name
|
||
|
|
type = "toggle",
|
||
|
|
get = function() return Details.breakdown_spell_tab.nest_pet_spells_by_caster end,
|
||
|
|
set = function(self, fixedparam, value)
|
||
|
|
Details.breakdown_spell_tab.nest_pet_spells_by_caster = value
|
||
|
|
|
||
|
|
end,
|
||
|
|
name = "Group Pet Spells Under a Pet Name Bar",
|
||
|
|
desc = "Group Pets By Spell",
|
||
|
|
hooks = {["OnSwitch"] = function()
|
||
|
|
if (Details.breakdown_spell_tab.nest_pet_spells_by_caster) then
|
||
|
|
Details.breakdown_spell_tab.nest_pet_spells_by_name = false
|
||
|
|
DetailsSpellBreakdownOptionsPanel:RefreshOptions()
|
||
|
|
end
|
||
|
|
end}
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
--build the menu
|
||
|
|
optionsTable.always_boxfirst = true
|
||
|
|
DF:BuildMenu(optionsFrame, optionsTable, startX, startY, heightSize, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template)
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
function Details.OpenSpellBreakdownOptions()
|
||
|
|
if (DetailsSpellBreakdownOptionsPanel) then
|
||
|
|
DetailsSpellBreakdownOptionsPanel:RefreshOptions()
|
||
|
|
DetailsSpellBreakdownOptionsPanel:Show()
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
createOptionsPanel()
|
||
|
|
end
|