Module:Outfit

From Arknights Terra Wiki
Jump to navigation Jump to search

The Lua source code for the display of outfits through {{Outfit}}.


local p = {}
local data = {
	test = mw.loadData('Module:Outfit/test'),
	epoque = mw.loadData('Module:Outfit/epoque'),
	m0011 = mw.loadData('Module:Outfit/m0011'),
	t0011 = mw.loadData('Module:Outfit/t0011'),
	marthe = mw.loadData('Module:Outfit/marthe'),
	coral = mw.loadData('Module:Outfit/coral'),
	witch = mw.loadData('Module:Outfit/witch'),
	cambrian = mw.loadData('Module:Outfit/cambrian'),
	icemess = mw.loadData('Module:Outfit/icemess'),
	vitafield = mw.loadData('Module:Outfit/vitafield'),
	pioneer = mw.loadData('Module:Outfit/pioneer'),
	striker = mw.loadData('Module:Outfit/striker'),
	boc = mw.loadData('Module:Outfit/boc'),
	kitchen = mw.loadData('Module:Outfit/kitchen'),
	dreambind = mw.loadData('Module:Outfit/dreambind'),
	whistlew = mw.loadData('Module:Outfit/whistlew'),
	ambsys = mw.loadData('Module:Outfit/ambsys'),
	crossover = mw.loadData('Module:Outfit/crossover'),
	shinsteps = mw.loadData('Module:Outfit/shinsteps'),
	achivstar = mw.loadData('Module:Outfit/achivstar'),
	y0011 = mw.loadData('Module:Outfit/y0011'),
	iterprov = mw.loadData('Module:Outfit/iterprov'),
	uod = mw.loadData('Module:Outfit/uod'),
}
local getArgs = require('Dev:Arguments').getArgs
local yesno = require('Dev:Yesno')
function p.main(frame)
	local args = getArgs(frame, {
		wrappers = 'Template:Outfit'
	})
	return p._main(args)
end
function p._main(args)
	local key = args[1]
	local skin
	for _, m in pairs(data) do
		skin = m[key]
		if skin then break end
	end
	if not skin then
		return '&#32;<i>Outfit not found</i>&#32;' -- no entry.
	end
	local name = skin.name
	local model = skin.model
	local num = skin.num
	local link = skin.link
	local attrs = {
		['data-name'] = name,
		['data-model'] = model,
		['data-num'] = num,
		['data-artist'] = skin.artist,
		['data-use'] = skin.use,
		['data-quote'] = skin.quote,
		['data-series'] = skin.series,
		['data-desc'] = skin.desc,
		['data-obtain'] = skin.obtain,
	}
	local pagename = (link or model)..'/Gallery#'..name
	local container = mw.html.create('')
	local gridview = yesno(args.gridview)
	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('outfit-tooltip')
		:attr(attrs)
		:wikitext('[[File:'..model..'_Skin_'..num..'_icon.png|60x60px|link='..pagename..']]')
	else
		local stooltip = container:tag('span')
		:addClass('outfit-tooltip')
		:attr(attrs)
		:wikitext('[['..pagename..'|'..name..']]')
	end
	return container
end
return p