Files
Jeremy P 44fe39508a Added buff containers for vanity and consolidated buffs to match base… (#98)
* Added buff containers for vanity and consolidated buffs to match base ui feature

* use locals and don't unpack values 2x

* Moved vanity and consolidated settings to base profile instead of private per character
2026-01-19 12:47:05 -07:00

448 lines
12 KiB
Lua

local E, _, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local C, L = unpack(select(2, ...))
local A = E:GetModule("Auras")
local RB = E:GetModule("ReminderBuffs")
local M = E:GetModule("Minimap")
local format = string.format
local function GetAuraOptions(headerName)
local auraOptions = {
header = {
order = 1,
type = "header",
name = headerName
},
size = {
order = 2,
type = "range",
name = L["Size"],
desc = L["Set the size of the individual auras."],
min = 16, max = 60, step = 2
},
durationFontSize = {
order = 3,
type = "range",
name = L["Duration Font Size"],
min = 4, max = 32, step = 1,
},
countFontSize = {
order = 4,
type = "range",
name = L["Count Font Size"],
min = 4, max = 32, step = 1,
},
growthDirection = {
order = 5,
type = "select",
name = L["Growth Direction"],
desc = L["The direction the auras will grow and then the direction they will grow after they reach the wrap after limit."],
values = {
DOWN_RIGHT = format(L["%s and then %s"], L["Down"], L["Right"]),
DOWN_LEFT = format(L["%s and then %s"], L["Down"], L["Left"]),
UP_RIGHT = format(L["%s and then %s"], L["Up"], L["Right"]),
UP_LEFT = format(L["%s and then %s"], L["Up"], L["Left"]),
RIGHT_DOWN = format(L["%s and then %s"], L["Right"], L["Down"]),
RIGHT_UP = format(L["%s and then %s"], L["Right"], L["Up"]),
LEFT_DOWN = format(L["%s and then %s"], L["Left"], L["Down"]),
LEFT_UP = format(L["%s and then %s"], L["Left"], L["Up"])
}
},
wrapAfter = {
order = 6,
type = "range",
name = L["Wrap After"],
desc = L["Begin a new row or column after this many auras."],
min = 1, max = 32, step = 1
},
maxWraps = {
order = 7,
type = "range",
name = L["Max Wraps"],
desc = L["Limit the number of rows or columns."],
min = 1, max = 32, step = 1
},
horizontalSpacing = {
order = 8,
type = "range",
name = L["Horizontal Spacing"],
min = 0, max = 50, step = 1
},
verticalSpacing = {
order = 9,
type = "range",
name = L["Vertical Spacing"],
min = 0, max = 50, step = 1
},
sortMethod = {
order = 10,
type = "select",
name = L["Sort Method"],
desc = L["Defines how the group is sorted."],
values = {
["INDEX"] = L["Index"],
["TIME"] = L["Time"],
["NAME"] = L["NAME"]
}
},
sortDir = {
order = 11,
type = "select",
name = L["Sort Direction"],
desc = L["Defines the sort order of the selected sort method."],
values = {
["+"] = L["Ascending"],
["-"] = L["Descending"]
}
},
seperateOwn = {
order = 12,
type = "select",
name = L["Seperate"],
desc = L["Indicate whether buffs you cast yourself should be separated before or after."],
values = {
[-1] = L["Other's First"],
[0] = L["No Sorting"],
[1] = L["Your Auras First"]
}
},
noDurationLast = {
order = 13,
type = "toggle",
name = L["No Duration Last"],
desc = L["Show buffs with no duration last."],
}
}
return auraOptions
end
E.Options.args.auras = {
type = "group",
name = L["BUFFOPTIONS_LABEL"],
childGroups = "tab",
get = function(info) return E.db.auras[info[#info]] end,
set = function(info, value) E.db.auras[info[#info]] = value A:UpdateHeader(ElvUIPlayerBuffs) A:UpdateHeader(ElvUIPlayerDebuffs) end,
args = {
intro = {
order = 1,
type = "description",
name = L["AURAS_DESC"]
},
enable = {
order = 2,
type = "toggle",
name = L["Enable"],
get = function(info) return E.private.auras[info[#info]] end,
set = function(info, value)
E.private.auras[info[#info]] = value
E:StaticPopup_Show("PRIVATE_RL")
end
},
disableBlizzard = {
order = 3,
type = "toggle",
name = L["Disabled Blizzard"],
get = function(info) return E.private.auras[info[#info]] end,
set = function(info, value)
E.private.auras[info[#info]] = value
E:StaticPopup_Show("PRIVATE_RL")
end
},
mergeVanity = {
order = 3.1,
type = "toggle",
name = L["Merge Vanity"],
get = function(info) return E.db.auras[info[#info]] end,
set = function(info, value)
E.db.auras[info[#info]] = value
A:triggerUpdateOnNext()
end
},
mergeConsolidated = {
order = 3.2,
type = "toggle",
name = L["Merge Consolidated"],
get = function(info) return E.db.auras[info[#info]] end,
set = function(info, value)
E.db.auras[info[#info]] = value
A:triggerUpdateOnNext()
end
},
general = {
order = 4,
type = "group",
name = L["General"],
args = {
header = {
order = 1,
type = "header",
name = L["General"]
},
fadeThreshold = {
order = 2,
type = "range",
name = L["Fade Threshold"],
desc = L["Threshold before the icon will fade out and back in. Set to -1 to disable."],
min = -1, max = 30, step = 1
},
showDuration = {
order = 3,
type = "toggle",
name = L["Duration Enable"]
},
font = {
order = 4,
type = "select", dialogControl = "LSM30_Font",
name = L["Font"],
values = AceGUIWidgetLSMlists.font
},
fontOutline = {
order = 5,
type = "select",
name = L["Font Outline"],
desc = L["Set the font outline."],
values = C.Values.FontFlags
},
timeXOffset = {
order = 6,
type = "range",
name = L["Time xOffset"],
min = -60, max = 60, step = 1
},
timeYOffset = {
order = 7,
type = "range",
name = L["Time yOffset"],
min = -60, max = 60, step = 1
},
countXOffset = {
order = 8,
type = "range",
name = L["Count xOffset"],
min = -60, max = 60, step = 1
},
countYOffset = {
order = 9,
type = "range",
name = L["Count yOffset"],
min = -60, max = 60, step = 1
},
statusBar = {
order = 10,
type = "group",
name = L["Statusbar"],
guiInline = true,
get = function(info) return E.db.auras[info[#info]] end,
set = function(info, value) E.db.auras[info[#info]] = value; A:UpdateHeader(ElvUIPlayerBuffs); A:UpdateHeader(ElvUIPlayerDebuffs) end,
args = {
barShow = {
order = 1,
type = "toggle",
name = L["Enable"],
},
barNoDuration = {
order = 2,
type = "toggle",
name = L["No Duration"],
},
barTexture = {
order = 3,
type = "select", dialogControl = "LSM30_Statusbar",
name = L["Texture"],
values = _G.AceGUIWidgetLSMlists.statusbar,
},
barColor = {
type = "color",
order = 4,
name = L.COLOR,
hasAlpha = false,
disabled = function() return not E.db.auras.barShow or (E.db.auras.barColorGradient or not E.db.auras.barShow) end,
get = function(info)
local t = E.db.auras.barColor
local d = P.auras.barColor
return t.r, t.g, t.b, t.a, d.r, d.g, d.b, d.a
end,
set = function(info, r, g, b)
local t = E.db.auras.barColor
t.r, t.g, t.b = r, g, b
end,
},
barColorGradient = {
order = 5,
type = "toggle",
name = L["Color by Value"],
disabled = function() return not E.db.auras.barShow end,
},
barWidth = {
order = 6,
type = "range",
name = L["Width"],
min = 1, max = 10, step = 1,
disabled = function() return not E.db.auras.barShow end,
},
barHeight = {
order = 7,
type = "range",
name = L["Height"],
min = 1, max = 10, step = 1,
disabled = function() return not E.db.auras.barShow end,
},
barSpacing = {
order = 8,
type = "range",
name = L["Spacing"],
min = -10, max = 10, step = 1,
disabled = function() return not E.db.auras.barShow end,
},
barPosition = {
order = 9,
type = "select",
name = L["Position"],
disabled = function() return not E.db.auras.barShow end,
values = {
["TOP"] = L["Top"],
["BOTTOM"] = L["Bottom"],
["LEFT"] = L["Left"],
["RIGHT"] = L["Right"],
},
},
},
},
lbf = {
order = 11,
type = "group",
guiInline = true,
name = L["LBF Support"],
get = function(info) return E.private.auras.lbf[info[#info]] end,
set = function(info, value) E.private.auras.lbf[info[#info]] = value E:StaticPopup_Show("PRIVATE_RL") end,
disabled = function() return not E.private.auras.enable end,
args = {
enable = {
order = 1,
type = "toggle",
name = L["Enable"],
desc = L["Allow LBF to handle the skinning of this element."]
}
}
}
}
},
buffs = {
order = 5,
type = "group",
name = L["Buffs"],
get = function(info) return E.db.auras.buffs[info[#info]] end,
set = function(info, value) E.db.auras.buffs[info[#info]] = value A:UpdateHeader(ElvUIPlayerBuffs) end,
args = GetAuraOptions(L["Buffs"])
},
debuffs = {
order = 6,
type = "group",
name = L["Debuffs"],
get = function(info) return E.db.auras.debuffs[info[#info]] end,
set = function(info, value) E.db.auras.debuffs[info[#info]] = value A:UpdateHeader(ElvUIPlayerDebuffs) end,
args = GetAuraOptions(L["Debuffs"])
},
reminder = {
order = 7,
type = "group",
name = L["Reminder"],
get = function(info) return E.db.general.reminder[info[#info]] end,
set = function(info, value) E.db.general.reminder[info[#info]] = value RB:UpdateSettings() end,
disabled = function() return not E.private.general.minimap.enable end,
args = {
header = {
order = 1,
type = "header",
name = L["Reminder"]
},
enable = {
order = 2,
type = "toggle",
name = L["Enable"],
desc = L["Display reminder bar on the minimap."],
set = function(info, value) E.db.general.reminder[info[#info]] = value M:UpdateSettings() end
},
generalGroup = {
order = 3,
type = "group",
guiInline = true,
name = L["General"],
disabled = function() return not E.db.general.reminder.enable end,
args = {
durations = {
order = 1,
type = "toggle",
name = L["Remaining Time"]
},
reverse = {
order = 2,
type = "toggle",
name = L["Reverse Style"],
desc = L["When enabled active buff icons will light up instead of becoming darker, while inactive buff icons will become darker instead of being lit up."]
},
wide = {
order = 3,
type = "toggle",
name = "Two Rows",
desc = "Show all available buff reminders",
set = function(info, value) E.db.general.reminder[info[#info]] = value RB:UpdateSettings() M:UpdateSettings() end,
},
position = {
order = 4,
type = "select",
name = L["Position"],
set = function(info, value) E.db.general.reminder[info[#info]] = value RB:UpdatePosition() end,
values = {
["LEFT"] = L["Left"],
["RIGHT"] = L["Right"]
}
},
classtype = {
order = 5,
type = "select",
name = L["Class Type"],
get = function(info) return E.private.general.reminder[info[#info]] end,
set = function(info, value) E.private.general.reminder[info[#info]] = value RB:UpdateSettings() end,
values = {
["Caster"] = L["Caster"],
["Melee"] = L["Melee"],
["Ranged"] = L["Ranged"]
}
}
}
},
fontGroup = {
order = 4,
type = "group",
guiInline = true,
name = L["Font"],
disabled = function() return not E.db.general.reminder.enable or not E.db.general.reminder.durations end,
args = {
font = {
order = 1,
type = "select", dialogControl = "LSM30_Font",
name = L["Font"],
values = AceGUIWidgetLSMlists.font
},
fontSize = {
order = 2,
type = "range",
name = L["FONT_SIZE"],
min = 6, max = 22, step = 1
},
fontOutline = {
order = 3,
type = "select",
name = L["Font Outline"],
desc = L["Set the font outline."],
values = C.Values.FontFlags
}
}
}
}
}
}
}