4156 lines
134 KiB
Lua
4156 lines
134 KiB
Lua
local E, _, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
|
local C, L = unpack(select(2, ...))
|
|
local NP = E:GetModule("NamePlates")
|
|
local ACD = E.Libs.AceConfigDialog
|
|
|
|
local next, ipairs, pairs, type, tonumber = next, ipairs, pairs, type, tonumber
|
|
local tremove, tinsert, tconcat = tremove, tinsert, table.concat
|
|
local format, match, gsub, strsplit = string.format, string.match, string.gsub, strsplit
|
|
|
|
local GetSpellInfo = GetSpellInfo
|
|
|
|
local positionValues = {
|
|
BOTTOMLEFT = "BOTTOMLEFT",
|
|
BOTTOMRIGHT = "BOTTOMRIGHT",
|
|
LEFT = "LEFT",
|
|
RIGHT = "RIGHT",
|
|
TOPLEFT = "TOPLEFT",
|
|
TOPRIGHT = "TOPRIGHT"
|
|
}
|
|
|
|
local raidTargetIcon = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_%s:0|t %s"
|
|
local selectedNameplateFilter
|
|
|
|
local totemsColor = {
|
|
["fire"] = "|cffff8f8f",
|
|
["earth"] = "|cffffb31f",
|
|
["water"] = "|cff2b76ff",
|
|
["air"] = "|cffb8d1ff"
|
|
}
|
|
|
|
local carryFilterFrom, carryFilterTo
|
|
|
|
local function filterMatch(s,v)
|
|
local m1, m2, m3, m4 = "^"..v.."$", "^"..v..",", ","..v.."$", ","..v..","
|
|
return (match(s, m1) and m1) or (match(s, m2) and m2) or (match(s, m3) and m3) or (match(s, m4) and v..",")
|
|
end
|
|
|
|
local function filterPriority(auraType, unit, value, remove, movehere)
|
|
if not auraType or not value then return end
|
|
local filter = E.db.nameplates.units[unit] and E.db.nameplates.units[unit][auraType] and E.db.nameplates.units[unit][auraType].filters and E.db.nameplates.units[unit][auraType].filters.priority
|
|
if not filter then return end
|
|
local found = filterMatch(filter, E:EscapeString(value))
|
|
if found and movehere then
|
|
local tbl, sv, sm = {strsplit(",",filter)}
|
|
for i in ipairs(tbl) do
|
|
if tbl[i] == value then sv = i elseif tbl[i] == movehere then sm = i end
|
|
if sv and sm then break end
|
|
end
|
|
tremove(tbl, sm)
|
|
tinsert(tbl, sv, movehere)
|
|
E.db.nameplates.units[unit][auraType].filters.priority = tconcat(tbl,",")
|
|
elseif found and remove then
|
|
E.db.nameplates.units[unit][auraType].filters.priority = gsub(filter, found, "")
|
|
elseif not found and not remove then
|
|
E.db.nameplates.units[unit][auraType].filters.priority = (filter == "" and value) or (filter..","..value)
|
|
end
|
|
end
|
|
|
|
local function UpdateInstanceDifficulty()
|
|
if E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.party then
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.instanceType.args.dungeonDifficulty = {
|
|
order = 10,
|
|
type = "group",
|
|
name = L["DUNGEON_DIFFICULTY"],
|
|
desc = L["Check these to only have the filter active in certain difficulties. If none are checked, it is active in all difficulties."],
|
|
guiInline = true,
|
|
get = function(info) return E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceDifficulty.dungeon[info[#info]] end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceDifficulty.dungeon[info[#info]] = value
|
|
UpdateInstanceDifficulty()
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
normal = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["PLAYER_DIFFICULTY1"]
|
|
},
|
|
heroic = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["PLAYER_DIFFICULTY2"]
|
|
}
|
|
}
|
|
}
|
|
else
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.instanceType.args.dungeonDifficulty = nil
|
|
end
|
|
|
|
if E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.raid then
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.instanceType.args.raidDifficulty = {
|
|
order = 11,
|
|
type = "group",
|
|
name = L["Raid Difficulty"],
|
|
desc = L["Check these to only have the filter active in certain difficulties. If none are checked, it is active in all difficulties."],
|
|
guiInline = true,
|
|
get = function(info) return E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceDifficulty.raid[info[#info]] end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceDifficulty.raid[info[#info]] = value
|
|
UpdateInstanceDifficulty()
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
normal = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["PLAYER_DIFFICULTY1"]
|
|
},
|
|
heroic = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["PLAYER_DIFFICULTY2"]
|
|
}
|
|
}
|
|
}
|
|
else
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.instanceType.args.raidDifficulty = nil
|
|
end
|
|
end
|
|
|
|
local function UpdateStyleLists()
|
|
if E.global.nameplates.filters[selectedNameplateFilter] and E.global.nameplates.filters[selectedNameplateFilter].triggers and E.global.nameplates.filters[selectedNameplateFilter].triggers.names then
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.names.args.names = {
|
|
order = 50,
|
|
type = "group",
|
|
name = "",
|
|
guiInline = true,
|
|
args = {}
|
|
}
|
|
if next(E.global.nameplates.filters[selectedNameplateFilter].triggers.names) then
|
|
for name in pairs(E.global.nameplates.filters[selectedNameplateFilter].triggers.names) do
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.names.args.names.args[name] = {
|
|
order = -1,
|
|
type = "toggle",
|
|
name = name,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers and E.global.nameplates.filters[selectedNameplateFilter].triggers.names and E.global.nameplates.filters[selectedNameplateFilter].triggers.names[name]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.names[name] = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
end
|
|
end
|
|
end
|
|
if E.global.nameplates.filters[selectedNameplateFilter] and E.global.nameplates.filters[selectedNameplateFilter].triggers.casting and E.global.nameplates.filters[selectedNameplateFilter].triggers.casting.spells then
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.casting.args.spells = {
|
|
order = 50,
|
|
type = "group",
|
|
name = "",
|
|
guiInline = true,
|
|
args = {}
|
|
}
|
|
if next(E.global.nameplates.filters[selectedNameplateFilter].triggers.casting.spells) then
|
|
local spell, spellName, notDisabled
|
|
for name in pairs(E.global.nameplates.filters[selectedNameplateFilter].triggers.casting.spells) do
|
|
spell = name
|
|
if tonumber(spell) then
|
|
spellName = GetSpellInfo(spell)
|
|
notDisabled = (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable)
|
|
if spellName then
|
|
if notDisabled then
|
|
spell = format("|cFFffff00%s|r |cFFffffff(%d)|r", spellName, spell)
|
|
else
|
|
spell = format("%s (%d)", spellName, spell)
|
|
end
|
|
end
|
|
end
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.casting.args.spells.args[name] = {
|
|
order = -1,
|
|
type = "toggle",
|
|
name = spell,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers and E.global.nameplates.filters[selectedNameplateFilter].triggers.casting.spells and E.global.nameplates.filters[selectedNameplateFilter].triggers.casting.spells[name]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.casting.spells[name] = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
if E.global.nameplates.filters[selectedNameplateFilter] and E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns and E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns.names then
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.cooldowns.args.names = {
|
|
order = 50,
|
|
type = "group",
|
|
name = "",
|
|
guiInline = true,
|
|
args = {}
|
|
}
|
|
if next(E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns.names) then
|
|
local spell, spellName, notDisabled
|
|
for name in pairs(E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns.names) do
|
|
spell = name
|
|
if tonumber(spell) then
|
|
spellName = GetSpellInfo(spell)
|
|
notDisabled = (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable)
|
|
if spellName then
|
|
if notDisabled then
|
|
spell = format("|cFFffff00%s|r |cFFffffff(%d)|r", spellName, spell)
|
|
else
|
|
spell = format("%s (%d)", spellName, spell)
|
|
end
|
|
end
|
|
end
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.cooldowns.args.names.args[name] = {
|
|
order = -1,
|
|
type = "select",
|
|
name = spell,
|
|
values = {
|
|
["DISABLED"] = L["DISABLE"],
|
|
["ONCD"] = L["On Cooldown"],
|
|
["OFFCD"] = L["Off Cooldown"]
|
|
},
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers and E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns.names and E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns.names[name]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns.names[name] = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
if E.global.nameplates.filters[selectedNameplateFilter] and E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs and E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.names then
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.buffs.args.names = {
|
|
order = 50,
|
|
type = "group",
|
|
name = "",
|
|
guiInline = true,
|
|
args = {}
|
|
}
|
|
if next(E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.names) then
|
|
local spell, spellName, notDisabled
|
|
for name in pairs(E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.names) do
|
|
spell = name
|
|
if tonumber(spell) then
|
|
spellName = GetSpellInfo(spell)
|
|
notDisabled = (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable)
|
|
if spellName then
|
|
if notDisabled then
|
|
spell = format("|cFFffff00%s|r |cFFffffff(%d)|r", spellName, spell)
|
|
else
|
|
spell = format("%s (%d)", spellName, spell)
|
|
end
|
|
end
|
|
end
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.buffs.args.names.args[name] = {
|
|
order = -1,
|
|
type = "toggle",
|
|
name = spell,
|
|
textWidth = true,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers and E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.names and E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.names[name]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.names[name] = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
if E.global.nameplates.filters[selectedNameplateFilter] and E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs and E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.names then
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.debuffs.args.names = {
|
|
order = 50,
|
|
type = "group",
|
|
name = "",
|
|
guiInline = true,
|
|
args = {}
|
|
}
|
|
if next(E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.names) then
|
|
local spell, spellName, notDisabled
|
|
for name in pairs(E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.names) do
|
|
spell = name
|
|
if tonumber(spell) then
|
|
spellName = GetSpellInfo(spell)
|
|
notDisabled = (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable)
|
|
if spellName then
|
|
if notDisabled then
|
|
spell = format("|cFFffff00%s|r |cFFffffff(%d)|r", spellName, spell)
|
|
else
|
|
spell = format("%s (%d)", spellName, spell)
|
|
end
|
|
end
|
|
end
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.debuffs.args.names.args[name] = {
|
|
textWidth = true,
|
|
order = -1,
|
|
type = "toggle",
|
|
name = spell,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers and E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.names and E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.names[name]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.names[name] = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
if E.global.nameplates.filters[selectedNameplateFilter] and E.global.nameplates.filters[selectedNameplateFilter].triggers.totems then
|
|
for totemSchool in pairs(G.nameplates.totemTypes) do
|
|
local titemSchoolLoc, order
|
|
|
|
if totemSchool == "fire" then
|
|
titemSchoolLoc, order = BINDING_NAME_MULTICASTACTIONBUTTON10, 51
|
|
elseif totemSchool == "earth" then
|
|
titemSchoolLoc, order = BINDING_NAME_MULTICASTACTIONBUTTON1, 50
|
|
elseif totemSchool == "water" then
|
|
titemSchoolLoc, order = BINDING_NAME_MULTICASTACTIONBUTTON11, 52
|
|
elseif totemSchool == "air" then
|
|
titemSchoolLoc, order = BINDING_NAME_MULTICASTACTIONBUTTON12, 53
|
|
elseif totemSchool == "other" then
|
|
titemSchoolLoc, order = OTHER, 54
|
|
end
|
|
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.totems.args[totemSchool] = {
|
|
order = order,
|
|
type = "group",
|
|
name = (totemsColor[totemSchool] or "")..titemSchoolLoc,
|
|
guiInline = true,
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].triggers.totems.enable end,
|
|
args = {}
|
|
}
|
|
end
|
|
|
|
for totem, data in pairs(NP.TriggerConditions.totems) do
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.totems.args[data[2]].args[totem] = {
|
|
textWidth = true,
|
|
order = -1,
|
|
type = "toggle",
|
|
name = data[1],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers and E.global.nameplates.filters[selectedNameplateFilter].triggers.totems and E.global.nameplates.filters[selectedNameplateFilter].triggers.totems[totem]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.totems[totem] = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
end
|
|
end
|
|
|
|
if E.global.nameplates.filters[selectedNameplateFilter] and E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits then
|
|
for unitType in pairs(G.nameplates.uniqueUnitTypes) do
|
|
local name, order
|
|
|
|
if unitType == "pvp" then
|
|
name, order = "PvP", 50
|
|
elseif unitType == "pve" then
|
|
name, order = "PvE", 51
|
|
end
|
|
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.uniqueUnits.args[unitType] = {
|
|
order = order,
|
|
type = "group",
|
|
name = name,
|
|
guiInline = true,
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits.enable end,
|
|
args = {}
|
|
}
|
|
end
|
|
|
|
for unit, data in pairs(NP.TriggerConditions.uniqueUnits) do
|
|
E.Options.args.nameplate.args.filters.args.triggers.args.uniqueUnits.args[data[2]].args[unit] = {
|
|
textWidth = true,
|
|
order = -1,
|
|
type = "toggle",
|
|
name = data[1],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers and E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits and E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits[unit]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits[unit] = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
local function UpdateFilterGroup()
|
|
if not selectedNameplateFilter or not E.global.nameplates.filters[selectedNameplateFilter] then
|
|
E.Options.args.nameplate.args.filters.args.header = nil
|
|
E.Options.args.nameplate.args.filters.args.actions = nil
|
|
E.Options.args.nameplate.args.filters.args.triggers = nil
|
|
end
|
|
if selectedNameplateFilter and E.global.nameplates.filters[selectedNameplateFilter] then
|
|
E.Options.args.nameplate.args.filters.args.header = {
|
|
order = 4,
|
|
type = "header",
|
|
name = selectedNameplateFilter
|
|
}
|
|
E.Options.args.nameplate.args.filters.args.triggers = {
|
|
order = 5,
|
|
type = "group",
|
|
name = L["Triggers"],
|
|
args = {
|
|
enable = {
|
|
order = 0,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info)
|
|
return (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable)
|
|
end,
|
|
set = function(info, value)
|
|
if not E.db.nameplates then E.db.nameplates = {} end
|
|
if not E.db.nameplates.filters then E.db.nameplates.filters = {} end
|
|
if not E.db.nameplates.filters[selectedNameplateFilter] then E.db.nameplates.filters[selectedNameplateFilter] = {} end
|
|
if not E.db.nameplates.filters[selectedNameplateFilter].triggers then E.db.nameplates.filters[selectedNameplateFilter].triggers = {} end
|
|
E.db.nameplates.filters[selectedNameplateFilter].triggers.enable = value
|
|
UpdateStyleLists() --we need this to recolor the spellid based on wether or not the filter is disabled
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
priority = {
|
|
order = 1,
|
|
type = "range",
|
|
name = L["Filter Priority"],
|
|
desc = L["Lower numbers mean a higher priority. Filters are processed in order from 1 to 100."],
|
|
min = 1, max = 100, step = 1,
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.priority or 1
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.priority = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
resetFilter = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Clear Filter"],
|
|
desc = L["Return filter to its default state."],
|
|
func = function()
|
|
local filter = {}
|
|
if G.nameplates.filters[selectedNameplateFilter] then
|
|
filter = E:CopyTable(filter, G.nameplates.filters[selectedNameplateFilter])
|
|
end
|
|
NP:StyleFilterCopyDefaults(filter)
|
|
E.global.nameplates.filters[selectedNameplateFilter] = filter
|
|
UpdateStyleLists()
|
|
UpdateInstanceDifficulty()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 3,
|
|
type = "description",
|
|
name = ""
|
|
},
|
|
names = {
|
|
order = 4,
|
|
type = "group",
|
|
name = L["NAME"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
addName = {
|
|
order = 1,
|
|
type = "input",
|
|
name = L["Add Name"],
|
|
desc = L["Add a Name to the list."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then
|
|
return
|
|
end
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.names[value] = true
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
removeName = {
|
|
order = 2,
|
|
type = "input",
|
|
name = L["Remove Name"],
|
|
desc = L["Remove a Name from the list."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then
|
|
return
|
|
end
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.names[value] = nil
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
targeting = {
|
|
order = 5,
|
|
type = "group",
|
|
name = L["Targeting"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function()
|
|
return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter]
|
|
and E.db.nameplates.filters[selectedNameplateFilter].triggers
|
|
and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable)
|
|
end,
|
|
args = {
|
|
isTarget = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Is Targeted"],
|
|
desc = L["If enabled then the filter will only activate when you are targeting the unit."]
|
|
},
|
|
notTarget = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Not Targeted"],
|
|
desc = L["If enabled then the filter will only activate when you are not targeting the unit."]
|
|
},
|
|
requireTarget = {
|
|
order = 3,
|
|
type = "toggle",
|
|
name = L["Require Target"],
|
|
desc = L["If enabled then the filter will only activate when you have a target."]
|
|
},
|
|
}
|
|
},
|
|
casting = {
|
|
order = 6,
|
|
type = "group",
|
|
name = L["Casting"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.casting[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.casting[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function()
|
|
return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and
|
|
E.db.nameplates.filters[selectedNameplateFilter].triggers and
|
|
E.db.nameplates.filters[selectedNameplateFilter].triggers.enable)
|
|
end,
|
|
args = {
|
|
types = {
|
|
name = "",
|
|
type = "group",
|
|
guiInline = true,
|
|
order = 2,
|
|
args = {
|
|
isCasting = {
|
|
type = "toggle",
|
|
order = 1,
|
|
name = L["Is Casting Anything"],
|
|
desc = L["If enabled then the filter will activate if the unit is casting anything."]
|
|
},
|
|
notCasting = {
|
|
type = "toggle",
|
|
order = 2,
|
|
name = L["Not Casting Anything"],
|
|
desc = L["If enabled then the filter will activate if the unit is not casting anything."]
|
|
},
|
|
isChanneling = {
|
|
type = "toggle",
|
|
order = 3,
|
|
customWidth = 200,
|
|
name = L["Is Channeling Anything"],
|
|
desc = L["If enabled then the filter will activate if the unit is channeling anything."]
|
|
},
|
|
notChanneling = {
|
|
type = "toggle",
|
|
order = 4,
|
|
customWidth = 200,
|
|
name = L["Not Channeling Anything"],
|
|
desc = L["If enabled then the filter will activate if the unit is not channeling anything."]
|
|
},
|
|
spacer1 = {
|
|
order = 5,
|
|
type = "description",
|
|
name = " ",
|
|
width = "full"
|
|
},
|
|
interruptible = {
|
|
type = "toggle",
|
|
order = 6,
|
|
name = L["Interruptible"],
|
|
desc = L["If enabled then the filter will only activate if the unit is casting interruptible spells."]
|
|
},
|
|
notInterruptible = {
|
|
type = "toggle",
|
|
order = 7,
|
|
name = L["Non-Interruptable"],
|
|
desc = L["If enabled then the filter will only activate if the unit is casting not interruptible spells."]
|
|
}
|
|
}
|
|
},
|
|
addSpell = {
|
|
order = 9,
|
|
name = L["Add Spell ID or Name"],
|
|
type = "input",
|
|
get = function(info)
|
|
return ""
|
|
end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then return end
|
|
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.casting.spells[value] = true
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
removeSpell = {
|
|
order = 10,
|
|
name = L["Remove Spell ID or Name"],
|
|
desc = L["If the aura is listed with a number then you need to use that to remove it from the list."],
|
|
type = "input",
|
|
get = function(info)
|
|
return ""
|
|
end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then return end
|
|
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.casting.spells[value] = nil
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
description1 = {
|
|
order = 12,
|
|
type = "description",
|
|
name = L["You do not need to use 'Is Casting Anything' or 'Is Channeling Anything' for these spells to trigger."]
|
|
},
|
|
description2 = {
|
|
order = 13,
|
|
type = "description",
|
|
name = L["If this list is empty, and if 'Interruptible' is checked, then the filter will activate on any type of cast that can be interrupted."]
|
|
},
|
|
notSpell = {
|
|
type = "toggle",
|
|
order = -2,
|
|
name = L["Not Spell"],
|
|
desc = L["If enabled then the filter will only activate if the unit is not casting or channeling one of the selected spells."]
|
|
}
|
|
}
|
|
},
|
|
combat = {
|
|
order = 7,
|
|
type = "group",
|
|
name = L["COMBAT"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
inCombat = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Player in Combat"],
|
|
desc = L["If enabled then the filter will only activate when you are in combat."],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.inCombat
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.inCombat = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
outOfCombat = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Player Out of Combat"],
|
|
desc = L["If enabled then the filter will only activate when you are out of combat."],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.outOfCombat
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.outOfCombat = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
role = {
|
|
order = 8,
|
|
type = "group",
|
|
name = L["ROLE"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
tank = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["TANK"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.role.tank
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.role.tank = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
},
|
|
healer = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["HEALER"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.role.healer
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.role.healer = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
damager = {
|
|
order = 3,
|
|
type = "toggle",
|
|
name = L["DAMAGER"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.role.damager
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.role.damager = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
health = {
|
|
order = 9,
|
|
type = "group",
|
|
name = L["Health Threshold"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.healthThreshold
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.healthThreshold = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
usePlayer = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Player Health"],
|
|
desc = L["Enabling this will check your health amount."],
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].triggers.healthThreshold end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.healthUsePlayer
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.healthUsePlayer = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 3,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
underHealthThreshold = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Under Health Threshold"],
|
|
desc = L["If this threshold is used then the health of the unit needs to be lower than this value in order for the filter to activate. Set to 0 to disable."],
|
|
min = 0, max = 1, step = 0.01,
|
|
isPercent = true,
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].triggers.healthThreshold end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.underHealthThreshold or 0
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.underHealthThreshold = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
overHealthThreshold = {
|
|
order = 5,
|
|
type = "range",
|
|
name = L["Over Health Threshold"],
|
|
desc = L["If this threshold is used then the health of the unit needs to be higher than this value in order for the filter to activate. Set to 0 to disable."],
|
|
min = 0, max = 1, step = 0.01,
|
|
isPercent = true,
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].triggers.healthThreshold end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.overHealthThreshold or 0
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.overHealthThreshold = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
power = {
|
|
order = 10,
|
|
type = "group",
|
|
name = L["Power Threshold"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
powerThreshold = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
desc = L["Enabling this will check your power amount."],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.powerThreshold
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.powerThreshold = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 2,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
underPowerThreshold = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Under Power Threshold"],
|
|
desc = L["If this threshold is used then the power of the unit needs to be lower than this value in order for the filter to activate. Set to 0 to disable."],
|
|
min = 0, max = 1, step = 0.01,
|
|
isPercent = true,
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].triggers.powerThreshold end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.underPowerThreshold or 0
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.underPowerThreshold = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
overPowerThreshold = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Over Power Threshold"],
|
|
desc = L["If this threshold is used then the power of the unit needs to be higher than this value in order for the filter to activate. Set to 0 to disable."],
|
|
min = 0, max = 1, step = 0.01,
|
|
isPercent = true,
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].triggers.powerThreshold end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.overPowerThreshold or 0
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.overPowerThreshold = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
levels = {
|
|
order = 11,
|
|
type = "group",
|
|
name = L["LEVEL"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.level
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.level = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
matchLevel = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Match Player Level"],
|
|
desc = L["If enabled then the filter will only activate if the level of the unit matches your own."],
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].triggers.level end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.mylevel
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.mylevel = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 3,
|
|
type = "description",
|
|
name = L["LEVEL_BOSS"],
|
|
},
|
|
minLevel = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Minimum Level"],
|
|
desc = L["If enabled then the filter will only activate if the level of the unit is equal to or higher than this value."],
|
|
min = -1, max = MAX_PLAYER_LEVEL+3, step = 1,
|
|
disabled = function() return not (E.global.nameplates.filters[selectedNameplateFilter].triggers.level and not E.global.nameplates.filters[selectedNameplateFilter].triggers.mylevel) end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.minlevel or 0
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.minlevel = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
maxLevel = {
|
|
order = 5,
|
|
type = "range",
|
|
name = L["Maximum Level"],
|
|
desc = L["If enabled then the filter will only activate if the level of the unit is equal to or lower than this value."],
|
|
min = -1, max = MAX_PLAYER_LEVEL+3, step = 1,
|
|
disabled = function() return not (E.global.nameplates.filters[selectedNameplateFilter].triggers.level and not E.global.nameplates.filters[selectedNameplateFilter].triggers.mylevel) end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.maxlevel or 0
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.maxlevel = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
currentLevel = {
|
|
order = 6,
|
|
type = "range",
|
|
name = L["Current Level"],
|
|
desc = L["If enabled then the filter will only activate if the level of the unit matches this value."],
|
|
min = -1, max = MAX_PLAYER_LEVEL+3, step = 1,
|
|
disabled = function() return not (E.global.nameplates.filters[selectedNameplateFilter].triggers.level and not E.global.nameplates.filters[selectedNameplateFilter].triggers.mylevel) end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.curlevel or 0
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.curlevel = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
cooldowns = {
|
|
order = 12,
|
|
type = "group",
|
|
name = L["Cooldowns"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
mustHaveAll = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Require All"],
|
|
desc = L["If enabled then it will require all cooldowns to activate the filter. Otherwise it will only require any one of the cooldowns to activate it."],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns and E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns.mustHaveAll
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns.mustHaveAll = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 5,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
addCooldown = {
|
|
order = 6,
|
|
type = "input",
|
|
name = L["Add Spell ID or Name"],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then
|
|
return
|
|
end
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns.names[value] = "ONCD"
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
removeCooldown = {
|
|
order = 7,
|
|
type = "input",
|
|
name = L["Remove Spell ID or Name"],
|
|
desc = L["If the aura is listed with a number then you need to use that to remove it from the list."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then
|
|
return
|
|
end
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.cooldowns.names[value] = nil
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
buffs = {
|
|
order = 13,
|
|
type = "group",
|
|
name = L["Buffs"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
mustHaveAll = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Require All"],
|
|
desc = L["If enabled then it will require all auras to activate the filter. Otherwise it will only require any one of the auras to activate it."],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs and E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.mustHaveAll
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.mustHaveAll = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
missing = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Missing"],
|
|
desc = L["If enabled then it checks if auras are missing instead of being present on the unit."],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs and E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.missing
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.missing = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
minTimeLeft = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Minimum Time Left"],
|
|
desc = L["Apply this filter if a buff has remaining time greater than this. Set to zero to disable."],
|
|
min = 0, max = 10800, step = 1,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs and E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.minTimeLeft
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.minTimeLeft = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
maxTimeLeft = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Maximum Time Left"],
|
|
desc = L["Apply this filter if a buff has remaining time less than this. Set to zero to disable."],
|
|
min = 0, max = 10800, step = 1,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs and E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.maxTimeLeft
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.maxTimeLeft = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 5,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
addBuff = {
|
|
order = 6,
|
|
type = "input",
|
|
name = L["Add Spell ID or Name"],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then
|
|
return
|
|
end
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.names[value] = true
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
removeBuff = {
|
|
order = 7,
|
|
type = "input",
|
|
name = L["Remove Spell ID or Name"],
|
|
desc = L["If the aura is listed with a number then you need to use that to remove it from the list."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then
|
|
return
|
|
end
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.buffs.names[value] = nil
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
debuffs = {
|
|
order = 14,
|
|
type = "group",
|
|
name = L["Debuffs"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
mustHaveAll = {
|
|
order = 1,
|
|
name = L["Require All"],
|
|
desc = L["If enabled then it will require all auras to activate the filter. Otherwise it will only require any one of the auras to activate it."],
|
|
type = "toggle",
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs and E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.mustHaveAll
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.mustHaveAll = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
missing = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Missing"],
|
|
desc = L["If enabled then it checks if auras are missing instead of being present on the unit."],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs and E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.missing
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.missing = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
minTimeLeft = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Minimum Time Left"],
|
|
desc = L["Apply this filter if a debuff has remaining time greater than this. Set to zero to disable."],
|
|
min = 0, max = 10800, step = 1,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs and E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.minTimeLeft
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.minTimeLeft = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
maxTimeLeft = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Maximum Time Left"],
|
|
desc = L["Apply this filter if a debuff has remaining time less than this. Set to zero to disable."],
|
|
min = 0, max = 10800, step = 1,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs and E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.maxTimeLeft
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.maxTimeLeft = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 5,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
addDebuff = {
|
|
order = 6,
|
|
type = "input",
|
|
name = L["Add Spell ID or Name"],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then
|
|
return
|
|
end
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.names[value] = true
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
removeDebuff = {
|
|
order = 7,
|
|
type = "input",
|
|
name = L["Remove Spell ID or Name"],
|
|
desc = L["If the aura is listed with a number then you need to use that to remove it from the list."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then
|
|
return
|
|
end
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.debuffs.names[value] = nil
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
nameplateType = {
|
|
order = 15,
|
|
type = "group",
|
|
name = L["Unit Type"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
enable = {
|
|
order = 0,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType and E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.enable
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.enable = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
types = {
|
|
order = 1,
|
|
type = "group",
|
|
name = "",
|
|
guiInline = true,
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) or not E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.enable end,
|
|
args = {
|
|
friendlyPlayer = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["FRIENDLY_PLAYER"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.friendlyPlayer
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.friendlyPlayer = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
friendlyNPC = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["FRIENDLY_NPC"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.friendlyNPC
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.friendlyNPC = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
enemyPlayer = {
|
|
order = 3,
|
|
type = "toggle",
|
|
name = L["ENEMY_PLAYER"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.enemyPlayer
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.enemyPlayer = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
enemyNPC = {
|
|
order = 4,
|
|
type = "toggle",
|
|
name = L["ENEMY_NPC"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.enemyNPC
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.nameplateType.enemyNPC = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
reactionType = {
|
|
order = 16,
|
|
type = "group",
|
|
name = L["Reaction Type"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
enable = {
|
|
order = 0,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.reactionType and E.global.nameplates.filters[selectedNameplateFilter].triggers.reactionType.enable
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.reactionType.enable = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
types = {
|
|
order = 1,
|
|
type = "group",
|
|
name = "",
|
|
guiInline = true,
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) or not E.global.nameplates.filters[selectedNameplateFilter].triggers.reactionType.enable end,
|
|
args = {
|
|
hostile = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["FACTION_STANDING_LABEL2"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.reactionType.hostile
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.reactionType.hostile = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
neutral = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["FACTION_STANDING_LABEL4"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.reactionType.neutral
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.reactionType.neutral = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
friendly = {
|
|
order = 3,
|
|
type = "toggle",
|
|
name = L["FACTION_STANDING_LABEL5"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.reactionType.friendly
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.reactionType.friendly = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
instanceType = {
|
|
order = 17,
|
|
type = "group",
|
|
name = L["Instance Type"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
none = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["NONE"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.none
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.none = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
sanctuary = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Sanctuary"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.sanctuary
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.sanctuary = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
party = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["DUNGEONS"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.party
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.party = value
|
|
UpdateInstanceDifficulty()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
raid = {
|
|
order = 3,
|
|
type = "toggle",
|
|
name = L["RAID"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.raid
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.raid = value
|
|
UpdateInstanceDifficulty()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
arena = {
|
|
order = 4,
|
|
type = "toggle",
|
|
name = L["ARENA"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.arena
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.arena = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
pvp = {
|
|
order = 5,
|
|
type = "toggle",
|
|
name = L["BATTLEFIELDS"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.pvp
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.instanceType.pvp = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
raidTarget = {
|
|
order = 27,
|
|
type = "group",
|
|
name = L["BINDING_HEADER_RAID_TARGET"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.raidTarget[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.raidTarget[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function()
|
|
return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and
|
|
E.db.nameplates.filters[selectedNameplateFilter].triggers and
|
|
E.db.nameplates.filters[selectedNameplateFilter].triggers.enable)
|
|
end,
|
|
args = {
|
|
types = {
|
|
name = "",
|
|
type = "group",
|
|
guiInline = true,
|
|
order = 2,
|
|
args = {
|
|
star = {
|
|
type = "toggle",
|
|
order = 1,
|
|
name = format(raidTargetIcon, 1, L["RAID_TARGET_1"])
|
|
},
|
|
circle = {
|
|
type = "toggle",
|
|
order = 2,
|
|
name = format(raidTargetIcon, 2, L["RAID_TARGET_2"])
|
|
},
|
|
diamond = {
|
|
type = "toggle",
|
|
order = 3,
|
|
name = format(raidTargetIcon, 3, L["RAID_TARGET_3"])
|
|
},
|
|
triangle = {
|
|
type = "toggle",
|
|
order = 4,
|
|
name = format(raidTargetIcon, 4, L["RAID_TARGET_4"])
|
|
},
|
|
moon = {
|
|
type = "toggle",
|
|
order = 5,
|
|
name = format(raidTargetIcon, 5, L["RAID_TARGET_5"])
|
|
},
|
|
square = {
|
|
type = "toggle",
|
|
order = 6,
|
|
name = format(raidTargetIcon, 6, L["RAID_TARGET_6"])
|
|
},
|
|
cross = {
|
|
type = "toggle",
|
|
order = 7,
|
|
name = format(raidTargetIcon, 7, L["RAID_TARGET_7"])
|
|
},
|
|
skull = {
|
|
type = "toggle",
|
|
order = 8,
|
|
name = format(raidTargetIcon, 8, L["RAID_TARGET_8"])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
totems = {
|
|
order = 28,
|
|
type = "group",
|
|
name = L["Totem"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.totems[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.totems[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function()
|
|
return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and
|
|
E.db.nameplates.filters[selectedNameplateFilter].triggers and
|
|
E.db.nameplates.filters[selectedNameplateFilter].triggers.enable)
|
|
end,
|
|
args = {
|
|
enable = {
|
|
order = 0,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.totems and E.global.nameplates.filters[selectedNameplateFilter].triggers.totems.enable
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.totems.enable = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
uniqueUnits = {
|
|
order = 28,
|
|
type = "group",
|
|
name = L["Unique Units"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function()
|
|
return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and
|
|
E.db.nameplates.filters[selectedNameplateFilter].triggers and
|
|
E.db.nameplates.filters[selectedNameplateFilter].triggers.enable)
|
|
end,
|
|
args = {
|
|
enable = {
|
|
order = 0,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits and E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits.enable
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits.enable = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
E.Options.args.nameplate.args.filters.args.actions = {
|
|
order = 6,
|
|
type = "group",
|
|
name = L["Actions"],
|
|
disabled = function() return not (E.db.nameplates and E.db.nameplates.filters and E.db.nameplates.filters[selectedNameplateFilter] and E.db.nameplates.filters[selectedNameplateFilter].triggers and E.db.nameplates.filters[selectedNameplateFilter].triggers.enable) end,
|
|
args = {
|
|
hide = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Hide Frame"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.hide
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.hide = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
nameOnly = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Name Only"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.nameOnly
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.nameOnly = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function() return E.global.nameplates.filters[selectedNameplateFilter].actions.hide end
|
|
},
|
|
icon = {
|
|
order = 3,
|
|
type = "toggle",
|
|
name = L["Icon"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.icon
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.icon = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function()
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.hide or not (E.global.nameplates.filters[selectedNameplateFilter].triggers.totems.enable or E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits.enable)
|
|
end
|
|
},
|
|
iconOnly = {
|
|
order = 3,
|
|
type = "toggle",
|
|
name = L["Icon Only"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.iconOnly
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.iconOnly = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function()
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.hide or not (E.global.nameplates.filters[selectedNameplateFilter].triggers.totems.enable or E.global.nameplates.filters[selectedNameplateFilter].triggers.uniqueUnits.enable)
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 4,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
scale = {
|
|
order = 5,
|
|
type = "range",
|
|
name = L["Scale"],
|
|
disabled = function() return E.global.nameplates.filters[selectedNameplateFilter].actions.hide end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.scale or 1
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.scale = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
min = 0.35, max = 1.5, step = 0.01
|
|
},
|
|
alpha = {
|
|
order = 6,
|
|
type = "range",
|
|
name = L["Alpha"],
|
|
disabled = function() return E.global.nameplates.filters[selectedNameplateFilter].actions.hide end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.alpha or -1
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.alpha = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
min = -1, max = 100, step = 1
|
|
},
|
|
frameLevel = {
|
|
order = 7,
|
|
name = L["Frame Level"],
|
|
desc = L["NAMEPLATE_FRAMELEVEL_DESC"],
|
|
type = "range",
|
|
min = 0, max = 10, step = 1,
|
|
disabled = function() return E.global.nameplates.filters[selectedNameplateFilter].actions.hide end,
|
|
get = function(info) return E.global.nameplates.filters[selectedNameplateFilter].actions.frameLevel or 0 end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.frameLevel = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
},
|
|
color = {
|
|
order = 10,
|
|
type = "group",
|
|
name = L["COLOR"],
|
|
guiInline = true,
|
|
disabled = function() return E.global.nameplates.filters[selectedNameplateFilter].actions.hide end,
|
|
args = {
|
|
health = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["HEALTH"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.color.health
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.color.health = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
healthColor = {
|
|
order = 2,
|
|
type = "color",
|
|
name = L["Health Color"],
|
|
hasAlpha = true,
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].actions.color.health end,
|
|
get = function(info)
|
|
local t = E.global.nameplates.filters[selectedNameplateFilter].actions.color.healthColor
|
|
return t.r, t.g, t.b, t.a, 136/255, 255/255, 102/255, 1
|
|
end,
|
|
set = function(info, r, g, b, a)
|
|
local t = E.global.nameplates.filters[selectedNameplateFilter].actions.color.healthColor
|
|
t.r, t.g, t.b, t.a = r, g, b, a
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 3,
|
|
type = "description",
|
|
name = " ",
|
|
},
|
|
border = {
|
|
order = 4,
|
|
type = "toggle",
|
|
name = L["Border"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.color.border
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.color.border = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
borderColor = {
|
|
order = 5,
|
|
type = "color",
|
|
name = L["Border Color"],
|
|
hasAlpha = true,
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].actions.color.border end,
|
|
get = function(info)
|
|
local t = E.global.nameplates.filters[selectedNameplateFilter].actions.color.borderColor
|
|
return t.r, t.g, t.b, t.a, 0, 0, 0, 1
|
|
end,
|
|
set = function(info, r, g, b, a)
|
|
local t = E.global.nameplates.filters[selectedNameplateFilter].actions.color.borderColor
|
|
t.r, t.g, t.b, t.a = r, g, b, a
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer2 = {
|
|
order = 6,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
name = {
|
|
order = 7,
|
|
type = "toggle",
|
|
name = L["NAME"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.color.name
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.color.name = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
nameColor = {
|
|
order = 8,
|
|
type = "color",
|
|
name = L["Name Color"],
|
|
hasAlpha = true,
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].actions.color.name end,
|
|
get = function(info)
|
|
local t = E.global.nameplates.filters[selectedNameplateFilter].actions.color.nameColor
|
|
return t.r, t.g, t.b, t.a, 200/255, 200/255, 200/255, 1
|
|
end,
|
|
set = function(info, r, g, b, a)
|
|
local t = E.global.nameplates.filters[selectedNameplateFilter].actions.color.nameColor
|
|
t.r, t.g, t.b, t.a = r, g, b, a
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
texture = {
|
|
order = 20,
|
|
type = "group",
|
|
name = L["Texture"],
|
|
guiInline = true,
|
|
disabled = function() return E.global.nameplates.filters[selectedNameplateFilter].actions.hide end,
|
|
args = {
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.texture.enable
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.texture.enable = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
texture = {
|
|
order = 2,
|
|
type = "select",
|
|
dialogControl = "LSM30_Statusbar",
|
|
name = L["Texture"],
|
|
values = AceGUIWidgetLSMlists.statusbar,
|
|
disabled = function() return not E.global.nameplates.filters[selectedNameplateFilter].actions.texture.enable end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.texture.texture
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.texture.texture = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
flashing = {
|
|
order = 30,
|
|
type = "group",
|
|
name = L["Flash"],
|
|
guiInline = true,
|
|
disabled = function() return E.global.nameplates.filters[selectedNameplateFilter].actions.hide end,
|
|
args = {
|
|
enable = {
|
|
name = L["Enable"],
|
|
order = 1,
|
|
type = "toggle",
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.flash.enable
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.flash.enable = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
speed = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["SPEED"],
|
|
disabled = function() return E.global.nameplates.filters[selectedNameplateFilter].actions.hide end,
|
|
get = function(info)
|
|
return E.global.nameplates.filters[selectedNameplateFilter].actions.flash.speed or 4
|
|
end,
|
|
set = function(info, value)
|
|
E.global.nameplates.filters[selectedNameplateFilter].actions.flash.speed = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
min = 1, max = 10, step = 1
|
|
},
|
|
color = {
|
|
order = 3,
|
|
type = "color",
|
|
name = L["COLOR"],
|
|
hasAlpha = true,
|
|
disabled = function() return E.global.nameplates.filters[selectedNameplateFilter].actions.hide end,
|
|
get = function(info)
|
|
local t = E.global.nameplates.filters[selectedNameplateFilter].actions.flash.color
|
|
return t.r, t.g, t.b, t.a, 104/255, 138/255, 217/255, 1
|
|
end,
|
|
set = function(info, r, g, b, a)
|
|
local t = E.global.nameplates.filters[selectedNameplateFilter].actions.flash.color
|
|
t.r, t.g, t.b, t.a = r, g, b, a
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
UpdateInstanceDifficulty()
|
|
UpdateStyleLists()
|
|
end
|
|
end
|
|
|
|
local ORDER = 100
|
|
local function GetUnitSettings(unit, name)
|
|
local copyValues = {}
|
|
for x, y in pairs(NP.db.units) do
|
|
if type(y) == "table" and x ~= unit then
|
|
copyValues[x] = L[x]
|
|
end
|
|
end
|
|
local group = {
|
|
order = ORDER,
|
|
type = "group",
|
|
name = name,
|
|
childGroups = "tab",
|
|
get = function(info) return E.db.nameplates.units[unit][info[#info]] end,
|
|
set = function(info, value) E.db.nameplates.units[unit][info[#info]] = value NP:ConfigureAll() end,
|
|
disabled = function() return not E.NamePlates.Initialized end,
|
|
args = {
|
|
showTestFrame = {
|
|
order = -10,
|
|
name = L["Show/Hide Test Frame"],
|
|
type = "execute",
|
|
func = function(info)
|
|
NP:TogleTestFrame(unit)
|
|
end
|
|
},
|
|
copySettings = {
|
|
order = -9,
|
|
type = "select",
|
|
name = L["Copy Settings From"],
|
|
desc = L["Copy settings from another unit."],
|
|
values = copyValues,
|
|
get = function() return "" end,
|
|
set = function(info, value)
|
|
NP:CopySettings(value, unit)
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
defaultSettings = {
|
|
order = -8,
|
|
type = "execute",
|
|
name = L["Default Settings"],
|
|
desc = L["Set Settings to Default"],
|
|
func = function(info)
|
|
NP:ResetSettings(unit)
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
healthGroup = {
|
|
order = 1,
|
|
type = "group",
|
|
name = L["HEALTH"],
|
|
get = function(info) return E.db.nameplates.units[unit].health[info[#info]] end,
|
|
set = function(info, value) E.db.nameplates.units[unit].health[info[#info]] = value NP:ConfigureAll() end,
|
|
args = {
|
|
header = {
|
|
order = 1,
|
|
type = "header",
|
|
name = L["HEALTH"]
|
|
},
|
|
enable = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
height = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Height"],
|
|
min = 4, max = 20, step = 1
|
|
},
|
|
width = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Width"],
|
|
min = 50, max = 200, step = 1
|
|
},
|
|
textGroup = {
|
|
order = 5,
|
|
type = "group",
|
|
name = L["Text"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].health.text[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].health.text[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
format = {
|
|
order = 2,
|
|
type = "select",
|
|
name = L["Format"],
|
|
values = {
|
|
["CURRENT"] = L["Current"],
|
|
["CURRENT_MAX"] = L["Current / Max"],
|
|
["CURRENT_PERCENT"] = L["Current - Percent"],
|
|
["CURRENT_MAX_PERCENT"] = L["Current - Max | Percent"],
|
|
["PERCENT"] = L["Percent"],
|
|
["DEFICIT"] = L["Deficit"]
|
|
}
|
|
},
|
|
position = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Position"],
|
|
values = {
|
|
["CENTER"] = "CENTER",
|
|
["TOPLEFT"] = "TOPLEFT",
|
|
["BOTTOMLEFT"] = "BOTTOMLEFT",
|
|
["TOPRIGHT"] = "TOPRIGHT",
|
|
["BOTTOMRIGHT"] = "BOTTOMRIGHT"
|
|
}
|
|
},
|
|
parent = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Parent"],
|
|
values = {
|
|
["Nameplate"] = L["Nameplate"],
|
|
["Health"] = L["Health"]
|
|
}
|
|
},
|
|
xOffset = {
|
|
order = 5,
|
|
type = "range",
|
|
name = L["X-Offset"],
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
yOffset = {
|
|
order = 6,
|
|
type = "range",
|
|
name = L["Y-Offset"],
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
fontGroup = {
|
|
type = "group",
|
|
order = 7,
|
|
name = L["Fonts"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].health.text[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].health.text[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
font = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Font"],
|
|
dialogControl = "LSM30_Font",
|
|
values = AceGUIWidgetLSMlists.font
|
|
},
|
|
fontSize = {
|
|
order = 2,
|
|
name = L["FONT_SIZE"],
|
|
type = "range",
|
|
min = 4, max = 32, step = 1
|
|
},
|
|
fontOutline = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Font Outline"],
|
|
desc = L["Set the font outline."],
|
|
values = C.Values.FontFlags
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
castGroup = {
|
|
order = 2,
|
|
type = "group",
|
|
name = L["Cast Bar"],
|
|
get = function(info) return E.db.nameplates.units[unit].castbar[info[#info]] end,
|
|
set = function(info, value) E.db.nameplates.units[unit].castbar[info[#info]] = value; NP:ConfigureAll() end,
|
|
args = {
|
|
header = {
|
|
order = 0,
|
|
type = "header",
|
|
name = L["Cast Bar"]
|
|
},
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
timeToHold = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Time To Hold"],
|
|
desc = L["How many seconds the castbar should stay visible after the cast failed or was interrupted."],
|
|
min = 0, max = 4, step = 0.1
|
|
},
|
|
width = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Width"],
|
|
min = 50, max = 250, step = 1
|
|
},
|
|
height = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Height"],
|
|
min = 4, max = 20, step = 1
|
|
},
|
|
xOffset = {
|
|
order = 5,
|
|
type = "range",
|
|
name = L["X-Offset"],
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
yOffset = {
|
|
order = 6,
|
|
type = "range",
|
|
name = L["Y-Offset"],
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
textGroup = {
|
|
order = 7,
|
|
type = "group",
|
|
name = L["Text"],
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].castbar[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].castbar[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
guiInline = true,
|
|
args = {
|
|
hideSpellName = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Hide Spell Name"]
|
|
},
|
|
hideTime = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Hide Time"]
|
|
},
|
|
textPosition = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Text Position"],
|
|
values = {
|
|
["ONBAR"] = L["Cast Bar"],
|
|
["ABOVE"] = L["Above"],
|
|
["BELOW"] = L["Below"]
|
|
}
|
|
},
|
|
castTimeFormat = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Cast Time Format"],
|
|
values = {
|
|
["CURRENT"] = L["Current"],
|
|
["CURRENTMAX"] = L["Current / Max"],
|
|
["REMAINING"] = L["Remaining"],
|
|
["REMAININGMAX"] = L["Remaining / Max"]
|
|
}
|
|
},
|
|
channelTimeFormat = {
|
|
order = 5,
|
|
type = "select",
|
|
name = L["Channel Time Format"],
|
|
values = {
|
|
["CURRENT"] = L["Current"],
|
|
["CURRENTMAX"] = L["Current / Max"],
|
|
["REMAINING"] = L["Remaining"],
|
|
["REMAININGMAX"] = L["Remaining / Max"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
iconGroup = {
|
|
order = 8,
|
|
name = L["Icon"],
|
|
type = "group",
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].castbar[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].castbar[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
guiInline = true,
|
|
args = {
|
|
showIcon = {
|
|
order = 11,
|
|
type = "toggle",
|
|
name = L["Show Icon"]
|
|
},
|
|
iconPosition = {
|
|
order = 12,
|
|
type = "select",
|
|
name = L["Icon Position"],
|
|
values = {
|
|
["LEFT"] = L["Left"],
|
|
["RIGHT"] = L["Right"]
|
|
}
|
|
},
|
|
iconSize = {
|
|
order = 13,
|
|
name = L["Icon Size"],
|
|
type = "range",
|
|
min = 4, max = 40, step = 1
|
|
},
|
|
iconOffsetX = {
|
|
order = 14,
|
|
name = L["X-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
iconOffsetY = {
|
|
order = 15,
|
|
name = L["Y-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
}
|
|
}
|
|
},
|
|
fontGroup = {
|
|
type = "group",
|
|
order = 30,
|
|
name = L["Font"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].castbar[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].castbar[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
font = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Font"],
|
|
dialogControl = "LSM30_Font",
|
|
values = AceGUIWidgetLSMlists.font
|
|
},
|
|
fontSize = {
|
|
order = 2,
|
|
name = L["FONT_SIZE"],
|
|
type = "range",
|
|
min = 4, max = 60, step = 1
|
|
},
|
|
fontOutline = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Font Outline"],
|
|
desc = L["Set the font outline."],
|
|
values = C.Values.FontFlags
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
buffsGroup = {
|
|
order = 3,
|
|
type = "group",
|
|
name = L["Buffs"],
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].buffs[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].buffs[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
header = {
|
|
order = 0,
|
|
type = "header",
|
|
name = L["Buffs"]
|
|
},
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
perrow = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Per Row"],
|
|
min = 1, max = 20, step = 1,
|
|
},
|
|
numrows = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Num Rows"],
|
|
min = 1, max = 10, step = 1
|
|
},
|
|
size = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Icon Size"],
|
|
min = 6, max = 60, step = 1
|
|
},
|
|
spacing = {
|
|
order = 5,
|
|
type = "range",
|
|
name = L["Spacing"],
|
|
min = 0, max = 60, step = 1
|
|
},
|
|
xOffset = {
|
|
order = 6,
|
|
type = "range",
|
|
name = L["X-Offset"],
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
yOffset = {
|
|
order = 7,
|
|
type = "range",
|
|
name = L["Y-Offset"],
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
anchorPoint = {
|
|
order = 8,
|
|
type = "select",
|
|
name = L["Anchor Point"],
|
|
desc = L["What point to anchor to the frame you set to attach to."],
|
|
values = positionValues
|
|
},
|
|
attachTo = {
|
|
order = 9,
|
|
type = "select",
|
|
name = L["Attach To"],
|
|
values = {
|
|
["FRAME"] = L["Nameplate"]
|
|
}
|
|
},
|
|
growthX = {
|
|
order = 10,
|
|
type = "select",
|
|
name = L["Growth X-Direction"],
|
|
values = {
|
|
["LEFT"] = L["Left"],
|
|
["RIGHT"] = L["Right"]
|
|
}
|
|
},
|
|
growthY = {
|
|
order = 11,
|
|
type = "select",
|
|
name = L["Growth Y-Direction"],
|
|
values = {
|
|
["UP"] = L["Up"],
|
|
["DOWN"] = L["Down"]
|
|
}
|
|
},
|
|
cooldownOrientation = {
|
|
order = 12,
|
|
type = "select",
|
|
name = L["Cooldown Orientation"],
|
|
values = {
|
|
["VERTICAL"] = L["Vertical"],
|
|
["HORIZONTAL"] = L["Horizontal"]
|
|
}
|
|
},
|
|
reverseCooldown = {
|
|
order = 13,
|
|
type = "toggle",
|
|
name = L["Reverse Cooldown"],
|
|
},
|
|
stacks = {
|
|
order = 14,
|
|
type = "group",
|
|
name = L["Stack Counter"],
|
|
guiInline = true,
|
|
get = function(info, value)
|
|
return E.db.nameplates.units[unit].buffs[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].buffs[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
countFont = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Font"],
|
|
dialogControl = "LSM30_Font",
|
|
values = AceGUIWidgetLSMlists.font
|
|
},
|
|
countFontSize = {
|
|
order = 2,
|
|
name = L["FONT_SIZE"],
|
|
type = "range",
|
|
min = 4, max = 20, step = 1 -- max 20 cause otherwise it looks weird
|
|
},
|
|
countFontOutline = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Font Outline"],
|
|
desc = L["Set the font outline."],
|
|
values = C.Values.FontFlags
|
|
},
|
|
countPosition = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Position"],
|
|
values = {
|
|
["TOP"] = "TOP",
|
|
["LEFT"] = "LEFT",
|
|
["BOTTOM"] = "BOTTOM",
|
|
["CENTER"] = "CENTER",
|
|
["TOPLEFT"] = "TOPLEFT",
|
|
["BOTTOMLEFT"] = "BOTTOMLEFT",
|
|
["BOTTOMRIGHT"] = "BOTTOMRIGHT",
|
|
["RIGHT"] = "RIGHT",
|
|
["TOPRIGHT"] = "TOPRIGHT"
|
|
}
|
|
},
|
|
countXOffset = {
|
|
order = 5,
|
|
name = L["X-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
countYOffset = {
|
|
order = 6,
|
|
name = L["Y-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
}
|
|
}
|
|
},
|
|
duration = {
|
|
order = 15,
|
|
type = "group",
|
|
name = L["Duration"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].buffs[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].buffs[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
durationFont = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Font"],
|
|
dialogControl = "LSM30_Font",
|
|
values = AceGUIWidgetLSMlists.font
|
|
},
|
|
durationFontSize = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["FONT_SIZE"],
|
|
min = 4, max = 20, step = 1 -- max 20 cause otherwise it looks weird
|
|
},
|
|
durationFontOutline = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Font Outline"],
|
|
desc = L["Set the font outline."],
|
|
values = C.Values.FontFlags
|
|
},
|
|
durationPosition = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Position"],
|
|
values = {
|
|
["TOP"] = "TOP",
|
|
["LEFT"] = "LEFT",
|
|
["BOTTOM"] = "BOTTOM",
|
|
["CENTER"] = "CENTER",
|
|
["TOPLEFT"] = "TOPLEFT",
|
|
["BOTTOMLEFT"] = "BOTTOMLEFT",
|
|
["BOTTOMRIGHT"] = "BOTTOMRIGHT",
|
|
["RIGHT"] = "RIGHT",
|
|
["TOPRIGHT"] = "TOPRIGHT"
|
|
}
|
|
},
|
|
durationXOffset = {
|
|
order = 5,
|
|
name = L["X-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
durationYOffset = {
|
|
order = 6,
|
|
name = L["Y-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
}
|
|
}
|
|
},
|
|
filtersGroup = {
|
|
order = 16,
|
|
name = L["FILTERS"],
|
|
type = "group",
|
|
guiInline = true,
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].buffs.filters[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].buffs.filters[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
minDuration = {
|
|
order = 1,
|
|
type = "range",
|
|
name = L["Minimum Duration"],
|
|
desc = L["Don't display auras that are shorter than this duration (in seconds). Set to zero to disable."],
|
|
min = 0, max = 10800, step = 1
|
|
},
|
|
maxDuration = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Maximum Duration"],
|
|
desc = L["Don't display auras that are longer than this duration (in seconds). Set to zero to disable."],
|
|
min = 0, max = 10800, step = 1
|
|
},
|
|
jumpToFilter = {
|
|
order = 3,
|
|
type = "execute",
|
|
name = L["Filters Page"],
|
|
desc = L["Shortcut to global filters."],
|
|
func = function()
|
|
ACD:SelectGroup("ElvUI", "filters")
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 4,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
specialFilters = {
|
|
order = 5,
|
|
type = "select",
|
|
sortByValue = true,
|
|
name = L["Add Special Filter"],
|
|
desc = L["These filters don't use a list of spells like the regular filters. Instead they use the WoW API and some code logic to determine if an aura should be allowed or blocked."],
|
|
values = function()
|
|
local filters = {}
|
|
local list = E.global.nameplates.specialFilters
|
|
if not (list and next(list)) then return filters end
|
|
|
|
for filter in pairs(list) do
|
|
filters[filter] = L[filter]
|
|
end
|
|
return filters
|
|
end,
|
|
set = function(info, value)
|
|
filterPriority("buffs", unit, value)
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
filter = {
|
|
order = 6,
|
|
type = "select",
|
|
name = L["Add Regular Filter"],
|
|
desc = L["These filters use a list of spells to determine if an aura should be allowed or blocked. The content of these filters can be modified in the 'Filters' section of the config."],
|
|
values = function()
|
|
local filters = {}
|
|
local list = E.global.unitframe.aurafilters
|
|
if not (list and next(list)) then return filters end
|
|
|
|
for filter in pairs(list) do
|
|
filters[filter] = filter
|
|
end
|
|
return filters
|
|
end,
|
|
set = function(info, value)
|
|
filterPriority("buffs", unit, value)
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
resetPriority = {
|
|
order = 7,
|
|
type = "execute",
|
|
name = L["Reset Priority"],
|
|
desc = L["Reset filter priority to the default state."],
|
|
func = function()
|
|
E.db.nameplates.units[unit].buffs.filters.priority = P.nameplates.units[unit].buffs.filters.priority
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
filterPriority = {
|
|
order = 8,
|
|
type = "multiselect",
|
|
name = L["Filter Priority"],
|
|
dragdrop = true,
|
|
dragOnLeave = E.noop, --keep this here
|
|
dragOnEnter = function(info)
|
|
carryFilterTo = info.obj.value
|
|
end,
|
|
dragOnMouseDown = function(info)
|
|
carryFilterFrom, carryFilterTo = info.obj.value, nil
|
|
end,
|
|
dragOnMouseUp = function(info)
|
|
filterPriority("buffs", unit, carryFilterTo, nil, carryFilterFrom) --add it in the new spot
|
|
carryFilterFrom, carryFilterTo = nil, nil
|
|
end,
|
|
dragOnClick = function(info)
|
|
filterPriority("buffs", unit, carryFilterFrom, true)
|
|
end,
|
|
stateSwitchGetText = function(_, text)
|
|
local SF, localized = E.global.unitframe.specialFilters[text], L[text]
|
|
local blockText = SF and localized and text:match("^block") and localized:gsub("^%[.-]%s?", "")
|
|
return (blockText and format("|cFF999999%s|r %s", L["BLOCK"], blockText)) or localized or text
|
|
end,
|
|
stateSwitchOnClick = function()
|
|
filterPriority("buffs", unit, carryFilterFrom, nil, nil, true)
|
|
end,
|
|
values = function()
|
|
local str = E.db.nameplates.units[unit].buffs.filters.priority
|
|
if str == "" then return {} end
|
|
return {strsplit(",", str)}
|
|
end,
|
|
get = function(_, value)
|
|
local str = E.db.nameplates.units[unit].buffs.filters.priority
|
|
if str == "" then return end
|
|
local tbl = {strsplit(",", str)}
|
|
return tbl[value]
|
|
end,
|
|
set = function()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer3 = {
|
|
order = 9,
|
|
type = "description",
|
|
name = L["Use drag and drop to rearrange filter priority or right click to remove a filter."] ..
|
|
"\n" ..
|
|
L["Use Shift+LeftClick to toggle between friendly or enemy or normal state. Normal state will allow the filter to be checked on all units. Friendly state is for friendly units only and enemy state is for enemy units."]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
debuffsGroup = {
|
|
order = 4,
|
|
type = "group",
|
|
name = L["Debuffs"],
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].debuffs[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].debuffs[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
header = {
|
|
order = 0,
|
|
type = "header",
|
|
name = L["Debuffs"]
|
|
},
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
perrow = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Per Row"],
|
|
min = 1, max = 20, step = 1,
|
|
},
|
|
numrows = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Num Rows"],
|
|
min = 1, max = 10, step = 1
|
|
},
|
|
size = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Icon Size"],
|
|
min = 6, max = 60, step = 1
|
|
},
|
|
spacing = {
|
|
order = 5,
|
|
type = "range",
|
|
name = L["Spacing"],
|
|
min = 0, max = 60, step = 1
|
|
},
|
|
xOffset = {
|
|
order = 6,
|
|
type = "range",
|
|
name = L["X-Offset"],
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
yOffset = {
|
|
order = 7,
|
|
type = "range",
|
|
name = L["Y-Offset"],
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
anchorPoint = {
|
|
order = 8,
|
|
type = "select",
|
|
name = L["Anchor Point"],
|
|
desc = L["What point to anchor to the frame you set to attach to."],
|
|
values = positionValues
|
|
},
|
|
attachTo = {
|
|
order = 9,
|
|
type = "select",
|
|
name = L["Attach To"],
|
|
values = {
|
|
["FRAME"] = L["Nameplate"],
|
|
["BUFFS"] = L["Buffs"],
|
|
}
|
|
},
|
|
growthX = {
|
|
order = 10,
|
|
type = "select",
|
|
name = L["Growth X-Direction"],
|
|
values = {
|
|
["LEFT"] = L["Left"],
|
|
["RIGHT"] = L["Right"]
|
|
}
|
|
},
|
|
growthY = {
|
|
order = 11,
|
|
type = "select",
|
|
name = L["Growth Y-Direction"],
|
|
values = {
|
|
["UP"] = L["Up"],
|
|
["DOWN"] = L["Down"]
|
|
}
|
|
},
|
|
cooldownOrientation = {
|
|
order = 12,
|
|
type = "select",
|
|
name = L["Cooldown Orientation"],
|
|
values = {
|
|
["VERTICAL"] = L["Vertical"],
|
|
["HORIZONTAL"] = L["Horizontal"]
|
|
}
|
|
},
|
|
reverseCooldown = {
|
|
order = 13,
|
|
type = "toggle",
|
|
name = L["Reverse Cooldown"],
|
|
},
|
|
stacks = {
|
|
order = 14,
|
|
type = "group",
|
|
name = L["Stack Counter"],
|
|
guiInline = true,
|
|
get = function(info, value)
|
|
return E.db.nameplates.units[unit].debuffs[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].debuffs[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
countFont = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Font"],
|
|
dialogControl = "LSM30_Font",
|
|
values = AceGUIWidgetLSMlists.font
|
|
},
|
|
countFontSize = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["FONT_SIZE"],
|
|
min = 4, max = 20, step = 1 -- max 20 cause otherwise it looks weird
|
|
},
|
|
countFontOutline = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Font Outline"],
|
|
desc = L["Set the font outline."],
|
|
values = C.Values.FontFlags
|
|
},
|
|
countPosition = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Position"],
|
|
values = {
|
|
["TOP"] = "TOP",
|
|
["LEFT"] = "LEFT",
|
|
["BOTTOM"] = "BOTTOM",
|
|
["CENTER"] = "CENTER",
|
|
["TOPLEFT"] = "TOPLEFT",
|
|
["BOTTOMLEFT"] = "BOTTOMLEFT",
|
|
["BOTTOMRIGHT"] = "BOTTOMRIGHT",
|
|
["RIGHT"] = "RIGHT",
|
|
["TOPRIGHT"] = "TOPRIGHT"
|
|
}
|
|
},
|
|
countXOffset = {
|
|
order = 5,
|
|
name = L["X-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
countYOffset = {
|
|
order = 6,
|
|
name = L["Y-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
}
|
|
}
|
|
},
|
|
duration = {
|
|
order = 15,
|
|
type = "group",
|
|
name = L["Duration"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].debuffs[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].debuffs[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
durationFont = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Font"],
|
|
dialogControl = "LSM30_Font",
|
|
values = AceGUIWidgetLSMlists.font
|
|
},
|
|
durationFontSize = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["FONT_SIZE"],
|
|
min = 4, max = 20, step = 1 -- max 20 cause otherwise it looks weird
|
|
},
|
|
durationFontOutline = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Font Outline"],
|
|
desc = L["Set the font outline."],
|
|
values = C.Values.FontFlags
|
|
},
|
|
durationPosition = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Position"],
|
|
values = {
|
|
["TOP"] = "TOP",
|
|
["LEFT"] = "LEFT",
|
|
["BOTTOM"] = "BOTTOM",
|
|
["CENTER"] = "CENTER",
|
|
["TOPLEFT"] = "TOPLEFT",
|
|
["BOTTOMLEFT"] = "BOTTOMLEFT",
|
|
["BOTTOMRIGHT"] = "BOTTOMRIGHT",
|
|
["RIGHT"] = "RIGHT",
|
|
["TOPRIGHT"] = "TOPRIGHT"
|
|
}
|
|
},
|
|
durationXOffset = {
|
|
order = 5,
|
|
name = L["X-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
durationYOffset = {
|
|
order = 6,
|
|
name = L["Y-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
}
|
|
}
|
|
},
|
|
filtersGroup = {
|
|
order = 16,
|
|
type = "group",
|
|
name = L["FILTERS"],
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].debuffs.filters[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].debuffs.filters[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
guiInline = true,
|
|
args = {
|
|
minDuration = {
|
|
order = 1,
|
|
type = "range",
|
|
name = L["Minimum Duration"],
|
|
desc = L["Don't display auras that are shorter than this duration (in seconds). Set to zero to disable."],
|
|
min = 0, max = 10800, step = 1
|
|
},
|
|
maxDuration = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Maximum Duration"],
|
|
desc = L["Don't display auras that are longer than this duration (in seconds). Set to zero to disable."],
|
|
min = 0, max = 10800, step = 1
|
|
},
|
|
jumpToFilter = {
|
|
order = 3,
|
|
type = "execute",
|
|
name = L["Filters Page"],
|
|
desc = L["Shortcut to global filters."],
|
|
func = function()
|
|
ACD:SelectGroup("ElvUI", "filters")
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 4,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
specialFilters = {
|
|
order = 5,
|
|
type = "select",
|
|
sortByValue = true,
|
|
name = L["Add Special Filter"],
|
|
desc = L["These filters don't use a list of spells like the regular filters. Instead they use the WoW API and some code logic to determine if an aura should be allowed or blocked."],
|
|
values = function()
|
|
local filters = {}
|
|
local list = E.global.nameplates.specialFilters
|
|
if not (list and next(list)) then return filters end
|
|
|
|
for filter in pairs(list) do
|
|
filters[filter] = L[filter]
|
|
end
|
|
return filters
|
|
end,
|
|
set = function(info, value)
|
|
filterPriority("debuffs", unit, value)
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
filter = {
|
|
order = 6,
|
|
type = "select",
|
|
name = L["Add Regular Filter"],
|
|
desc = L["These filters use a list of spells to determine if an aura should be allowed or blocked. The content of these filters can be modified in the 'Filters' section of the config."],
|
|
values = function()
|
|
local filters = {}
|
|
local list = E.global.unitframe.aurafilters
|
|
if not (list and next(list)) then return filters end
|
|
|
|
for filter in pairs(list) do
|
|
filters[filter] = filter
|
|
end
|
|
return filters
|
|
end,
|
|
set = function(info, value)
|
|
filterPriority("debuffs", unit, value)
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
resetPriority = {
|
|
order = 7,
|
|
type = "execute",
|
|
name = L["Reset Priority"],
|
|
desc = L["Reset filter priority to the default state."],
|
|
func = function()
|
|
E.db.nameplates.units[unit].debuffs.filters.priority = P.nameplates.units[unit].debuffs.filters.priority
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
filterPriority = {
|
|
order = 8,
|
|
type = "multiselect",
|
|
name = L["Filter Priority"],
|
|
dragdrop = true,
|
|
dragOnLeave = E.noop, --keep this here
|
|
dragOnEnter = function(info)
|
|
carryFilterTo = info.obj.value
|
|
end,
|
|
dragOnMouseDown = function(info)
|
|
carryFilterFrom, carryFilterTo = info.obj.value, nil
|
|
end,
|
|
dragOnMouseUp = function(info)
|
|
filterPriority("debuffs", unit, carryFilterTo, nil, carryFilterFrom) --add it in the new spot
|
|
carryFilterFrom, carryFilterTo = nil, nil
|
|
end,
|
|
dragOnClick = function(info)
|
|
filterPriority("debuffs", unit, carryFilterFrom, true)
|
|
end,
|
|
stateSwitchGetText = function(_, text)
|
|
local SF, localized = E.global.unitframe.specialFilters[text], L[text]
|
|
local blockText = SF and localized and text:match("^block") and localized:gsub("^%[.-]%s?", "")
|
|
return (blockText and format("|cFF999999%s|r %s", L["BLOCK"], blockText)) or localized or text
|
|
end,
|
|
stateSwitchOnClick = function(info)
|
|
filterPriority("debuffs", unit, carryFilterFrom, nil, nil, true)
|
|
end,
|
|
values = function()
|
|
local str = E.db.nameplates.units[unit].debuffs.filters.priority
|
|
if str == "" then return {} end
|
|
return {strsplit(",", str)}
|
|
end,
|
|
get = function(info, value)
|
|
local str = E.db.nameplates.units[unit].debuffs.filters.priority
|
|
if str == "" then return end
|
|
local tbl = {strsplit(",", str)}
|
|
return tbl[value]
|
|
end,
|
|
set = function(info)
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer3 = {
|
|
order = 9,
|
|
type = "description",
|
|
name = L["Use drag and drop to rearrange filter priority or right click to remove a filter."] ..
|
|
"\n" ..
|
|
L["Use Shift+LeftClick to toggle between friendly or enemy or normal state. Normal state will allow the filter to be checked on all units. Friendly state is for friendly units only and enemy state is for enemy units."]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
levelGroup = {
|
|
order = 5,
|
|
name = L["LEVEL"],
|
|
type = "group",
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].level[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].level[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
header = {
|
|
order = 0,
|
|
type = "header",
|
|
name = L["LEVEL"]
|
|
},
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
fontGroup = {
|
|
type = "group",
|
|
order = 2,
|
|
name = L["Fonts"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].level[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].level[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
font = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Font"],
|
|
dialogControl = "LSM30_Font",
|
|
values = AceGUIWidgetLSMlists.font
|
|
},
|
|
fontSize = {
|
|
order = 2,
|
|
name = L["FONT_SIZE"],
|
|
type = "range",
|
|
min = 4, max = 32, step = 1
|
|
},
|
|
fontOutline = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Font Outline"],
|
|
desc = L["Set the font outline."],
|
|
values = C.Values.FontFlags
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
nameGroup = {
|
|
order = 6,
|
|
type = "group",
|
|
name = L["Name"],
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].name[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].name[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
header = {
|
|
order = 0,
|
|
type = "header",
|
|
name = L["Name"]
|
|
},
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
abbrev = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Abbreviation"]
|
|
},
|
|
fontGroup = {
|
|
type = "group",
|
|
order = 7,
|
|
name = L["Fonts"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].name[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].name[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
font = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Font"],
|
|
dialogControl = "LSM30_Font",
|
|
values = AceGUIWidgetLSMlists.font
|
|
},
|
|
fontSize = {
|
|
order = 2,
|
|
name = L["FONT_SIZE"],
|
|
type = "range",
|
|
min = 4, max = 32, step = 1
|
|
},
|
|
fontOutline = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Font Outline"],
|
|
desc = L["Set the font outline."],
|
|
values = C.Values.FontFlags
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
raidTargetIndicator = {
|
|
order = 7,
|
|
name = L["Raid Icon"],
|
|
type = "group",
|
|
get = function(info)
|
|
return E.db.nameplates.units[unit].raidTargetIndicator[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units[unit].raidTargetIndicator[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
header = {
|
|
order = 0,
|
|
type = "header",
|
|
name = L["Raid Icon"]
|
|
},
|
|
size = {
|
|
order = 1,
|
|
type = "range",
|
|
name = L["Size"],
|
|
min = 12, max = 64, step = 1
|
|
},
|
|
position = {
|
|
order = 2,
|
|
type = "select",
|
|
name = L["Icon Position"],
|
|
values = {
|
|
["LEFT"] = L["Left"],
|
|
["RIGHT"] = L["Right"],
|
|
["TOP"] = L["Top"],
|
|
["BOTTOM"] = L["Bottom"],
|
|
["CENTER"] = L["Center"]
|
|
}
|
|
},
|
|
xOffset = {
|
|
order = 3,
|
|
name = L["X-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
yOffset = {
|
|
order = 4,
|
|
name = L["Y-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if unit == "FRIENDLY_PLAYER" or unit == "ENEMY_PLAYER" then
|
|
if unit == "ENEMY_PLAYER" then
|
|
group.args.markHealers = {
|
|
order = 7,
|
|
type = "group",
|
|
name = L["Healer Icon"],
|
|
get = function(info) return E.db.nameplates.units.ENEMY_PLAYER[info[#info]] end,
|
|
set = function(info, value) E.db.nameplates.units.ENEMY_PLAYER[info[#info]] = value NP:PLAYER_ENTERING_WORLD() NP:ConfigureAll() end,
|
|
args = {
|
|
header = {
|
|
order = 1,
|
|
type = "header",
|
|
name = L["Healer Icon"]
|
|
},
|
|
markHealers = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
desc = L["Display a healer icon over known healers inside battlegrounds or arenas."]
|
|
}
|
|
}
|
|
}
|
|
end
|
|
group.args.healthGroup.args.useClassColor = {
|
|
order = 4.5,
|
|
type = "toggle",
|
|
name = L["Use Class Color"]
|
|
}
|
|
group.args.nameGroup.args.useClassColor = {
|
|
order = 3,
|
|
type = "toggle",
|
|
name = L["Use Class Color"]
|
|
}
|
|
elseif unit == "ENEMY_NPC" or unit == "FRIENDLY_NPC" then
|
|
group.args.eliteIcon = {
|
|
order = 7,
|
|
type = "group",
|
|
name = L["Elite Icon"],
|
|
get = function(info) return E.db.nameplates.units[unit].eliteIcon[info[#info]] end,
|
|
set = function(info, value) E.db.nameplates.units[unit].eliteIcon[info[#info]] = value NP:ConfigureAll() end,
|
|
args = {
|
|
header = {
|
|
order = 1,
|
|
type = "header",
|
|
name = L["Elite Icon"]
|
|
},
|
|
enable = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
position = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Position"],
|
|
values = {
|
|
["LEFT"] = L["Left"],
|
|
["RIGHT"] = L["Right"],
|
|
["TOP"] = L["Top"],
|
|
["BOTTOM"] = L["Bottom"],
|
|
["CENTER"] = L["Center"]
|
|
},
|
|
disabled = function() return not E.db.nameplates.units[unit].eliteIcon.enable end
|
|
},
|
|
spacer = {
|
|
order = 4,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
size = {
|
|
order = 5,
|
|
type = "range",
|
|
name = L["Size"],
|
|
min = 12, max = 42, step = 1,
|
|
disabled = function() return not E.db.nameplates.units[unit].eliteIcon.enable end
|
|
},
|
|
xOffset = {
|
|
order = 6,
|
|
type = "range",
|
|
name = L["X-Offset"],
|
|
min = -100, max = 100, step = 1,
|
|
disabled = function() return not E.db.nameplates.units[unit].eliteIcon.enable end
|
|
},
|
|
yOffset = {
|
|
order = 7,
|
|
type = "range",
|
|
name = L["Y-Offset"],
|
|
min = -100, max = 100, step = 1,
|
|
disabled = function() return not E.db.nameplates.units[unit].eliteIcon.enable end
|
|
}
|
|
}
|
|
}
|
|
group.args.iconFrame = {
|
|
order = 8,
|
|
type = "group",
|
|
name = L["Icon Frame"],
|
|
get = function(info) return E.db.nameplates.units[unit].iconFrame[info[#info]] end,
|
|
set = function(info, value) E.db.nameplates.units[unit].iconFrame[info[#info]] = value NP:ConfigureAll() end,
|
|
args = {
|
|
header = {
|
|
order = 1,
|
|
type = "header",
|
|
name = L["Icon Frame"]
|
|
},
|
|
enable = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
size = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Size"],
|
|
min = 8, max = 48, step = 1,
|
|
},
|
|
position = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Position"],
|
|
values = {
|
|
["CENTER"] = "CENTER",
|
|
["TOPLEFT"] = "TOPLEFT",
|
|
["BOTTOMLEFT"] = "BOTTOMLEFT",
|
|
["TOPRIGHT"] = "TOPRIGHT",
|
|
["BOTTOMRIGHT"] = "BOTTOMRIGHT"
|
|
}
|
|
},
|
|
parent = {
|
|
order = 5,
|
|
type = "select",
|
|
name = L["Parent"],
|
|
values = {
|
|
["Nameplate"] = L["Nameplate"],
|
|
["Health"] = L["Health"]
|
|
}
|
|
},
|
|
xOffset = {
|
|
order = 6,
|
|
name = L["X-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
},
|
|
yOffset = {
|
|
order = 7,
|
|
name = L["Y-Offset"],
|
|
type = "range",
|
|
min = -100, max = 100, step = 1
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
ORDER = ORDER + 2
|
|
return group
|
|
end
|
|
|
|
E.Options.args.nameplate = {
|
|
type = "group",
|
|
name = L["NamePlates"],
|
|
childGroups = "tree",
|
|
get = function(info) return E.db.nameplates[info[#info]] end,
|
|
set = function(info, value) E.db.nameplates[info[#info]] = value NP:ConfigureAll() end,
|
|
args = {
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info) return E.private.nameplates[info[#info]] end,
|
|
set = function(info, value) E.private.nameplates[info[#info]] = value E:StaticPopup_Show("PRIVATE_RL") end
|
|
},
|
|
intro = {
|
|
order = 2,
|
|
type = "description",
|
|
name = L["NAMEPLATE_DESC"]
|
|
},
|
|
header = {
|
|
order = 3,
|
|
type = "header",
|
|
name = L["Shortcuts"]
|
|
},
|
|
spacer1 = {
|
|
order = 4,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
generalShortcut = {
|
|
order = 5,
|
|
type = "execute",
|
|
name = L["General"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "generalGroup", "general") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
fontsShortcut = {
|
|
order = 6,
|
|
type = "execute",
|
|
name = L["Fonts"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "generalGroup", "fontGroup") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
cooldownShortcut = {
|
|
order = 7,
|
|
type = "execute",
|
|
name = L["Cooldowns"],
|
|
func = function() ACD:SelectGroup("ElvUI", "cooldown", "nameplates") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
threatShortcut = {
|
|
order = 8,
|
|
type = "execute",
|
|
name = L["Threat"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "generalGroup", "threatGroup") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
spacer2 = {
|
|
order = 9,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
castBarShortcut = {
|
|
order = 10,
|
|
type = "execute",
|
|
name = L["Cast Bar"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "generalGroup", "castGroup") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
reactionShortcut = {
|
|
order = 12,
|
|
type = "execute",
|
|
name = L["Reaction Colors"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "generalGroup", "reactions") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
cutawayHealthShortcut = {
|
|
order = 13,
|
|
type = "execute",
|
|
name = L["Cutaway Bars"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "generalGroup", "cutawayHealth") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
spacer3 = {
|
|
order = 14,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
friendlyPlayerShortcut = {
|
|
order = 15,
|
|
type = "execute",
|
|
name = L["FRIENDLY_PLAYER"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "friendlyPlayerGroup") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
friendlyNPCShortcut = {
|
|
order = 16,
|
|
type = "execute",
|
|
name = L["FRIENDLY_NPC"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "friendlyNPCGroup") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
enemyPlayerShortcut = {
|
|
order = 17,
|
|
type = "execute",
|
|
name = L["ENEMY_PLAYER"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "enemyPlayerGroup") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
enemyNPCShortcut = {
|
|
order = 18,
|
|
type = "execute",
|
|
name = L["ENEMY_NPC"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "enemyNPCGroup") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
spacer4 = {
|
|
order = 19,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
filtersShortcut = {
|
|
order = 20,
|
|
type = "execute",
|
|
name = L["Style Filter"],
|
|
func = function() ACD:SelectGroup("ElvUI", "nameplate", "filters") end,
|
|
disabled = function() return not E.NamePlates.Initialized end
|
|
},
|
|
generalGroup = {
|
|
order = 21,
|
|
type = "group",
|
|
name = L["General Options"],
|
|
childGroups = "tab",
|
|
disabled = function() return not E.NamePlates.Initialized end,
|
|
args = {
|
|
general = {
|
|
order = 1,
|
|
type = "group",
|
|
name = L["General"],
|
|
get = function(info)
|
|
return E.db.nameplates[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
header = {
|
|
order = 1,
|
|
type = "header",
|
|
name = L["General"]
|
|
},
|
|
statusbar = {
|
|
order = 2,
|
|
type = "select",
|
|
dialogControl = "LSM30_Statusbar",
|
|
name = L["StatusBar Texture"],
|
|
values = AceGUIWidgetLSMlists.statusbar
|
|
},
|
|
motionType = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["UNIT_NAMEPLATES_TYPES"],
|
|
desc = L["Set to either stack nameplates vertically or allow them to overlap."],
|
|
values = {
|
|
["STACKED"] = L["UNIT_NAMEPLATES_TYPE_2"],
|
|
["OVERLAP"] = L["UNIT_NAMEPLATES_TYPE_1"]
|
|
}
|
|
},
|
|
lowHealthThreshold = {
|
|
order = 4,
|
|
name = L["Low Health Threshold"],
|
|
desc = L["Make the unitframe glow yellow when it is below this percent of health, it will glow red when the health value is half of this value."],
|
|
type = "range",
|
|
isPercent = true,
|
|
min = 0, max = 1, step = 0.01
|
|
},
|
|
showEnemyCombat = {
|
|
order = 5,
|
|
type = "select",
|
|
name = L["Enemy Combat Toggle"],
|
|
desc = L["Control enemy nameplates toggling on or off when in combat."],
|
|
values = {
|
|
["DISABLED"] = L["DISABLE"],
|
|
["TOGGLE_ON"] = L["Toggle On While In Combat"],
|
|
["TOGGLE_OFF"] = L["Toggle Off While In Combat"]
|
|
},
|
|
set = function(info, value)
|
|
E.db.nameplates[info[#info]] = value
|
|
NP:PLAYER_REGEN_ENABLED()
|
|
end
|
|
},
|
|
showFriendlyCombat = {
|
|
order = 6,
|
|
type = "select",
|
|
name = L["Friendly Combat Toggle"],
|
|
desc = L["Control friendly nameplates toggling on or off when in combat."],
|
|
values = {
|
|
["DISABLED"] = L["DISABLE"],
|
|
["TOGGLE_ON"] = L["Toggle On While In Combat"],
|
|
["TOGGLE_OFF"] = L["Toggle Off While In Combat"]
|
|
},
|
|
set = function(info, value)
|
|
E.db.nameplates[info[#info]] = value
|
|
NP:PLAYER_REGEN_ENABLED()
|
|
end
|
|
},
|
|
resetFilters = {
|
|
order = 7,
|
|
type = "execute",
|
|
name = L["Reset Aura Filters"],
|
|
func = function(info, value)
|
|
E:StaticPopup_Show("RESET_NP_AF") --reset nameplate aurafilters
|
|
end
|
|
},
|
|
fadeIn = {
|
|
order = 8,
|
|
type = "toggle",
|
|
name = L["Alpha Fading"]
|
|
},
|
|
smoothbars = {
|
|
order = 9,
|
|
type = "toggle",
|
|
name = L["Smooth Bars"],
|
|
desc = L["Bars will transition smoothly."],
|
|
set = function(info, value)
|
|
E.db.nameplates[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
highlight = {
|
|
order = 10,
|
|
type = "toggle",
|
|
name = L["Hover Highlight"]
|
|
},
|
|
nameColoredGlow = {
|
|
order = 11,
|
|
type = "toggle",
|
|
name = L["Name Colored Glow"],
|
|
desc = L["Use the Name Color of the unit for the Name Glow."],
|
|
disabled = function() return not E.db.nameplates.highlight end
|
|
},
|
|
clickThrough = {
|
|
order = 51,
|
|
type = "group",
|
|
childGroups = "tabs",
|
|
name = L["Click Through"],
|
|
get = function(info)
|
|
return E.db.nameplates.clickThrough[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.clickThrough[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
friendly = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Friendly"],
|
|
},
|
|
enemy = {
|
|
order = 3,
|
|
type = "toggle",
|
|
name = L["Enemy"]
|
|
}
|
|
}
|
|
},
|
|
clickableRange = {
|
|
order = 52,
|
|
type = "group",
|
|
childGroups = "tabs",
|
|
name = L["Clickable Size"],
|
|
args = {
|
|
friendly = {
|
|
order = 1,
|
|
type = "group",
|
|
guiInline = true,
|
|
name = L["Friendly"],
|
|
get = function(info)
|
|
return E.db.nameplates.plateSize[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.plateSize[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
friendlyWidth = {
|
|
order = 1,
|
|
type = "range",
|
|
name = L["Clickable Width / Width"],
|
|
desc = L["Change the width and controls how big of an area on the screen will accept clicks to target unit."],
|
|
min = 50,
|
|
max = 250,
|
|
step = 1
|
|
},
|
|
friendlyHeight = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Clickable Height"],
|
|
desc = L["Controls how big of an area on the screen will accept clicks to target unit."],
|
|
min = 10,
|
|
max = 75,
|
|
step = 1
|
|
}
|
|
}
|
|
},
|
|
enemy = {
|
|
order = 2,
|
|
type = "group",
|
|
guiInline = true,
|
|
name = L["Enemy"],
|
|
get = function(info)
|
|
return E.db.nameplates.plateSize[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.plateSize[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
enemyWidth = {
|
|
order = 1,
|
|
type = "range",
|
|
name = L["Clickable Width / Width"],
|
|
desc = L["Change the width and controls how big of an area on the screen will accept clicks to target unit."],
|
|
min = 50,
|
|
max = 250,
|
|
step = 1
|
|
},
|
|
enemyHeight = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Clickable Height"],
|
|
desc = L["Controls how big of an area on the screen will accept clicks to target unit."],
|
|
min = 10,
|
|
max = 75,
|
|
step = 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
colorsGroup = {
|
|
order = 2,
|
|
type = "group",
|
|
name = L["COLORS"],
|
|
args = {
|
|
general = {
|
|
order = 1,
|
|
type = "group",
|
|
name = L["General"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
local t = E.db.nameplates.colors[info[#info]]
|
|
local d = P.nameplates.colors[info[#info]]
|
|
return t.r, t.g, t.b, t.a, d.r, d.g, d.b, d.a
|
|
end,
|
|
set = function(info, r, g, b, a)
|
|
local t = E.db.nameplates.colors[info[#info]]
|
|
t.r, t.g, t.b, t.a = r, g, b, a
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
glowColor = {
|
|
name = L["Target Indicator Color"],
|
|
type = "color",
|
|
order = 5,
|
|
hasAlpha = true
|
|
}
|
|
}
|
|
},
|
|
threat = {
|
|
order = 2,
|
|
type = "group",
|
|
name = L["Threat"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
local t = E.db.nameplates.colors.threat[info[#info]]
|
|
local d = P.nameplates.colors.threat[info[#info]]
|
|
return t.r, t.g, t.b, t.a, d.r, d.g, d.b, d.a
|
|
end,
|
|
set = function(info, r, g, b, a)
|
|
local t = E.db.nameplates.colors.threat[info[#info]]
|
|
t.r, t.g, t.b, t.a = r, g, b, a
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
goodColor = {
|
|
type = "color",
|
|
order = 1,
|
|
name = L["Good Color"],
|
|
hasAlpha = false,
|
|
disabled = function()
|
|
return not E.db.nameplates.threat.useThreatColor
|
|
end
|
|
},
|
|
goodTransition = {
|
|
type = "color",
|
|
order = 2,
|
|
name = L["Good Transition Color"],
|
|
hasAlpha = false,
|
|
disabled = function()
|
|
return not E.db.nameplates.threat.useThreatColor
|
|
end
|
|
},
|
|
badTransition = {
|
|
name = L["Bad Transition Color"],
|
|
order = 3,
|
|
type = "color",
|
|
hasAlpha = false,
|
|
disabled = function()
|
|
return not E.db.nameplates.threat.useThreatColor
|
|
end
|
|
},
|
|
badColor = {
|
|
name = L["Bad Color"],
|
|
order = 4,
|
|
type = "color",
|
|
hasAlpha = false,
|
|
disabled = function()
|
|
return not E.db.nameplates.threat.useThreatColor
|
|
end
|
|
},
|
|
}
|
|
},
|
|
castGroup = {
|
|
order = 3,
|
|
type = "group",
|
|
name = L["Cast Bar"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
local t = E.db.nameplates.colors[info[#info]]
|
|
local d = P.nameplates.colors[info[#info]]
|
|
return t.r, t.g, t.b, t.a, d.r, d.g, d.b
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local t = E.db.nameplates.colors[info[#info]]
|
|
t.r, t.g, t.b = r, g, b
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
castColor = {
|
|
order = 1,
|
|
type = "color",
|
|
name = L["Cast Color"],
|
|
hasAlpha = false
|
|
},
|
|
castNoInterruptColor = {
|
|
order = 2,
|
|
type = "color",
|
|
name = L["Cast No Interrupt Color"],
|
|
hasAlpha = false
|
|
},
|
|
castInterruptedColor = {
|
|
order = 3,
|
|
type = "color",
|
|
name = L["INTERRUPTED"],
|
|
hasAlpha = false
|
|
},
|
|
castbarDesaturate = {
|
|
order = 4,
|
|
type = "toggle",
|
|
name = L["Desaturated Icon"],
|
|
desc = L["Show the castbar icon desaturated if a spell is not interruptible."],
|
|
get = function(info)
|
|
return E.db.nameplates.colors[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.colors[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
}
|
|
},
|
|
reactions = {
|
|
order = 4,
|
|
type = "group",
|
|
name = L["Reaction Colors"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
local t = E.db.nameplates.colors.reactions[info[#info]]
|
|
local d = P.nameplates.colors.reactions[info[#info]]
|
|
return t.r, t.g, t.b, t.a, d.r, d.g, d.b
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local t = E.db.nameplates.colors.reactions[info[#info]]
|
|
t.r, t.g, t.b = r, g, b
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
friendlyPlayer = {
|
|
order = 1,
|
|
type = "color",
|
|
name = L["FRIENDLY_PLAYER"],
|
|
hasAlpha = false
|
|
},
|
|
bad = {
|
|
order = 2,
|
|
type = "color",
|
|
name = L["ENEMY"],
|
|
hasAlpha = false
|
|
},
|
|
neutral = {
|
|
order = 3,
|
|
type = "color",
|
|
name = L["Neutral"],
|
|
hasAlpha = false
|
|
},
|
|
good = {
|
|
order = 4,
|
|
type = "color",
|
|
name = L["FRIENDLY_NPC"],
|
|
hasAlpha = false
|
|
}
|
|
}
|
|
},
|
|
comboPoints = {
|
|
order = 5,
|
|
type = "group",
|
|
name = L["COMBO_POINTS"],
|
|
guiInline = true,
|
|
args = {}
|
|
},
|
|
}
|
|
},
|
|
threatGroup = {
|
|
order = 5,
|
|
type = "group",
|
|
name = L["Threat"],
|
|
get = function(info)
|
|
local t = E.db.nameplates.threat[info[#info]]
|
|
local d = P.nameplates.threat[info[#info]]
|
|
return t.r, t.g, t.b, t.a, d.r, d.g, d.b
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local t = E.db.nameplates.threat[info[#info]]
|
|
t.r, t.g, t.b = r, g, b
|
|
end,
|
|
args = {
|
|
header = {
|
|
order = 1,
|
|
type = "header",
|
|
name = L["Threat"]
|
|
},
|
|
useThreatColor = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Use Threat Color"],
|
|
get = function(info) return E.db.nameplates.threat.useThreatColor end,
|
|
set = function(info, value) E.db.nameplates.threat.useThreatColor = value end
|
|
},
|
|
goodScale = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Good Scale"],
|
|
get = function(info) return E.db.nameplates.threat[info[#info]] end,
|
|
set = function(info, value) E.db.nameplates.threat[info[#info]] = value end,
|
|
min = 0.3, max = 2, step = 0.01,
|
|
isPercent = true
|
|
},
|
|
badScale = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Bad Scale"],
|
|
get = function(info) return E.db.nameplates.threat[info[#info]] end,
|
|
set = function(info, value) E.db.nameplates.threat[info[#info]] = value end,
|
|
min = 0.3, max = 2, step = 0.01,
|
|
isPercent = true
|
|
},
|
|
}
|
|
},
|
|
cutawayHealth = {
|
|
order = 9,
|
|
type = "group",
|
|
name = L["Cutaway Bars"],
|
|
args = {
|
|
header = {
|
|
order = 1,
|
|
type = "header",
|
|
name = L["Cutaway Bars"]
|
|
},
|
|
enabled = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info) return E.db.nameplates.cutawayHealth end,
|
|
set = function(info, value) E.db.nameplates.cutawayHealth = value end,
|
|
},
|
|
healthLength = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Health Length"],
|
|
desc = L["How much time before the cutaway health starts to fade."],
|
|
min = 0.1, max = 1, step = 0.1,
|
|
get = function(info) return E.db.nameplates.cutawayHealthLength end,
|
|
set = function(info, value) E.db.nameplates.cutawayHealthLength = value end,
|
|
disabled = function() return not E.db.nameplates.cutawayHealth end
|
|
},
|
|
healthFadeOutTime = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Fade Out"],
|
|
desc = L["How long the cutaway health will take to fade out."],
|
|
min = 0.1, max = 1, step = 0.1,
|
|
get = function(info) return E.db.nameplates.cutawayHealthFadeOutTime end,
|
|
set = function(info, value) E.db.nameplates.cutawayHealthFadeOutTime = value end,
|
|
disabled = function() return not E.db.nameplates.cutawayHealth end
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
friendlyPlayerGroup = GetUnitSettings("FRIENDLY_PLAYER", L["FRIENDLY_PLAYER"]),
|
|
friendlyNPCGroup = GetUnitSettings("FRIENDLY_NPC", L["FRIENDLY_NPC"]),
|
|
enemyPlayerGroup = GetUnitSettings("ENEMY_PLAYER", L["ENEMY_PLAYER"]),
|
|
enemyNPCGroup = GetUnitSettings("ENEMY_NPC", L["ENEMY_NPC"]),
|
|
targetGroup = {
|
|
order = 200,
|
|
type = "group",
|
|
name = L["TARGET"],
|
|
get = function(info)
|
|
return E.db.nameplates.units.TARGET[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units.TARGET[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function()
|
|
return not E.NamePlates.Initialized
|
|
end,
|
|
args = {
|
|
useTargetScale = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Use Target Scale"],
|
|
desc = L["Enable/Disable the scaling of targetted nameplates."],
|
|
get = function(info) return E.db.nameplates.useTargetScale end,
|
|
set = function(info, value)
|
|
E.db.nameplates.useTargetScale = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
targetScale = {
|
|
order = 2,
|
|
type = "range",
|
|
isPercent = true,
|
|
name = L["Target Scale"],
|
|
desc = L["Scale of the nameplate that is targetted."],
|
|
min = 0.3, max = 2, step = 0.01,
|
|
get = function(info) return E.db.nameplates.targetScale end,
|
|
set = function(info, value)
|
|
E.db.nameplates.targetScale = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function() return E.db.nameplates.useTargetScale ~= true end
|
|
},
|
|
nonTargetTransparency = {
|
|
order = 3,
|
|
type = "range",
|
|
isPercent = true,
|
|
name = L["Non-Target Alpha"],
|
|
min = 0, max = 1, step = 0.01,
|
|
get = function(info) return E.db.nameplates.nonTargetTransparency end,
|
|
set = function(info, value)
|
|
E.db.nameplates.nonTargetTransparency = value
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
spacer1 = {
|
|
order = 4,
|
|
type = "description",
|
|
name = " "
|
|
},
|
|
glowStyle = {
|
|
order = 5,
|
|
type = "select",
|
|
name = L["Target/Low Health Indicator"],
|
|
customWidth = 225,
|
|
values = {
|
|
["none"] = L["NONE"],
|
|
["style1"] = L["Border Glow"],
|
|
["style2"] = L["Background Glow"],
|
|
["style3"] = L["Top Arrow"],
|
|
["style4"] = L["Side Arrows"],
|
|
["style5"] = L["Border Glow"].." + "..L["Top Arrow"],
|
|
["style6"] = L["Background Glow"].." + "..L["Top Arrow"],
|
|
["style7"] = L["Border Glow"].." + "..L["Side Arrows"],
|
|
["style8"] = L["Background Glow"].." + "..L["Side Arrows"]
|
|
}
|
|
},
|
|
alwaysShowTargetHealth = {
|
|
order = 7,
|
|
type = "toggle",
|
|
name = L["Always Show Target Health"],
|
|
get = function(info) return E.db.nameplates.alwaysShowTargetHealth end,
|
|
set = function(info, value)
|
|
E.db.nameplates.alwaysShowTargetHealth = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
customWidth = 200
|
|
},
|
|
comboPointsGroup = {
|
|
order = 8,
|
|
type = "group",
|
|
name = L["COMBO_POINTS"],
|
|
guiInline = true,
|
|
get = function(info)
|
|
return E.db.nameplates.units.TARGET.comboPoints[info[#info]]
|
|
end,
|
|
set = function(info, value)
|
|
E.db.nameplates.units.TARGET.comboPoints[info[#info]] = value
|
|
NP:ConfigureAll()
|
|
end,
|
|
args = {
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
width = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Width"],
|
|
min = 4, max = 30, step = 1,
|
|
disabled = function() return not E.db.nameplates.units.TARGET.comboPoints.enable end
|
|
},
|
|
height = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["Height"],
|
|
min = 4, max = 30, step = 1,
|
|
disabled = function() return not E.db.nameplates.units.TARGET.comboPoints.enable end
|
|
},
|
|
spacing = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["Spacing"],
|
|
min = 3, max = 20, step = 1,
|
|
disabled = function() return not E.db.nameplates.units.TARGET.comboPoints.enable end
|
|
},
|
|
xOffset = {
|
|
order = 5,
|
|
type = "range",
|
|
name = L["X-Offset"],
|
|
min = -100, max = 100, step = 1,
|
|
disabled = function() return not E.db.nameplates.units.TARGET.comboPoints.enable end
|
|
},
|
|
yOffset = {
|
|
order = 6,
|
|
type = "range",
|
|
name = L["Y-Offset"],
|
|
min = -100, max = 100, step = 1,
|
|
disabled = function() return not E.db.nameplates.units.TARGET.comboPoints.enable end
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
filters = {
|
|
order = -99,
|
|
type = "group",
|
|
name = L["Style Filter"],
|
|
childGroups = "tab",
|
|
disabled = function() return not E.NamePlates.Initialized end,
|
|
args = {
|
|
addFilter = {
|
|
order = 1,
|
|
type = "input",
|
|
name = L["Create Filter"],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then
|
|
return
|
|
end
|
|
if E.global.nameplates.filters[value] then
|
|
E:Print(L["Filter already exists!"])
|
|
return
|
|
end
|
|
local filter = {}
|
|
NP:StyleFilterCopyDefaults(filter)
|
|
E.global.nameplates.filters[value] = filter
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end
|
|
},
|
|
selectFilter = {
|
|
order = 2,
|
|
type = "select",
|
|
sortByValue = true,
|
|
name = L["Select Filter"],
|
|
get = function(info) return selectedNameplateFilter end,
|
|
set = function(info, value) selectedNameplateFilter = value UpdateFilterGroup() end,
|
|
values = function()
|
|
local filters, priority, name = {}
|
|
local list = E.global.nameplates.filters
|
|
local profile = E.db.nameplates.filters
|
|
if not list then return end
|
|
for filter, content in pairs(list) do
|
|
priority = (content.triggers and content.triggers.priority) or "?"
|
|
name = (content.triggers and profile[filter] and profile[filter].triggers and profile[filter].triggers.enable and filter) or (content.triggers and format("|cFF666666%s|r", filter)) or filter
|
|
filters[filter] = format("|cFFffff00(%s)|r %s", priority, name)
|
|
end
|
|
return filters
|
|
end
|
|
},
|
|
removeFilter = {
|
|
order = 3,
|
|
type = "execute",
|
|
name = L["Delete Filter"],
|
|
desc = L["Delete a created filter, you cannot delete pre-existing filters, only custom ones."],
|
|
func = function()
|
|
for profile in pairs(E.data.profiles) do
|
|
if E.data.profiles[profile].nameplates and E.data.profiles[profile].nameplates.filters and E.data.profiles[profile].nameplates.filters[selectedNameplateFilter] then
|
|
E.data.profiles[profile].nameplates.filters[selectedNameplateFilter] = nil
|
|
end
|
|
end
|
|
E.global.nameplates.filters[selectedNameplateFilter] = nil
|
|
selectedNameplateFilter = nil
|
|
UpdateFilterGroup()
|
|
NP:ConfigureAll()
|
|
end,
|
|
disabled = function() return G.nameplates.filters[selectedNameplateFilter] end,
|
|
hidden = function() return selectedNameplateFilter == nil end
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
for i = 1, 5 do
|
|
E.Options.args.nameplate.args.generalGroup.args.colorsGroup.args.comboPoints.args["COMBO_POINTS" .. i] = {
|
|
type = "color",
|
|
order = i,
|
|
name = L["COMBO_POINTS"] .. " #" .. i,
|
|
get = function(info)
|
|
local t = E.db.nameplates.colors.comboPoints[i]
|
|
local d = P.nameplates.colors.comboPoints[i]
|
|
return t.r, t.g, t.b, t.a, d.r, d.g, d.b
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local t = E.db.nameplates.colors.comboPoints[i]
|
|
t.r, t.g, t.b = r, g, b
|
|
NP:ConfigureAll()
|
|
end
|
|
}
|
|
end |