Module:遗迹信息框
跳转到导航
跳转到搜索
可在Module:遗迹信息框/doc创建此模块的帮助文档
-- Module:遗迹信息框
local p = {}
local getArgs = require("Dev:Arguments").getArgs
local fstr = mw.ustring.format
local po = require([[Module:Po]]).po
local i18nb = require([[Module:I18n]]).loadMessages([[Module:I18n/Buildings]])
local i18nc = require([[Module:I18n]]).loadMessages([[Module:I18n/Codex]])
local i18ncr = require([[Module:I18n]]).loadMessages([[Module:I18n/Creatures]])
local utils = require("Module:Utils")
local k0 = utils.K0
local infobox = require([[Module:信息框/遗迹]])
local fData = mw.loadData([[Module:Data/GravitasEntities]])
local exception = {}
local function isMatchMeteorId(fData, id)
if fData.id:upper() == id:upper() then
return true
elseif fData.clusterMapMeteorShowerID ~= nil then
if ("ClusterMapMeteorShower_" .. id):upper() == fData.clusterMapMeteorShowerID:upper() then
return true
end
elseif fData.id:upper() == ("MeteorShower" .. id .. "Event"):upper() then
return true
elseif fData.id:upper() == ("Cluster" .. id .. "Shower"):upper() then
return true
end
return false
end
function p._main(itemData, itemCode)
local out = {}
local pageCats = {}
out["ID"] = fstr("<code>%s</code>", itemData.id)
out["名称"] = po(itemData.Name)
out["图片"] = fstr("%s.png", out["名称"])
out["图片说明"] = po(itemCode:sub(1, -6) .. ".DESC")
if itemData.kBoxCollider2D ~= nil then
out["宽度"] = itemData.kBoxCollider2D.x
out["高度"] = itemData.kBoxCollider2D.y
end
if itemData.decorProvider ~= nil then
out["装饰值"] = itemData.decorProvider.baseDecor
out["装饰半径"] = itemData.decorProvider.baseRadius
end
if itemData.storage ~= nil then
if itemData.storage.showInUI == true then
out['机械臂运送'] = itemData.storage.useGunForDelivery == true and "✔" or "✖"
if itemData.storage.storageFilters ~= nil and #itemData.storage.storageFilters > 0 then
out['允许清空库存'] = itemData.storage.allowItemRemoval == true and "✔" or "✖"
out['库存容量'] = utils.kg2str(itemData.storage.capacityKg)
out['库存'] = {}
for _, tag in ipairs(itemData.storage.storageFilters) do
local name = utils.getEntry(tag)
if name ~= nil then
table.insert(out['库存'], fstr("{{物品|%s}}}", name))
end
end
end
else
out['机械臂运送'] = itemData.storage.useGunForDelivery == true and "✔" or nil
end
end
if itemData.primaryElement ~= nil then
out["元素"] = fstr("{{物品|%s}}", utils.getEntry(itemData.primaryElement.Name))
out["质量"] = utils.kg2str(itemData.primaryElement.Mass)
out["初始温度"] = utils.float2str(itemData.primaryElement.InternalTemperature + k0) .. " °C"
end
if itemData.dlcIds ~= nil then
local icons = utils.dlcIcons(itemData.dlcIds)
out['可用DLC'] = icons ~= nil and #icons > 0 and table.concat(icons, " ") or nil
end
table.insert(pageCats, "[[Category:遗迹]]")
return out, pageCats
end
-- test by: = p.main(require("Module:debug").frame({},{debug=1, "CryoTank"}))
-- test by: = p.main(require("Module:debug").frame({},{debug=1, "FossilBitsLarge"}))
-- test by: = p.main(require("Module:debug").frame({},{debug=1, "PinkRock"}))
-- test by: = p.main(require("Module:debug").frame({},{debug=1, pagename="低温箱3000"}))
-- test by: = p.main(require("Module:debug").frame({},{debug=1, pagename="地热热泵"}))
-- test by: = p.main(require("Module:debug").frame({},{debug=1, pagename="化石碎片"}))
-- test by: = p.main(require("Module:debug").frame({},{debug=1, pagename="流明石英"}))
function p.main(frame)
local args = getArgs(frame)
local gravitas = {}
if args ~= nil and args[1] ~= nil then
for _, entityId in ipairs(args) do
local gravity = fData[entityId]
if gravity ~= nil then
table.insert(gravitas, {
code = gravity.Name,
data = gravity
})
end
end
else
local gravityCode = i18nb:msgRev({
key = args.pagename,
args = {
prefix = "STRINGS.BUILDINGS.PREFABS."
}
} or "")
if utils.isDefaultT(args.pagename, gravityCode) then
gravityCode = i18nc:msgRev({
key = args.pagename,
args = {
prefix = "STRINGS.CODEX.STORY_TRAITS."
}
} or "")
end
if utils.isDefaultT(args.pagename, gravityCode) then
gravityCode = i18ncr:msgRev({
key = args.pagename,
args = {
prefix = "STRINGS.CREATURES."
}
} or "")
end
if gravityCode == nil then
error(fstr("找不到遗迹 '%s',请使用参数1或检查 [[%s]]。", args.pagename,
"Module:Data/GravitasEntities"))
else
for k, v in pairs(fData) do
if v.Name == gravityCode then
table.insert(gravitas, {
code = v.Name,
data = v
})
break
end
end
end
end
if #gravitas <= 0 then
error(fstr("找不到遗迹 '%s',请使用参数1或检查 [[%s]]。", args.pagename,
"Module:Data/GravitasEntities"))
end
-- 找到所有流量雨id
local infos = {}
local pageCatsSet = {}
for _, gravity in ipairs(gravitas) do
local curr, cats = p._main(gravity.data, gravity.code)
table.insert(infos, {
label = curr['名称'],
data = curr
})
for _, cat in ipairs(cats) do
pageCatsSet[cat] = true
end
end
-- 分类
local pageCats = {}
if not (args.namespace or args.nocat) then
for cat, _ in pairs(pageCatsSet) do
table.insert(pageCats, cat)
end
table.sort(pageCats)
end
if args.debug then
mw.logObject(infos, "infos")
mw.logObject(pageCats, "pageCats")
end
local infoboxTitle = args.pagename
return infobox.main(infoboxTitle, infos) .. table.concat(pageCats, "")
end
return p