local Grid2Options = Grid2Options local L = Grid2Options.L local function MakeClassColorOption(status, options, type, translation) if not options.colors then options.colors = {type = "group", inline = true, name = L["Unit Colors"], args = {}} end options.colors.args[type] = { type = "color", name = (L["%s Color"]):format(translation), get = function() local c = status.dbx.colors[type] or status.dbx.colors[translation] or {r = 1, g = 1, b = 1, a = 1} return c.r, c.g, c.b, c.a end, set = function(_, r, g, b, a) local colorKey = status.dbx.colors[type] and type or translation local c = status.dbx.colors[colorKey] c.r, c.g, c.b, c.a = r, g, b, a status:UpdateAllIndicators() end } end local function MakeCharmedToggleOption(status, options) options.hostile = { type = "toggle", name = L["Color Charmed Unit"], desc = L["Color Units that are charmed."], width = "full", order = 105, tristate = false, get = function() return status.dbx.colorHostile end, set = function(_, v) status.dbx.colorHostile = v or nil end } end Grid2Options:RegisterStatusOptions("classcolor", "color", function(self, status, options, optionParams) MakeCharmedToggleOption(status, options) MakeClassColorOption(status, options, "HOSTILE", L["Charmed unit Color"]) MakeClassColorOption(status, options, "UNKNOWN_UNIT", L["Default unit Color"]) MakeClassColorOption(status, options, "UNKNOWN_PET", L["Default pet Color"]) for _, class in ipairs {"Beast", "Demon", "Humanoid", "Elemental"} do MakeClassColorOption(status, options, class, L[class]) end for class, translation in pairs(LOCALIZED_CLASS_NAMES_MALE) do MakeClassColorOption(status, options, class, translation) end end) Grid2Options:RegisterStatusOptions("creaturecolor", "color", function(self, status, options, optionParams) MakeCharmedToggleOption(status, options) MakeClassColorOption(status, options, "HOSTILE", L["Charmed unit Color"]) MakeClassColorOption(status, options, "UNKNOWN_UNIT", L["Default unit Color"]) for _, class in ipairs {"Beast", "Demon", "Humanoid", "Elemental"} do MakeClassColorOption(status, options, class, L[class]) end end) Grid2Options:RegisterStatusOptions( "friendcolor", "color", function(self, status, options, optionParams) self:MakeStatusColorOptions(status, options, optionParams) MakeCharmedToggleOption(status, options) end, { color1 = L["Player color"], color2 = L["Pet color"], color3 = L["Charmed unit Color"], width = "full" } ) Grid2Options:RegisterStatusOptions("color", "color", function(self, status, options, optionParams) self:MakeStatusColorOptions(status, options, optionParams) self:MakeStatusDeleteOptions(status, options, optionParams) end) Grid2Options:RegisterStatusOptions("charmed", "combat", Grid2Options.MakeStatusColorOptions, {titleIcon = "Interface\\Icons\\Spell_Shadow_ShadowWordDominate"})