Module:Character

From Arknights Terra Wiki
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 '&#32;<i>Character not found</i>&#32;' -- 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