Module:Fabrication
De Nefald
Autres actions
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