본문으로 이동

모듈:LoRCosmetics

겜스 위키 (구 게임세상)

이 모듈에 대한 설명문서는 모듈:LoRCosmetics/설명문서에서 만들 수 있습니다

local p = {}

function p.skinPage(frame)
    local cardCode = frame.args[1] or frame:getParent().args[1]
    if not cardCode or cardCode == "" then
        return "<div class='error'>No card code provided to Module:LoRCosmetics</div>"
    end
    
    local skinsData = mw.loadData('Module:LoRCosmetics/skins')
    local cardSkins = skinsData[cardCode]
    if not cardSkins then
        return "<div class='error'>No skins data found for card code: " .. tostring(cardCode) .. "</div>"
    end
    
    -- Sort skins by idx
    local sortedSkins = {}
    for skinName, skinInfo in pairs(cardSkins) do
        table.insert(sortedSkins, {name = skinName, info = skinInfo})
    end
    table.sort(sortedSkins, function(a, b)
        return (a.info.idx or 0) < (b.info.idx or 0)
    end)
    
    local tabberParts = {}
    table.insert(tabberParts, "<tabber>")
    
    for i, skin in ipairs(sortedSkins) do
        if i > 1 then
            table.insert(tabberParts, "|-|")
        end
        table.insert(tabberParts, skin.name .. "=")
        
        local info = skin.info
        local costText = "Free"
        if info.cost and info.cost > 0 then
            costText = tostring(info.cost) .. " Coins"
        end
        local rarity = info.rarity or "Base"
        local release = info.release or "Unknown"
        
        local html = "<div class='lor-skin-container'>"
        html = html .. "<div class='lor-skin-header'>"
        html = html .. "<div class='lor-skin-name'>" .. skin.name .. "</div>"
        html = html .. "<div class='lor-skin-meta'>"
        html = html .. "<div class='lor-skin-meta-item'><span class='lor-skin-meta-label'>Rarity:</span>" .. rarity .. "</div>"
        html = html .. "<div class='lor-skin-meta-item'><span class='lor-skin-meta-label'>Cost:</span>" .. costText .. "</div>"
        html = html .. "<div class='lor-skin-meta-item'><span class='lor-skin-meta-label'>Release:</span>" .. release .. "</div>"
        html = html .. "</div>"
        html = html .. "</div>"
        
        html = html .. "<div class='lor-skin-cards'>"
        
        local assoc = info.associatedCards or {}
        for _, card in ipairs(assoc) do
            local assocCode = card.cardcode
            local name = card.name or "Card"
            local flavor = card.flavor or ""
            local artists = info.splashartist or {}
            local artistText = table.concat(artists, ", ")
            
            local filename
            if skin.name == "Original" then
                filename = assocCode .. "-full.png"
            else
                filename = assocCode .. "_" .. skin.name .. "-full.png"
            end
            
            html = html .. "<div class='lor-skin-card-box'>"
            html = html .. "<div class='lor-skin-card-title'>" .. name .. " (" .. assocCode .. ")</div>"
            html = html .. "<div class='lor-skin-card-image'>[[File:" .. filename .. "|400px]]</div>"
            if flavor ~= "" then
                html = html .. "<div class='lor-skin-card-flavor'>\"" .. flavor .. "\"</div>"
            end
            if artistText ~= "" then
                html = html .. "<div class='lor-skin-card-artist'><span class='lor-skin-meta-label'>Artist:</span>" .. artistText .. "</div>"
            end
            html = html .. "</div>"
        end
        
        html = html .. "</div>"
        html = html .. "</div>"
        
        table.insert(tabberParts, html)
    end
    
    table.insert(tabberParts, "</tabber>")
    
    local wikitext = table.concat(tabberParts, "\n")
    return frame:preprocess(wikitext)
end

return p