本wiki目前不支持自由编辑,如果有兴趣参与wiki内容编辑,请加入WIKI建设群904200987(游戏交流勿加会被踢)
使用wiki的数据、图片、音频资源,或者搬运页面内容时,请注明出处。具体参照CC BY-NC-SA 4.0协议
感谢Hyacinth对本wiki提供的数据支持
编辑帮助 • BWIKI反馈
模块:Character/TeaAchieves
此模块的文档可以在模块:Character/TeaAchieves/doc创建
local p = {}
local db = require('模块:同调者茶憩图鉴数据库')
local data = db.character_tea_achives_data
local recipe_data = db.unlock_dialog_recipe_data
local paddingZero = require('Module:CommonTools').padding_zero
local checkRecipeFavorLevel = require('Module:茶憩配方图鉴').check_recipe_favor_level
p['茶憩纪念函'] = function(frame)
local character_name = frame.args['name']
if character_name == nil or character_name == '' then
return '错误:姓名不能为空'
end
-- 过滤数据
local output_data = p.cleanData(data, character_name)
if output_data == nil then
local html = mw.html.create()
html = html:node(frame:expandTemplate{title = '暂无数据'}):done()
return html
end
-- 拼接表格
local html = p.get_output_html(output_data, frame)
return tostring(html)
end
function p.cleanData(dbData, name)
local output_data_temp = nil
local output_data = nil
for i, v in pairs(dbData) do
if v['character_name'] == name then
output_data_temp = v
break
end
end
if output_data_temp == nil then
return output_data
end
output_data = output_data_temp
for i, achive in ipairs(output_data['achives']) do
output_data['achives'][i]['level'] = ''
output_data['achives'][i]['icon'] = ''
if achive['title'] ~= '' then
-- 如果存在食谱,计算默契值
if achive['recipe'] ~= nil then
output_data['achives'][i]['level'] = '【默契值' .. checkRecipeFavorLevel(name, achive['recipe']) .. '级】'
elseif achive['title'] == '点单收集' and name == '龙晴' then
output_data['achives'][i]['level'] = '【默契值18级】'
elseif achive['title'] == '茶憩密话' and name == '豹富' then
output_data['achives'][i]['level'] = '【默契值16级】'
end
-- 处理图标
if name == '紫都' or name == '无咎' and name == '瓦卡莎' and name == '元桃桃' and name == '长谣' then
output_data['achives'][i]['icon'] = '茶憩_成就_' .. name .. '_' .. achive['title'] .. '.png'
else
if i % 2 == 1 then
output_data['achives'][i]['icon'] = '茶憩_成就_通用1.png'
else
if achive['title'] == '茶憩密话' then
output_data['achives'][i]['icon'] = '茶憩_成就_通用3.png'
else
output_data['achives'][i]['icon'] = '茶憩_成就_通用2.png'
end
end
end
end
end
return output_data
end
function p.get_output_html(data, frame)
-- 拼接展示html
local html = mw.html.create()
-- 拼接图鉴
local invitation_0_html = p.get_invitation_0(data)
local invitation_1_html = p.get_invitation_1(data)
local invitation_2_html = p.get_invitation_2(data)
local invitation_3_html = p.get_invitation_3(data)
local invitation_4_html = p.get_invitation_4(data)
local invitation_5_html = p.get_invitation_5(data)
local acheives_table = p.get_acheives_html(data['achives'], data['character_name'])
html = html:tag('div'):addClass('visible-lg visible-md visible-sm') --
:tag('div'):attr('id', 'tabber-test'):addClass('tabber tabberlive') --
:tag('div'):addClass('tabbertab'):attr('title', '0'):attr('data-hash', '0'):wikitext(invitation_0_html):done() --
:tag('div'):addClass('tabbertab'):attr('title', '1'):attr('data-hash', '1'):cssText('display: none;'):wikitext(invitation_1_html):done() --
:tag('div'):addClass('tabbertab'):attr('title', '2'):attr('data-hash', '2'):cssText('display: none;'):wikitext(invitation_2_html):done() --
:tag('div'):addClass('tabbertab'):attr('title', '3'):attr('data-hash', '3'):cssText('display: none;'):wikitext(invitation_3_html):done() --
:tag('div'):addClass('tabbertab'):attr('title', '4'):attr('data-hash', '4'):cssText('display: none;'):wikitext(invitation_4_html):done() --
:tag('div'):addClass('tabbertab'):attr('title', '5'):attr('data-hash', '5'):cssText('display: none;'):wikitext(invitation_5_html):done() --
:done() --
:done() -- 拼接表格(小屏和中屏显示)
:tag('div'):addClass('hidden-lg hidden-md hidden-sm'):node(acheives_table):done();
return html
end
function p.get_invitation_0(data)
local html = mw.html.create()
html = html:tag('div'):addClass('character-tea--invitation-1') --
:tag('div'):addClass('character-tea--invitation-bg') --
:wikitext('[[文件:茶憩_图鉴_背景_' .. data['character_name'] .. '_00.png|class=img-fit|link=]]') --
:done() --
:done();
return tostring(html)
end
function p.get_invitation_1(data)
local html = mw.html.create()
html = html:tag('div'):addClass('character-tea--invitation-2') --
:tag('div'):addClass('character-tea--invitation-bg'):wikitext('[[文件:茶憩_图鉴_背景_' .. data['character_name'] .. '_01.png|class=img-fit|link=]]'):done() --
:tag('div'):addClass('character-tea--info-1') --
:tag('div'):addClass('character-tea--info-1-bg'):wikitext('[[文件:UI_茶憩_图鉴_套餐描述_01.png|class=img-character-tea--info-1-bg|link=]]'):done() --
:tag('div'):addClass('character-tea--info-1-title'):wikitext('套餐内含:'):done() --
:tag('div'):addClass('character-tea--info-1-text'):wikitext(data['combo_content']):done() --
:done() --
:tag('div'):addClass('character-tea--info-2') --
:tag('div'):addClass('character-tea--info-2-bg'):wikitext('[[文件:UI_茶憩_图鉴_套餐描述_02.png|class=img-fit|link=]]'):done() --
:tag('div'):addClass('character-tea--info-2-text'):wikitext(data['combo_notes']):done() --
:done() --
:done();
return tostring(html)
end
function p.get_invitation_2(data)
local html = p.get_invitation_recipe(data['character_name'], '02', data['achives'][1], data['achives'][2])
return tostring(html)
end
function p.get_invitation_3(data)
local html = p.get_invitation_recipe(data['character_name'], '03', data['achives'][3], data['achives'][4])
return tostring(html)
end
function p.get_invitation_4(data)
local html = p.get_invitation_recipe(data['character_name'], '04', data['achives'][5], data['achives'][6])
return tostring(html)
end
function p.get_invitation_5(data)
local html = p.get_invitation_recipe(data['character_name'], '05', data['achives'][7], data['achives'][8])
return tostring(html)
end
-- 生成3-6页通用方法
function p.get_invitation_recipe(characterName, page, achieve1, achieve2)
local html = mw.html.create()
local recipe1 = mw.html.create()
local recipe2 = mw.html.create()
local hint1 = mw.html.create()
local hint2 = mw.html.create()
-- 处理配方1
recipe1 = recipe1:tag('div'):addClass('character-tea--invitation-icon'):wikitext('[[文件:' .. achieve1['icon'] .. '|class=img-fit|link=]]'):done() --
:tag('div'):addClass('character-tea--invitation-hint1 bili-tt'):attr('data-type', '$茶憩成就描述'):attr('data-name', characterName .. '-' .. achieve1['title']) --
:wikitext('[[文件:UI_茶憩_图鉴_提示.png|link=]]') --
:done() --
:tag('div'):addClass('character-tea--invitation-title') --
:tag('span'):cssText('font-size:0.9cqw;'):wikitext(achieve1['level']):done() --
:wikitext(achieve1['title']):done() --
if achieve1['recipe'] ~= nil then
recipe1 = recipe1:tag('ul'):addClass('character-tea--invitation-recipe')
for _i, v in ipairs(achieve1['recipe']) do
recipe1 = recipe1:tag('li'):wikitext(' [[文件:UI_茶憩_成就_配方_列表项.png|10px|link=]] ' .. v):done();
end
recipe1 = recipe1:done()
else
recipe1 = recipe1:tag('div'):addClass('character-tea--invitation-detail'):wikitext(achieve1['detail']):done()
end
-- 处理配方2
if achieve2['title'] == '' then
else
recipe2 = recipe2:tag('div'):addClass('character-tea--invitation-icon'):wikitext('[[文件:' .. achieve2['icon'] .. '|class=img-fit|link=]]'):done() --
:tag('div'):addClass('character-tea--invitation-hint1 bili-tt'):attr('data-type', '$茶憩成就描述'):attr('data-name', characterName .. '-' .. achieve2['title']) --
:wikitext('[[文件:UI_茶憩_图鉴_提示.png|link=]]') --
:done() --
:tag('div'):addClass('character-tea--invitation-title') --
:tag('span'):cssText('font-size:0.9cqw;'):wikitext(achieve2['level']):done() --
:wikitext(achieve2['title']):done() --
if achieve2['recipe'] ~= nil then
recipe2 = recipe2:tag('ul'):addClass('character-tea--invitation-recipe')
for _i, v in ipairs(achieve2['recipe']) do
recipe2 = recipe2:tag('li'):wikitext(' [[文件:UI_茶憩_成就_配方_列表项.png|10px|link=]] ' .. v):done();
end
recipe2 = recipe2:done()
else
recipe2 = recipe2:tag('div'):addClass('character-tea--invitation-detail'):wikitext(achieve2['detail']):done()
end
end
-- 总体拼接
html = html:tag('div'):addClass('character-tea--invitation-3') --
:tag('div'):addClass('character-tea--invitation-bg'):wikitext('[[文件:茶憩_图鉴_背景_' .. characterName .. '_' .. page .. '.png|class=img-fit|link=]]'):done() --
:tag('div'):addClass('character-tea--invitation-right') --
:tag('div'):addClass('character-tea--invitation-right-1'):node(recipe1):done() --
:tag('div'):addClass('character-tea--invitation-right-2'):node(recipe2):done() --
:done()
:done()
return html
end
function p.get_acheives_html(data, character_name)
local acheives_html = mw.html.create()
acheives_html = acheives_html:tag('table'):addClass('wikitable'):cssText('margin:0;width:100%;') --
:tag('tr') --
:tag('th'):cssText('width:30%;min-width:120px;'):wikitext('成就'):done() --
:tag('th'):addClass('hidden-xs'):cssText('width:40%;'):wikitext('提示'):done() --
:tag('th'):wikitext('配方'):done() --
:done()
for _i, v in ipairs(data) do
if v['title'] ~= '' then
local recipe = ''
if v['recipe'] ~= nil and #v['recipe'] ~= 0 then
for _k, x in ipairs(v['recipe']) do
recipe = recipe .. '<li>' .. x .. '</li>'
end
else
recipe = v['detail']
end
acheives_html = acheives_html:tag('tr') --
:tag('td'):wikitext(v['title']):tag('div'):wikitext(v['level']):done():done() --
:tag('td'):addClass('hidden-xs'):wikitext(v['hint']):done() --
:tag('td'):addClass('hidden-xs tea-achieve--recipe'):wikitext(recipe):done() --
:tag('td'):addClass('visible-xs tea-achieve--recipe'):cssText('position:relative;') --
:tag('span'):addClass('bili-tt'):attr('data-type', '$茶憩成就描述'):attr('data-name', character_name .. '-' .. v['title']):wikitext(recipe):done() --
:done() --
:done()
end
end
acheives_html = acheives_html:done();
return acheives_html
end
return p

沪公网安备 31011002002714 号