缺氧 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 subworldsDataDLC4 = mw.loadData([[Module:Data/Worldgen/Subworlds/Dlc4]])
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
for subworldId, subworlds in pairs(subworldsDataDLC4) 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:gsub("生态", "") .. "生态")
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