米斯特利亚Wiki正在建设中,本WIKI编辑权限开放!欢迎参与~!
全站通知:
模块:Museum wings
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:Museum wings/doc创建
local data = require('模块:museum_wings/Data')
local Items = require('模块:Items')
local p = {}
-- 预展开:构建 itemId -> set 对象的索引,便于快速查找
local setByItem = {}
-- 预展开:构建套装名称 -> set 对象的索引,便于快速查找
local setByName = {}
for _, wing in pairs(data or {}) do
local sets = wing.sets
for _, setObj in pairs(sets) do
-- 构建套装名到套装对象的索引
if setObj.name then
setByName[setObj.name] = setObj
end
-- 构建物品到套装的索引
local itemList = setObj.items
for _, itemId in pairs(itemList) do
setByItem[itemId] = setObj
end
end
end
function p.test()
mw.log("setByItem:")
mw.logObject(setByItem)
mw.log("setByName:")
mw.logObject(setByName)
end
function p._renderSet(setTable, mainTitleName, subTitleName)
local tmpMainTitle = mainTitleName or "文物系列"
local tmpSubTitle = subTitleName or "物品"
local itemsRender = Items._renderItemList(setTable.items, tmpSubTitle)
local tmpArgs = {}
tmpArgs.sets = itemsRender
tmpArgs.name = setTable.name
tmpArgs.desc = setTable.description
-- mw.log("---tmgArgs---")
-- mw.logObject(tmpArgs)
local frame = mw.getCurrentFrame()
return frame:expandTemplate {
title = tmpMainTitle,
args = tmpArgs
}
end
-- 根据传入的 item(内部ID或中文名)返回其所属的套装表
-- 示例:传入 ancient_stone_lantern -> 返回包含 name/description/Items/name_en/description_en 的表
function p._findMuseumSetByItem(itemId)
local resolvedId = Items._id(itemId)
if not resolvedId or resolvedId == '' then return nil end
return setByItem[resolvedId] or nil
end
-- 根据传入的 item(内部ID或中文名)查找其所属的套装表,最终渲染使用模板:文物系列
-- 示例:传入 ancient_stone_lantern -> 返回包含 name/description/Items/name_en/description_en 的表
function p.findMuseumSetByItem(frame)
local item = frame and frame.args and frame.args[1]
if not item or item == '' then return nil end
local set = p._findMuseumSetByItem(item)
if not set or set == '' then return nil end
-- mw.log("----set----")
-- mw.logObject(set)
local render = p._renderSet(set)
return render
end
-- local frame = mw.getCurrentFrame()
-- frame.args = {"aldarian_war_banner"}
-- local r = p.findMuseumSetByItem(frame)
function p._findMuseumSetByName(setName)
if not setName or setName == '' then return nil end
return setByName[setName] or nil
end
function p.findMuseumSetByName(frame)
local setName = frame.args[1]
if not setName or setName == '' then return nil end
local mainTitleName = frame.args[2] or "文物系列"
local subTitleName = frame.args[3] or "物品"
local set = p._findMuseumSetByName(setName, mainTitleName, subTitleName)
if not set or set == '' then return nil end
local render = p._renderSet(set)
return render
end
--mw.logObject(p.getMuseumSet({args={"alda_bronze_sword"}}))
--p.renderSet({args={"alda_bronze_sword"}})
return p