模块

模块:事件

来自卡厄思梦境WIKI

律Rhyme留言 | 贡献2025年10月18日 (六) 11:18的版本 (创建页面,内容为“local p = {} local eventData = mw.loadData('模块:事件/data') function p.main(frame) local args = frame:getParent().args local eventName = args[1] or args.name if not eventName then return "错误:未指定事件名称" end local event = eventData[eventName] if not event then return "错误:找不到事件 '" .. eventName .. "'" end -- 构建HTML local html = mw.html.create('div')…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

此模块的文档可以在模块:事件/doc创建

local p = {}
local eventData = mw.loadData('模块:事件/data')

function p.main(frame)
    local args = frame:getParent().args
    local eventName = args[1] or args.name
    
    if not eventName then
        return "错误:未指定事件名称"
    end
    
    local event = eventData[eventName]
    if not event then
        return "错误:找不到事件 '" .. eventName .. "'"
    end
    
    -- 构建HTML
    local html = mw.html.create('div')
        :addClass('event-container')
        :css('position', 'relative')
        :css('width', '375px')
        :css('height', '270px')
    
    -- 底部背景
    html:tag('div')
        :addClass('event-bottom-bg')
        :css('position', 'absolute')
        :css('top', '160px')
        :css('left', '5px')
        :css('width', '365px')
        :css('height', '120px')
        :css('background-color', '#343434')
        :css('border-radius', '0px 0px 8px 8px')
    
    -- 图片
    local imageFile = 'cc_' .. event.id .. '.png'
    html:tag('div')
        :css('position', 'absolute')
        :css('top', '0px')
        :css('left', '0px')
        :wikitext('[[File:' .. imageFile .. '|link=]]')
    
    -- 标题背景
    html: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')
    
    -- 标题文字
    html:tag('div')
        :addClass('event-title')
        :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 optionTop = 170
    for i = 1, 3 do
        if event.option[i] then
            local optionDiv = html:tag('div')
                :addClass('event-option')
                :attr('data-option-id', tostring(i))
                :attr('data-event-name', eventName)
                :css('position', 'absolute')
                :css('top', optionTop .. 'px')
                :css('left', '10px')
                :css('width', '355px')
                :css('min-height', '30px')
                :css('color', 'white')
                :css('text-align', 'left')
                :css('padding', '5px 0px 5px 10px')
                :css('background-color', 'rgba(255,255,255,0.3)')
                :css('border-radius', '4px')
                :css('cursor', 'pointer')
                :css('transition', 'background-color 0.3s')
            
            -- 选项文本
            optionDiv:tag('div')
                :addClass('option-text')
                :wikitext(event.option[i])
            
            -- 结果文本(默认隐藏)
            optionDiv:tag('div')
                :addClass('option-effect')
                :css('display', 'none')
                :css('margin-top', '5px')
                :css('padding-top', '5px')
                :css('border-top', '1px solid rgba(255,255,255,0.5)')
                :css('font-size', '0.9em')
                :wikitext(frame:preprocess(event.effect[i]))
            
            optionTop = optionTop + 35
        end
    end
    
    -- 扩展底部背景的容器
    html:tag('div')
        :addClass('event-expand-bg')
        :css('display', 'none')
    
    return tostring(html)
end

return p