Module:Focus

This module depends on the following other modules:
Module:Focus/Config
Documentation Module:Focus/doc

Implements {{Focus}}.

Submodules

The following modules are used as needed.

Submodule Tags
Module:Focus/generic GENERIC, WARLORD, HOA
Module:Focus/tfv AST, CAN, SAF, NZL
Module:Focus/dod CZE, HUN, ROM, YUG
Module:Focus/wtt GER, JAP, CHI, PRC, MAN, CHISHARED
Module:Focus/mtg ENG, USA, HOL, MEX,
Module:Focus/lar FRA, FRE, VIC, POR, SPR, SPA
Module:Focus/bftb BUL, GRE, TUR
Module:Focus/nsb SOV, POL, EST, LAT, LIT, BALTIC
Module:Focus/bba ITA, ETH, SWI
Module:Focus/aat DEN, FIN, ICE, NOR, SWE, NORDIC
Module:Focus/toa ARG, BRA, CHL, PRU, URG, GUAY, SMB
Module:Focus/gtd AUS, BEL, COG, BELCOG, HUN2, HABSBURG
Module:Focus/goe AFG, IRQ, RAJ2, PER

Adding/editing focuses

First, go to the appropriate subpage for the country you want to edit.

Add

To keep the order, find focus above/below the one you want to add.
To add a focus, start with the country tag followed by the focus ID in square brackets, example: sov['sov_infrastructure_effort_nsb'] = { }
Then, based on the parameters listed below, add an entry.

Edit

To edit the focus, find it and simply edit it.

Parameters

Parameter Required Type Example Note
name Yes String "Army Effort" Focus name from localization file.
icon Yes String
Table
"goal_generic_allies_build_infantry" Focus icon.
Focus icons. [1] is default.
suffix No String "C" Should be used only if 2 or more focuses have the same name.
Remember to update Template:Focus/doc.
linkName No String "Develop Capital" In case when anchor name in nf page is different than localization name.
page No String "ger" Set focus page.
See: Module:Focus/Config (cfg.pages)
continuous No Bool true If focus is from continuous focus file.

Example entry: fra['fra_autoroutes'] = { name = "Autoroutes", icon = "goal_generic_construct_infrastructure" }

The national focus page should be placed at the end of the module, right after the loops.


--------------------------------------------------------------------------------
-- 
--                                 Module:Focus
--
--------------------------------------------------------------------------------
local cfg = mw.loadData("Module:Focus/Config")


local p = {}

function p.main(frame)
    local args = frame.args
    local aTag = args['tag']

    --Check tag
    if cfg.tags.chinese_warlords[aTag] then --Set chinese warlords tag to "warlord"
        aTag = "warlord"
    elseif cfg.tags.hoa_nations[aTag] then --Set horn of africa countries tag to "hoa"
        aTag = "hoa"
    elseif not cfg.tags.tagset[aTag] then
        return "<span style=\"color: red; font-size: 11px;\">(Unrecognized focus TAG \"" .. aTag .. "\" for [[Template:Focus]])</span>[[Category:Pages with unrecognized focus strings]]"
    end

    --Load only 1 module at a time (One page per dlc)
    local dlcPage = "Module:Focus/" .. cfg.tags.tagset[aTag]
    local tag = mw.loadData(dlcPage)[aTag]

    --Check id
    if not tag[args['id']] then
        return "<span style=\"color: red; font-size: 11px;\">(Unrecognized focus id \"" .. args['id'] .. "\" in TAG \"" .. aTag .. "\" for [[Template:Focus]])</span>[[Category:Pages with unrecognized focus strings]]"
    end

    local id = tag[args['id']]

    --page
    local page = ""
    if id.continuous then
        page = cfg.pages.continuous
    else
        page = cfg.pages[id.page]
    end

    --icon
    local icon = ""
    if args.icon ~= nil and args.icon ~= "" then
        icon = args.icon
    elseif type(id.icon) == "table" then
        args.iconid = tonumber(args.iconid)
        if id.icon[args.iconid] then
            icon = id.icon[args.iconid]
        else --Fallback value (default) if out of range
            icon = id.icon[1]
        end
    else
        icon = id.icon
    end

    --text
    local text = ""
    if args.text ~= nil and args.text ~= "" then
        text = args.text
    else
        text = id.name
    end

    --
    local linkName = ""
    if id.linkName == nil then
        linkName = "#" .. id.name
    else
        linkName = "#" .. id.linkName
    end
    if id.suffix ~= nil then
        linkName = linkName .. " " .. id.suffix
    end

    --
    if args['nolink'] == "yes" then
        icon = string.format("[[File:%s.png|%s|%s|link=%s]]", icon, text, args['size'], linkName)
    else
        icon = string.format("[[File:%s.png|%s|%s|link=%s]]", icon, text, args['size'], page .. linkName)
        text = string.format("[[%s|%s]]", page .. linkName, text)
    end

    return icon .. text
end

return p