缺氧 wiki 编辑团队提示:注册账号并登录后体验更佳,且可通过参数设置定制优化您的浏览体验!
该站点为镜像站点,如果你想帮助这个由玩家志愿编辑的 wiki 站点,请前往原站点参与编辑,
同时欢迎加入编辑讨论群 851803695 与其他编辑者一起参与建设!
全站通知:
模块:Sandbox/Cnctema
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:Sandbox/Cnctema/doc创建
-- Module:表格/配方
local p = {}
local getArgs = require('Module:Dev/Arguments').getArgs
local fstr = mw.ustring.format -- shortcut for formattig a string
local po = require([[Module:Po]]).po
local tb = require([[Module:表格]])
local utils = require([[Module:Utils]])
local i18ndb = require([[Module:I18n]]).loadMessages([[Module:i18n/Buildings]])
local buData = mw.loadData([[Module:Data/Buildings]])
local k0 = utils.K0
-- return {buCode}
local function getBuCode(pagename)
local buCode = i18ndb:msgRev({
key = pagename,
args = {
prefix = "STRINGS.BUILDINGS.PREFABS."
}
} or "")
if buCode == nil or utils.isDefaultT(pagename, buCode) then
error(fstr("找不到建筑物 '%s',请使用参数1或检查 [[%s]]。", pagename, [[Module:Data/Buildings]]))
else
return buCode
end
return nil
end
function p._main(recipe, buCode)
local out = {}
-- 工作时间
table.insert(out, recipe.workTime == 1 and "每秒" or fstr("%s 秒", utils.float2str(recipe.workTime)))
-- 消耗
if recipe.input ~= nil then
local inputs = {}
for _, input in ipairs(recipe.input) do
local inputName = utils.getEntry(input.element)
table.insert(inputs, fstr("{{物品|%s}} %s 千克", inputName, utils.float2str(input.amount)))
end
if #inputs > 0 then
table.insert(out, table.concat(inputs, "<br/>"))
else
table.insert(out, "")
end
else
table.insert(out, "")
end
-- 消耗
if recipe.output ~= nil then
local outputs = {}
for _, output in ipairs(recipe.output) do
local outputName = utils.getEntry(output.element)
local minTemperature = output.minTemperature ~= nil and utils.float2str(output.minTemperature + k0) .. " °C" or ""
table.insert(outputs, fstr('<abbr title = "最低温度:%s">{{物品|%s}}</abbr> %s 千克',
minTemperature,
outputName,
utils.float2str(output.amount)
))
end
if #outputs > 0 then
table.insert(out, table.concat(outputs, "<br/>"))
else
table.insert(out, "")
end
else
table.insert(out, "")
end
return out
end
-- test by : = p.main(require("Module:debug").frame({},{debug=1, pagename="燃气灶"}))
-- test by : = p.main(require("Module:debug").frame({},{debug=1, "SteamTurbine"}))
function p.main(frame)
local args = getArgs(frame)
local builds = {}
if args ~= nil and args[1] ~= nil then
for _, buId in ipairs(args) do
for k, v in pairs(buData) do
if k:upper() == buId:upper() then
local _, _, buCode = utils.getEntry(buId)
table.insert(builds, {
id = k,
code = buCode
})
break
end
end
end
else
local buCode = getBuCode(args.pagename)
if buCode ~= nil then
local buId = buCode:match("([%u%d]+).NAME$")
table.insert(builds, {
id = buId,
code = buCode
})
end
end
if #builds <= 0 then
error(fstr("找不到建筑物 '%s',请使用参数1或检查 [[%s]]。", args.pagename, [[Module:Data/Buildings]]))
end
-- 组装信息
local infos = {}
for _, building in ipairs(builds) do
for k, v in pairs(buData) do
if k:upper() == building.id:upper() then
if v.recipes ~= nil then
for i, recipe in ipairs(v.recipes) do
local info = p._main(recipe, building.code)
table.insert(infos, info)
end
end
end
end
end
if args.debug then
mw.logObject(infos, "infos")
end
return tb.table(infos, args)
end
return p