Module:技术导航
跳转到导航
跳转到搜索
-- Module:技术导航
local p = {}
local fstr = mw.ustring.format -- shortcut for formattig a string
local getArgs = require('Dev:Arguments').getArgs
local navbox = require([[Module:PortableNavbox]])
local utils = require([[Module:Utils]])
local po = require([[Module:Po]]).po
local techDatas = mw.loadData([[Module:Data/Techs]])
function p._main()
local out = {"<span>[[技术]]</span>"}
out.collapse = "no"
local cateTechs = {}
for techId, tGroup in pairs(techDatas) do
for dlc, tData in pairs(tGroup) do
local cateogry = tData.category
if cateogry ~= nil then
if cateTechs[cateogry] == nil then
cateTechs[cateogry] = {}
end
table.insert(cateTechs[cateogry], tData)
end
end
end
local cateNames = {}
for cate, _ in pairs(cateTechs) do
table.insert(cateNames, cate)
end
table.sort(cateNames)
-- 装载项目
for _, cate in pairs(cateNames) do
local usedTechIds = {}
local tDatas = cateTechs[cate]
if tDatas ~= nil then
local names = {}
for _, tData in ipairs(tDatas) do
if usedTechIds[tData.Id] == nil then
local techName = po("STRINGS.RESEARCH.TECHS."..tData.Id:upper()..".NAME")
local name = fstr("[[技术/%s|%s]]", techName, techName)
usedTechIds[tData.Id] = true
table.insert(names, name)
end
end
if #names > 0 then
table.sort(names)
table.insert(out, po("STRINGS.RESEARCH.TREES.TITLE"..cate:upper()))
table.insert(out, table.concat(names, " ! "))
end
end
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