如果你看到本段文字,说明该页面未正常加载全局JS,部分功能无法使用,请点击 刷新 重新加载页面。
如果打开页面显示缩略图创建出错,请点击刷新或页面右上WIKI功能中的刷新按钮清除页面缓存并刷新,如果还有问题,请多尝试几次。
全站通知:
模块:关卡图鉴
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:关卡图鉴/doc创建
--[[
{{#invoke: 关卡图鉴| 生成掉落列表
| 分隔符=、
| 1 = 拉菲、 Z23、 标枪、 狐提、 麦考尔、 天后、 唐斯、 卡辛、 彗星、 新月、 小天鹅、 克雷文
| 2 = 赤城、加贺
| 3 = 厌战、胡德、威尔士亲王
| 标题1= 驱逐
| 属性1= 掉落驱逐
| 标题2= 航母
| 属性2= 掉落航母
| 标题3= 战舰
| 属性3= 掉落战舰
}}
--]]
local p = {}
SEPARATOR = '、'
Text = mw.text
--------------------------------------------------
--主要过程
--------------------------------------------------
--生成掉落列表并设置行内属性
function p.GenerateDropList(frame)
local chapterID = frame.args['地图编号']
local arg = parseArgument(frame.args)
_G.frame = frame
local sep = arg['分隔符'] or SEPARATOR
-- {| style="width:100%;" class="table-DropList"
local content = [[
]]
for i, list in ipairs(arg) do
if list and #list > 0 and Text.trim(list[1]) ~= '' then
content = content..([[
|-
! %s
| ]]):format(arg['标题'..i] or arg['属性'..i] or i)
content = content..joinShiplist(list, sep)..'\n'
if arg['属性'..i] then
if string.upper(mw.title.getCurrentTitle().fullText) == string.upper(chapterID) then
callSetProperty(list, arg['属性'..i], frame)
callSetProperty(list, "掉落舰船", frame)
end
else
mw.log('警告:未能找到参数"属性'..i..'",未调用#set')
end
end
end
--content = content.. '|}'
return content
end
--设置行内属性
function callSetProperty(list, property, frame)
for _, ship in ipairs(list) do
frame:callParserFunction('#set', property, ship)
end
end
--生成一行舰船列表
--todo 通过lua实现模板
function joinShiplist(list, sep)
local tmp = {}
for i, ship in ipairs(list) do
ship = Text.trim(ship)
if ship ~= '' then
tmp[#tmp+1] = frame:expandTemplate {
title = '小图标',
args = { ship }
}
end
end
return table.concat(tmp, sep)
end
--解析invoke参数
function parseArgument(args)
local result = {}
for k, v in pairs(args) do
if type(k) == 'number' then
result[k] = Text.split(v, args['分隔符'] or SEPARATOR)
elseif type(v) == 'string' then
result[k] = Text.trim(v)
else
result[k] = v
end
end
return result
end
--------------------------------------------------
-- 公开函数
--------------------------------------------------
p['生成掉落列表内容'] = p.GenerateDropList
return p