缺氧 wiki 编辑团队提示:注册账号并登录后体验更佳,且可通过参数设置定制优化您的浏览体验!
该站点为镜像站点,如果你想帮助这个由玩家志愿编辑的 wiki 站点,请前往原站点参与编辑,
同时欢迎加入编辑讨论群 851803695 与其他编辑者一起参与建设!
全站通知:
模块:生态导航
刷
历
编
跳到导航
跳到搜索
-- Module:生态导航
-- 注意:代码中的 subworld (sw) 才是生态,而 biome 基本指生态所处自然环境(主要是自然砖块元素表)
local p = {}
local fstr = mw.ustring.format -- shortcut for formattig a string
local getArgs = require('Module:Dev/Arguments').getArgs
local navbox = require([[Module:导航栏]])
local utils = require([[Module:Utils]])
local po = require([[Module:Po]]).po
local i18ndw = require([[Module:I18n]]).loadMessages([[Module:i18n/Worlds]])
local subworldsDataBASE = mw.loadData([[Module:Data/Worldgen/Subworlds]])
local subworldsDataDLC1 = mw.loadData([[Module:Data/Worldgen/Subworlds/Expansion1]])
local subworldsDataDLC2 = mw.loadData([[Module:Data/Worldgen/Subworlds/Dlc2]])
local function setWorldTable(swTable, subworlds, subworldId)
if not utils.endswith(subworldId, ".yaml") then
local sCode = "STRINGS.SUBWORLDS." .. subworldId:upper() .. ".NAME"
local name = po(sCode)
if utils.isDefaultT(sCode, name) then
for _, sData in pairs(subworlds) do
local zoneType = "STRINGS.SUBWORLDS." .. sData.zoneType:upper() .. ".NAME"
local zoneTypeName = po(zoneType)
if utils.isDefaultT(zoneType, zoneTypeName) then
swTable[zoneTypeName] = true
end
end
else
swTable[name] = true
end
end
end
function p._main()
local out = {"<span>生态</span>"}
out.collapse = "no"
local swNames = {}
for subworldId, subworlds in pairs(subworldsDataBASE) do
setWorldTable(swNames, subworlds, subworldId)
end
for subworldId, subworlds in pairs(subworldsDataDLC1) do
setWorldTable(swNames, subworlds, subworldId)
end
for subworldId, subworlds in pairs(subworldsDataDLC2) do
setWorldTable(swNames, subworlds, subworldId)
end
-- 装载
local sCodes = {}
for name, _ in pairs(swNames) do
table.insert(sCodes, name)
end
table.sort(sCodes)
table.insert(out, "[[生态]]")
table.insert(out, table.concat(utils.map(sCodes, function(name)
return fstr("{{物品|%s}}", name .. "生态")
end), " ! "))
return out
end
-- test by: = p.main(require("Module:debug").frame({},{debug=1}))
function p.main(frame)
local args = getArgs(frame)
local out = p._main()
if args.debug then
mw.logObject(out)
end
return navbox.main(out)
end
return p