打开主菜单

少前百科GFwiki β

模块:Skin class info

此模块的文档可以在模块:Skin class info/doc创建

local p = {}
local args
local root
local data = mw.loadData('Module:Gun info/skin data')
local gdata = mw.loadData('Module:Gun info/data')
local params
local rcolors = {'dfb6ff', 'ddd', '6bdfce', 'd6e35a', 'ffcd4a'}
local scolors = {'cae', 'ccc', '6bdfce', 'd6e35a', 'ffbd0d'}
local gtypes = {'HG', 'SMG', 'RF', 'AR', 'MG', 'SG'}
local stypes = {'Live2D', 'Animated'}
local hd = false

local function nameMiddle(name, gtype, rank)
	return string.format('[[%s|<span style="color:#%s;text-shadow:0 0 2px #%s;display:inline-block"><span style="vertical-align:middle;">%s</span>&nbsp;<small>[%s]</small></span>]]',
		name,
		rcolors[rank],
		scolors[rank],
		name,
		gtypes[gtype])
end

local function addParams(id, num)
	local sdata = data[id]
	local gd = gdata[sdata.fit_gun]
	local illucv = sdata.illustrator_cv
	local addp = {
		['编号' .. num] = id,
		['英文' .. num] = gd.code,
		['名称' .. num] = sdata.name,
		['人形' .. num] = gd.name,
		['人形编号' .. num] = sdata.fit_gun,
		['人形代码' .. num] = nameMiddle(gd.name, gd.guntype, gd.rank),
		['动态' .. num] = sdata['type'] and stypes[sdata['type']] or '',
		['画师' .. num] = illucv and illucv[1] or (gd.illu or ''),
		['声优' .. num] = illucv and illucv[2] or (gd.cv or ''),
		['台词' .. num] = sdata.dialog
	}
	if not hd then
		local picf = string.format('Pic_%s_%d', gd.code, id)
		addp['正常立绘' .. num] = picf .. '.png'
		addp['重创立绘' .. num] = picf .. '_D.png'
	end
	for k, v in pairs(addp) do params[k] = v end
end

local function _skinClassInfo()
	local cid = tonumber(args[1])
	assert(cid)
	local cdata = mw.loadData('Module:Gun info/skinclass data')
	params = {
		['编号'] = cid,
		['实装时间'] = args.launch,
		['主题类型'] = cdata[cid].theme_type
	}
	local ks = {}
	if cid ~= 99 then
		for i,v in pairs(data) do
			if v.class_id == cid then
				ks[#ks+1] = i
			end
		end
	else
		local excluded = {
			[573] = true, [586] = true, [594] = true, [597] = true
		}
		for i,v in pairs(data) do
			if v.class_id == 99 and not excluded[i] then
				ks[#ks+1] = i
			end
		end
	end
	table.sort(ks)
	for n,i in ipairs(ks) do addParams(i, tostring(n)) end
	for k,v in pairs(args) do params[k] = v end
	local f = mw.getCurrentFrame()
	return f:expandTemplate{title = '装扮展示', args=params}
end

function p.skinClassInfo(frame)
	if frame == mw.getCurrentFrame() then
		args = frame:getParent().args
	else
		args = frame
	end
	if args.hd then hd = true end
	return _skinClassInfo()
end
return p