Module:Character
Jump to navigation
Jump to search
The Lua source code for the display of Operators and NPCs through Template:Character.
local p = {}
local operatorData = mw.loadData('Module:Character/operator')
local npcData = mw.loadData('Module:Character/npc')
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
function p.main(frame)
local args = getArgs(frame, {
wrappers = 'Template:Character'
})
return p._main(args)
end
function p._main(args)
local key = args[1]
local chara = operatorData[key] or npcData[key]
if not chara then
mw.log('Character data missing:', key)
return ' <i>Character not found</i> ' -- no entry.
end
local name = chara.name
local title = chara.title
local pagename = chara.link or name
local text = args[2] or title or name
local attrs = {
['data-name'] = name,
['data-title'] = title,
['data-star'] = tonumber(chara.star),
['data-class'] = chara.class,
['data-branch'] = chara.branch,
['data-faction'] = chara.faction,
}
local gridview = yesno(args.gridview)
local container = mw.html.create('')
if gridview then
local wrapper = container:tag('div')
:css{display='inline-block', position='relative', margin='5px'}
local a = wrapper:tag('div')
:addClass('a')
local dtooltip = a:tag('div')
:addClass('character-tooltip')
:attr(attrs)
:wikitext('[[File:'..name..' icon.png|60x60px|link='..pagename..']]')
local border = args.border
if border == 'limited' then
dtooltip:css('border', '1px solid #FF0000')
elseif border == 'limited2' then
dtooltip:css('border', '1px solid #FF8000')
elseif border == 'store' then
dtooltip:css('border', '1px solid #FFFF00')
end
else
local stooltip = container:tag('span')
:addClass('character-tooltip')
:attr(attrs)
:wikitext('[['..pagename..'|'..text..']]')
end
return container
end
return p