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

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

全站通知:

模块:表格/坐标前缀

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

此模块的文档可以在模块:表格/坐标前缀/doc创建

local p = {}
local getArgs = require('Module:Dev/Arguments').getArgs
local dlcIcons = require('Module:Utils').DLC_ICONS
local po = require('Module:Po').po

local clusterPacks = {
	mw.loadData("Module:Data/Worldgen/Clusters"),
	mw.loadData("Module:Data/Worldgen/Clusters/Expansion1"),
	mw.loadData("Module:Data/Worldgen/Clusters/Dlc2"),
	mw.loadData("Module:Data/Worldgen/Clusters/Dlc4")
}

local clusterCategories = {
	Vanilla = "STRINGS.UI.FRONTEND.CLUSTERCATEGORYSELECTSCREEN.VANILLA_TITLE",
	SpacedOutVanillaStyle = "STRINGS.UI.FRONTEND.CLUSTERCATEGORYSELECTSCREEN.CLASSIC_TITLE",
	SpacedOutStyle = "STRINGS.UI.FRONTEND.CLUSTERCATEGORYSELECTSCREEN.SPACEDOUT_TITLE",
	Special = "STRINGS.UI.FRONTEND.CLUSTERCATEGORYSELECTSCREEN.EVENT_TITLE",
	[3] = "STRINGS.UI.FRONTEND.CLUSTERCATEGORYSELECTSCREEN.EVENT_TITLE"
}

local catOrders = {
	Vanilla = 1,
	SpacedOutVanillaStyle = 1,
	SpacedOutStyle = 2,
	Special = 3,
	[3] = 3
}

function p._main(args)
    local out = {}
    local clustersBase = {}
    local clustersSO = {}

	for _, clusters in pairs(clusterPacks) do
		for _, cluster in pairs(clusters) do
			if cluster.skip == nil then
				local row = {
					name = ("{{物品|%s}}%s")
						:format(po(cluster.name):gsub("<.->", ""),
							dlcIcons[cluster.dlcIdFrom or "?"] or ""),
					clusterCategory = po(clusterCategories[cluster.clusterCategory]),
					coordinatePrefix = cluster.coordinatePrefix,
					menuOrder = cluster.menuOrder,
					catOrder = catOrders[cluster.clusterCategory]
				}
				
				if cluster.forbiddenDlcIds ~= nil or cluster.clusterCategory == "Vanilla" then
					table.insert(clustersBase, row)
				else
					table.insert(clustersSO, row)
				end
			end
		end
	end
	
	local function sortClusters(a, b)
		if a.catOrder ~= b.catOrder then
			return a.catOrder < b.catOrder
		elseif a.menuOrder ~= b.menuOrder then
			return a.menuOrder < b.menuOrder
		else
			return a.coordinatePrefix < b.coordinatePrefix
		end
	end
    
    for i, clusters in ipairs({clustersBase, clustersSO}) do
    	table.insert(out, {i == 1 and "{{游戏本体图标}}" or "{{眼冒金星图标}}"})
    	table.sort(clusters, sortClusters)
	    for _, v in ipairs(clusters) do
	        table.insert(out, {v.name, v.clusterCategory, v.coordinatePrefix})
	    end
    end
    return require([[Module:表格]]).table(out, args)
end

-- test by: p.main()
function p.main(frame)
	return p._main(getArgs(frame))
end

return p