assert(BigWigs, "BigWigs not found!") ------------------------------ -- Are you local? -- ------------------------------ local L = AceLibrary("AceLocale-2.0"):new("BigWigsColors") local PaintChips = AceLibrary("PaintChips-2.0") ---------------------------- -- Localization -- ---------------------------- L:RegisterTranslations("enUS", function() return { ["Colors"] = true, ["Messages"] = true, ["Bars"] = true, ["Shortbar"] = true, ["Longbar"] = true, ["Color %s"] = true, ["Color%s"] = true, ["Number of colors"] = true, ["xColors"] = true, ["Background"] = true, ["Text"] = true, ["Reset"] = true, ["Colors of messages and bars."] = true, ["Colors of messages."] = true, ["Change the color for \"%s\" messages."] = true, ["Colors of bars."] = true, ["Colors for short bars (< 1 minute)."] = true, ["Colors for long bars (> 1 minute)."] = true, ["Change the %s color."] = true, ["Number of colors the bar has."] = true, ["Change the background color."] = true, ["Change the text color."] = true, ["Resets all ranges to defaults."] = true, ["Important"] = true, ["Personal"] = true, ["Urgent"] = true, ["Attention"] = true, ["Positive"] = true, ["Bosskill"] = true, ["Core"] = true, ["1st"] = true, ["2nd"] = true, ["3rd"] = true, ["4th"] = true, } end) L:RegisterTranslations("koKR", function() return { ["Colors"] = "색상", ["Messages"] = "메세지", ["Bars"] = "바", ["Shortbar"] = "짧은바", ["Longbar"] = "긴바", ["Color %s"] = "색상 %s", ["Color%s"] = "색상%s", ["Number of colors"] = "색상의 수", ["xColors"] = "x색상", ["Background"] = "배경", ["Text"] = "글자", ["Reset"] = "초기화", ["Colors of messages and bars."] = "메세지와 바의 색상.", ["Colors of messages."] = "메세지의 색생", ["Change the color for \"%s\" messages."] = "\"%s\" 메세지에 대한 색생 변경.", ["Colors of bars."] = "바의 색상.", ["Colors for short bars (< 1 minute)."] = "짧은 바에 대한 색상 (< 1 분).", ["Colors for long bars (> 1 minute)."] = "긴 바에 대한 색상 (> 1 분).", ["Change the %s color."] = "%s 색상 변경.", ["Number of colors the bar has."] = "Number of colors the bar has.", ["Change the background color."] = "배경 색상 변경.", ["Change the text color."] = "글자 색상 변경.", ["Resets all ranges to defaults."] = "기본 설정으로 초기화.", ["Important"] = "중요", ["Personal"] = "개인", ["Urgent"] = "긴급", ["Attention"] = "주의", ["Positive"] = "제안", ["Bosskill"] = "보스사망", ["Core"] = "코어", ["1st"] = "첫째", ["2nd"] = "둘째", ["3rd"] = "셋째", ["4th"] = "넷째", } end) L:RegisterTranslations("zhCN", function() return { ["Colors"] = "颜色", ["Messages"] = "信息", ["Bars"] = "计时条", ["Shortbar"] = "短计时条", ["Longbar"] = "长计时条", ["Color %s"] = "颜色 %s", ["Color%s"] = "颜色%s", ["Number of colors"] = "颜色数量", ["xColors"] = "x颜色", ["Background"] = "背景", ["Text"] = "文本", ["Reset"] = "重置", ["Colors of messages and bars."] = "信息文字与计时条颜色。", ["Colors of messages."] = "信息文字颜色。", ["Change the color for \"%s\" messages."] = "变更\"%s\"信息的颜色。", ["Colors of bars."] = "计时条颜色。", ["Colors for short bars (< 1 minute)."] = "短时计时条(小于一分钟)的颜色。", ["Colors for long bars (> 1 minute)."] = "长时计时条(大于一分钟)的颜色。", ["Change the %s color."] = "变更颜色%s。", ["Number of colors the bar has."] = "计时条颜色数量。", ["Change the background color."] = "变更背景颜色。", ["Change the text color."] = "变更文本颜色。", ["Resets all ranges to defaults."] = "全部重置为默认状态。", ["Important"] = "重要", ["Personal"] = "个人", ["Urgent"] = "紧急", ["Attention"] = "注意", ["Positive"] = "积极", ["Bosskill"] = "首领击杀", ["Core"] = "核心", ["1st"] = "第一", ["2nd"] = "第二", ["3rd"] = "第三", ["4th"] = "第四", } end) L:RegisterTranslations("deDE", function() return { ["Colors"] = "Farben", ["Messages"] = "Nachrichten", ["Bars"] = "Anzeigebalken", ["Shortbar"] = "KurzerAnzeigebalken", ["Longbar"] = "LangerAnzeigebalken", ["Color %s"] = "Farbe %s", ["Color%s"] = "Farbe%s", ["Number of colors"] = "Anzahl der Farben", ["xColors"] = "xFarben", ["Background"] = "Hintergrund", ["Text"] = "Text", ["Reset"] = "Zur\195\188cksetzen", ["Colors of messages and bars."] = "Farben der Nachrichten und Anzeigebalken.", ["Colors of messages."] = "Farben der Nachrichten.", ["Change the color for \"%s\" messages."] = "Farbe \195\164ndern f\195\188r \"%s\" Nachrichten.", ["Colors of bars."] = "Farben der Leisten.", ["Colors for short bars (< 1 minute)."] = "Farbe f\195\188r kurze Anzeigebalken (< 1 Minute).", ["Colors for long bars (> 1 minute)."] = "Farbe f\195\188r lange Anzeigebalken (> 1 Minute).", ["Change the %s color."] = "Die %s Farbe \195\164ndern.", ["Number of colors the bar has."] = "Anzahl der Farben, die ein Anzeigebalken hat.", ["Change the background color."] = "Hintergrund Farbe \195\164ndern.", ["Change the text color."] = "Text Farbe \195\164ndern.", ["Resets all ranges to defaults."] = "Auf Standard zur\195\188cksetzen.", -- ["Important"] = true, -- ["Personal"] = true, -- ["Urgent"] = true, -- ["Attention"] = true, -- ["Positive"] = true, -- ["Bosskill"] = true, -- ["Core"] = true, ["1st"] = "1te", ["2nd"] = "2te", ["3rd"] = "3te", ["4th"] = "4te", } end) ---------------------------------- -- Module Declaration -- ---------------------------------- BigWigsColors = BigWigs:NewModule(L"Colors") BigWigsColors.defaultDB = { important = "ff0000", -- Red personal = "ff0000", -- Red urgent = "ff7f00", -- Orange attention = "ffff00", -- Yellow positive = "00ff00", -- Green bosskill = "00ff00", -- Green core = "00ffff", -- Cyan shortbar = {"ffff00", "ff7f00", "ff0000"; n=3}, longbar = {"00ff00", "ffff00", "ff7f00", "ff0000"; n=4}, } BigWigsColors.consoleCmd = L["Colors"] BigWigsColors.consoleOptions = { type = "group", name = L["Colors"], desc = L["Colors of messages and bars."], args = { [L["Messages"]] = { type = "group", name = L["Messages"], desc = L["Colors of messages."], order = 1, args = { [L["Important"]] = { name = L["Important"], type = "color", desc = string.format(L["Change the color for \"%s\" messages."], L["Important"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.important); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.important = hex end, order = 1, }, [L["Personal"]] = { name = L["Personal"], type = "color", desc = string.format(L["Change the color for \"%s\" messages."], L["Personal"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.personal); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.personal = hex end, order = 2, }, [L["Urgent"]] = { name = L["Urgent"], type = "color", desc = string.format(L["Change the color for \"%s\" messages."], L["Urgent"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.urgent); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.urgent = hex end, order = 3, }, [L["Attention"]] = { name = L["Attention"], type = "color", desc = string.format(L["Change the color for \"%s\" messages."], L["Attention"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.attention); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.attention = hex end, order = 4, }, [L["Positive"]] = { name = L["Positive"], type = "color", desc = string.format(L["Change the color for \"%s\" messages."], L["Positive"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.positive); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.positive = hex end, order = 5, }, [L["Bosskill"]] = { name = L["Bosskill"], type = "color", desc = string.format(L["Change the color for \"%s\" messages."], L["Bosskill"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.bosskill); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.bosskill = hex end, order = 6, }, [L["Core"]] = { name = L["Core"], type = "color", desc = string.format(L["Change the color for \"%s\" messages."], L["Core"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.core); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.core = hex end, order = 7, }, }, }, [L["Bars"]] = { type = "group", name = L["Bars"], desc = L["Colors of bars."], order = 2, args = { [L"Shortbar"] = { type = "group", name = L["Shortbar"], desc = L["Colors for short bars (< 1 minute)."], order = 1, args = { [string.format(L["Color%s"], 1)] = { name = string.format(L["Color %s"], 1), type = "color", desc = string.format(L["Change the %s color."], L["1st"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.shortbar[1]); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.shortbar[1] = hex end, order = 1, }, [string.format(L["Color%s"], 2)] = { name = string.format(L["Color %s"], 2), type = "color", desc = string.format(L["Change the %s color."], L["2nd"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.shortbar[2]); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.shortbar[2] = hex end, hidden = function() if getn(BigWigsColors.db.profile.shortbar) < 2 then return true end end, order = 2, }, [string.format(L["Color%s"], 3)] = { name = string.format(L["Color %s"], 3), type = "color", desc = string.format(L["Change the %s color."], L["3rd"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.shortbar[3]); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.shortbar[3] = hex end, hidden = function() if getn(BigWigsColors.db.profile.shortbar) < 3 then return true end end, order = 3, }, [string.format(L["Color%s"], 4)] = { name = string.format(L["Color %s"], 4), type = "color", desc = string.format(L["Change the %s color."], L["4th"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.shortbar[4]); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.shortbar[4] = hex end, hidden = function() if getn(BigWigsColors.db.profile.shortbar) < 4 then return true end end, order = 4, }, [L["xColors"]] = { name = L["Number of colors"], type = "range", desc = L["Number of colors the bar has."], min = 1, max = 4, step = 1, get = function() return getn(BigWigsColors.db.profile.shortbar) end, set = function(v) table.setn(BigWigsColors.db.profile.shortbar, v) end, order = 5, }, }, }, [L["Longbar"]] = { type = "group", name = L["Longbar"], desc = L["Colors for long bars (> 1 minute)."], order = 2, args = { [string.format(L["Color%s"], 1)] = { name = string.format(L["Color %s"], 1), type = "color", desc = string.format(L["Change the %s color."], L["1st"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.longbar[1]); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.longbar[1] = hex end, order = 1, }, [string.format(L["Color%s"], 2)] = { name = string.format(L["Color %s"], 2), type = "color", desc = string.format(L["Change the %s color."], L["2nd"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.longbar[2]); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.longbar[2] = hex end, hidden = function() if getn(BigWigsColors.db.profile.longbar) < 2 then return true end end, order = 2, }, [string.format(L["Color%s"], 3)] = { name = string.format(L["Color %s"], 3), type = "color", desc = string.format(L["Change the %s color."], L["3rd"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.longbar[3]); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.longbar[3] = hex end, hidden = function() if getn(BigWigsColors.db.profile.longbar) < 3 then return true end end, order = 3, }, [string.format(L["Color%s"], 4)] = { name = string.format(L["Color %s"], 4), type = "color", desc = string.format(L["Change the %s color."], L["4th"]), get = function() local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.longbar[4]); return r, g, b end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.longbar[4] = hex end, hidden = function() if getn(BigWigsColors.db.profile.longbar) < 4 then return true end end, order = 4, }, [L["xColors"]] = { name = L["Number of colors"], type = "range", desc = L["Number of colors the bar has."], min = 1, max = 4, step = 1, get = function() return getn(BigWigsColors.db.profile.longbar) end, set = function(v) table.setn(BigWigsColors.db.profile.longbar, v) end, order = 5, }, }, }, [L["Background"]] = { name = L["Background"], type = "color", desc = L["Change the background color."], hasAlpha = true, get = function() if BigWigsColors.db.profile.bgc then local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.bgc); return r, g, b, BigWigsColors.db.profile.bga else return 0, .5, .5, .5 end end, set = function(r, g, b, a) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.bgc = hex; BigWigsColors.db.profile.bga = a end, order = 3, }, [L["Text"]] = { name = L["Text"], type = "color", desc = L["Change the text color."], get = function() if BigWigsColors.db.profile.txtc then local _, r, g, b = PaintChips:GetRGBPercent(BigWigsColors.db.profile.txtc); return r, g, b else return 1, 1, 1 end end, set = function(r, g, b) local hex = BigWigsColors:RGBToHex(r, g, b); PaintChips:RegisterHex(hex); BigWigsColors.db.profile.txtc = hex end, order = 4, }, } }, [L["Reset"]] = { name = L["Reset"], type = "execute", desc = L["Resets all ranges to defaults."], func = function() BigWigsColors:ResetDB() end, }, } } ------------------------------ -- Initialization -- ------------------------------ function BigWigsColors:OnInitialize() self:RegHex(self.db.profile) end function BigWigsColors:ResetDB() BigWigsColors.db.profile.important = BigWigsColors.defaultDB.important BigWigsColors.db.profile.personal = BigWigsColors.defaultDB.personal BigWigsColors.db.profile.urgent = BigWigsColors.defaultDB.urgent BigWigsColors.db.profile.attention = BigWigsColors.defaultDB.attention BigWigsColors.db.profile.positive = BigWigsColors.defaultDB.positive BigWigsColors.db.profile.bosskill = BigWigsColors.defaultDB.bosskill BigWigsColors.db.profile.core = BigWigsColors.defaultDB.core BigWigsColors.db.profile.shortbar[1] = BigWigsColors.defaultDB.shortbar[1] BigWigsColors.db.profile.shortbar[2] = BigWigsColors.defaultDB.shortbar[2] BigWigsColors.db.profile.shortbar[3] = BigWigsColors.defaultDB.shortbar[3] BigWigsColors.db.profile.shortbar[4] = BigWigsColors.defaultDB.shortbar[4] table.setn(BigWigsColors.db.profile.shortbar, getn(BigWigsColors.defaultDB.shortbar)) BigWigsColors.db.profile.longbar[1] = BigWigsColors.defaultDB.longbar[1] BigWigsColors.db.profile.longbar[2] = BigWigsColors.defaultDB.longbar[2] BigWigsColors.db.profile.longbar[3] = BigWigsColors.defaultDB.longbar[3] BigWigsColors.db.profile.longbar[4] = BigWigsColors.defaultDB.longbar[4] table.setn(BigWigsColors.db.profile.longbar, getn(BigWigsColors.defaultDB.longbar)) BigWigsColors.db.profile.bgc = BigWigsColors.defaultDB.bgc BigWigsColors.db.profile.bga = BigWigsColors.defaultDB.bga BigWigsColors.db.profile.txtc = BigWigsColors.defaultDB.txtc end function BigWigsColors:RegHex(hex) if type(hex) == "string" then PaintChips:RegisterHex(hex) elseif type(hex) == "table" then for _,hexx in hex do self:RegHex(hexx) end end end ------------------------------ -- Handlers -- ------------------------------ function BigWigsColors:RGBToHex(r, g, b) return format("%02x%02x%02x", r*255, g*255, b*255) end function BigWigsColors:MsgColor(type) -- Make it compatible with old code if type == "Red" then type = self.db.profile.important elseif type == "Orange" then type = self.db.profile.urgent elseif type == "Yellow" then type = self.db.profile.attention elseif type == "Green" then type = self.db.profile.positive elseif type == "Cyan" then type = self.db.profile.core end if type == "Important" then type = self.db.profile.important elseif type == "Personal" then type = self.db.profile.personal elseif type == "Urgent" then type = self.db.profile.urgent elseif type == "Attention" then type = self.db.profile.attention elseif type == "Positive" then type = self.db.profile.positive elseif type == "Bosskill" then type = self.db.profile.bosskill elseif type == "Core" then type = self.db.profile.core end return type end function BigWigsColors:BarColor(time) local d = time <= 60 and self.db.profile.shortbar or self.db.profile.longbar local n = getn(d) if n == 4 then return d[1], d[2], d[3], d[4] elseif n == 3 then return d[1], d[2], d[3] elseif n == 2 then return d[1], d[2] elseif n == 1 then return d[1] end end