From Brotato Wiki

Revision as of 21:06, 5 November 2024 by Darkly77 (talk | contribs) (fix Iconbox template not rendering)

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

-- Module:GetStartingWeaponsTableForCharacter
-- Used by: Template:GenerateCharacterStartingWeaponsTable (see for more info)

local p = {}

-- Helper function to split a string by a given delimiter
local function split(inputstr, sep)
    if sep == nil then
        sep = ","
    end
    local t = {}
    for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do
        table.insert(t, str)
    end
    return t
end

-- Main function to generate a table of starting weapons
function p.getStartingWeaponsTable(frame)
    -- Get the character name from the frame arguments
    local characterName = frame.args["name"] or ""
    
    -- Retrieve the startingwpns data from the Character_Data template
    local startingWeaponsList = frame:expandTemplate{
        title = "Character_Data",
        args = {characterName, "startingwpns"}
    }

    if not startingWeaponsList or startingWeaponsList == "-" then
        return "Starting weapons data not found for character: " .. characterName
    end

    -- Split the starting weapons list into individual items
    local weapons = split(startingWeaponsList, ",")

    -- Start building the HTML table
    local output = "<table><tr>"

    -- Create the table cells for each weapon, adding a new row after every 10 items
    for i, weapon in ipairs(weapons) do
        weapon = mw.text.trim(weapon)  -- Trim any whitespace around the weapon name
        
        -- Expand the Iconbox template for each weapon
        local iconbox = frame:expandTemplate{
            title = "Iconbox",
            args = {weapon, size = "60px", maxwidth = "110px", rarity = "auto"}
        }
        
        output = output .. "<td>" .. iconbox .. "</td>"
        
        -- Insert a new row after every 10th item
        if i % 10 == 0 then
            output = output .. "</tr><tr>"
        end
    end

    -- Close the table row and table
    output = output .. "</tr></table>"

    return output
end

return p