Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.
Version datée du 22 octobre 2025 à 15:22 par Hiob (discussion | contributions) (A protégé « Module:Fabrication » ([Modifier=Autoriser uniquement les administrateurs] (infini) [Renommer=Autoriser uniquement les administrateurs] (infini)))
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

La documentation pour ce module peut être créée à Module:Fabrication/doc

local p = {}
local getArgs = require('Module:Arguments').getArgs

-- Configuration des images
local IMAGE_PATH = "File:"
local IMAGE_SIZE = "32px"

-- Fonction pour nettoyer le nom d'item
local function cleanItemName(item)
    if not item or item == "" then
        return nil
    end
    return mw.text.trim(item)
end

-- Fonction pour générer une cellule de grille
local function makeCell(item, size)
    if not item then
        return '<div class="mc-craft-cell mc-craft-empty"></div>'
    end
    
    local imageName = item
    if not imageName:match("%.png$") then
        imageName = imageName .. ".png"
    end
    
    local imageCode = string.format("[[%s%s|%s|link=|class=mc-craft-item]]", 
        IMAGE_PATH, imageName, size or IMAGE_SIZE)
    
    return '<div class="mc-craft-cell">' .. imageCode .. '</div>'
end

-- Fonction pour générer la grille 2x2
local function craft2x2(args)
    local grid = '<div class="mc-craft-grid mc-craft-2x2">'
    
    -- Ligne 1
    grid = grid .. makeCell(cleanItemName(args.A1), args.size)
    grid = grid .. makeCell(cleanItemName(args.B1), args.size)
    
    -- Ligne 2
    grid = grid .. makeCell(cleanItemName(args.A2), args.size)
    grid = grid .. makeCell(cleanItemName(args.B2), args.size)
    
    grid = grid .. '</div>'
    return grid
end

-- Fonction pour générer la grille 3x3
local function craft3x3(args)
    local grid = '<div class="mc-craft-grid mc-craft-3x3">'
    
    -- Ligne 1
    grid = grid .. makeCell(cleanItemName(args.A1), args.size)
    grid = grid .. makeCell(cleanItemName(args.B1), args.size)
    grid = grid .. makeCell(cleanItemName(args.C1), args.size)
    
    -- Ligne 2
    grid = grid .. makeCell(cleanItemName(args.A2), args.size)
    grid = grid .. makeCell(cleanItemName(args.B2), args.size)
    grid = grid .. makeCell(cleanItemName(args.C2), args.size)
    
    -- Ligne 3
    grid = grid .. makeCell(cleanItemName(args.A3), args.size)
    grid = grid .. makeCell(cleanItemName(args.B3), args.size)
    grid = grid .. makeCell(cleanItemName(args.C3), args.size)
    
    grid = grid .. '</div>'
    return grid
end

-- Fonction pour générer la flèche
local function makeArrow()
    return '<div class="mc-craft-arrow">→</div>'
end

-- Fonction pour générer le résultat
local function makeResult(args)
    local result = cleanItemName(args.Output)
    if not result then
        return '<div class="mc-craft-result mc-craft-empty"></div>'
    end
    
    local count = tonumber(args.count) or 1
    local resultDiv = '<div class="mc-craft-result">'
    resultDiv = resultDiv .. makeCell(result, args.size):gsub('mc%-craft%-cell', 'mc-craft-result-cell')
    
    if count > 1 then
        resultDiv = resultDiv .. '<div class="mc-craft-count">' .. count .. '</div>'
    end
    
    resultDiv = resultDiv .. '</div>'
    return resultDiv
end

-- Fonction principale
function p.main(frame)
    local args = getArgs(frame)
    
    -- Déterminer le type de grille
    local gridType = args.type or "3x3"
    if gridType ~= "2x2" and gridType ~= "3x3" then
        gridType = "3x3"
    end
    
    -- Conteneur principal
    local output = '<div class="mc-craft-container">'
    
    -- Nom de la recette (optionnel)
    if args.name and args.name ~= "" then
        output = output .. '<div class="mc-craft-name">' .. args.name .. '</div>'
    end
    
    -- Wrapper pour grille + flèche + résultat
    output = output .. '<div class="mc-craft-wrapper">'
    
    -- Générer la grille appropriée
    if gridType == "2x2" then
        output = output .. craft2x2(args)
    else
        output = output .. craft3x3(args)
    end
    
    -- Ajouter la flèche
    output = output .. makeArrow()
    
    -- Ajouter le résultat
    output = output .. makeResult(args)
    
    output = output .. '</div>' -- fin wrapper
    
    -- Description (optionnel)
    if args.description and args.description ~= "" then
        output = output .. '<div class="mc-craft-description">' .. args.description .. '</div>'
    end
    
    output = output .. '</div>' -- fin container
    
    return output
end

return p