模块:玩家装饰
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:玩家装饰/doc创建
local p = {}
local strinova = require("模块:卡拉彼丘")
local qualityToColor = strinova.qualityToColor
local format = string.format
-- ================= 辅助函数 =================
--稀有度样式
local function rarity_tag(frame, quality, name)
local color = qualityToColor[quality]
return format('<span class="badge rounded-pill" style="background-color: %s;">%s</span>', color, name)
end
-- 通用样式
local function build_style(frame, name, quality, get, desc, file)
return "File:"..file.."::"
..rarity_tag(frame, quality, name).."::"
..desc.."::"
..get
end
-- 超弦体动作样式
local function build_role_action_style(frame, name, quality, get, desc, file)
local info = frame:callParserFunction { name = '#info', args = { '[[文件:'..name..'.gif]]', 'max-width=500' } }
return "File:"..file.."::"
..rarity_tag(frame, quality, name)..info.."::"
..desc.."::"
..get
end
-- 意识重构样式
local function build_lottery_style(frame, file, name, quality)
local html = file.."|"..rarity_tag(frame, quality, name)
return tostring(html)
end
-- 通用生成 GalleryGrid 参数的函数
-- @param data: 数据表
-- @param filterStr: 过滤关键词 (可选)
-- @param options: 配置项 (width, height, fit, filePattern, styleFunc)
local function generate_gallery_args(frame, data, filterStr, options)
local args = {
template = 'PlayerDecoration',
class = 'player-decoration',
widths = options.widths or nil,
heights = options.heights or nil,
}
-- 默认为标准样式构建函数
local styleFunc = options.styleFunc or build_style
for _, items in pairs(data) do
local match = true
if filterStr and filterStr ~= "" then
-- 如果有过滤词,则检查 get 字段
if not (items.get and string.find(items.get, filterStr, 1, true)) then
match = false
end
end
if match then
-- 处理文件名:优先使用传入的 pattern 格式化,否则使用 items.file
local file = items.file
if options.filePattern and items.id then
file = format(options.filePattern, items.id)
end
local entry = styleFunc(frame, items.name, items.quality, items.get, items.desc, file)
table.insert(args, entry)
end
end
return args
end
--================= 主要函数 =================
p["封装"] = function (frame)
local data = mw.loadData("模块:玩家装饰/FrameData")
local args = generate_gallery_args(frame, data, nil, {
heights = '250px',
})
return frame:expandTemplate { title = 'gallerygrid', args = args }
end
p["基板页面"] = function (frame)
local data = mw.loadData("模块:玩家装饰/IDCardData")
local args = generate_gallery_args(frame, data, frame.args[1], {
})
return frame:expandTemplate { title = 'gallerygrid', args = args }
end
p["喷漆页面"] = function (frame)
local data = mw.loadData("模块:玩家装饰/DecalData")
local args = generate_gallery_args(frame, data, frame.args[1], {
filePattern = '喷漆_%d.png',
})
return frame:expandTemplate { title = 'gallerygrid', args = args }
end
p["勋章页面"] = function (frame)
local data = mw.loadData("模块:玩家装饰/BadgeData")
local args = generate_gallery_args(frame, data, frame.args[1], {
})
return frame:expandTemplate { title = 'gallerygrid', args = args }
end
p["聊天气泡"] = function (frame)
local data = mw.loadData("模块:玩家装饰/ChatBubblesData")
local args = generate_gallery_args(frame, data, nil, {
filePattern = '聊天气泡_%d.png',
})
return frame:expandTemplate { title = 'gallerygrid', args = args }
end
p["头套"] = function (frame)
local data = mw.loadData("模块:玩家装饰/MascotHeadData")
local args = generate_gallery_args(frame, data, nil, {
filePattern = '头套_%d.png',
})
return frame:expandTemplate { title = 'gallerygrid', args = args }
end
p["超弦体动作"] = function (frame)
local data = mw.loadData("模块:玩家装饰/RoleActionData")
local args = generate_gallery_args(frame, data, nil, {
filePattern = '超弦体动作图标_%d.png',
styleFunc = build_role_action_style, -- 使用自定义样式函数
})
return frame:expandTemplate { title = 'gallerygrid', args = args }
end
------ 大图子页面 ------
p["基板大图"] = function (frame)
local data = mw.loadData("模块:玩家装饰/IDCardData")
local filter = frame.args[1]
local resultList = {}
for _, items in pairs(data) do
if string.find(items.get, filter, 1, true) then
local html = format("%s|'''<big>%s</big>'''", items.img, items.name)
table.insert(resultList, html)
end
end
return frame:preprocess('<gallery mode="nolines" widths=140px heights=340px>\n'..table.concat(resultList, "\n")..'\n</gallery>')
end
p["喷漆大图"] = function (frame)
local data = mw.loadData("模块:玩家装饰/DecalData")
local get = frame.args[1]
local resultList = {}
for _, items in pairs(data) do
if string.find(items.get, get, 1, true) then
local file = format('喷漆_L_%d.png', items.id)
local html = format("%s|'''<big>%s</big>'''", file, items.name)
table.insert(resultList, html)
end
end
local result = table.concat(resultList, "\n")
return frame:preprocess('<gallery mode="nolines" widths=200px heights=200px>\n'..result..'\n</gallery>')
end
-- 意识重构样式处理
local function get_lottery_css(frame)
return frame:callParserFunction {
name = '#css',
args = { '.gallerytext .badge {vertical-align: baseline;font-size: large;white-space: normal;}' },
}
end
p["意识重构基板"] = function (frame)
local data = mw.loadData("模块:玩家装饰/IDCardData")
local get = frame.args[1]
local resultList = {}
for _, items in pairs(data) do
if string.find(items.get, get, 1, true) then
local html = build_lottery_style(frame, items.file, items.name, items.quality)
table.insert(resultList, html)
end
end
local css = get_lottery_css(frame)
return css..frame:preprocess('<gallery mode="packed">\n'..table.concat(resultList, "\n")..'\n</gallery>')
end
------意识重构页喷漆
p["意识重构喷漆"] = function (frame)
local data = mw.loadData("模块:玩家装饰/DecalData")
local get = frame.args[1]
local resultList = {}
for _, items in pairs(data) do
if string.find(items.get, get, 1, true) then
local file = format('喷漆_%d.png', items.id)
local html = build_lottery_style(frame, file, items.name, items.quality)
table.insert(resultList, html)
end
end
local css = get_lottery_css(frame)
return css..frame:preprocess('<gallery mode="packed">\n'..table.concat(resultList, "\n")..'\n</gallery>')
end
------弦海寻宝页喷漆
p["弦海寻宝勋章"] = function (frame)
local data = mw.loadData("模块:玩家装饰/BadgeData")
local get = frame.args[1]
local resultList = {}
for _, items in pairs(data) do
if string.find(items.get, get, 1, true) then
local html = build_lottery_style(frame, items.file, items.name, items.quality)
table.insert(resultList, html)
end
end
local css = get_lottery_css(frame)
return css..frame:preprocess('<gallery mode="packed">\n'..table.concat(resultList, "\n")..'\n</gallery>')
end
return p

沪公网安备 31011002002714 号