local SLE , _ , E , L = unpack ( select ( 2 , ... ) )
local UF = E.UnitFrames
local SUF = SLE.UnitFrames
local texPath = [[Interface\AddOns\ElvUI_SLE\media\textures\role\]]
local texPathE = [[Interface\AddOns\ElvUI\media\textures\]]
local CUSTOM = CUSTOM
local LEVEL = LEVEL
local roleValues = { }
local wipe = wipe
local function CreateOfflineConfig ( group )
local config = {
order = 5 ,
type = ' group ' ,
name = L [ " Offline Indicator " ] ,
get = function ( info ) return E.db . sle.unitframes . unit [ group ] . offline [ info [ # info ] ] end ,
set = function ( info , value ) E.db . sle.unitframes . unit [ group ] . offline [ info [ # info ] ] = value ; UF : CreateAndUpdateHeaderGroup ( group ) end ,
args = {
enable = {
order = 1 ,
type = ' toggle ' ,
name = L [ " Enable " ] ,
} ,
size = {
order = 2 ,
type = ' range ' ,
name = L [ " Size " ] ,
min = 10 , max = 120 , step = 1 ,
} ,
xOffset = {
order = 3 ,
type = ' range ' ,
name = L [ " X-Offset " ] ,
min = - 600 , max = 600 , step = 1 ,
} ,
yOffset = {
order = 4 ,
type = ' range ' ,
name = L [ " Y-Offset " ] ,
min = - 600 , max = 600 , step = 1 ,
} ,
texture = {
order = 5 ,
type = ' select ' ,
name = L [ " Texture " ] ,
values = {
ALERT = [[|TInterface\DialogFrame\UI-Dialog-Icon-AlertNew:14|t]] ,
ARTHAS = [[|TInterface\LFGFRAME\UI-LFR-PORTRAIT:14|t]] ,
SKULL = [[|TInterface\LootFrame\LootPanel-Icon:14|t]] ,
PASS = [[|TInterface\PaperDollInfoFrame\UI-GearManager-LeaveItem-Transparent:14|t]] ,
NOTREADY = [[|TInterface\RAIDFRAME\ReadyCheck-NotReady:14|t]] ,
CUSTOM = CUSTOM ,
} ,
} ,
CustomTexture = {
order = 6 ,
type = ' input ' ,
name = L [ " Custom Texture " ] ,
width = ' full ' ,
disabled = function ( ) return E.db . sle.unitframes . unit [ group ] . offline.texture ~= ' CUSTOM ' end ,
} ,
} ,
}
return config
end
local function CreateDeadConfig ( group )
local config = {
order = 6 ,
type = ' group ' ,
name = L [ " Dead Indicator " ] ,
get = function ( info ) return E.db . sle.unitframes . unit [ group ] . dead [ info [ # info ] ] end ,
set = function ( info , value ) E.db . sle.unitframes . unit [ group ] . dead [ info [ # info ] ] = value ; UF : CreateAndUpdateHeaderGroup ( group ) end ,
args = {
enable = {
order = 1 ,
type = ' toggle ' ,
name = L [ " Enable " ]
} ,
size = {
order = 2 ,
type = ' range ' ,
name = L [ " Size " ] ,
min = 10 , max = 120 , step = 1 ,
} ,
xOffset = {
order = 3 ,
type = ' range ' ,
name = L [ " X-Offset " ] ,
min = - 600 , max = 600 , step = 1 ,
} ,
yOffset = {
order = 4 ,
type = ' range ' ,
name = L [ " Y-Offset " ] ,
min = - 600 , max = 600 , step = 1 ,
} ,
texture = {
order = 5 ,
type = ' select ' ,
name = L [ " Texture " ] ,
values = {
SKULL = [[|TInterface\LootFrame\LootPanel-Icon:14|t]] ,
SKULL1 = [[|TInterface\AddOns\ElvUI_SLE\media\textures\SKULL:14|t]] ,
SKULL2 = [[|TInterface\AddOns\ElvUI_SLE\media\textures\SKULL1:14|t]] ,
SKULL3 = [[|TInterface\AddOns\ElvUI_SLE\media\textures\SKULL2:14|t]] ,
SKULL4 = [[|TInterface\AddOns\ElvUI_SLE\media\textures\SKULL3:14|t]] ,
CUSTOM = CUSTOM ,
} ,
} ,
CustomTexture = {
order = 6 ,
type = ' input ' ,
name = L [ " Custom Texture " ] ,
width = ' full ' ,
disabled = function ( ) return E.db . sle.unitframes . unit [ group ] . dead.texture ~= ' CUSTOM ' end ,
} ,
} ,
}
return config
end
local function CreateAurasConfig ( unitID )
local config = {
order = 6 ,
type = ' group ' ,
name = L [ " Auras " ] ,
args = {
buffs = {
order = 1 ,
type = ' group ' ,
name = L [ " Buffs " ] ,
guiInline = true ,
get = function ( info ) return E.db . sle.unitframes . unit [ unitID ] . auras.buffs [ info [ # info ] ] end ,
set = function ( info , value ) E.db . sle.unitframes . unit [ unitID ] . auras.buffs [ info [ # info ] ] = value end ,
args = {
threshold = {
order = 1 ,
type = ' range ' ,
name = L [ " Low Threshold " ] ,
desc = L [ " Threshold before text turns red and is in decimal form. Set to -1 for it to never turn red " ] ,
min = - 1 , max = 20 , step = 1 ,
} ,
} ,
} ,
debuffs = {
order = 2 ,
type = ' group ' ,
name = L [ " Debuffs " ] ,
guiInline = true ,
get = function ( info ) return E.db . sle.unitframes . unit [ unitID ] . auras.debuffs [ info [ # info ] ] end ,
set = function ( info , value ) E.db . sle.unitframes . unit [ unitID ] . auras.debuffs [ info [ # info ] ] = value end ,
args = {
threshold = {
order = 1 ,
type = ' range ' ,
name = L [ " Low Threshold " ] ,
desc = L [ " Threshold before text turns red and is in decimal form. Set to -1 for it to never turn red " ] ,
min = - 1 , max = 20 , step = 1 ,
} ,
} ,
} ,
} ,
}
return config
end
local function configTable ( )
if not SLE.initialized then return end
local ACH = E.Libs . ACH
E.Options . args.sle . args.modules . args.unitframes = {
order = 1 ,
type = ' group ' ,
name = L [ " UnitFrames " ] ,
childGroups = ' tab ' ,
disabled = function ( ) return not E.private . unitframe.enable end ,
args = {
desc = ACH : Description ( L [ " Options for customizing unit frames. Please don't change these setting when ElvUI's testing frames for bosses and arena teams are shown. That will make them invisible until retoggling. " ] , 1 ) ,
Reset = {
order = 2 ,
type = ' execute ' ,
name = L [ " Restore Defaults " ] ,
desc = L [ " Reset these options to defaults " ] ,
func = function ( ) SLE : Reset ( ' unitframes ' ) end ,
} ,
roleicons = {
order = 3 ,
type = ' select ' ,
name = L [ " LFG Icons " ] ,
desc = L [ " Choose what icon set will unitframes and chat use. " ] ,
get = function ( info ) return E.db . sle.unitframes [ info [ # info ] ] end ,
set = function ( info , value ) E.db . sle.unitframes [ info [ # info ] ] = value ; E.Chat : CheckLFGRoles ( ) ; UF : UpdateAllHeaders ( ) end ,
values = function ( )
wipe ( roleValues )
for name , path in pairs ( SLE.rolePaths ) do
roleValues [ name ] = name .. ' |T ' .. path [ ' TANK ' ] .. ' :15:15:0:0:64:64:2:56:2:56|t ' .. ' |T ' .. path [ ' HEALER ' ] .. ' :15:15:0:0:64:64:2:56:2:56|t ' .. ' |T ' .. path [ ' DAMAGER ' ] .. ' :15:15:0:0:64:64:2:56:2:56|t '
end
return roleValues
end ,
-- values = {
-- ['ElvUI'] = 'ElvUI '..'|T'..texPathE..'tank:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPathE..'healer:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPathE..'dps:15:15:0:0:64:64:2:56:2:56|t ',
-- ['SupervillainUI'] = 'Supervillain UI '..'|T'..texPath..'svui-tank:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPath..'svui-healer:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPath..'svui-dps:15:15:0:0:64:64:2:56:2:56|t ',
-- ['Blizzard'] = 'Blizzard '..'|T'..texPath..'blizz-tank:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPath..'blizz-healer:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPath..'blizz-dps:15:15:0:0:64:64:2:56:2:56|t ',
-- ['MiirGui'] = 'MiirGui '..'|T'..texPath..'mg-tank:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPath..'mg-healer:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPath..'mg-dps:15:15:0:0:64:64:2:56:2:56|t ',
-- ['Lyn'] = 'Lyn '..'|T'..texPath..'lyn-tank:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPath..'lyn-healer:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPath..'lyn-dps:15:15:0:0:64:64:2:56:2:56|t ',
-- ['Philmod'] = 'Philmod '..'|T'..texPath..'philmod-tank:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPath..'philmod-healer:15:15:0:0:64:64:2:56:2:56|t '..'|T'..texPath..'philmod-dps:15:15:0:0:64:64:2:56:2:56|t ',
-- },
} ,
player = {
order = 10 ,
type = ' group ' ,
name = L [ " Player Frame " ] ,
args = {
pvpIconText = {
order = 5 ,
type = ' group ' ,
name = L [ " PvP & Prestige Icon " ] ,
get = function ( info ) return E.db . sle.unitframes . unit.player . pvpIconText [ info [ # info ] ] end ,
set = function ( info , value ) E.db . sle.unitframes . unit.player . pvpIconText [ info [ # info ] ] = value ; UF : Configure_PVPIcon ( _G.ElvUF_Player ) end ,
args = {
enable = {
order = 1 ,
type = ' toggle ' ,
name = L [ " Enable " ] ,
} ,
xoffset = {
order = 2 ,
type = ' range ' ,
name = L [ " X-Offset " ] ,
min = - 300 , max = 300 , step = 1 ,
} ,
yoffset = {
order = 3 ,
type = ' range ' ,
name = L [ " Y-Offset " ] ,
min = - 150 , max = 150 , step = 1 ,
} ,
level = {
order = 4 ,
type = ' toggle ' ,
name = LEVEL ,
} ,
} ,
} ,
auras = CreateAurasConfig ( ' player ' ) ,
} ,
} ,
pet = {
order = 11 ,
type = ' group ' ,
name = L [ " Pet Frame " ] ,
args = {
auras = CreateAurasConfig ( ' pet ' ) ,
} ,
} ,
pettarget = {
order = 12 ,
type = ' group ' ,
name = L [ " PetTarget Frame " ] ,
args = {
auras = CreateAurasConfig ( ' pettarget ' ) ,
} ,
} ,
target = {
order = 13 ,
type = ' group ' ,
name = L [ " Target Frame " ] ,
args = {
pvpIconText = {
order = 5 ,
type = ' group ' ,
name = L [ " PvP & Prestige Icon " ] ,
get = function ( info ) return E.db . sle.unitframes . unit.target . pvpIconText [ info [ # info ] ] end ,
set = function ( info , value ) E.db . sle.unitframes . unit.target . pvpIconText [ info [ # info ] ] = value ; UF : Configure_PVPIcon ( _G.ElvUF_Target ) end ,
args = {
level = {
order = 4 ,
type = ' toggle ' ,
name = LEVEL ,
} ,
} ,
} ,
auras = CreateAurasConfig ( ' target ' ) ,
} ,
} ,
targettarget = {
order = 14 ,
type = ' group ' ,
name = L [ " TargetTarget Frame " ] ,
args = {
auras = CreateAurasConfig ( ' targettarget ' ) ,
} ,
} ,
targettargettarget = {
order = 15 ,
type = ' group ' ,
name = L [ " TargetTargetTarget Frame " ] ,
args = {
auras = CreateAurasConfig ( ' targettargettarget ' ) ,
} ,
} ,
focus = {
order = 16 ,
type = ' group ' ,
name = L [ " Focus Frame " ] ,
args = {
auras = CreateAurasConfig ( ' focus ' ) ,
} ,
} ,
focustarget = {
order = 17 ,
type = ' group ' ,
name = L [ " FocusTarget Frame " ] ,
args = {
auras = CreateAurasConfig ( ' focustarget ' ) ,
} ,
} ,
party = {
order = 20 ,
type = ' group ' ,
name = L [ " Party Frames " ] ,
args = {
configureToggle = {
order = - 10 ,
type = ' execute ' ,
name = L [ " Display Frames " ] ,
func = function ( )
UF : HeaderConfig ( _G.ElvUF_Party , _G.ElvUF_Party . forceShow ~= true or nil )
end ,
} ,
offline = CreateOfflineConfig ( ' party ' ) ,
dead = CreateDeadConfig ( ' party ' ) ,
auras = CreateAurasConfig ( ' party ' ) ,
} ,
} ,
raid = {
order = 21 ,
type = ' group ' ,
name = L [ " Raid Frames " ] ,
args = {
configureToggle = {
order = - 10 ,
type = ' execute ' ,
name = L [ " Display Frames " ] ,
func = function ( )
UF : HeaderConfig ( _G.ElvUF_Raid , _G.ElvUF_Raid . forceShow ~= true or nil )
end ,
} ,
offline = CreateOfflineConfig ( ' raid ' ) ,
dead = CreateDeadConfig ( ' raid ' ) ,
auras = CreateAurasConfig ( ' raid ' ) ,
} ,
} ,
raid40 = {
order = 22 ,
type = ' group ' ,
name = L [ " Raid-40 Frames " ] ,
args = {
configureToggle = {
order = - 10 ,
type = ' execute ' ,
name = L [ " Display Frames " ] ,
func = function ( )
UF : HeaderConfig ( _G.ElvUF_Raid40 , _G.ElvUF_Raid40 . forceShow ~= true or nil )
end ,
} ,
offline = CreateOfflineConfig ( ' raid40 ' ) ,
dead = CreateDeadConfig ( ' raid40 ' ) ,
auras = CreateAurasConfig ( ' raid40 ' ) ,
} ,
} ,
boss = {
order = 23 ,
type = ' group ' ,
name = L [ " Boss Frames " ] ,
args = {
auras = CreateAurasConfig ( ' boss ' ) ,
} ,
} ,
arena = {
order = 24 ,
type = ' group ' ,
name = L [ " Arena Frames " ] ,
args = {
auras = CreateAurasConfig ( " arena " ) ,
} ,
} ,
statusbars = {
order = 50 ,
type = ' group ' ,
name = L [ " Statusbars " ] ,
get = function ( info ) return E.db . sle.unitframes . statusTextures [ info [ # info ] ] end ,
set = function ( info , value ) E.db . sle.unitframes . statusTextures [ info [ # info ] ] = value ; SUF : BuildStatusTable ( ) ; SUF : UpdateStatusBars ( ) end ,
args = {
power = {
order = 1 ,
type = ' toggle ' ,
name = L [ " Power " ] ,
disabled = function ( ) return SLE._Compatibility [ ' ElvUI_CustomTweaks ' ] end ,
get = function ( info ) return E.private . sle.unitframe . statusbarTextures [ info [ # info ] ] end ,
set = function ( info , value ) E.private . sle.unitframe . statusbarTextures [ info [ # info ] ] = value ; E : StaticPopup_Show ( ' PRIVATE_RL ' ) end ,
} ,
powerTexture = {
order = 2 ,
type = ' select ' ,
name = L [ " Power Texture " ] ,
dialogControl = ' LSM30_Statusbar ' ,
disabled = function ( ) return not E.private . unitframe.enable or not E.private . sle.unitframe . statusbarTextures.power or SLE._Compatibility [ ' ElvUI_CustomTweaks ' ] end ,
values = AceGUIWidgetLSMlists.statusbar ,
} ,
spacer1 = ACH : Spacer ( 3 ) ,
cast = {
order = 4 ,
type = ' toggle ' ,
name = L [ " Castbar " ] ,
get = function ( info ) return E.private . sle.unitframe . statusbarTextures [ info [ # info ] ] end ,
set = function ( info , value ) E.private . sle.unitframe . statusbarTextures [ info [ # info ] ] = value ; E : StaticPopup_Show ( ' PRIVATE_RL ' ) end ,
} ,
castTexture = {
order = 5 ,
type = ' select ' ,
name = L [ " Castbar Texture " ] ,
dialogControl = ' LSM30_Statusbar ' ,
disabled = function ( ) return not E.private . unitframe.enable or not E.private . sle.unitframe . statusbarTextures.cast end ,
values = AceGUIWidgetLSMlists.statusbar ,
} ,
spacer2 = ACH : Spacer ( 6 ) ,
aura = {
order = 7 ,
type = ' toggle ' ,
name = L [ " Aura Bars " ] ,
get = function ( info ) return E.private . sle.unitframe . statusbarTextures [ info [ # info ] ] end ,
set = function ( info , value ) E.private . sle.unitframe . statusbarTextures [ info [ # info ] ] = value ; E : StaticPopup_Show ( ' PRIVATE_RL ' ) end ,
} ,
auraTexture = {
order = 8 ,
type = ' select ' ,
name = L [ " Aura Bars Texture " ] ,
dialogControl = ' LSM30_Statusbar ' ,
disabled = function ( ) return not E.private . unitframe.enable or not E.private . sle.unitframe . statusbarTextures.aura end ,
values = AceGUIWidgetLSMlists.statusbar ,
} ,
spacer3 = ACH : Spacer ( 9 ) ,
class = {
order = 10 ,
type = ' toggle ' ,
name = L [ " Classbar " ] ,
get = function ( info ) return E.private . sle.unitframe . statusbarTextures [ info [ # info ] ] end ,
set = function ( info , value ) E.private . sle.unitframe . statusbarTextures [ info [ # info ] ] = value ; E : StaticPopup_Show ( ' PRIVATE_RL ' ) end ,
} ,
classTexture = {
order = 11 ,
type = ' select ' ,
name = L [ " Classbar Texture " ] ,
dialogControl = ' LSM30_Statusbar ' ,
disabled = function ( ) return not E.private . unitframe.enable or not E.private . sle.unitframe . statusbarTextures.class end ,
set = function ( info , value ) E.db . sle.unitframes . statusTextures [ info [ # info ] ] = value ; UF : CreateAndUpdateUF ( ' player ' ) end ,
values = AceGUIWidgetLSMlists.statusbar ,
} ,
} ,
} ,
} ,
}
end
tinsert ( SLE.Configs , configTable )