事件:修订间差异
来自卡厄思梦境WIKI
无编辑摘要 |
无编辑摘要 |
||
| 第7行: | 第7行: | ||
-- 遍历所有事件 | -- 遍历所有事件 | ||
for eventName, eventInfo in pairs(eventData) do | for eventName, eventInfo in pairs(eventData) do | ||
table.insert(output, p.renderEvent(eventName, eventInfo)) | table.insert(output, p.renderEvent(frame, eventName, eventInfo)) | ||
end | end | ||
| 第13行: | 第13行: | ||
end | end | ||
function p.renderEvent(eventName, eventInfo) | function p.renderEvent(frame, eventName, eventInfo) | ||
local html = mw.html.create('div') | local html = mw.html.create('div') | ||
:addClass('event-container') | :addClass('event-container') | ||
| 第54行: | 第54行: | ||
if effectText then | if effectText then | ||
-- 处理{{文本|橙|120}}这样的模板 | -- 处理{{文本|橙|120}}这样的模板 | ||
effectText = frame:preprocess(effectText) | if frame then | ||
effectText = frame:preprocess(effectText) | |||
end | |||
effectDiv:wikitext(effectText) | effectDiv:wikitext(effectText) | ||
end | end | ||
| 第69行: | 第71行: | ||
end | end | ||
return p.renderEvent(eventName, eventData[eventName]) | return p.renderEvent(frame, eventName, eventData[eventName]) | ||
end | end | ||
return p | return p | ||
2025年10月18日 (六) 12:37的版本
此模块的文档可以在模块:事件/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')
-- 图片
html:tag('div')
:addClass('event-image')
:wikitext(string.format('[[File:cc_%s.png|link=]]', eventInfo.id))
-- 标题背景
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
local optionDiv = 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)
:cssText('display:none;')
-- 处理效果文本
local effectText = eventInfo.effect[i]
if effectText then
-- 处理{{文本|橙|120}}这样的模板
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