-- CoAClassColors.lua
--
-- Mirrors the live client's RAID_CLASS_COLORS palette into
-- Altoholic.ClassInfo so the guild/character/profession panes render
-- the 21 Conquest-of-Azeroth custom classes (plus HERO) instead of
-- defaulting to WHITE via the `or WHITE` fallback at
-- Altoholic.lua:581.
--
-- Background
-- ----------
-- Altoholic ships a hardcoded ChatColor table keyed by the 10 vanilla
-- englishClass tokens (Altoholic.lua:23-32). On the CoA Voljin/PTR
-- realm, UnitClass / GetGuildRosterInfo return tokens like BARBARIAN,
-- WITCHDOCTOR, CHRONOMANCER, … which fall through the table.
--
-- The realm-authoritative palette is shipped by the client itself in
-- _G.RAID_CLASS_COLORS (Interface/SharedXML/SharedConstants.lua inside
-- patch-B.MPQ — 10 vanilla + HERO + 21 CoA = 32 entries on Voljin).
-- Other Exiles addon ports follow the same mirror pattern
-- (coa-omen/CoAClassColors.lua → CUSTOM_CLASS_COLORS,
--  coa-shadowedunitframes/.../CoAClassColors.lua → SUF profile,
--  coa-kui-nameplates/.../CoAClassColors.lua → !ClassColors).
--
-- Source of truth: db.exil.es /coa/dev for the full palette;
-- _G.RAID_CLASS_COLORS at FrameXML load time for the running client.

local AC = _G.Altoholic and _G.Altoholic.ClassInfo
if type(AC) ~= "table" then return end

local source = _G.RAID_CLASS_COLORS
if type(source) ~= "table" then return end

local function unpackColor(c)
    if type(c) ~= "table" then return end
    if c.GetRGB then return c:GetRGB() end
    return c.r, c.g, c.b
end

for token, color in pairs(source) do
    if AC[token] == nil then
        local r, g, b = unpackColor(color)
        if r and g and b then
            AC[token] = string.format("|cFF%02X%02X%02X",
                r * 255 + 0.5, g * 255 + 0.5, b * 255 + 0.5)
        end
    end
end
