这是CGSS专用的卡牌容器,用{{CGSS卡牌}}包裹。
常用参数列表:
{{CGSScardcontainer
|阵营=
|稀有度=
|限定类型=
|小剧场=
|日文卡名=
|中文卡名=
|特训前卡图=
|特训后卡图=
|渲染立绘图=
|共用信息=
|特训前额外信息=
|特训后额外信息=
|剧场信息=
}}
参数参考说明:
local getArgs = require('Module:Arguments').getArgs
local p = {}
--[==[
写的什么玩意,代码全部挤在_main里面,一个函数都没单独拆出来(
限定类型那里的模板可以试着展开以提高运行速度,但我摆了
]==]
function p.main(frame)
local args = getArgs(frame)
return p._main(args, frame)
end
function p._main(args, frame)
local container = mw.html.create('div') --外层
--接下来的代码根据稀有度、限定类型、中文卡名、日文卡名生成卡名标签(大概是本模块写的最烂的部分)
local name = mw.html.create('div') --卡名。不知道怎么复用HTML,所以直接用tostring,干就完了!
local jaName --原模板中的jastyle
local zhName --原模板中的zhstyle
--我TM直接开摆,不展开模板了,麻烦得要死,狗都不展!
if string.lower(args['限定类型']) == 'blanc' or string.lower(args['限定类型']) == 'b' or args['限定类型'] == '白' or string.lower(args['限定类型']) == '白fes' then
--原模板中isFes为1时
jaName = frame:preprocess('{{文字描边2|1=' .. args['日文卡名'] .. ' ' .. args['稀有度'] .. '|文本颜色=#C7E6FF|描边颜色=#005DBD}}')
if args['中文卡名'] then
zhName = frame:preprocess('{{文字描边2|1=' .. args['中文卡名'] .. ' ' .. args['稀有度'] .. '|文本颜色=#C7E6FF|描边颜色=#005DBD}}')
end
elseif string.lower(args['限定类型']) == 'noir' or string.lower(args['限定类型']) == '黑fes' or string.lower(args['限定类型']) == 'n' or args['限定类型'] == '黑' then
--原模板中isFes为2时
jaName = frame:preprocess('{{文字描边2|1=' .. args['日文卡名'] .. ' ' .. args['稀有度'] .. '|文本颜色=#FFF263|描边颜色=#2A221D}}')
if args['中文卡名'] then
zhName = frame:preprocess('{{文字描边2|1=' .. args['中文卡名'] .. ' ' .. args['稀有度'] .. '|文本颜色=#FFF263|描边颜色=#2A221D}}')
end
elseif string.lower(args['限定类型']) == 'dominant' or string.lower(args['限定类型']) == 'd' then
--原模板中isFes为3时
jaName = frame:preprocess('{{渐变发光|content=' .. args['日文卡名'] .. ' ' .. args['稀有度'] .. '|FontColor=#FFFFFF|GradientColor=top left, #fc1478, #136bfb, #fda929|GlowSize=5}}')
if args['中文卡名'] then
zhName = frame:preprocess('{{渐变发光|content=' .. args['中文卡名'] .. ' ' .. args['稀有度'] .. '|FontColor=#FFFFFF|GradientColor=top left, #fc1478, #136bfb, #fda929|GlowSize=5}}')
end
else
--原模板中isFes为0时
local limitType --原模板的“limittype”
if args['限定类型'] == 'limit' or args['限定类型'] == '月限' or args['限定类型'] == '限定' or args['限定类型'] =='限' or args['限定类型'] == '普限' then
limitType = 'color:#E086B8; text-shadow:2px 2px 5px #E086B8'
elseif args['限定类型'] == '冠军卡' or args['限定类型'] == '冠' then
limitType = 'color:#ff4d00;text-shadow:1px 1px 4px #ff4d00'
elseif args['限定类型'] == 'ordinary' or args['限定类型'] == '常驻' or args['限定类型'] == '常' then
limitType = 'color:#ffbf00;text-shadow:1px 1px 4px #ffbf00'
elseif string.lower(args['限定类型']) == 'sr' then
limitType = 'color:#2582c8'
elseif string.lower(args['限定类型']) == 'srl' then
limitType = 'color:#31b56a'
else
limitType = 'color:#777777'
end
jaName = '<div style="' .. limitType .. '">' .. args['日文卡名'] .. ' ' .. args['稀有度'] .. '</div>'
if args['中文卡名'] then
zhName = '<div style="' .. limitType .. '">' .. args['中文卡名'] .. ' ' .. args['稀有度'] .. '</div>'
end
end
if args['中文卡名'] then
name
:addClass('hover-change block')
:tag('div')
:addClass('hover-change-before')
:css('font-family', '思源宋体, "Source Han Serif JP", serif') --虽然把样式放进类里面了,但不知道为什么不会加载字体样式,所以在这里额外加了
:wikitext(jaName)
:done()
:tag('div')
:addClass('hover-change-after')
:wikitext(zhName)
else
name
:addClass('ja-name')
:css('font-family', '思源宋体, "Source Han Serif JP", serif')
:wikitext(jaName)
end
local bgClass = 'bg-' .. (string.lower(args['阵营']) or 'co')
--阵营背景图的类,因为mediawiki不让在wikitext里面使用,所以改为模板样式表调用。
--尝试补点杂项颜色配置
local labelColor
local labelBackgroundColor
local labelBorderColor
local textBorderColor
if string.lower(args['阵营']) == 'cu' then
labelColor = '#fc1478'
labelBackgroundColor = '#F8D6E0'
labelBorderColor = '#fc1478'
textBorderColor = '#F8D6E0'
elseif string.lower(args['阵营']) == 'co' then
labelColor = '#136bfb'
labelBackgroundColor = '#A0C8F8'
labelBorderColor='#136bfb'
textBorderColor='#A0C8F8'
elseif string.lower(args['阵营']) == 'pa' then
labelColor = '#fda929'
labelBackgroundColor = '#F8D290'
labelBorderColor = '#fda929'
textBorderColor = '#F8D290'
else
labelColor = '#2582C8'
labelBackgroundColor = 'rgba(255,255,255,32)'
labelBorderColor = '#2582C8'
textBorderColor = '#2582C8'
end
--参数分析完毕,下面的部分生成tabs/core及其内容
container
:addClass('Tabs card-container')
:attr('data-label-side', 'left')
:attr('data-label-color-side-reverse', '')
:attr('data-divider-size', '')
:attr('data-default-tab', args['DefaultTab'])
:attr('data-label-border-color', labelBorderColor)
:attr('data-label-color', labelColor)
:attr('data-text-border-color', textBorderColor)
:attr('data-text-padding', '3px')
:attr('data-label-background-color', labelBackgroundColor)
:attr('data-text-background-color', 'transparent')
local beforeTrain = container:tag('div'):addClass('Tab')
beforeTrain:tag('div'):addClass('TabLabelText'):wikitext('特训前')
beforeTrain
:tag('div')
:addClass('TabContentText')
:tag('div')
:addClass('inner-image')
:css('aspect-ratio', '1280/824')
:wikitext(args['customawakennot'] or ('[[File:' .. args['特训前卡图'] .. '|720px]]'))
:done()
:wikitext(tostring(name) .. (args['共用信息'] or '') .. (args['特训前额外信息'] or '<br />'))
local afterTrain = container:tag('div'):addClass('Tab')
afterTrain:tag('div'):addClass('TabLabelText'):wikitext('特训后')
afterTrain
:tag('div')
:addClass('TabContentText')
:tag('div')
:addClass('inner-image')
:css('aspect-ratio', '1280/824')
:wikitext(args['customawaken'] or ('[[File:' .. args['特训后卡图'] .. '|720px]]'))
:done()
:wikitext(tostring(name) .. (args['共用信息'] or '') .. (args['特训后额外信息'] or '<br />'))
if args['渲染立绘图'] then
local modelImage = container:tag('div'):addClass('Tab')
modelImage:tag('div'):addClass('TabLabelText'):wikitext('模型图')
modelImage
:tag('div')
:addClass('TabContentText')
:tag('div')
:addClass('inner-image model-image ' .. bgClass)
:css('aspect-ratio', '1280/824')
:wikitext('[[File:' .. args['渲染立绘图'] .. ']]')
:done()
:wikitext(tostring(name) .. (args['共用信息'] or '<br />'))
end
if args['小剧场'] then
local roman = {'Ⅰ', 'Ⅱ', 'Ⅲ'} --用一个表存放罗马数字以便调用,免得额外写一个判断。
for i = 1, 3 do
local theater = container:tag('div'):addClass('Tab')
theater
:tag('div')
:addClass('TabLabelText')
:wikitext('剧场' .. roman[i])
theater
:tag('div')
:addClass('TabContentText')
:tag('div')
:addClass('inner-image ' .. bgClass)
:css('aspect-ratio', '1280/824')
:wikitext('[[File:CINGEKI-WIDE-' .. args['小剧场'] .. '-' .. i .. '.JPG|720px]]')
:done()
:wikitext(tostring(name) .. (args['共用信息'] or '') .. (args['剧场信息'] or '<br />'))
end
end
return tostring(container) .. '<div style="display:none">[[File:CGSS-bg-' .. args['阵营'] .. '.png|1px|link=]]</div>'
end
return p