Fire Emblem Wiki
Register
Advertisement
Fire Emblem Wiki

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

--This module is invoked by Template:PromotionGains
--<nowiki>

local p = {}
local getArgs = require('Module:Arguments').getArgs
local getColor = require('Module:Color').colorByGame
local common = require('Module:Common')
local cols = require('Module:CharStat/data').stats

function p.main(frame)
    args = getArgs(frame)
    if(pcall(p._main, args)) then
        return p._main(args)
    else
	    return '[[Category:Pages with script errors]]<span style="color: red">Missing \'game\' parameter. See [[Template:PromotionGains]] for more info.</span>'
    end
end

function p._main(args)
    local out, class, colspan, colspan1, colspan2
    local nCols = 0     --number of columns
    local columns = ''
    local game = string.lower(args.game)
    local color = getColor[game]
    
    class = common.colorLinks(game)

    -- Header columns iteration
    for i = 1, #cols do
        if(args[cols[i][2]] ~= nil) then
            columns = columns..cols[i][3]
            nCols = nCols + 1
        end
    end
    
    -- Data columns iteration
    columns = columns..'\n|-class="s-cells"'
    for i = 1, #cols do
        if(args[cols[i][2]] ~= nil) then columns = columns..'\n| '..args[cols[i][2]] end
    end
    
    -- Assigning colspan based on number of columns
    if (nCols % 2 == 0) then
        colspan2 = nCols / 2
        colspan1 = colspan2
    else
        colspan2 = math.ceil(nCols / 2)
        colspan1 = colspan2 - 1
    end
    
    -- Skills and weapon ranks
    colspan = colspan1 + colspan2
    if(args.skills ~= nil or args.wrank ~= nil) then columns=columns..'\n|-bgcolor='..color..' class='..class end
    if(args.skills ~= nil and args.wrank ~= nil) then
        columns=columns..
        '\n!colspan='..colspan1..'|[[Skills]]'..
        '\n!colspan='..colspan2..'|[[Weapon Level]]s'..
        '\n|-'..
        '\n|colspan='..colspan1..'| '..args.skills..
        '\n|colspan='..colspan2..'| '..args.wrank
    elseif(args.skills ~= nil and args.wrank == nil) then
        columns=columns..
        '\n!colspan='..colspan..'|[[Skills]]'..
        '\n|-'..
        '\n|colspan='..colspan..'| '..args.skills
    elseif(args.skills == nil and args.wrank ~= nil) then
        columns=columns..
        '\n!colspan='..colspan..'|[[Weapon Level]]s'..
        '\n|-'..
        '\n|colspan='..colspan..'| '..args.wrank
    end
    
    --Final output
    out =
    '{| class="statbox"'..
    '\n|-bgcolor='..color..' class='..class
    if(args.req == nil or args.req == '-') then
        out = out..
        '\n!colspan='..colspan..'|Promoted Class'..
        '\n|-'..
        '\n|colspan='..colspan..'| '..common.setDefault(args.class)
    else
        out = out..
        '\n!colspan='..colspan1..'|Item Required'..
        '\n!colspan='..colspan2..'|Promoted Class'..
        '\n|-'..
        '\n|colspan='..colspan1..'| '..common.setDefault(args.req)..
        '\n|colspan='..colspan2..'| '..common.setDefault(args.class)
    end
    out = out..'\n|-bgcolor='..color..' class='..class..columns..'\n|}'

    return out
end

return p
--</nowiki>
--[[Category:Modules]]
Advertisement