Gwint Wiki
Advertisement

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Talia/Beta/opis

local getArgs = require('Dev:Arguments').getArgs

local u = require('Module:Utils')
local k = require('Module:Karta')

local data = mw.loadData('Module:Karty')

local Deck = {}

function Deck.create(frame)
    local args = getArgs(frame)
    local wrapper = mw.html.create('ul'):addClass('gdeck'):addClass('gdeck--align-'..(args['align'] or 'none'))

    local names = u.split(args[1] or '', ',')

    local cards = {}

    for i = 1, #names do
        local name = u.trim(names[i])
        local count = 1
        if name:match('^.- x%d$') then
            count = tonumber(name:match('^.- x(%d)$'))
            name = name:match('^(.-) x%d$')
        end
        local card = data[name]
        if card then
            table.insert(cards, {
                name = name,
                count = count,
                color = card.kolor,
                provision = card.werbunek,
                strength = card.sila
            })
        end
    end
    
    table.sort(cards, function (a, b)
        if a.color == 'Dowódca' then return true
        elseif b.color == 'Dowódca' then return false
        else
            return a.provision > b.provision
        end
    end)
    
    local COLOR_TO_CLASS = {
        ['Dowódca'] = 'gdeck__tile--leader',
        ['Złota'] = 'gdeck__tile--gold',
        ['Brązowa'] = 'gdeck__tile--bronze'
    }

    for index, card in ipairs(cards) do

        local tile = '[['..card.name..'|'
        if card.color ~= 'Dowódca' then
            tile = tile..'<span class="gdeck__strength">'..card.strength..'</span>'
        end
        tile = tile..'<span class="gdeck__provision">'..card.provision..'</span>'
        tile = tile..card.name
        if card.count > 1 then
            tile = tile..'<span class="gdeck__count">x'..card.count..'</span>'
        end
        tile = tile..']]'

        wrapper
            :tag('li')
                :addClass('gdeck__tile')
                :addClass(COLOR_TO_CLASS[card.color])
                :addClass('card-tooltip')
                :attr('data-card', card.name)
                :attr('data-set-background', k._encode(card.name..' Art.jpg'))
                :wikitext(tile)
    end

    return wrapper
end

return Deck
Advertisement