◆少前百科是非盈利性、非官方的少女前线维基百科。
◆如果您发现某些内容错误/空缺,请勇于修正/添加!参与进来其实很容易!点这里 加入少前百科
◆有任何意见、建议、纠错,欢迎在 GFwiki:反馈与建议 提出和讨论。编辑事务讨论QQ群:597764980,微博@GFwiki少前百科
◆To foreigners,You can use twitter to contact us.
Icon Nyto Silver.png

模块:Gun info/skin

来自少前百科GFwiki
跳转至: 导航搜索

此模块的文档可以在模块:Gun info/skin/doc创建

local p = {}
local gunId
local gunData
local dialog
local skinData = mw.loadData('Module:Gun info/skin data')

local modL2D = {
	[55] = true,
	[56] = true,
	[57] = true,
	[65] = true,
	[101] = true,
	[103] = true,
	[122] = true,
	[143] = true
}

local function filepath(filename, frame)
	local ret = frame:callParserFunction('filepath', filename)
	return ret ~= '' and string.gsub(ret, 'https?://[w.]-gfwiki%.org', '') or ''
end

local function findPics(name, frame)
	local url, dUrl = filepath(name .. '_HD.png', frame)
	if url ~= '' then
		dUrl = filepath(name .. '_D_HD.png', frame)
	else
		url = filepath(name .. '.png', frame)
		dUrl = filepath(name .. '_D.png', frame)
	end
	return url, dUrl
end

local function findVoice(gunCode, frame)
	local fileName = string.format(
		'%s%s_GAIN_JP.',
		string.upper(string.sub(gunCode, 1, 1)),
		string.sub(gunCode, 2)
	)
	local url = filepath(fileName .. 'wav', frame)
	if url == '' then
		url = filepath(fileName .. 'mp3', frame)
	end
	return url
end

local function buildParams()
	local frame = mw.getCurrentFrame()
	local gunCode = string.gsub(gunData.code, ' ', '_')
	local imgName = 'Pic_' .. gunCode
	local args = {
		dollname = mw.ustring.gsub(gunData.name, '\194\160', ' '),
		dollvoice = findVoice(gunCode, frame),
		pic1name = '默认立绘',
		line1 = dialog,
		pic1a = 0
	}
	args.pic1, args.pic1d = findPics(imgName, frame)
	
	if gunData['mod'] then
		args.pic2name = '心智升级'
		args.line2 = dialog
		args.pic2, args.pic2d = findPics(imgName .. 'Mod', frame)
		args.pic2a = modL2D[gunData.id] and 2 or 0
	end

	local offset = gunData['mod'] and 2 or 1
	for i, v in ipairs(gunData.skins) do
		local skin = skinData[v]
		if skin then
			local n = tostring(i + offset)
			local pic = 'pic' .. n
			local fileName = imgName .. '_' .. tostring(v)
			args[pic .. 'name'] = skin.name
			args['line' .. n] = skin.dialog
			args[pic], args[pic .. 'd'] = findPics(fileName, frame)
			args[pic .. 'a'] = skin['type'] or 0
		end
	end
	return args
end

function p.skinInfo(frame)
	local args = frame:getParent().args
	gunId = args['编号']
	gunId = tonumber(gunId)
	local dataPage = 'Module:Gun_info/data' .. (gunId < 1000 and '' or '_extra')
	gunData = mw.loadData(dataPage)[gunId]
	dialog = args['获取台词'] and mw.text.trim(args['获取台词']) or ''
	local params = buildParams()
	params[1] = 'DollPage/Pic'
	return frame:callParserFunction('#widget', params)
end

return p