Módulo:Character
Ir para navegação
Ir para pesquisar
A documentação para este módulo pode ser criada em Módulo:Character/doc
local p = {}
local html = mw.html.create
local uri = mw.uri
function p.generate(frame)
local args = frame:getParent().args
-- Wrapper principal
local container = html('div'):addClass('character-container')
-- Header
local header = container:tag('div'):addClass('character-header')
header:tag('div'):addClass('character-name')
:wikitext(args.nome or '')
if args.image and args.image ~= '' then
local imgUrl = uri.fullUrl('Special:FilePath/' .. args.image)
header:tag('img')
:addClass('character-image')
:attr('src', imgUrl)
:attr('alt', args.nome or '')
end
header:tag('div'):addClass('character-tier')
:wikitext('Tier: ' .. (args.tier or ''))
header:tag('div'):addClass('character-classes')
:wikitext('Classes: ' .. (args.classe or ''))
header:tag('div'):addClass('character-desc')
:wikitext(args.desc or '')
-- Abas (usando <div> no lugar de <button>)
local tabs = container:tag('div'):addClass('character-tabs')
tabs:tag('div'):addClass('tab-btn active')
:attr('data-tab','skills')
:wikitext('Skills')
tabs:tag('div'):addClass('tab-btn')
:attr('data-tab','skins')
:wikitext('Skins')
-- Aba de Skills
local skillsTab = container:tag('div')
:addClass('tab-content active')
:attr('id','skills')
local wrapper = skillsTab:tag('div')
:addClass('skills-bar-wrapper has-right')
local bar = wrapper:tag('div')
:addClass('skills-bar')
-- Gera até 21 skills
for i = 1, 21 do
local name = args['hab'..i..'-nome']
if name and name ~= '' then
local icon = args['hab'..i..'-icon'] or ''
local desc = args['hab'..i..'-desc'] or ''
local atr = args['hab'..i..'-atr'] or ''
local video = args['hab'..i..'-video'] or ''
local iconUrl = icon ~= '' and uri.fullUrl('Special:FilePath/' .. icon) or nil
local item = bar:tag('div'):addClass('skill-item')
item:attr('data-name', name)
:attr('data-desc', desc)
:attr('data-atr', atr)
:attr('data-video', video)
if iconUrl then
item:tag('img')
:attr('src', iconUrl)
:attr('alt', name)
:css('width','50px')
:css('height','50px')
else
item:wikitext(name)
end
end
end
-- Detalhes (descrição + vídeo)
local details = skillsTab:tag('div')
:addClass('skill-details')
details:tag('div'):addClass('desc-box')
details:tag('div'):addClass('video-box')
-- Aba de Skins (vazia por enquanto)
container:tag('div')
:addClass('tab-content')
:attr('id','skins')
return tostring(container)
end
return p