事件:修订间差异
来自卡厄思梦境WIKI
无编辑摘要 |
无编辑摘要 |
||
| 第4行: | 第4行: | ||
function p.main(frame) | function p.main(frame) | ||
local output = mw.html.create('div') | local output = mw.html.create('div') | ||
output:addClass('event | output:addClass('event-container') | ||
-- 遍历所有事件 | -- 遍历所有事件 | ||
for eventName, eventInfo in pairs(eventData) do | for eventName, eventInfo in pairs(eventData) do | ||
output:node(p.createEventCard(eventName, eventInfo)) | |||
end | end | ||
| 第22行: | 第15行: | ||
function p.createEventCard(eventName, eventInfo) | function p.createEventCard(eventName, eventInfo) | ||
local | local card = mw.html.create('div') | ||
:addClass('event-card') | |||
:css('position', 'relative') | :css('position', 'relative') | ||
:css('width', '375px') | :css('width', '375px') | ||
:css('height', '270px') | :css('height', '270px') | ||
:css('margin-bottom', '20px') | |||
:css('display', 'inline-block') | :css('display', 'inline-block') | ||
:css('vertical-align', 'top') | :css('vertical-align', 'top') | ||
: | :css('margin-right', '10px') | ||
-- | -- 背景层 | ||
card:tag('div') | |||
:css('position', 'absolute') | :css('position', 'absolute') | ||
:css('top', '160px') | :css('top', '160px') | ||
| 第41行: | 第34行: | ||
:css('background-color', '#343434') | :css('background-color', '#343434') | ||
:css('border-radius', '0px 0px 8px 8px') | :css('border-radius', '0px 0px 8px 8px') | ||
-- 图片 | -- 图片 | ||
local | local imageFile = 'cc_' .. eventInfo.id .. '.png' | ||
card:tag('div') | |||
:css('position', 'absolute') | :css('position', 'absolute') | ||
:css('top', '0px') | :css('top', '0px') | ||
:css('left', '0px') | :css('left', '0px') | ||
:wikitext('[[File: | :wikitext('[[File:' .. imageFile .. '|link=]]') | ||
-- 标题背景 | -- 标题背景 | ||
card:tag('div') | |||
:css('position', 'absolute') | :css('position', 'absolute') | ||
:css('top', '135px') | :css('top', '135px') | ||
| 第60行: | 第52行: | ||
:css('background-color', 'rgba(0,0,0,0.3)') | :css('background-color', 'rgba(0,0,0,0.3)') | ||
:css('border-radius', '0px 0px 8px 8px') | :css('border-radius', '0px 0px 8px 8px') | ||
-- 标题文字 | -- 标题文字 | ||
card:tag('div') | |||
:css('position', 'absolute') | :css('position', 'absolute') | ||
:css('top', '140px') | :css('top', '140px') | ||
| 第71行: | 第62行: | ||
:css('color', 'white') | :css('color', 'white') | ||
:css('text-align', 'center') | :css('text-align', 'center') | ||
:wikitext(eventName) | :wikitext(eventName) | ||
for i | -- 选项按钮 | ||
local startTop = 170 | |||
for i, optionText in ipairs(eventInfo.option) do | |||
local optionDiv = card:tag('div') | |||
:addClass('event-option') | |||
:attr('data-event', eventName) | |||
:attr('data-option', i) | |||
:css('position', 'absolute') | |||
:css('top', startTop + (i-1)*35 .. 'px') | |||
:css('left', '10px') | |||
:css('width', '355px') | |||
:css('min-height', '30px') | |||
:css('color', 'white') | |||
:css('text-align', 'left') | |||
:css('padding', '5px 0px 0px 10px') | |||
:css('background-color', 'rgba(255,255,255,0.3)') | |||
:css('border-radius', '4px') | |||
:css('cursor', 'pointer') | |||
:wikitext(optionText) | |||
-- 效果文本(默认隐藏) | |||
local effectDiv = card:tag('div') | |||
:addClass('event-effect') | |||
:attr('data-event', eventName) | |||
:attr('data-option', i) | |||
:css('position', 'absolute') | |||
:css('top', startTop + (i-1)*35 + 35 .. 'px') | |||
:css('left', '10px') | |||
:css('width', '345px') | |||
:css('display', 'none') | |||
:css('color', '#FFD700') | |||
:css('text-align', 'left') | |||
:css('padding', '5px 10px') | |||
:css('background-color', 'rgba(0,0,0,0.5)') | |||
:css('border-radius', '4px') | |||
:css('font-size', '0.9em') | |||
:wikitext('→ ' .. eventInfo.effect[i]) | |||
end | end | ||
return | return card | ||
end | end | ||
return p | return p | ||
2025年10月18日 (六) 12:28的版本
此模块的文档可以在模块:事件/doc创建
local p = {}
local eventData = mw.loadData('模块:事件/data')
function p.main(frame)
local output = mw.html.create('div')
output:addClass('event-container')
-- 遍历所有事件
for eventName, eventInfo in pairs(eventData) do
output:node(p.createEventCard(eventName, eventInfo))
end
return tostring(output)
end
function p.createEventCard(eventName, eventInfo)
local card = mw.html.create('div')
:addClass('event-card')
:css('position', 'relative')
:css('width', '375px')
:css('height', '270px')
:css('margin-bottom', '20px')
:css('display', 'inline-block')
:css('vertical-align', 'top')
:css('margin-right', '10px')
-- 背景层
card:tag('div')
:css('position', 'absolute')
:css('top', '160px')
:css('left', '5px')
:css('width', '365px')
:css('height', '110px')
:css('background-color', '#343434')
:css('border-radius', '0px 0px 8px 8px')
-- 图片
local imageFile = 'cc_' .. eventInfo.id .. '.png'
card:tag('div')
:css('position', 'absolute')
:css('top', '0px')
:css('left', '0px')
:wikitext('[[File:' .. imageFile .. '|link=]]')
-- 标题背景
card:tag('div')
:css('position', 'absolute')
:css('top', '135px')
:css('left', '5px')
:css('width', '365px')
:css('height', '30px')
:css('background-color', 'rgba(0,0,0,0.3)')
:css('border-radius', '0px 0px 8px 8px')
-- 标题文字
card:tag('div')
:css('position', 'absolute')
:css('top', '140px')
:css('left', '5px')
:css('width', '365px')
:css('height', '30px')
:css('color', 'white')
:css('text-align', 'center')
:wikitext(eventName)
-- 选项按钮
local startTop = 170
for i, optionText in ipairs(eventInfo.option) do
local optionDiv = card:tag('div')
:addClass('event-option')
:attr('data-event', eventName)
:attr('data-option', i)
:css('position', 'absolute')
:css('top', startTop + (i-1)*35 .. 'px')
:css('left', '10px')
:css('width', '355px')
:css('min-height', '30px')
:css('color', 'white')
:css('text-align', 'left')
:css('padding', '5px 0px 0px 10px')
:css('background-color', 'rgba(255,255,255,0.3)')
:css('border-radius', '4px')
:css('cursor', 'pointer')
:wikitext(optionText)
-- 效果文本(默认隐藏)
local effectDiv = card:tag('div')
:addClass('event-effect')
:attr('data-event', eventName)
:attr('data-option', i)
:css('position', 'absolute')
:css('top', startTop + (i-1)*35 + 35 .. 'px')
:css('left', '10px')
:css('width', '345px')
:css('display', 'none')
:css('color', '#FFD700')
:css('text-align', 'left')
:css('padding', '5px 10px')
:css('background-color', 'rgba(0,0,0,0.5)')
:css('border-radius', '4px')
:css('font-size', '0.9em')
:wikitext('→ ' .. eventInfo.effect[i])
end
return card
end
return p