bugfix250107.1
全站通知:

模块:Item

来自恋与深空WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

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

local p={}

function p.Item(frame)
    local preList = {"","道具/","装修/","藏品/","服饰/","拍照动作/","拍照贴纸/","拍照其他/","聊天气泡/","头像(框)/","称号/","音乐/"}
    local sizeConfig = {["小"]="small",["中"]="mid",["大"]="big"}

    local itemLt = frame.args["top"]
    local itemLink = frame.args["link"]

    local itemSize,item,itemRb
    if sizeConfig[frame.args[1]] then
        itemSize = sizeConfig[frame.args[1]]
        item = frame.args[2]
        itemRb = frame.args[3]
    else
        itemSize = "small"
        item = frame.args[1]
        itemRb = frame.args[2]
    end      

    -- 调用smw的lua
    local smw = require('Module:SMW')
    
    -- 创建一个新的 showframe 参数表
    local args = {
        [1] = item,
        [2] = '名称'
    }
    frame.args = args
    local newFrame = frame
    
    --遍历preList,为item添加前缀,并通过show来获取itemName
    local itemName = nil
    for _, prefix in ipairs(preList) do
        newFrame.args[1] = prefix .. item
        itemName = smw.show(newFrame)
        if itemName and itemName ~= '' then
            break
        end
    end
    
    --获取道具图片:为空则使用名称
    newFrame.args[2] = '显示图片'
    local itemImg = smw.show(newFrame)
    if not itemImg or itemImg == '' then
        itemImg = itemName
    end
    
    --获取品质:为空则使用金
    newFrame.args[2] = '品质'
    local itemQuality = smw.show(newFrame)
    if not itemQuality or itemQuality == '' then
        itemQuality = '金'
    end

    -- itemLink
    if not itemLink or itemLink == '' then
        itemLink = newFrame.args[1]
    end

    -- return itemName .. ',' .. itemImg .. ',' .. itemQuality..','..itemRb..','..itemLt..','..itemlink
    return p.getItemHtml(itemSize, itemImg, itemLink, itemQuality, itemRb, itemLt)
    
end

function p.getItemHtml(itemSize, itemImg, itemLink, itemQuality, itemRb, itemLt)
    local sizePx = {small="40x40px",mid="60x60px",big="80x80px"}
    -- 设置默认值
    itemSize = itemSize or "small"
    itemImg = itemImg or ""
    itemLink = itemLink or ""
    itemQuality = itemQuality or "1"
    
    -- 如果itemRb不为空,则添加itemRb
    if itemRb and itemRb ~= '' then
        itemRb = '<div class="item-rightBottom">'..itemRb..'</div>'
    end

    -- 如果itemLt不为空,则添加itemLt
    if itemLt and itemLt ~= '' then
        itemLt = '<div class="item-leftTop">'..itemLt..'</div>'
    end



    local html = '<div class="item item-'..itemSize..'"><div class="item-image">'..
        '<div class="item-wiki">WIKILYSK</div>'..
        '[[file:'..itemImg..'.png|'..sizePx[itemSize]..'|link='..itemLink..']]</div>'..
        itemRb..
        itemLt..
        '<div class="item-fg">[[file:物品框'..itemQuality..'.png|link='..itemLink..']]</div></div>'

    return html
end


function p.ItemImg(frame)
    local preList = {"","道具/","装修/","藏品/","服饰/","拍照动作/","拍照贴纸/","拍照其他/","聊天气泡/","头像(框)/","称号/","音乐/"}
    local sizeConfig = {["小"]="40x40px",["中"]="60x60px",["大"]="80x80px"}

    local itemLink = frame.args["link"]

    local itemSize, item
    if sizeConfig[frame.args[1]] then
        itemSize = sizeConfig[frame.args[1]]
        item = frame.args[2]
    else
        itemSize = "40x40px"
        item = frame.args[1]
    end

    -- 如果 item 为空,则返回空字符串
    if not item or item == '' then
        return '错误:item为空'
    end

    -- 调用smw的lua
    local smw = require('Module:SMW')
    
    -- 创建一个新的 showframe 参数表
    local args = {
        [1] = item,
        [2] = '显示图片'
    }
    frame.args = args
    local newFrame = frame
    
    --遍历preList,为item添加前缀,并通过show来获取itemImg
    local itemImg = nil
    for _, prefix in ipairs(preList) do
        newFrame.args[1] = prefix .. item
        itemImg = smw.show(newFrame)
        if itemImg and itemImg ~= '' then
            break
        end
    end
    
    -- 如果没有找到图片,返回空字符串
    if not itemImg or itemImg == '' then
        itemImg = ''
    end

    -- itemLink
    if not itemLink or itemLink == '' then
        itemLink = newFrame.args[1]
    end

    -- 返回带有file标签和link的图片
    return '[[file:' .. itemImg .. '.png|' .. itemSize .. '|link=' .. itemLink .. ']]'
end

return p