Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Documentation for this module may be created at Module:Difficulties/doc

local p = {}

local config = require('Module:Difficulties/config')

local function ucfirst(str)
    return str:sub(1,1):upper() .. str:sub(2)
end

function p.main(frame)
    local args = frame:getParent().args
    local difficulties = config.difficulties
    local output = mw.html.create('table')
    output:addClass('wikitable')
    output:addClass('wikitable-fluid')
    output:addClass('center')
--    output:addClass('full-width')
    output:attr('style', 'width:100%;')

    local header_row = output:tag('tr')
    header_row:tag('th'):wikitext('Icon')
    header_row:tag('th'):wikitext('Difficulty')
    header_row:tag('th'):wikitext('Stages')
    header_row:tag('th'):wikitext('Completion %')
    header_row:tag('th'):wikitext('Rewards'):addClass('center')

    local difficulties_s = {}

    for k, v in pairs(difficulties) do
        table.insert(difficulties_s, {
            key = k,
            data = v
        })
    end

    table.sort(difficulties_s, function(a,b)
        return a.data.priority < b.data.priority
    end)


    for _, entry in pairs(difficulties_s) do
        local i = entry.key
        local v = entry.data

        local difficulty_param_name = mw.text.trim(i)
        local enabled_param = args[ucfirst(difficulty_param_name)] or args[difficulty_param_name]

        if enabled_param and mw.text.trim(enabled_param):lower() == 'true' then
            entry.data.priority = tonumber(args[difficulty_param_name .. '_priority']) or tonumber(args[difficulty_param_name .. '_index']) or entry.data.priority
        end
    end

    table.sort(difficulties_s, function(a,b)
        return a.data.priority < b.data.priority
    end)

    local inclonlystr = ''

    for _, entry in pairs(difficulties_s) do
        local i = entry.key
        local v = entry.data

        local difficulty_param_name = mw.text.trim(i)
        local enabled_param = args[ucfirst(difficulty_param_name)] or args[difficulty_param_name]

        if enabled_param and mw.text.trim(enabled_param):lower() == 'true' then
            inclonlystr = inclonlystr .. '[[Category:'.. ucfirst(difficulty_param_name) .. ']]'
            local row = output:tag('tr')

            local icon_cell = row:tag('td')
            local color_hex = args[difficulty_param_name .. '_hex']
            local icon_file = args[difficulty_param_name .. '_file_name']
            -- if v.file then

            if icon_file then
                icon_cell:wikitext('[[File:' .. icon_file .. '|48px|alt=Difficulty ' .. v.display .. ']]'):attr('style', 'border-radius: 8px; overflow: hidden; display:inline-block;')
            else
                icon_cell:tag('div')
                    :attr('style', 'width: 48px; height: 48px; background-color: ' .. ((color_hex and '#'.. color_hex) or v.color) .. '; vertical-align: middle; border-radius: 8px;')
            end

            local name_cell = row:tag('td')
            local page_link = config.meta.page_prefix .. v.display
            if not v.display then
                page_link = config.meta.page_prefix .. ucfirst(i)
            end

            -- name_cell:tag('a')
            name_cell:wikitext('[[' .. page_link .. '|' .. v.display .. ']]'):attr('style', 'color:'..v.color..';') -- maybe thats how this works
                -- :wikitext('[[' .. v.display .. ']]')
                -- :attr('href', mw.title.makeTitle('',page_link):fullUrl())
                -- :wikitext(v.display or ucfirst(i))

            local stage_cell = row:tag('td')
            local start_value = args[difficulty_param_name .. '_start']
            local end_value = args[difficulty_param_name .. '_end']
            local is_coming_soon = args[difficulty_param_name .. '_unreleased']

            if is_coming_soon then
                stage_cell:wikitext('\'\'Unreleased\'\'')
            else
                stage_cell:wikitext( (start_value or '??') .. ' - ' .. (end_value or '??'))
            end

            local completionp_cell = row:tag('td')
            local completionp_value = args[difficulty_param_name .. '_completion']

            completionp_cell:wikitext( (completionp_value or '??') .. '%')

            local rewards_cell = row:tag('td')
            local badge_param_name = difficulty_param_name .. '_badge'
            local badge_value = args[badge_param_name]
            if badge_value then
                -- badge_cell:tag('a')
                    -- :attr('href', 'https://roblox.com/badges' .. badge_value)
                    -- :attr('target', '_blank')
                    rewards_cell:wikitext('[[File:Icons Badge Small White.png|link=https://roblox.com/badges/' .. badge_value .. '/obbywikidifficultylink|alt=Badge|28px]]')
                    rewards_cell:attr('style', 'vertical-align: middle; margin-auto;')
                        -- :attr('src', mw.file.makeUrl('Icons Badge Small White.png'))
                        -- :attr('alt', 'Badge')
                        -- :attr('style', 'width: 20px; height: 20px; vertical-align: middle;')
            else
                rewards_cell:wikitext('\'\'None\'\'')
            end
        end
    end

    return tostring(output) .. inclonlystr
end

return p