「于世界交点之处,逢似曾相识之人」

本wiki目前不支持自由编辑,如果有兴趣参与wiki内容编辑,请加入WIKI建设群904200987(游戏交流勿加会被踢)
使用wiki的数据、图片、音频资源,或者搬运页面内容时,请注明出处。具体参照CC BY-NC-SA 4.0协议
感谢Hyacinth对本wiki提供的数据支持
编辑帮助BWIKI反馈

bugfix1001.2
全站通知:

模块:Character/TeaDrink

来自白荆回廊Wiki
跳到导航 跳到搜索

此模块的文档可以在模块:Character/TeaDrink/doc创建

local p = {}
local db = require('模块:同调者茶憩饮品档案数据库')
local db_drink_data = db.character_tea_menu_data
local db_condiment_data = db.character_condiment_menu_data

p['茶憩菜单'] = function(frame)
    local name = frame.args['name']

    if name == nil then
        return 'Vein数据库连接失败'
    end

    --过滤数据
	local output_data = nil
	if db_drink_data[name] and db_condiment_data[name] then
		output_data = db_drink_data[name]
		output_data['condiment'] = db_condiment_data[name]['condiment']
	end

    --拼接表格
    local html = nil
    if output_data == nil then
        html = mw.html.create()
        html = html:node(frame:expandTemplate{title = '暂无数据'}):done()
    else
    	html = p.get_menu_output_html(output_data, name)
	end

    return tostring(html)
end

function p.get_menu_output_html(output_data, char_name)
    local cup_data = p.clean_cup_data(output_data['cup'], char_name)
    local drink_data = p.clean_drink_data(output_data['drink'], char_name)
    local condiment_data = output_data['condiment']
    
    local html = mw.html.create()

    local cup_menu = p.get_cup_menu_html(cup_data, char_name)
    local drink_menu = p.get_drink_menu_html(drink_data, char_name)
    local condiment_menu = p.get_condiment_menu_html(condiment_data, char_name)

    html = html:node(cup_menu):node(drink_menu):node(condiment_menu)

    return html
end

-----------------------------------------------------------------------------
-- 清洗数据
-----------------------------------------------------------------------------
function p.clean_cup_data(cupList, char_name)
    local output_data = {}

    for _i, v in ipairs(cupList) do
		local icon = 'UI_Tea_Cup_' .. v['name'] .. '.png'
        local temp = {
	        ['name'] = v['name'] == '' and '未解锁' or v['name'],
	        ['display_name'] = v['name'] == '' and '未解锁' or v['name'],
            ['icon'] = v['name'] == '' and 'UI_Tea_lock.png' or icon,
            ['iconClass'] = v['name'] == '' and 'tea-menu--cup-menu-item-lock-img' or '',
			['unlockLevel'] = p.get_unlock_str(v['unlock_level'])
		}

        if char_name == '老板' or char_name == '豹富' then
		    temp['id'] = v['name']
            temp['icon'] = 'UI_Tea_Plate_' .. v['name'] .. '.png'
			if v['name'] == '鎏·金' then
				temp['display_name'] = '鎏·金(盘)'
			end
        end
        
        table.insert(output_data, temp)
    end

    return output_data
    
end

function p.clean_drink_data(drinkList, char_name)
    local output_data = {}

    for _i, v in ipairs(drinkList) do
		local icon = 'UI_Tea_Drink_' .. v['name'] .. '.png'
        local temp = {
		    ['id'] = v['id'],
		    ['name'] = v['name'] == '' and '未解锁' or v['name'],
            ['icon'] = v['name'] == '' and 'UI_Tea_Drink_Lock.png' or icon,
            ['iconClass'] = v['name'] == '' and 'tea-menu--drink-menu-item-lock-img' or '',
			['unlockLevel'] = p.get_unlock_str(v['unlock_level']),
			['favor'] = #v['favor'] == 0 and 'unknown' or v['favor']
		}

		if char_name == '老板' or char_name == '豹富' then
		    temp['id'] = v['name']
            temp['icon'] = 'UI_Tea_Condiments_' .. v['name'] .. '.png'
        end

        table.insert(output_data, temp)
    end

    return output_data
end

-----------------------------------------------------------------------------
-- 拼接cup_menu
-----------------------------------------------------------------------------
function p.get_cup_menu_html(data, char_name)

  	local menu_wrapper = mw.html.create()
  	local menu = mw.html.create()

	local menu_style = {
		[1] = 'bottom:50%;right:50%;transform:translateX(-50%);',
		[2] = 'bottom:50%;left:50%;transform:translateX(50%);',
		[3] = 'top:55%;right:50%;transform:translateX(-50%);',
		[4] = 'top:55%;left:50%;transform:translateX(50%);'
	}
    if #data == 4 then
        for i, v in ipairs(data) do
		    menu = menu:tag('div'):addClass('tea-menu--cup-menu-item bili-tt'):cssText(menu_style[i]):attr('data-type', '$饮品杯子图鉴'):attr('data-name', v['name'])
                    :tag('div'):addClass(v['iconClass']):wikitext('[[文件:' .. v['icon'] .. '|class=img-fit|link=]]'):done()
                    :tag('div'):addClass('tea-menu--cup-menu-item-name'):wikitext(v['display_name']):done()
                    :tag('div'):addClass('tea-menu--cup-menu-item-resource'):wikitext(v['unlockLevel']):done()
                :done()
	    end
	end

    menu_wrapper = menu_wrapper:tag('div'):addClass('tea-menu tea-menu--cup-menu')
                    :tag('div'):wikitext('[[文件:UI_Tea_menu_bg.png|class=img-fit|link=]]'):done()
                    :tag('div'):addClass('tea-menu--cup-menu-deco'):wikitext('[[文件:UI_Tea_Menu_Decorate_01.png|class=img-fit|link=]]'):done()
                    :node(menu)
                :done()

  return menu_wrapper

end

-----------------------------------------------------------------------------
-- 拼接drink_menu
-----------------------------------------------------------------------------
function p.get_drink_menu_html(data, char_name)

  	local menu_wrapper = mw.html.create()
  	local menu = mw.html.create()

  	local tooltip = '$饮品图鉴'
	if char_name == '老板' or char_name == '豹富' then
		tooltip = '$小料图鉴'
	end

	if #data > 0 then
        for _i, v in ipairs(data) do
			menu = menu:tag('div'):addClass('tea-menu--drink-menu-item bili-tt'):attr('data-type', tooltip):attr('data-name', v['id'])
                    :tag('div'):addClass(v['iconClass']):wikitext('[[文件:' .. v['icon'] .. '|class=img-fit|link=]]'):done()
                    :tag('div'):addClass('tea-menu--drink-menu-item-name'):wikitext(v['name']):done()
                    :tag('div'):addClass('tea-menu--drink-menu-item-resource'):wikitext(v['unlockLevel']):done()
                    :tag('div'):addClass('tea-menu--drink-menu-item-favor'):wikitext('[[文件:UI_Tea_Drink_Favor_' .. v['favor'] .. '.png|class=img-fit|link=]]'):done()
                :done()
        end
    end

	menu_wrapper = menu_wrapper:tag('div'):addClass('tea-menu tea-menu--drink-menu')
                    :tag('div'):wikitext('[[文件:UI_Tea_menu_bg.png|class=img-fit|link=]]'):done()
                    :tag('div'):addClass('tea-menu--drink-menu-deco'):wikitext('[[文件:UI_Tea_Menu_Decorate_02.png|class=img-fit|link=]]'):done()
                    :tag('div'):addClass('seed-scroll')
					    :node(menu)
                    :done()
				:done()

    return menu_wrapper

end

-----------------------------------------------------------------------------
-- 拼接condiment_menu
-----------------------------------------------------------------------------
function p.get_condiment_menu_html(data, char_name)

	if data == nil or char_name == '老板' or char_name == '豹富' then
		return ''
    end

  	local menu_wrapper = mw.html.create()
  	local menu = mw.html.create()

    if #data > 0 then
        for _i, v in ipairs(data) do
            menu = menu:tag('div'):addClass('tea-menu--condiment-menu-type')
                    :tag('div'):wikitext('[[文件:UI_Tea_Menu_Condiments_title.png|class=tea-menu--condiment-menu-type-bg|link=]]'):done()
                    :tag('div'):wikitext(v['type']):done()
				:done()
                :tag('div'):addClass('tea-menu--condiment-menu-box')

            for _j, w in ipairs(v['list']) do
                local favor = w['favor'] == '' and '3' or w['favor']
                menu = menu:tag('div'):addClass('tea-menu--condiment-menu-item')
                        :tag('div'):addClass(v['iconClass']):wikitext('[[文件:UI_Tea_Condiments_' .. w['name'] .. '.png|class=img-fit|link=]]'):done()
                        :tag('div'):addClass('tea-menu--condiment-menu-item-name'):wikitext(w['name']):done()
                        :tag('div'):addClass('tea-menu--condiment-menu-item-favor'):wikitext('[[文件:UI_Tea_Drink_Favor_' .. favor .. '.png|class=img-fit|link=]]'):done()
                    :done()
            end

            menu = menu:done()
        end
    end

	menu_wrapper = menu_wrapper:tag('div'):addClass('tea-menu tea-menu--condiment-menu')
                    :tag('div'):wikitext('[[文件:UI_Tea_menu_bg.png|class=img-fit|link=]]'):done()
                    :tag('div'):addClass('seed-scroll')
                        :node(menu)
                    :done()
			    :done()

  return menu_wrapper

end

--处理解锁条件字段
function p.get_unlock_str(level)

    local str = '默认解锁'

    if level == nil or level == '' then
        str = '未知'
    elseif level ~= 0 then
        str = '默契值' .. level .. '级'
    end

    return str
end

return p