Módulo:Droflax

De Wiki Gla
Revisão de 15h54min de 20 de julho de 2025 por Droflax (discussão | contribs)
Ir para navegação Ir para pesquisar

A documentação para este módulo pode ser criada em Módulo:Droflax/doc

local p = {}

function p.render(frame)
    local args = frame:getParent().args
    
    -- Datos básicos con valores por defecto más robustos
    local nome = args.nome or 'Sem nome'
    local tier = args.tier or ''
    local classe = args.classe or ''
    local image = args.image or 'SemImagem.png'
    
    -- Procesar habilidades de forma más segura
    local habilidades = {}
    for i = 1, 21 do
        local prefix = 'hab' .. i .. '-'
        if args[prefix .. 'nome'] then
            table.insert(habilidades, {
                nome = args[prefix .. 'nome'] or '',
                icon = args[prefix .. 'icon'] or '',
                level = args[prefix .. 'level'] or '',
                desc = args[prefix .. 'desc'] or '',
                atr = args[prefix .. 'atr'] or '',
                video = args[prefix .. 'video'] or ''
            })
        end
    end
    
    -- Procesar skins similar al questlog
    local skins = {}
    for i = 1, 11 do
        local prefix = 'skin' .. i .. '-'
        if args[prefix .. 'image'] then
            table.insert(skins, {
                image = args[prefix .. 'image'],
                banner = args[prefix .. 'banner'] or '',
                tooltip = args[prefix .. 'tooltip'] or ''
            })
        end
    end

    -- Construcción HTML al estilo questlog
    local html = mw.html.create('div')
        :addClass('personaje-wrapper')
    
    -- Cabecera similar al questlog
    html:tag('div')
        :addClass('personaje-header')
        :wikitext('[[Arquivo:' .. image .. '|200px|link=]]')
    
    -- Información básica
    local infoBox = html:tag('div')
        :addClass('personaje-info')
    
    infoBox:tag('div')
        :addClass('personaje-title')
        :wikitext('' .. nome .. '')
    
    infoBox:tag('div')
        :addClass('personaje-subtitle')
        :wikitext(classe .. ' (' .. tier .. ')')
    
    -- Habilidades (adaptado al formato de items del questlog)
    if #habilidades > 0 then
        local habSection = html:tag('div')
            :addClass('personaje-section')
        
        habSection:tag('div')
            :addClass('section-title')
            :wikitext('Habilidades')
        
        local habList = habSection:tag('div')
            :addClass('personaje-habilidades')
        
        for i, hab in ipairs(habilidades) do
            local habItem = habList:tag('div')
                :addClass('habilidad-item')
            
            -- Icono de habilidad
            habItem:tag('div')
                :addClass('habilidad-icon')
                :wikitext('[[Arquivo:' .. hab.icon .. '|32px|link=]]')
            
            -- Detalles de habilidad
            local habDetails = habItem:tag('div')
                :addClass('habilidad-details')
            
            habDetails:tag('div')
                :addClass('habilidad-nome')
                :wikitext(hab.nome .. ' (Nv. ' .. hab.level .. ')')
            
            -- Atributos al estilo questlog
            if hab.atr and hab.atr ~= '' then
                local atrDiv = habDetails:tag('div')
                    :addClass('habilidad-atr')
                
                local atrLabels = {'PVE', 'PVP', 'Energia', 'Recarga'}
                local atrValues = mw.text.split(hab.atr, ',')
                
                for j, val in ipairs(atrValues) do
                    if atrLabels[j] then
                        atrDiv:tag('span')
                            :wikitext(atrLabels[j] .. ': ' .. val .. '  ')
                    end
                end
            end
            
            -- Descripción
            habDetails:tag('div')
                :addClass('habilidad-desc')
                :wikitext(hab.desc)
        end
    end
    
    -- Skins (adaptado al formato de items del questlog)
    if #skins > 0 then
        local skinSection = html:tag('div')
            :addClass('personaje-section')
        
        skinSection:tag('div')
            :addClass('section-title')
            :wikitext('Skins')
        
        local skinList = skinSection:tag('div')
            :addClass('personaje-skins')
        
        for i, skin in ipairs(skins) do
            local skinItem = skinList:tag('div')
                :addClass('skin-item')
            
            skinItem:tag('div')
                :wikitext('[[Arquivo:' .. skin.image .. '|100px|link=]]')
            
            if skin.tooltip and skin.tooltip ~= '' then
                skinItem:tag('div')
                    :addClass('skin-tooltip')
                    :wikitext(skin.tooltip)
            end
        end
    end

    return tostring(html)
end

return p