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.

« Module:Fabrication » : différence entre les versions

De Nefald
Hiob (discussion | contributions)
Page créée avec « 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... »
 
Hiob (discussion | contributions)
m A protégé « Module:Fabrication » ([Modifier=Autoriser uniquement les administrateurs] (infini) [Renommer=Autoriser uniquement les administrateurs] (infini))
 
(Aucune différence)

Dernière version du 22 octobre 2025 à 15:22

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