事件:修订间差异
来自卡厄思梦境WIKI
无编辑摘要 |
无编辑摘要 |
||
| (未显示同一用户的4个中间版本) | |||
| 第3行: | 第3行: | ||
function p.main(frame) | function p.main(frame) | ||
local output = | local output = {} | ||
-- 遍历所有事件 | -- 遍历所有事件 | ||
for eventName, eventInfo in pairs(eventData) do | for eventName, eventInfo in pairs(eventData) do | ||
table.insert(output, p.renderEvent(frame, eventName, eventInfo)) | |||
end | end | ||
return | return table.concat(output, '\n') | ||
end | end | ||
function p. | function p.renderEvent(frame, eventName, eventInfo) | ||
local | local html = mw.html.create('div') | ||
: | :addClass('event-container') | ||
:attr('data-event-id', eventInfo.id) | :attr('data-event-id', eventInfo.id) | ||
-- | -- 背景层 | ||
html:tag('div'):addClass('event-background') | |||
-- 图片 | -- 图片 | ||
local | local imageLink = eventName | ||
: | html:tag('div') | ||
: | :addClass('event-image') | ||
:wikitext(string.format('[[File:cc_%s.png|link=%s]]', eventInfo.id, imageLink)) | |||
-- 标题背景 | -- 标题背景 | ||
html:tag('div'):addClass('event-title-bg') | |||
-- | -- 标题 | ||
html:tag('div') | |||
: | :addClass('event-title') | ||
:wikitext(eventName) | :wikitext(eventName) | ||
-- | -- 选项容器 | ||
local | local optionsContainer = html:tag('div'):addClass('event-options') | ||
for i | -- 渲染选项 | ||
for i, optionText in ipairs(eventInfo.option) do | |||
-- 选项 | |||
optionsContainer:tag('div') | |||
:addClass('event-option') | |||
:attr('data-option-index', i) | |||
:wikitext(optionText) | |||
-- 结果显示区域 | |||
local effectDiv = optionsContainer:tag('div') | |||
:addClass('event-effect') | |||
:attr('data-effect-index', i) | |||
-- 处理结果文本 | |||
local effectText = eventInfo.effect[i] | |||
if effectText then | |||
if frame then | |||
effectText = frame:preprocess(effectText) | |||
end | end | ||
effectDiv:wikitext(effectText) | |||
end | end | ||
end | end | ||
return | return tostring(html) | ||
end | |||
-- 单独显示某个事件 | |||
function p.show(frame) | |||
local eventName = frame.args[1] | |||
if not eventName or not eventData[eventName] then | |||
return '错误:未找到指定的事件' | |||
end | |||
return p.renderEvent(frame, eventName, eventData[eventName]) | |||
end | end | ||
return p | return p | ||
2025年10月18日 (六) 13:38的最新版本
此模块的文档可以在模块:事件/doc创建
local p = {}
local eventData = mw.loadData('模块:事件/data')
function p.main(frame)
local output = {}
-- 遍历所有事件
for eventName, eventInfo in pairs(eventData) do
table.insert(output, p.renderEvent(frame, eventName, eventInfo))
end
return table.concat(output, '\n')
end
function p.renderEvent(frame, eventName, eventInfo)
local html = mw.html.create('div')
:addClass('event-container')
:attr('data-event-id', eventInfo.id)
-- 背景层
html:tag('div'):addClass('event-background')
-- 图片
local imageLink = eventName
html:tag('div')
:addClass('event-image')
:wikitext(string.format('[[File:cc_%s.png|link=%s]]', eventInfo.id, imageLink))
-- 标题背景
html:tag('div'):addClass('event-title-bg')
-- 标题
html:tag('div')
:addClass('event-title')
:wikitext(eventName)
-- 选项容器
local optionsContainer = html:tag('div'):addClass('event-options')
-- 渲染选项
for i, optionText in ipairs(eventInfo.option) do
-- 选项
optionsContainer:tag('div')
:addClass('event-option')
:attr('data-option-index', i)
:wikitext(optionText)
-- 结果显示区域
local effectDiv = optionsContainer:tag('div')
:addClass('event-effect')
:attr('data-effect-index', i)
-- 处理结果文本
local effectText = eventInfo.effect[i]
if effectText then
if frame then
effectText = frame:preprocess(effectText)
end
effectDiv:wikitext(effectText)
end
end
return tostring(html)
end
-- 单独显示某个事件
function p.show(frame)
local eventName = frame.args[1]
if not eventName or not eventData[eventName] then
return '错误:未找到指定的事件'
end
return p.renderEvent(frame, eventName, eventData[eventName])
end
return p