Module:信息框/技术

来自缺氧 Wiki
跳转到导航 跳转到搜索

用于模块:Module:技术信息框



local infobox = require([[Module:信息框]])
local fstr = mw.ustring.format
local p = {}

local innerNodes = {
    {
        tag = 'data',
        source = '图片',
    },
    {
        tag = 'data',
        source = '图片说明',
    },
    {
        tag = 'data',
        source = 'ID',
        label = 'ID'
    },
    {
        tag = 'data',
        source = '类型',
        label = '类型'
    },
    {
        tag = 'data',
        source = '等级',
        label = '等级'
    },
    {
        tag = 'group',
        header = '研究点数',
        attr = {collapse = 'open'},
        children = {
            {
                tag = 'data',
                source = '基础研究',
                label = '[[File:基础研究.png|16px|link=基础研究]][[基础研究]]'
            },
            {
                tag = 'data',
                source = '高级研究',
                label = '[[File:高级研究.png|16px|link=高级研究]][[高级研究]]'
            },
            {
                tag = 'data',
                source = '应用科学研究',
                label = '[[File:应用科学研究.png|16px|link=应用科学研究]][[应用科学研究]]'
            },
            {
                tag = 'data',
                source = '星际研究',
                label = '[[File:星际研究.png|16px|link=星际研究]][[星际研究]]'
            },
        }
    },
    {
        tag = 'group',
        header = '研究',
        attr = {collapse = 'open', layout="horizontal"},
        children = {
            {
                tag = 'data',
                source = '前置技术',
                label = '上一技术'
            },
            {
                tag = 'data',
                source = '可解锁技术',
                label = '下一技术'
            },
        }
    },
}

-- test: = p.infoboxContent{['装饰值'] = 5, ['装饰半径'] = 1, ['寿命'] = 1}
function p.infoboxContent(args)
    local generated = {}
    for _, n in ipairs(innerNodes) do
        local child = infobox.genNode(n, args)
        if child ~= nil then table.insert(generated, child) end
    end

    return generated
end

-- test: = p.main('testTitle', {{label = 'baseGame', data = {['描述'] = "描述测试", ['图片'] = "[[File:发射支架.png|60px|link=发射支架]]", ['等级'] = 1, ['基础研究'] = 123}}}, true)
--[=[ test: =p.main('testTitle', {
	{label = 'baseGame', data = {['描述'] = "描述测试", ['图片'] = "[[File:发射支架.png|60px|link=发射支架]]", ['等级'] = 1, ['基础研究'] = 123}},
	{label = 'SO', data = {['描述'] = "描述", ['图片'] = "[[File:发射支架.png|60px|link=发射支架]]", ['等级'] = 1, ['基础研究'] = 123}}
	}, true)
]=]
function p.main(title, data, raw)
    local contentNodes = nil
    if #data == 1 then
        contentNodes = p.infoboxContent(data[1].data)
    else
        local panelData = {}
        for _, pData in ipairs(data) do
            table.insert(panelData, {
                label = pData.label,
                content = p.infoboxContent(pData.data)
            })
        end
        contentNodes = {infobox.panel(panelData)}
    end
    return infobox.infobox(title, contentNodes, raw)
end

function p.demo(frame)
    local getArgs = require('Dev:Arguments').getArgs
    local args = getArgs(frame)
    return p.main(args['标题'], {{data = args}}, args.raw)
end

return p