746 lines
27 KiB
Lua
746 lines
27 KiB
Lua
local E, _, V, P, G = unpack(ElvUI) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
|
local _, L = unpack(select(2, ...))
|
|
local UF = E:GetModule('UnitFrames')
|
|
local ACH = E.Libs.ACH
|
|
|
|
local gsub = gsub
|
|
local wipe = wipe
|
|
local next = next
|
|
local pairs = pairs
|
|
local format = format
|
|
local strmatch = strmatch
|
|
local tonumber = tonumber
|
|
local tostring = tostring
|
|
local GetSpellInfo = GetSpellInfo
|
|
|
|
-- GLOBALS: MAX_PLAYER_LEVEL
|
|
|
|
local quickSearchText, selectedSpell, selectedFilter, filterList, spellList = '', nil, nil, {}, {}
|
|
local defaultFilterList = { ['Aura Indicator (Global)'] = 'Aura Indicator (Global)', ['Aura Indicator (Class)'] = 'Aura Indicator (Class)', ['Aura Indicator (Pet)'] = 'Aura Indicator (Pet)', ['Aura Indicator (Profile)'] = 'Aura Indicator (Profile)', ['AuraBar Colors'] = 'AuraBar Colors', ['Aura Highlight'] = 'Aura Highlight' }
|
|
local auraBarDefaults = { enable = true, color = { r = 1, g = 1, b = 1 } }
|
|
|
|
local function GetSelectedFilters()
|
|
local class = selectedFilter == 'Aura Indicator (Class)'
|
|
local pet = selectedFilter == 'Aura Indicator (Pet)'
|
|
local profile = selectedFilter == 'Aura Indicator (Profile)'
|
|
local selected = (profile and E.db.unitframe.filters.aurawatch) or (pet and (E.global.unitframe.aurawatch.PET or {})) or class and (E.global.unitframe.aurawatch[E.myclass] or {}) or E.global.unitframe.aurawatch.GLOBAL
|
|
local default = (profile and P.unitframe.filters.aurawatch) or (pet and G.unitframe.aurawatch.PET) or class and G.unitframe.aurawatch[E.myclass] or G.unitframe.aurawatch.GLOBAL
|
|
return selected, default
|
|
end
|
|
|
|
local function GetSelectedSpell()
|
|
if selectedSpell and selectedSpell ~= '' then
|
|
local spell = strmatch(selectedSpell, ' %((%d+)%)$') or selectedSpell
|
|
if spell then
|
|
return tonumber(spell) or spell
|
|
end
|
|
end
|
|
end
|
|
|
|
local function filterMatch(s,v)
|
|
local m1, m2, m3, m4 = '^'..v..'$', '^'..v..',', ','..v..'$', ','..v..','
|
|
return (strmatch(s, m1) and m1) or (strmatch(s, m2) and m2) or (strmatch(s, m3) and m3) or (strmatch(s, m4) and v..',')
|
|
end
|
|
|
|
local function removePriority(value)
|
|
if not value then return end
|
|
local x,y,z=E.db.unitframe.units,E.db.nameplates.units;
|
|
for n, t in pairs(x) do
|
|
if t and t.buffs and t.buffs.priority and t.buffs.priority ~= '' then
|
|
z = filterMatch(t.buffs.priority, E:EscapeString(value))
|
|
if z then E.db.unitframe.units[n].buffs.priority = gsub(t.buffs.priority, z, '') end
|
|
end
|
|
if t and t.debuffs and t.debuffs.priority and t.debuffs.priority ~= '' then
|
|
z = filterMatch(t.debuffs.priority, E:EscapeString(value))
|
|
if z then E.db.unitframe.units[n].debuffs.priority = gsub(t.debuffs.priority, z, '') end
|
|
end
|
|
if t and t.aurabar and t.aurabar.priority and t.aurabar.priority ~= '' then
|
|
z = filterMatch(t.aurabar.priority, E:EscapeString(value))
|
|
if z then E.db.unitframe.units[n].aurabar.priority = gsub(t.aurabar.priority, z, '') end
|
|
end
|
|
end
|
|
for n, t in pairs(y) do
|
|
if t and t.buffs and t.buffs.priority and t.buffs.priority ~= '' then
|
|
z = filterMatch(t.buffs.priority, E:EscapeString(value))
|
|
if z then E.db.nameplates.units[n].buffs.priority = gsub(t.buffs.priority, z, '') end
|
|
end
|
|
if t and t.debuffs and t.debuffs.priority and t.debuffs.priority ~= '' then
|
|
z = filterMatch(t.debuffs.priority, E:EscapeString(value))
|
|
if z then E.db.nameplates.units[n].debuffs.priority = gsub(t.debuffs.priority, z, '') end
|
|
end
|
|
end
|
|
end
|
|
|
|
local function SetFilterList()
|
|
wipe(filterList)
|
|
E:CopyTable(filterList, defaultFilterList)
|
|
|
|
local list = E.global.unitframe.aurafilters
|
|
if list then
|
|
for filter in pairs(list) do
|
|
filterList[filter] = filter
|
|
end
|
|
end
|
|
|
|
return filterList
|
|
end
|
|
|
|
local function ResetFilterList()
|
|
wipe(filterList)
|
|
|
|
E:CopyTable(filterList, defaultFilterList)
|
|
|
|
local list = G.unitframe.aurafilters
|
|
if list then
|
|
for filter in pairs(list) do
|
|
filterList[filter] = filter
|
|
end
|
|
end
|
|
|
|
return filterList
|
|
end
|
|
|
|
local function DeleteFilterList()
|
|
wipe(filterList)
|
|
|
|
local list = E.global.unitframe.aurafilters
|
|
local defaultList = G.unitframe.aurafilters
|
|
if list then
|
|
for filter in pairs(list) do
|
|
if not defaultList[filter] then
|
|
filterList[filter] = filter
|
|
end
|
|
end
|
|
end
|
|
|
|
return filterList
|
|
end
|
|
|
|
local function DeleteFilterListDisable()
|
|
wipe(filterList)
|
|
|
|
local list = E.global.unitframe.aurafilters
|
|
local defaultList = G.unitframe.aurafilters
|
|
if list then
|
|
for filter in pairs(list) do
|
|
if not defaultList[filter] then
|
|
return false
|
|
end
|
|
end
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
local function SetSpellList()
|
|
local list
|
|
if selectedFilter == 'Aura Highlight' then
|
|
list = E.global.unitframe.AuraHighlightColors
|
|
elseif selectedFilter == 'AuraBar Colors' then
|
|
list = E.global.unitframe.AuraBarColors
|
|
elseif selectedFilter == 'Aura Indicator (Pet)' or selectedFilter == 'Aura Indicator (Profile)' or selectedFilter == 'Aura Indicator (Class)' or selectedFilter == 'Aura Indicator (Global)' then
|
|
list = GetSelectedFilters()
|
|
else
|
|
list = E.global.unitframe.aurafilters[selectedFilter].spells
|
|
end
|
|
|
|
if not list then return end
|
|
wipe(spellList)
|
|
|
|
local searchText = quickSearchText:lower()
|
|
for filter, spell in pairs(list) do
|
|
if spell.id and (selectedFilter == 'Aura Indicator (Pet)' or selectedFilter == 'Aura Indicator (Profile)' or selectedFilter == 'Aura Indicator (Class)' or selectedFilter == 'Aura Indicator (Global)') then
|
|
filter = spell.id
|
|
end
|
|
|
|
local spellName = tonumber(filter) and GetSpellInfo(filter)
|
|
local name = (spellName and format('%s |cFF888888(%s)|r', spellName, filter)) or tostring(filter)
|
|
|
|
if name:lower():find(searchText) then
|
|
spellList[filter] = name
|
|
end
|
|
end
|
|
|
|
if not next(spellList) then
|
|
spellList[''] = L["NONE"]
|
|
end
|
|
|
|
return spellList
|
|
end
|
|
|
|
E.Options.args.filters = {
|
|
type = 'group',
|
|
name = L["FILTERS"],
|
|
order = 3,
|
|
childGroups = 'tab',
|
|
args = {
|
|
mainOptions = {
|
|
type = 'group',
|
|
name = 'Main Options',
|
|
order = 1,
|
|
args = {
|
|
createFilter = {
|
|
order = 1,
|
|
name = L["Create Filter"],
|
|
desc = L["Create a filter, once created a filter can be set inside the buffs/debuffs section of each unit."],
|
|
type = 'input',
|
|
get = function(info) return '' end,
|
|
set = function(info, value)
|
|
if strmatch(value, '^[%s%p]-$') then
|
|
return
|
|
end
|
|
if strmatch(value, ',') then
|
|
E:Print(L["Filters are not allowed to have commas in their name. Stripping commas from filter name."])
|
|
value = gsub(value, ',', '')
|
|
end
|
|
if strmatch(value, '^Friendly:') or strmatch(value, '^Enemy:') then
|
|
return --dont allow people to create Friendly: or Enemy: filters
|
|
end
|
|
if G.unitframe.specialFilters[value] or E.global.unitframe.aurafilters[value] then
|
|
E:Print(L["Filter already exists!"])
|
|
return
|
|
end
|
|
E.global.unitframe.aurafilters[value] = { spells = {} }
|
|
selectedFilter = value
|
|
end,
|
|
},
|
|
selectFilter = {
|
|
order = 2,
|
|
type = 'select',
|
|
name = L["Select Filter"],
|
|
get = function(info) return selectedFilter end,
|
|
set = function(info, value)
|
|
selectedFilter, selectedSpell, quickSearchText = nil, nil, ''
|
|
if value ~= '' then
|
|
selectedFilter = value
|
|
end
|
|
end,
|
|
values = SetFilterList,
|
|
},
|
|
deleteFilter = {
|
|
type = 'select',
|
|
order = 3,
|
|
name = L["Delete Filter"],
|
|
desc = L["Delete a created filter, you cannot delete pre-existing filters, only custom ones."],
|
|
confirm = function(info, value)
|
|
return 'Remove Filter - '..value
|
|
end,
|
|
set = function(info, value)
|
|
E.global.unitframe.aurafilters[value] = nil
|
|
selectedFilter, selectedSpell, quickSearchText = nil, nil, ''
|
|
|
|
removePriority(value) --This will wipe a filter from the new aura system profile settings.
|
|
end,
|
|
disabled = DeleteFilterListDisable,
|
|
values = DeleteFilterList,
|
|
},
|
|
resetGroup = {
|
|
type = 'select',
|
|
name = L["Reset Filter"],
|
|
order = 4,
|
|
desc = L["This will reset the contents of this filter back to default. Any spell you have added to this filter will be removed."],
|
|
confirm = function(info, value)
|
|
return 'Reset Filter - '..value
|
|
end,
|
|
set = function(info, value)
|
|
if value == 'Aura Highlight' then
|
|
E.global.unitframe.AuraHighlightColors = E:CopyTable({}, G.unitframe.DebuffHighlightColors)
|
|
elseif value == 'AuraBar Colors' then
|
|
E.global.unitframe.AuraBarColors = E:CopyTable({}, G.unitframe.AuraBarColors)
|
|
elseif value == 'Aura Indicator (Pet)' or value == 'Aura Indicator (Profile)' or value == 'Aura Indicator (Class)' or value == 'Aura Indicator (Global)' then
|
|
local selectedTable, defaultTable = GetSelectedFilters()
|
|
wipe(selectedTable)
|
|
E:CopyTable(selectedTable, defaultTable)
|
|
else
|
|
E.global.unitframe.aurafilters[value].spells = E:CopyTable({}, G.unitframe.aurafilters[value].spells)
|
|
end
|
|
|
|
selectedFilter, selectedSpell, quickSearchText = nil, nil, ''
|
|
|
|
UF:Update_AllFrames()
|
|
end,
|
|
values = ResetFilterList,
|
|
},
|
|
filterGroup = {
|
|
type = 'group',
|
|
name = function() return selectedFilter end,
|
|
hidden = function() return not selectedFilter end,
|
|
inline = true,
|
|
order = 10,
|
|
args = {
|
|
selectSpellheader = ACH:Description(L["|cffFF0000Warning:|r Click the arrow on the dropdown box to see a list of spells."], 0, 'medium'),
|
|
selectSpell = {
|
|
name = L["Select Spell"],
|
|
type = 'select',
|
|
order = 1,
|
|
customWidth = 350,
|
|
get = function(info) return selectedSpell or '' end,
|
|
set = function(info, value)
|
|
selectedSpell = (value ~= '' and value) or nil
|
|
end,
|
|
values = SetSpellList,
|
|
},
|
|
quickSearch = {
|
|
order = 2,
|
|
name = L["Filter Search"],
|
|
desc = L["Search for a spell name inside of a filter."],
|
|
type = 'input',
|
|
customWidth = 200,
|
|
get = function() return quickSearchText end,
|
|
set = function(info,value) quickSearchText = value end,
|
|
},
|
|
filterType = {
|
|
order = 3,
|
|
name = L["Filter Type"],
|
|
desc = L["Set the filter type. Blacklist will hide any auras in the list and show all others. Whitelist will show any auras in the filter and hide all others."],
|
|
type = 'select',
|
|
values = {
|
|
Whitelist = L["Whitelist"],
|
|
Blacklist = L["Blacklist"],
|
|
},
|
|
get = function() return E.global.unitframe.aurafilters[selectedFilter].type end,
|
|
set = function(info, value) E.global.unitframe.aurafilters[selectedFilter].type = value; UF:Update_AllFrames(); end,
|
|
hidden = function() return (selectedFilter == 'Aura Highlight' or selectedFilter == 'AuraBar Colors' or selectedFilter == 'Aura Indicator (Pet)' or selectedFilter == 'Aura Indicator (Profile)' or selectedFilter == 'Aura Indicator (Class)' or selectedFilter == 'Aura Indicator (Global)' or selectedFilter == 'Whitelist' or selectedFilter == 'Blacklist') end,
|
|
},
|
|
removeSpell = {
|
|
order = 4,
|
|
name = L["Remove Spell"],
|
|
desc = L["Remove a spell from the filter. Use the spell ID if you see the ID as part of the spell name in the filter."],
|
|
type = 'select',
|
|
confirm = function(info, value)
|
|
local spellName = tonumber(value) and GetSpellInfo(value)
|
|
local name = (spellName and format('%s |cFF888888(%s)|r', spellName, value)) or tostring(value)
|
|
return 'Remove Spell - '..name
|
|
end,
|
|
customWidth = 350,
|
|
get = function(info) return '' end,
|
|
set = function(info, value)
|
|
if not value then return end
|
|
selectedSpell = nil
|
|
|
|
if selectedFilter == 'Aura Highlight' then
|
|
E.global.unitframe.AuraHighlightColors[value] = nil;
|
|
elseif selectedFilter == 'AuraBar Colors' then
|
|
if G.unitframe.AuraBarColors[value] then
|
|
E.global.unitframe.AuraBarColors[value].enable = false;
|
|
else
|
|
E.global.unitframe.AuraBarColors[value] = nil;
|
|
end
|
|
elseif selectedFilter == 'Aura Indicator (Pet)' or selectedFilter == 'Aura Indicator (Profile)' or selectedFilter == 'Aura Indicator (Class)' or selectedFilter == 'Aura Indicator (Global)' then
|
|
local selectedTable, defaultTable = GetSelectedFilters()
|
|
|
|
if defaultTable[value] then
|
|
selectedTable[value].enabled = false
|
|
else
|
|
selectedTable[value] = nil
|
|
end
|
|
elseif G.unitframe.aurafilters[selectedFilter] and G.unitframe.aurafilters[selectedFilter].spells[value] then
|
|
E.global.unitframe.aurafilters[selectedFilter].spells[value].enable = false;
|
|
else
|
|
E.global.unitframe.aurafilters[selectedFilter].spells[value] = nil;
|
|
end
|
|
|
|
UF:Update_AllFrames();
|
|
end,
|
|
values = SetSpellList,
|
|
},
|
|
addSpell = {
|
|
order = 5,
|
|
name = L["Add SpellID"],
|
|
desc = L["Add a spell to the filter."],
|
|
type = 'input',
|
|
customWidth = 200,
|
|
get = function(info) return '' end,
|
|
set = function(info, value)
|
|
value = tonumber(value)
|
|
if not value then return end
|
|
|
|
local spellName = GetSpellInfo(value)
|
|
selectedSpell = (spellName and value) or nil
|
|
if not selectedSpell then return end
|
|
|
|
if selectedFilter == 'Aura Highlight' then
|
|
if not E.global.unitframe.AuraHighlightColors[value] then
|
|
E.global.unitframe.AuraHighlightColors[value] = { enable = true, style = 'GLOW', color = {r = 0.8, g = 0, b = 0, a = 0.85} }
|
|
end
|
|
elseif selectedFilter == 'AuraBar Colors' then
|
|
if not E.global.unitframe.AuraBarColors[value] then
|
|
E.global.unitframe.AuraBarColors[value] = E:CopyTable({}, auraBarDefaults)
|
|
end
|
|
elseif selectedFilter == 'Aura Indicator (Pet)' or selectedFilter == 'Aura Indicator (Profile)' or selectedFilter == 'Aura Indicator (Class)' or selectedFilter == 'Aura Indicator (Global)' then
|
|
local selectedTable = GetSelectedFilters()
|
|
if not selectedTable[value] then
|
|
selectedTable[value] = UF:AuraWatch_AddSpell(value, 'TOPRIGHT')
|
|
end
|
|
elseif not E.global.unitframe.aurafilters[selectedFilter].spells[value] then
|
|
E.global.unitframe.aurafilters[selectedFilter].spells[value] = { enable = true, priority = 0, stackThreshold = 0 }
|
|
end
|
|
|
|
UF:Update_AllFrames()
|
|
end,
|
|
},
|
|
},
|
|
},
|
|
buffIndicator = {
|
|
type = 'group',
|
|
name = function()
|
|
local spell = GetSelectedSpell()
|
|
local spellName = spell and GetSpellInfo(spell)
|
|
return (spellName and spellName..' |cFF888888('..spell..')|r') or spell or ' '
|
|
end,
|
|
hidden = function() return not selectedSpell or (selectedFilter ~= 'Aura Indicator (Pet)' and selectedFilter ~= 'Aura Indicator (Profile)' and selectedFilter ~= 'Aura Indicator (Class)' and selectedFilter ~= 'Aura Indicator (Global)') end,
|
|
get = function(info)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
local selectedTable = GetSelectedFilters()
|
|
return selectedTable[spell][info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
local selectedTable = GetSelectedFilters()
|
|
selectedTable[spell][info[#info]] = value;
|
|
UF:Update_AllFrames()
|
|
end,
|
|
order = -10,
|
|
inline = true,
|
|
args = {
|
|
enabled = {
|
|
name = L["Enable"],
|
|
order = 1,
|
|
type = 'toggle',
|
|
},
|
|
point = {
|
|
name = L["Anchor Point"],
|
|
order = 2,
|
|
type = 'select',
|
|
values = {
|
|
TOPLEFT = 'TOPLEFT',
|
|
LEFT = 'LEFT',
|
|
BOTTOMLEFT = 'BOTTOMLEFT',
|
|
RIGHT = 'RIGHT',
|
|
TOPRIGHT = 'TOPRIGHT',
|
|
BOTTOMRIGHT = 'BOTTOMRIGHT',
|
|
CENTER = 'CENTER',
|
|
TOP = 'TOP',
|
|
BOTTOM = 'BOTTOM',
|
|
}
|
|
},
|
|
style = {
|
|
name = L["Style"],
|
|
order = 3,
|
|
type = 'select',
|
|
values = {
|
|
timerOnly = L["Timer Only"],
|
|
coloredIcon = L["Colored Icon"],
|
|
texturedIcon = L["Textured Icon"],
|
|
},
|
|
},
|
|
color = {
|
|
name = L["COLOR"],
|
|
type = 'color',
|
|
order = 4,
|
|
get = function(info)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
local selectedTable = GetSelectedFilters()
|
|
local t = selectedTable[spell][info[#info]]
|
|
return t.r, t.g, t.b, t.a
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
local selectedTable = GetSelectedFilters()
|
|
local t = selectedTable[spell][info[#info]]
|
|
t.r, t.g, t.b = r, g, b
|
|
|
|
UF:Update_AllFrames()
|
|
end,
|
|
disabled = function()
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
local selectedTable = GetSelectedFilters()
|
|
return selectedTable[spell].style == 'texturedIcon'
|
|
end,
|
|
},
|
|
sizeOffset = {
|
|
order = 5,
|
|
type = 'range',
|
|
name = L["Size Offset"],
|
|
desc = L["This changes the size of the Aura Icon by this value."],
|
|
min = -25, max = 25, step = 1,
|
|
},
|
|
xOffset = {
|
|
order = 6,
|
|
type = 'range',
|
|
name = L["X-Offset"],
|
|
min = -75, max = 75, step = 1,
|
|
},
|
|
yOffset = {
|
|
order = 7,
|
|
type = 'range',
|
|
name = L["Y-Offset"],
|
|
min = -75, max = 75, step = 1,
|
|
},
|
|
textThreshold = {
|
|
name = L["Text Threshold"],
|
|
desc = L["At what point should the text be displayed. Set to -1 to disable."],
|
|
type = 'range',
|
|
order = 8,
|
|
min = -1, max = 60, step = 1,
|
|
},
|
|
anyUnit = {
|
|
name = L["Show Aura From Other Players"],
|
|
order = 9,
|
|
customWidth = 205,
|
|
type = 'toggle',
|
|
},
|
|
onlyShowMissing = {
|
|
name = L["Show When Not Active"],
|
|
order = 10,
|
|
type = 'toggle',
|
|
},
|
|
displayText = {
|
|
name = L["Display Text"],
|
|
type = 'toggle',
|
|
order = 11,
|
|
get = function(info)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
local selectedTable = GetSelectedFilters()
|
|
return (selectedTable[spell].style == 'timerOnly') or selectedTable[spell][info[#info]]
|
|
end,
|
|
disabled = function()
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
local selectedTable = GetSelectedFilters()
|
|
return selectedTable[spell].style == 'timerOnly'
|
|
end
|
|
},
|
|
},
|
|
},
|
|
spellGroup = {
|
|
type = 'group',
|
|
name = function()
|
|
local spell = GetSelectedSpell()
|
|
local spellName = spell and GetSpellInfo(spell)
|
|
return (spellName and spellName..' |cFF888888('..spell..')|r') or spell or ' '
|
|
end,
|
|
hidden = function() return not selectedSpell or (selectedFilter == 'Aura Indicator (Pet)' or selectedFilter == 'Aura Indicator (Profile)' or selectedFilter == 'Aura Indicator (Class)' or selectedFilter == 'Aura Indicator (Global)') end,
|
|
order = -15,
|
|
inline = true,
|
|
args = {
|
|
enabled = {
|
|
name = L["Enable"],
|
|
order = 0,
|
|
type = 'toggle',
|
|
hidden = function() return (selectedFilter == 'Aura Indicator (Pet)' or selectedFilter == 'Aura Indicator (Profile)' or selectedFilter == 'Aura Indicator (Class)' or selectedFilter == 'Aura Indicator (Global)') end,
|
|
get = function(info)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
if selectedFilter == 'Aura Highlight' then
|
|
return E.global.unitframe.AuraHighlightColors[spell].enable
|
|
elseif selectedFilter == 'AuraBar Colors' then
|
|
return E.global.unitframe.AuraBarColors[spell].enable
|
|
else
|
|
return E.global.unitframe.aurafilters[selectedFilter].spells[spell].enable
|
|
end
|
|
end,
|
|
set = function(info, value)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
if selectedFilter == 'Aura Highlight' then
|
|
E.global.unitframe.AuraHighlightColors[spell].enable = value
|
|
elseif selectedFilter == 'AuraBar Colors' then
|
|
E.global.unitframe.AuraBarColors[spell].enable = value
|
|
else
|
|
E.global.unitframe.aurafilters[selectedFilter].spells[spell].enable = value
|
|
end
|
|
|
|
UF:Update_AllFrames();
|
|
end,
|
|
},
|
|
style = {
|
|
name = L["Style"],
|
|
type = 'select',
|
|
order = 1,
|
|
values = { GLOW = L["Glow"], FILL = L["Fill"] },
|
|
hidden = function() return selectedFilter ~= 'Aura Highlight' end,
|
|
get = function(info)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
return E.global.unitframe.AuraHighlightColors[spell].style
|
|
end,
|
|
set = function(info, value)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
E.global.unitframe.AuraHighlightColors[spell].style = value
|
|
UF:Update_AllFrames()
|
|
end,
|
|
},
|
|
color = {
|
|
name = L["COLOR"],
|
|
type = 'color',
|
|
order = 2,
|
|
hasAlpha = function() return selectedFilter ~= 'AuraBar Colors' end,
|
|
hidden = function() return (selectedFilter ~= 'Aura Highlight' and selectedFilter ~= 'AuraBar Colors' and selectedFilter ~= 'Aura Indicator (Pet)' and selectedFilter ~= 'Aura Indicator (Profile)' and selectedFilter ~= 'Aura Indicator (Class)' and selectedFilter ~= 'Aura Indicator (Global)') end,
|
|
get = function(info)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
local t
|
|
if selectedFilter == 'Aura Highlight' then
|
|
t = E.global.unitframe.AuraHighlightColors[spell].color
|
|
elseif selectedFilter == 'AuraBar Colors' then
|
|
t = E.global.unitframe.AuraBarColors[spell].color
|
|
end
|
|
|
|
if t then
|
|
return t.r, t.g, t.b, t.a
|
|
end
|
|
end,
|
|
set = function(info, r, g, b, a)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
local t
|
|
if selectedFilter == 'Aura Highlight' then
|
|
t = E.global.unitframe.AuraHighlightColors[spell].color
|
|
elseif selectedFilter == 'AuraBar Colors' then
|
|
t = E.global.unitframe.AuraBarColors[spell].color
|
|
end
|
|
|
|
if t then
|
|
t.r, t.g, t.b, t.a = r, g, b, a
|
|
UF:Update_AllFrames()
|
|
end
|
|
end,
|
|
},
|
|
removeColor = {
|
|
type = 'execute',
|
|
order = 3,
|
|
name = L["Restore Defaults"],
|
|
hidden = function() return selectedFilter ~= 'AuraBar Colors' end,
|
|
func = function(info)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
if G.unitframe.AuraBarColors[spell] then
|
|
E.global.unitframe.AuraBarColors[spell] = E:CopyTable({}, G.unitframe.AuraBarColors[spell])
|
|
else
|
|
E.global.unitframe.AuraBarColors[spell] = E:CopyTable({}, auraBarDefaults)
|
|
end
|
|
|
|
UF:Update_AllFrames();
|
|
end,
|
|
},
|
|
forDebuffIndicator = {
|
|
order = 4,
|
|
type = 'group',
|
|
name = L["Used as RaidDebuff Indicator"],
|
|
inline = true,
|
|
hidden = function() return (selectedFilter == 'Aura Highlight' or selectedFilter == 'AuraBar Colors' or selectedFilter == 'Aura Indicator (Pet)' or selectedFilter == 'Aura Indicator (Profile)' or selectedFilter == 'Aura Indicator (Class)' or selectedFilter == 'Aura Indicator (Global)') end,
|
|
args = {
|
|
priority = {
|
|
order = 1,
|
|
type = 'range',
|
|
name = L["Priority"],
|
|
desc = L["Set the priority order of the spell, please note that prioritys are only used for the raid debuff module, not the standard buff/debuff module. If you want to disable set to zero."],
|
|
min = 0, max = 99, step = 1,
|
|
get = function()
|
|
local spell = GetSelectedSpell()
|
|
if not spell then
|
|
return 0
|
|
else
|
|
return E.global.unitframe.aurafilters[selectedFilter].spells[spell].priority
|
|
end
|
|
end,
|
|
set = function(info, value)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
E.global.unitframe.aurafilters[selectedFilter].spells[spell].priority = value;
|
|
UF:Update_AllFrames();
|
|
end,
|
|
},
|
|
stackThreshold = {
|
|
order = 2,
|
|
type = 'range',
|
|
name = L["Stack Threshold"],
|
|
desc = L["The debuff needs to reach this amount of stacks before it is shown. Set to 0 to always show the debuff."],
|
|
min = 0, max = 99, step = 1,
|
|
get = function()
|
|
local spell = GetSelectedSpell()
|
|
if not spell then
|
|
return 0
|
|
else
|
|
return E.global.unitframe.aurafilters[selectedFilter].spells[spell].stackThreshold
|
|
end
|
|
end,
|
|
set = function(info, value)
|
|
local spell = GetSelectedSpell()
|
|
if not spell then return end
|
|
|
|
E.global.unitframe.aurafilters[selectedFilter].spells[spell].stackThreshold = value
|
|
UF:Update_AllFrames()
|
|
end,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
E.Options.args.filters.args.help = ACH:Group('Help', nil, 2)
|
|
|
|
local COLOR = E:ClassColor(E.myclass, true)
|
|
local COLOR1 = format('|c%s', COLOR.colorStr)
|
|
local COLOR2 = '|cFFFFFFFF'
|
|
|
|
local FilterHelp = {
|
|
'*Whitelists:|r ^Personal, nonPersonal, Boss, CastByUnit, notCastByUnit, Dispellable (includes steal-able), CastByNPC, CastByPlayers|r',
|
|
'*Blacklists:|r ^blockNonPersonal, blockNoDuration, blockCastByPlayers | A blacklist filter is only effective against filters that come after it in the priority list. It will not block anything from the filters before it.|r',
|
|
'^A blacklist filter is only effective against filters that come after it in the priority list. It will not block anything from the filters before it.',
|
|
' ',
|
|
'*Boss:|r ^Auras (debuffs only?) cast by a boss unit.|r',
|
|
'*Personal:|r ^Auras cast by yourself.|r',
|
|
'*nonPersonal:|r ^Auras cast by anyone other than yourself.|r',
|
|
'*CastByUnit:|r ^Auras cast by the unit of the unitframe or nameplate (so on target frame it only shows auras cast by the target unit).|r',
|
|
'*notCastByUnit:|r ^Auras cast by anyone other than the unit of the unitframe or nameplate.|r',
|
|
'*Dispellable:|r ^Auras you can either dispel or spellsteal.|r',
|
|
'*CastByNPC:|r ^Auras cast by any NPC.|r',
|
|
'*CastByPlayers:|r ^Auras cast by any player-controlled unit (so no NPCs).|r',
|
|
'*blockCastByPlayers:|r ^Blocks any aura that is cast by player-controlled units (so will only show auras cast by NPCs).|r',
|
|
'*blockNoDuration:|r ^Blocks any aura without a duration.|r',
|
|
'*blockNonPersonal:|r ^Blocks any aura that is not cast by yourself.|r',
|
|
' ',
|
|
'*Show Everything:|r ^Set "Max Duration" to 0 & Leave Priority List Empty or (1) Personal | (2) nonPersonal',
|
|
'*Block Blacklisted Auras, Show Everything Else:|r ^(1) Blacklist| (2) Personal | (3) nonPersonal',
|
|
'*Block Auras Without Duration, Show Everything Else:|r ^(1) blockNoDuration | (2) Personal | (3) nonPersonal',
|
|
'*Block Auras Without Duration, Block Blacklisted Auras, Show Everything Else:|r ^(1) blockNoDuration | (2) Blacklist | (3) Personal | (4) nonPersonal',
|
|
'*Block Everything, Except Your Own Auras:|r ^(1) Personal',
|
|
'*Block Everything, Except Whitelisted Auras:|r ^(1) Whitelist',
|
|
'*Block Everything, Except Whitelisted Auras That Are Cast By Yourself:|r ^(1) blockNonPersonal | (2) Whitelist'
|
|
}
|
|
|
|
for i, text in ipairs(FilterHelp) do
|
|
E.Options.args.filters.args.help.args['help'..i] = ACH:Description(text:gsub('*', COLOR1):gsub('%^', COLOR2), i, 'medium')
|
|
end
|
|
|
|
function E:SetToFilterConfig(filter)
|
|
selectedSpell = nil
|
|
quickSearchText = ''
|
|
selectedFilter = filter or ''
|
|
E.Libs.AceConfigDialog:SelectGroup('ElvUI', 'filters')
|
|
end
|