-- Début du fichier
local addonName = "RaidPlayerExport"
local addon = LibStub("AceAddon-3.0"):GetAddon(addonName)
if not addon then return end

-- Fonction améliorée pour un meilleur centrage des icônes
local function createClassIcons(parent, title, yOffset, classes)
    local titleStr = parent:CreateFontString(nil, "OVERLAY", "GameFontNormal")
    titleStr:SetPoint("TOP", 0, yOffset)
    titleStr:SetText(title)
    table.insert(addon.statsWidgets, titleStr)
    
    if #classes == 0 then return end

    local iconSize, spacing, maxIconsPerRow = 20, 4, 9
    local startY = yOffset - 20
    
    local rows = {}
    for i = 1, #classes, maxIconsPerRow do
        table.insert(rows, { select(i, unpack(classes)) })
    end
    
    for rowIndex, classRow in ipairs(rows) do
        local numIcons = #classRow > maxIconsPerRow and maxIconsPerRow or #classRow
        local rowWidth = (numIcons * iconSize) + (math.max(0, numIcons - 1) * spacing)
        local startX = -rowWidth / 2 + iconSize / 2
        
        for i = 1, numIcons do
            local classFile = classRow[i]
            local x = startX + (i - 1) * (iconSize + spacing)
            local y = startY - (rowIndex - 1) * (iconSize + spacing)
            
            local icon = parent:CreateTexture(nil, "ARTWORK")
            icon:SetSize(iconSize, iconSize)
            icon:SetPoint("TOP", x, y)
            icon:SetTexture("Interface/AddOns/"..addonName.."/Media/classes_icons/classicon_" .. strlower(classFile) .. ".tga")
            
            if title:find("Absents") then
                icon:SetVertexColor(0.5, 0.5, 0.5)
            end
            table.insert(addon.statsWidgets, icon)
        end
    end
end

function addon:ClearStatsWidgets()
    if not self.statsWidgets then return end
    for _, widget in ipairs(self.statsWidgets) do
        widget:Hide()
    end
    wipe(self.statsWidgets)
end

-- Début de la fonction
function addon:UpdateRaidList()
    self:ClearStatsWidgets()

    local playerListFrame = self.frames.playerListFrame
    if not playerListFrame then return end
    
    local statsContainer = playerListFrame.stats
    if not statsContainer then return end

    if not IsInRaid() then
        self.frames.playerList.officialText = "Vous n'êtes pas dans un groupe de raid."
        self.frames.playerList:SetText(self.frames.playerList.officialText)
        playerListFrame.title:SetText("Liste des joueurs (0)")
        return
    end

    local raidList, presentClasses = {}, {}
    for i = 1, GetNumGroupMembers() do
        local name, _, _, _, _, classFileName = GetRaidRosterInfo(i)
        if name and classFileName then
            local cleanName = name:gsub("-.*", "")
            local classColor = C_ClassColor.GetClassColor(classFileName)
            local colorHex = string.format("|cff%02x%02x%02x", classColor.r * 255, classColor.g * 255, classColor.b * 255)
            table.insert(raidList, string.format("%s%s|r", colorHex, cleanName))
            presentClasses[classFileName] = true
        end
    end

    self.frames.playerList.officialText = table.concat(raidList, "\n")
    self.frames.playerList:SetText(self.frames.playerList.officialText)
    playerListFrame.title:SetText("Liste des joueurs (" .. #raidList .. ")")

    local allClassFiles = {}
    for classFile in pairs(RAID_CLASS_COLORS) do table.insert(allClassFiles, classFile) end
    table.sort(allClassFiles)

    local absentClasses, presentClassesSorted = {}, {}
    for _, classFile in ipairs(allClassFiles) do
        if presentClasses[classFile] then
            table.insert(presentClassesSorted, classFile)
        else
            table.insert(absentClasses, classFile)
        end
    end
    
    -- ### MODIFIÉ ICI : Logique d'affichage conditionnel ###
    local presentOffset = -5 -- Position par défaut pour "Présents" si "Absents" est caché

    -- On n'affiche la section "Absents" que si elle n'est pas vide
    if #absentClasses > 0 then
        createClassIcons(statsContainer, "|cffffd100Absents|r", -5, absentClasses)
        -- Si "Absents" est affiché, on décale "Présents" vers le bas
        presentOffset = -65
    end
    
    -- On affiche toujours la section "Présents" avec l'offset calculé
    createClassIcons(statsContainer, "|cffffd100Présents|r", presentOffset, presentClassesSorted)
end
-- Fin de la fonction