缺氧 wiki 编辑团队提示:注册账号并登录后体验更佳,且可通过参数设置定制优化您的浏览体验!

该站点为镜像站点,如果你想帮助这个由玩家志愿编辑的 wiki 站点,请前往原站点参与编辑,
同时欢迎加入编辑讨论群 851803695 与其他编辑者一起参与建设!

全站通知:

模块:Utils/Recipes

来自缺氧WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块的文档可以在模块:Utils/Recipes/doc创建

local p = {}
local utils = require("Module:Utils")
local getEntry = utils.getEntry
local fstr = mw.ustring.format
local arrow = "⇒"

-- for desc in infoboxes(fabricators known or not shown)
--[[
test by: 
local buData = mw.loadData("Module:Data/Buildings")
for k,v in pairs(buData) do
	if v.recipes then
		local desc = p.infobox(v.recipes)
		mw.log(desc)
	end
end
]]--
function p.infobox(recipes, args)
	local out = {}
	for _, recipe in ipairs(recipes) do
		local desc = {}
		local timeSlice = recipe.workTime > 1 and fstr("每 %s 秒", recipe.workTime) or "每秒"
		local inputs = {}
		for _, input in ipairs(recipe.input) do
			table.insert(inputs, fstr("{{物品|%s}} %s", getEntry(input.element, {"ITEMS", "ROBOTS"}), 
				utils.specialUnit[input.element] and utils.specialUnit[input.element](input.amount) 
				or utils.kg2str(input.amount, 2)))
		end
		local outputs = {}
		for _, output in ipairs(recipe.output) do
			table.insert(outputs, fstr("{{物品|%s}} %s", getEntry(output.element, {"ITEMS", "ROBOTS"}),
				utils.specialUnit[output.element] and utils.specialUnit[output.element](output.amount) 
				or utils.kg2str(output.amount, 2)))
		end
		if #inputs == 0 or #outputs == 0 then
			timeSlice = timeSlice .. (#inputs == 0 and "产生:" or "消耗:")
		else
			timeSlice = timeSlice .. ":"
		end
		table.insert(desc, timeSlice)
		if #inputs > 0 then
			table.insert(desc, table.concat(inputs, " + "))
		end
		if #outputs > 0 then
			table.insert(desc, fstr("%s%s", arrow, table.concat(outputs, " + ")))
		end
		table.insert(out, table.concat(desc, "<wbr>"))
	end
	return table.concat(out, "<br>")
end

return p