From 50e16a313b37d85cf7693e6dc298481079fd5ae5 Mon Sep 17 00:00:00 2001 From: andrew6180 <16847730+andrew6180@users.noreply.github.com> Date: Wed, 31 May 2023 19:40:40 -0700 Subject: [PATCH] Modules/Auras: More fixes to aura filtering and nameplate auras --- ElvUI/Core/Tags.lua | 12 ++++ ElvUI/Modules/Nameplates/Elements/Auras.lua | 26 ++++---- .../Modules/Nameplates/Elements/BossMods.lua | 3 +- .../Modules/UnitFrames/Elements/AuraBars.lua | 5 +- ElvUI/Modules/UnitFrames/Elements/Auras.lua | 3 - ElvUI/Settings/Profile.lua | 31 ++++----- ElvUI_OptionsUI/Core.lua | 65 +++++++++++++++++++ ElvUI_OptionsUI/Nameplates.lua | 20 ++++-- 8 files changed, 121 insertions(+), 44 deletions(-) diff --git a/ElvUI/Core/Tags.lua b/ElvUI/Core/Tags.lua index 211719e..99d2640 100644 --- a/ElvUI/Core/Tags.lua +++ b/ElvUI/Core/Tags.lua @@ -782,6 +782,17 @@ E:AddTag('name:last', 'UNIT_NAME_UPDATE INSTANCE_ENCOUNTER_ENGAGE_UNIT', functio return name end) +E:AddTag('name:first', 'UNIT_NAME_UPDATE INSTANCE_ENCOUNTER_ENGAGE_UNIT', function(unit) + local unitName = UnitName(unit) + if unitName then + local name = strsplit(" ", unitName) + return name or unitName + end + + return unitName +end) + + E:AddTag('health:deficit-percent:nostatus', 'UNIT_HEALTH UNIT_MAXHEALTH', function(unit) local min, max = UnitHealth(unit), UnitHealthMax(unit) local deficit = (min / max) - 1 @@ -1372,6 +1383,7 @@ E.TagInfo = { ['name:abbrev:veryshort'] = { category = 'Names', description = "Displays the name of the unit with abbreviation (limited to 5 letters)" }, ['name:abbrev'] = { category = 'Names', description = "Displays the name of the unit with abbreviation (e.g. 'Shadowfury Witch Doctor' becomes 'S. W. Doctor')" }, ['name:last'] = { category = 'Names', description = "Displays the last word of the unit's name" }, + ['name:first'] = { category = 'Names', description = "Displays the first word of the unit's name" }, ['name:long:status'] = { category = 'Names', description = "Replace the name of the unit with 'DEAD' or 'OFFLINE' if applicable (limited to 20 letters)" }, ['name:long:translit'] = { category = 'Names', description = "Displays the name of the unit with transliteration for cyrillic letters (limited to 20 letters)" }, ['name:long'] = { category = 'Names', description = "Displays the name of the unit (limited to 20 letters)" }, diff --git a/ElvUI/Modules/Nameplates/Elements/Auras.lua b/ElvUI/Modules/Nameplates/Elements/Auras.lua index 4e22e9f..60e6061 100644 --- a/ElvUI/Modules/Nameplates/Elements/Auras.lua +++ b/ElvUI/Modules/Nameplates/Elements/Auras.lua @@ -7,6 +7,7 @@ local _G = _G local wipe = wipe local unpack = unpack local CreateFrame = CreateFrame +local find = string.find function NP:Construct_Auras(nameplate) local frameName = nameplate:GetName() @@ -21,8 +22,7 @@ function NP:Construct_Auras(nameplate) Buffs.isNamePlate = nameplate Buffs.initialAnchor = 'BOTTOMLEFT' - Buffs.growthX = 'RIGHT' - Buffs.growthY = 'UP' + Buffs.growthDirection = "RIGHT_UP" Buffs.type = 'buffs' Buffs.forceShow = nameplate == _G.ElvNP_Test Buffs.tickers = {} -- StyleFilters @@ -38,8 +38,7 @@ function NP:Construct_Auras(nameplate) Debuffs.disableMouse = true Debuffs.isNamePlate = nameplate Debuffs.initialAnchor = 'BOTTOMLEFT' - Debuffs.growthX = 'RIGHT' - Debuffs.growthY = 'UP' + Debuffs.growthDirection = "LEFT_UP" Debuffs.type = 'debuffs' Debuffs.forceShow = nameplate == _G.ElvNP_Test Debuffs.tickers = {} -- StyleFilters @@ -48,14 +47,12 @@ function NP:Construct_Auras(nameplate) Buffs.PreUpdate = UF.PreUpdateAura Buffs.PreSetPosition = UF.SortAuras - Buffs.SetPosition = UF.SetPosition Buffs.PostCreateIcon = NP.Construct_AuraIcon Buffs.PostUpdateIcon = UF.PostUpdateAura Buffs.CustomFilter = UF.AuraFilter Debuffs.PreUpdate = UF.PreUpdateAura Debuffs.PreSetPosition = UF.SortAuras - Debuffs.SetPosition = UF.SetPosition Debuffs.PostCreateIcon = NP.Construct_AuraIcon Debuffs.PostUpdateIcon = UF.PostUpdateAura Debuffs.CustomFilter = UF.AuraFilter @@ -66,14 +63,14 @@ end function NP:Construct_AuraIcon(button) if not button then return end - - button:SetTemplate(nil, nil, nil, nil, nil, true, true) + local offset = UF.thinBorders and E.mult or E.Border + button:SetTemplate(nil, nil, nil, UF.thinBorders, true) button.cd:SetReverse(true) - button.cd:SetInside(button) + button.cd:SetInside(button, offset, offset) button.icon:SetDrawLayer('ARTWORK') - button.icon:SetInside() + button.icon:SetInside(button, offset, offset) button.count:ClearAllPoints() button.count:Point('BOTTOMRIGHT', 1, 1) @@ -102,8 +99,7 @@ function NP:Configure_Auras(nameplate, auras, db) auras.numRows = db.numRows auras.onlyShowPlayer = false auras.spacing = db.spacing - auras.growthY = UF.MatchGrowthY[db.anchorPoint] or db.growthY - auras.growthX = UF.MatchGrowthX[db.anchorPoint] or db.growthX + auras.growthDirection = db.growthDirection or "RIGHT_UP" auras.xOffset = db.xOffset auras.yOffset = db.yOffset auras.anchorPoint = db.anchorPoint @@ -114,6 +110,8 @@ function NP:Configure_Auras(nameplate, auras, db) auras.attachTo = UF:GetAuraAnchorFrame(nameplate, db.attachTo) -- keep below SetSmartPosition auras.num = db.numAuras * db.numRows auras.db = db -- for auraSort + auras["growth-y"] = find(auras.growthDirection, "UP") and "UP" or "DOWN" + auras["growth-x"] = find(auras.growthDirection, "RIGHT") and "RIGHT" or "LEFT" local index = 1 while auras[index] do @@ -177,6 +175,10 @@ function NP:UpdateAuraSettings(button) button.count:FontTemplate(LSM:Fetch('font', db.countFont), db.countFontSize, db.countFontOutline) end + if button.icon then + button.icon:SetTexCoord(unpack(E.TexCoords)) + end + if button.auraInfo then wipe(button.auraInfo) else diff --git a/ElvUI/Modules/Nameplates/Elements/BossMods.lua b/ElvUI/Modules/Nameplates/Elements/BossMods.lua index 6ecafdc..e84112b 100644 --- a/ElvUI/Modules/Nameplates/Elements/BossMods.lua +++ b/ElvUI/Modules/Nameplates/Elements/BossMods.lua @@ -282,8 +282,7 @@ function NP:Update_BossMods(plate) element.db = db element.spacing = db.spacing element.initialAnchor = inverse - element.growthY = UF.MatchGrowthY[anchor] or db.growthY - element.growthX = UF.MatchGrowthX[anchor] or db.growthX + element.growthDirection = db.growthDirection or "RIGHT_UP" element.size = db.size + (db.spacing or 0) element.height = not db.keepSizeRatio and db.height element.rows = {} diff --git a/ElvUI/Modules/UnitFrames/Elements/AuraBars.lua b/ElvUI/Modules/UnitFrames/Elements/AuraBars.lua index 8e205fa..890f976 100644 --- a/ElvUI/Modules/UnitFrames/Elements/AuraBars.lua +++ b/ElvUI/Modules/UnitFrames/Elements/AuraBars.lua @@ -218,8 +218,6 @@ function UF:CheckFilter(name, caster, spellID, isFriend, isPlayer, isUnit, allow return true, spell.priority -- this is the only difference from auarbars code elseif filterType and (filterType == "Blacklist") and (spell and spell.enable) then return false - elseif allowDuration then - return true end elseif filterName == "Personal" and isPlayer and allowDuration then return true @@ -244,6 +242,9 @@ function UF:CheckFilter(name, caster, spellID, isFriend, isPlayer, isUnit, allow end end end + if allowDuration then + return true + end end function UF:AuraBarFilter(unit, name, _, _, _, debuffType, duration, _, unitCaster, isStealable, _, spellID) diff --git a/ElvUI/Modules/UnitFrames/Elements/Auras.lua b/ElvUI/Modules/UnitFrames/Elements/Auras.lua index b7c0d15..fba8b75 100644 --- a/ElvUI/Modules/UnitFrames/Elements/Auras.lua +++ b/ElvUI/Modules/UnitFrames/Elements/Auras.lua @@ -17,9 +17,6 @@ local UnitCanAttack = UnitCanAttack local UnitIsFriend = UnitIsFriend local UnitIsUnit = UnitIsUnit -UF.MatchGrowthY = { TOP = 'TOP', BOTTOM = 'BOTTOM' } -UF.MatchGrowthX = { LEFT = 'LEFT', RIGHT = 'RIGHT' } - UF.SortAuraFuncs = { TIME_REMAINING = function(a, b, dir) local A = a.noTime and huge or a.expiration or -huge diff --git a/ElvUI/Settings/Profile.lua b/ElvUI/Settings/Profile.lua index 76085b2..d9bb988 100644 --- a/ElvUI/Settings/Profile.lua +++ b/ElvUI/Settings/Profile.lua @@ -273,8 +273,7 @@ local NP_Auras = { attachTo = 'FRAME', keepSizeRatio = true, anchorPoint = 'TOPLEFT', - growthX = 'RIGHT', - growthY = 'UP', + growthDirection = 'RIGHT_UP', onlyShowPlayer = false, stackAuras = true, sortDirection = 'DESCENDING', @@ -487,8 +486,7 @@ P.nameplates = { bossMods = { enable = true, anchorPoint = 'BOTTOM', - growthX = 'RIGHT', - growthY = 'DOWN', + growthDirection = 'RIGHT_UP', size = 34, height = 24, spacing = 1, @@ -707,8 +705,7 @@ end P.nameplates.units.PLAYER.buffs.maxDuration = 300 P.nameplates.units.PLAYER.buffs.priority = 'Blacklist,blockNoDuration,Personal,TurtleBuffs,PlayerBuffs' P.nameplates.units.PLAYER.debuffs.anchorPoint = 'TOPRIGHT' -P.nameplates.units.PLAYER.debuffs.growthX = 'LEFT' -P.nameplates.units.PLAYER.debuffs.growthY = 'UP' +P.nameplates.units.PLAYER.debuffs.growthDirection = 'LEFT_UP' P.nameplates.units.PLAYER.debuffs.yOffset = 35 P.nameplates.units.PLAYER.debuffs.priority = 'Blacklist,blockNoDuration,Personal,Boss,CCDebuffs,RaidDebuffs,Dispellable' P.nameplates.units.PLAYER.name.enable = false @@ -719,35 +716,31 @@ P.nameplates.units.PLAYER.castbar.yOffset = -20 P.nameplates.units.FRIENDLY_PLAYER.buffs.priority = 'Blacklist,blockNoDuration,Personal,TurtleBuffs' P.nameplates.units.FRIENDLY_PLAYER.debuffs.anchorPoint = 'TOPRIGHT' -P.nameplates.units.FRIENDLY_PLAYER.debuffs.growthX = 'LEFT' -P.nameplates.units.FRIENDLY_PLAYER.debuffs.growthY = 'UP' +P.nameplates.units.FRIENDLY_PLAYER.debuffs.growthDirection = 'LEFT_UP' P.nameplates.units.FRIENDLY_PLAYER.debuffs.yOffset = 35 -P.nameplates.units.FRIENDLY_PLAYER.debuffs.priority = 'Blacklist,Dispellable,blockNoDuration,Personal,CCDebuffs' +P.nameplates.units.FRIENDLY_PLAYER.debuffs.priority = 'Blacklist,Personal,RaidDebuffs,CCDebuffs,Whitelist' P.nameplates.units.ENEMY_PLAYER.buffs.priority = 'Blacklist,Dispellable,PlayerBuffs,TurtleBuffs' P.nameplates.units.ENEMY_PLAYER.buffs.maxDuration = 300 P.nameplates.units.ENEMY_PLAYER.debuffs.anchorPoint = 'TOPRIGHT' -P.nameplates.units.ENEMY_PLAYER.debuffs.growthX = 'LEFT' -P.nameplates.units.ENEMY_PLAYER.debuffs.growthY = 'UP' +P.nameplates.units.ENEMY_PLAYER.debuffs.growthDirection = 'LEFT_UP' P.nameplates.units.ENEMY_PLAYER.debuffs.yOffset = 35 -P.nameplates.units.ENEMY_PLAYER.debuffs.priority = 'Blacklist,blockNoDuration,Personal,CCDebuffs' +P.nameplates.units.ENEMY_PLAYER.debuffs.priority = 'Blacklist,Personal,RaidDebuffs,CCDebuffs,Whitelist' P.nameplates.units.ENEMY_PLAYER.name.format = '[classcolor][name:abbrev:long]' P.nameplates.units.FRIENDLY_NPC.buffs.priority = 'Blacklist,blockNoDuration,Personal,TurtleBuffs' P.nameplates.units.FRIENDLY_NPC.debuffs.anchorPoint = 'TOPRIGHT' -P.nameplates.units.FRIENDLY_NPC.debuffs.growthX = 'LEFT' -P.nameplates.units.FRIENDLY_NPC.debuffs.growthY = 'UP' +P.nameplates.units.FRIENDLY_NPC.debuffs.growthDirection = 'LEFT_UP' P.nameplates.units.FRIENDLY_NPC.debuffs.yOffset = 35 -P.nameplates.units.FRIENDLY_NPC.debuffs.priority = 'Blacklist,Dispellable,CCDebuffs,RaidDebuffs' +P.nameplates.units.FRIENDLY_NPC.debuffs.priority = 'Blacklist,Personal,RaidDebuffs,CCDebuffs,Whitelist' P.nameplates.units.FRIENDLY_NPC.level.format = '[difficultycolor][level][shortclassification]' P.nameplates.units.FRIENDLY_NPC.title.format = '[npctitle]' -P.nameplates.units.ENEMY_NPC.buffs.priority = 'Blacklist,RaidBuffsElvUI,Dispellable,blockNoDuration,CastByUnit' +P.nameplates.units.ENEMY_NPC.buffs.priority = 'Blacklist,blockNoDuration,Personal,TurtleBuffs' P.nameplates.units.ENEMY_NPC.debuffs.anchorPoint = 'TOPRIGHT' -P.nameplates.units.ENEMY_NPC.debuffs.growthX = 'LEFT' -P.nameplates.units.ENEMY_NPC.debuffs.growthY = 'UP' +P.nameplates.units.ENEMY_NPC.debuffs.growthDirection = 'LEFT_UP' P.nameplates.units.ENEMY_NPC.debuffs.yOffset = 35 -P.nameplates.units.ENEMY_NPC.debuffs.priority = 'Blacklist,Personal,CCDebuffs' +P.nameplates.units.ENEMY_NPC.debuffs.priority = 'Blacklist,Personal,RaidDebuffs,CCDebuffs,Whitelist' P.nameplates.units.ENEMY_NPC.level.format = '[difficultycolor][level][shortclassification]' P.nameplates.units.ENEMY_NPC.title.format = '[npctitle]' P.nameplates.units.ENEMY_NPC.name.format = '[name]' diff --git a/ElvUI_OptionsUI/Core.lua b/ElvUI_OptionsUI/Core.lua index 5a9b2a7..7a9fcc8 100644 --- a/ElvUI_OptionsUI/Core.lua +++ b/ElvUI_OptionsUI/Core.lua @@ -17,6 +17,71 @@ C.Values = { } } +do + C.StateSwitchGetText = function(_, TEXT) + local friend, enemy = strmatch(TEXT, '^Friendly:([^,]*)'), strmatch(TEXT, '^Enemy:([^,]*)') + local text, blockB, blockS, blockT = friend or enemy or TEXT + local SF, localized = E.global.unitframe.specialFilters[text], L[text] + if SF and localized and text:match('^block') then blockB, blockS, blockT = localized:match('^%[(.-)](%s?)(.+)') end + local filterText = (blockB and format('|cFF999999%s|r%s%s', blockB, blockS, blockT)) or localized or text + return (friend and format('|cFF33FF33%s|r %s', _G.FRIEND, filterText)) or (enemy and format('|cFFFF3333%s|r %s', _G.ENEMY, filterText)) or filterText + end + + local function filterMatch(s,v) + local m1, m2, m3, m4 = '^'..v..'$', '^'..v..',', ','..v..'$', ','..v..',' + return (strmatch(s, m1) and m1) or (strmatch(s, m2) and m2) or (strmatch(s, m3) and m3) or (strmatch(s, m4) and v..',') + end + + C.SetFilterPriority = function(db, groupName, auraType, value, remove, movehere, friendState) + if not auraType or not value then return end + local filter = db[groupName] and db[groupName][auraType] and db[groupName][auraType].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) + db[groupName][auraType].priority = tconcat(tbl,',') + elseif found and friendState then + local realValue = strmatch(value, '^Friendly:([^,]*)') or strmatch(value, '^Enemy:([^,]*)') or value + local friend = filterMatch(filter, E:EscapeString('Friendly:'..realValue)) + local enemy = filterMatch(filter, E:EscapeString('Enemy:'..realValue)) + local default = filterMatch(filter, E:EscapeString(realValue)) + + local state = + (friend and (not enemy) and format('%s%s','Enemy:',realValue)) --[x] friend [ ] enemy: > enemy + or ((not enemy and not friend) and format('%s%s','Friendly:',realValue)) --[ ] friend [ ] enemy: > friendly + or (enemy and (not friend) and default and format('%s%s','Friendly:',realValue)) --[ ] friend [x] enemy: (default exists) > friendly + or (enemy and (not friend) and strmatch(value, '^Enemy:') and realValue) --[ ] friend [x] enemy: (no default) > realvalue + or (friend and enemy and realValue) --[x] friend [x] enemy: > default + + if state then + local stateFound = filterMatch(filter, E:EscapeString(state)) + if not stateFound then + local tbl, sv = {strsplit(',',filter)} + for i in ipairs(tbl) do + if tbl[i] == value then + sv = i + break + end + end + tinsert(tbl, sv, state) + tremove(tbl, sv+1) + db[groupName][auraType].priority = tconcat(tbl,',') + end + end + elseif found and remove then + db[groupName][auraType].priority = gsub(filter, found, '') + elseif not found and not remove then + db[groupName][auraType].priority = (filter == '' and value) or (filter..','..value) + end + end +end + E:AddLib("AceGUI", "AceGUI-3.0") E:AddLib("AceConfig", "AceConfig-3.0-ElvUI") E:AddLib("AceConfigDialog", "AceConfigDialog-3.0-ElvUI") diff --git a/ElvUI_OptionsUI/Nameplates.lua b/ElvUI_OptionsUI/Nameplates.lua index 878ba0e..860112f 100644 --- a/ElvUI_OptionsUI/Nameplates.lua +++ b/ElvUI_OptionsUI/Nameplates.lua @@ -35,6 +35,17 @@ local positionValues = { BOTTOM = "BOTTOM" } +local growthDirectionValues = { + DOWN_RIGHT = format(L["%s and then %s"], L["Down"], L["Right"]), + DOWN_LEFT = format(L["%s and then %s"], L["Down"], L["Left"]), + UP_RIGHT = format(L["%s and then %s"], L["Up"], L["Right"]), + UP_LEFT = format(L["%s and then %s"], L["Up"], L["Left"]), + RIGHT_DOWN = format(L["%s and then %s"], L["Right"], L["Down"]), + RIGHT_UP = format(L["%s and then %s"], L["Right"], L["Up"]), + LEFT_DOWN = format(L["%s and then %s"], L["Left"], L["Down"]), + LEFT_UP = format(L["%s and then %s"], L["Left"], L["Up"]) +} + local minHeight, minWidth = 2, 40 local function MaxHeight(unit) local heightType = strfind(unit, 'FRIENDLY') and 'friendlyHeight' or strfind(unit, 'ENEMY') and 'enemyHeight' return max(NP.db.plateSize[heightType] or 0, 20) end local function MaxWidth(unit) local widthType = strfind(unit, 'FRIENDLY') and 'friendlyWidth' or strfind(unit, 'ENEMY') and 'enemyWidth' return max(NP.db.plateSize[widthType] or 0, 250) end @@ -160,8 +171,7 @@ local function GetUnitSettings(unit, name) group.args.buffsGroup.args.yOffset = ACH:Range(L["Y-Offset"], nil, 11, { min = -100, max = 100, step = 1 }) group.args.buffsGroup.args.anchorPoint = ACH:Select(L["Anchor Point"], L["What point to anchor to the frame you set to attach to."], 12, positionValues) group.args.buffsGroup.args.attachTo = ACH:Select(L["Attach To"], L["What to attach the anchor frame to."], 13, { FRAME = L["Frame"], DEBUFFS = L["Debuffs"], HEALTH = L["Health"], POWER = L["Power"] }, nil, nil, nil, nil, function() local position = E.db.nameplates.units[unit].smartAuraPosition return position == 'BUFFS_ON_DEBUFFS' or position == 'FLUID_BUFFS_ON_DEBUFFS' end) - group.args.buffsGroup.args.growthX = ACH:Select(L["Growth X-Direction"], nil, 14, { LEFT = L["Left"], RIGHT = L["Right"] }, nil, nil, nil, nil, function() local point = E.db.nameplates.units[unit].buffs.anchorPoint return point == 'LEFT' or point == 'RIGHT' end) - group.args.buffsGroup.args.growthY = ACH:Select(L["Growth Y-Direction"], nil, 15, { UP = L["Up"], DOWN = L["Down"] }, nil, nil, nil, nil, function() local point = E.db.nameplates.units[unit].buffs.anchorPoint return point == 'TOP' or point == 'BOTTOM' end) + group.args.buffsGroup.args.growthDirection = ACH:Select(L["Growth Direction"], nil, 14, growthDirectionValues) group.args.buffsGroup.args.sortMethod = ACH:Select(L["Sort By"], L["Method to sort by."], 16, { TIME_REMAINING = L["Time Remaining"], DURATION = L["Duration"], NAME = L["Name"], INDEX = L["Index"], PLAYER = L["Player"] }) group.args.buffsGroup.args.sortDirection = ACH:Select(L["Sort Direction"], L["Ascending or Descending order."], 17, { ASCENDING = L["Ascending"], DESCENDING = L["Descending"] }) @@ -214,8 +224,7 @@ local function GetUnitSettings(unit, name) group.args.debuffsGroup.args.yOffset = ACH:Range(L["Y-Offset"], nil, 11, { min = -100, max = 100, step = 1 }) group.args.debuffsGroup.args.anchorPoint = ACH:Select(L["Anchor Point"], L["What point to anchor to the frame you set to attach to."], 12, positionValues) group.args.debuffsGroup.args.attachTo = ACH:Select(L["Attach To"], L["What to attach the anchor frame to."], 13, { FRAME = L["Frame"], BUFFS = L["Buffs"], HEALTH = L["Health"], POWER = L["Power"] }, nil, nil, nil, nil, function() local position = E.db.nameplates.units[unit].smartAuraPosition return position == 'BUFFS_ON_DEBUFFS' or position == 'FLUID_BUFFS_ON_DEBUFFS' end) - group.args.debuffsGroup.args.growthX = ACH:Select(L["Growth X-Direction"], nil, 14, { LEFT = L["Left"], RIGHT = L["Right"] }, nil, nil, nil, nil, function() local point = E.db.nameplates.units[unit].debuffs.anchorPoint return point == 'LEFT' or point == 'RIGHT' end) - group.args.debuffsGroup.args.growthY = ACH:Select(L["Growth Y-Direction"], nil, 15, { UP = L["Up"], DOWN = L["Down"] }, nil, nil, nil, nil, function() local point = E.db.nameplates.units[unit].debuffs.anchorPoint return point == 'TOP' or point == 'BOTTOM' end) + group.args.debuffsGroup.args.growthDirection = ACH:Select(L["Growth Direction"], nil, 14, growthDirectionValues) group.args.debuffsGroup.args.sortMethod = ACH:Select(L["Sort By"], L["Method to sort by."], 16, { TIME_REMAINING = L["Time Remaining"], DURATION = L["Duration"], NAME = L["Name"], INDEX = L["Index"], PLAYER = L["Player"] }) group.args.debuffsGroup.args.sortDirection = ACH:Select(L["Sort Direction"], L["Ascending or Descending order."], 17, { ASCENDING = L["Ascending"], DESCENDING = L["Descending"] }) @@ -419,8 +428,7 @@ NamePlates.generalGroup.args.bossMods.args.settings.args.spacing = ACH:Range(L[" NamePlates.generalGroup.args.bossMods.args.settings.args.xOffset = ACH:Range(L["X-Offset"], nil, 5, { min = -100, max = 100, step = 1 }) NamePlates.generalGroup.args.bossMods.args.settings.args.yOffset = ACH:Range(L["Y-Offset"], nil, 6, { min = -100, max = 100, step = 1 }) NamePlates.generalGroup.args.bossMods.args.settings.args.anchorPoint = ACH:Select(L["Anchor Point"], L["What point to anchor to the frame you set to attach to."], 7, positionValues) -NamePlates.generalGroup.args.bossMods.args.settings.args.growthX = ACH:Select(L["Growth X-Direction"], nil, 8, { LEFT = L["Left"], RIGHT = L["Right"] }, nil, nil, nil, nil, function() local point = E.db.nameplates.bossMods.anchorPoint return point == 'LEFT' or point == 'RIGHT' end) -NamePlates.generalGroup.args.bossMods.args.settings.args.growthY = ACH:Select(L["Growth Y-Direction"], nil, 9, { UP = L["Up"], DOWN = L["Down"] }, nil, nil, nil, nil, function() local point = E.db.nameplates.bossMods.anchorPoint return point == 'TOP' or point == 'BOTTOM' end) +NamePlates.generalGroup.args.bossMods.args.settings.args.growthDirection = ACH:Select(L["Growth Direction"], nil, 14, growthDirectionValues) NamePlates.generalGroup.args.clickableRange = ACH:Group(L["Clickable Size"], nil, 70, nil, function(info) return E.db.nameplates.plateSize[info[#info]] end, function(info, value) E.db.nameplates.plateSize[info[#info]] = value NP:ConfigureAll() end)