Module:ImagerieTest
Aller à la navigation
Aller à la recherche
Ce module est une version test du Module:Imagerie.
local p = {} local ressources = { indexTableau = require("Module:Ressources/indexTableau"), tailleTableau = require("Module:Ressources/tailleTableau") } function p.pokemon( frame ) -- CONFIGURATION INITIALE local num, generation if frame.args[1] == nil then return "Erreur : le numéro du Pokémon n'a pas été défini." else num = frame.args[1] end if frame.args['génération'] == nil then generation = 8 else generation = tonumber( frame.args['génération'] ) end if frame.args['forme'] then forme = frame.args['forme'] .. ' ' else forme = '' end local nom_gen= '' local symbole_chromatique = '' local jeux = {} -- tableau de deux éléments -- le premier liste les groupes de jeux ayant un sprite de face commun, -- le second liste les groupes de jeux ayant un sprite de dos commun local sprites = {} if generation == 1 then nom_gen = 'première' jeux = {"RV", "RB", "J"} sprites = { { RV = {"RV"}, RB = {"RB"}, J = {"J"} }, { RV = {"RV", "RB", "J"} } } elseif generation == 2 then nom_gen = 'deuxième' symbole_chromatique = '[[Fichier:Miniat shiny oac.png]]' jeux = {"OA", "O", "A", "C"} sprites = { { O = {"O"}, A = {"A"}, C = {"C"} }, { OA = {"O", "A", "C"} } } elseif generation == 3 then nom_gen = 'troisième' symbole_chromatique = '[[Fichier:Miniat shiny rfvf.png]]' jeux = {"RS", "RFVF", "E"} sprites = { { RS = {"RS", "RFVF"}, E = {"E"} }, { RS = {"RS", "RFVF", "E"} } } elseif generation == 4 then nom_gen = 'quatrième' symbole_chromatique = '[[Fichier:Miniat shiny dpphgss.png]]' jeux = {"DP", "Pt", "HGSS"} sprites = { { DP = {"DP", "Pt"}, HGSS = {"HGSS"} }, { DP = {"DP", "Pt", "HGSS"} } } elseif generation == 5 then nom_gen = 'cinquième' symbole_chromatique = '[[Fichier:Miniat shiny nbn2b2.png]]' jeux = {"NB", "NB2"} sprites = { { NB = {"NB", "NB2"} }, { NB = {"NB", "NB2"} } } elseif generation == 6 then nom_gen = 'sixième' symbole_chromatique = '[[Fichier:Miniat shiny xy.png]]' jeux = {"XY", "ROSA"} sprites = { { XY = {"XY", "ROSA"} }, { XY = {"XY", "ROSA"} } } elseif generation == 7 then nom_gen = 'septième' symbole_chromatique = '[[Fichier:Miniat shiny slusul.png]]' jeux = {"SL", "USUL", "LGPE"} sprites = { { SL = {"SL", "USUL"}, LGPE = {"LGPE"} }, { SL = {"SL", "USUL"}, LGPE = {"LGPE"} } } elseif generation == 8 then nom_gen = 'huitième' jeux = {"EB", "HOME"} sprites = { { EB = {"EB"}, HOME = {"HOME"} }, { EB = {"EB"}, HOME = {"HOME"} } } else return "Erreur : génération inconnue." end -- GESTION DES PARAMETRES DE CONFIGURATION PRINCIPAUX if not frame.args['absence-lgpe'] then frame.args['absence-lgpe'] = 'oui' end if not frame.args['absence-dos-home'] then frame.args['absence-dos-home'] = 'oui' end if not frame.args['absence-miniature'] then frame.args['absence-miniature'] = 'non' end local remove = {} for _, jeu in ipairs(jeux) do -- gestion des absences dans un jeu donné -- si l'absence a lieu pour un jeu qui servait de référence à un groupe, le reste du groupe est éclaté afin de conserver les autres membres -- (les valeurs deviennent des clés/valeurs supplémentaires du tableau parent) if frame.args['absence-' .. string.lower(jeu)] and frame.args['absence-' .. string.lower(jeu)] ~= 'non' then table.insert(remove, jeu) for _2, spritesN in ipairs(sprites) do if spritesN[jeu] then if #spritesN[jeu] > 1 then for _3, jeuN in ipairs(spritesN[jeu]) do if jeuN ~= jeu then spritesN[jeuN] = { jeuN } end end end spritesN[jeu] = nil else for _3, spriteN in pairs(spritesN) do if ressources.indexTableau(spriteN, jeu) then table.remove(spriteN, ressources.indexTableau(spriteN, jeu)) break end end end end end local paramsSprites = { 'face', 'dos' } for numParam, paramSprites in ipairs(paramsSprites) do -- gestion des sprites de face/dos non prévus par le scénario standard, déclarés manuellement -- (les sprites sont supposés communs par groupes de jeux mais des exceptions existent) if frame.args['sprite-' .. paramSprites .. '-' .. string.lower(jeu)] then local param = frame.args['sprite-' .. paramSprites .. '-' .. string.lower(jeu)] for _2, jeu2 in ipairs(jeux) do if string.lower(jeu2) == string.lower(param) then param = jeu2 break end end if sprites[numParam][jeu] then sprites[numParam][jeu] = nil else for _2, sprite in pairs(sprites[numParam]) do if ressources.indexTableau(sprite, jeu) then table.remove(sprite, ressources.indexTableau(sprite, jeu)) break end end end if sprites[numParam][param] then table.insert(sprites[numParam][param], jeu) else sprites[numParam][param] = { jeu } end end -- gestion des jeux sans sprite de face ou de dos if frame.args['absence-' .. paramSprites .. '-' .. string.lower(jeu)] and frame.args['absence-' .. paramSprites .. '-' .. string.lower(jeu)] ~= 'non' then if sprites[numParam][jeu] then sprites[numParam][jeu] = nil else for _2, sprite in pairs(sprites[numParam]) do if ressources.indexTableau(sprite, jeu) then table.remove(sprite, ressources.indexTableau(sprite, jeu)) break end end end end end end for _, jeu in ipairs(remove) do table.remove(jeux, ressources.indexTableau(jeux, jeu)) end -- CREATION VIRTUELLE DU TABLEAU ET PARAMETRES DE CONFIGURATION SPECIFIQUES local tableau = {} if generation == 1 then tableau[1] = { "", {}, {} } for _, jeu in ipairs(jeux) do if sprites[1][jeu] then table.insert(tableau[1][2], {jeu, jeu, sprites[1][jeu], 1}) end if sprites[2][jeu] then table.insert(tableau[1][3], {jeu, "dos " .. jeu, sprites[2][jeu], 1}) end end elseif generation >= 4 and (frame.args['diff-sprites-sexe'] or frame.args['diff-sprites-face-sexe'] or frame.args['diff-sprites-dos-sexe']) then tableau = { { "[[Fichier:Symbole femelle.png|10px]]<br />[[Sexe des Pokémon|Femelle]]", {}, {} }, { "[[Fichier:Symbole mâle.png|10px]]<br />[[Sexe des Pokémon|Mâle]]", {}, {} }, { "[[Fichier:Symbole femelle.png|10px]] " .. symbole_chromatique .. "<br />[[Sexe des Pokémon|Femelle]] [[Pokémon chromatique|chromatique]]", {}, {} }, { "[[Fichier:Symbole mâle.png|10px]] " .. symbole_chromatique .. "<br />[[Sexe des Pokémon|Mâle]] [[Pokémon chromatique|chromatique]]", {}, {} } } for _, jeu in ipairs(jeux) do if sprites[1][jeu] then if frame.args['diff-sprites-sexe'] or frame.args['diff-sprites-face-sexe'] then table.insert(tableau[1][2], {jeu, forme .. "♀ " .. jeu, sprites[1][jeu], 1}) table.insert(tableau[2][2], {jeu, forme .. "♂ " .. jeu, sprites[1][jeu], 1}) table.insert(tableau[3][2], {jeu, forme .. "♀ chromatique " .. jeu, sprites[1][jeu], 1}) table.insert(tableau[4][2], {jeu, forme .. "♂ chromatique " .. jeu, sprites[1][jeu], 1}) else table.insert(tableau[1][2], {jeu, forme .. jeu, sprites[1][jeu], 2}) table.insert(tableau[3][2], {jeu, forme .. "chromatique " .. jeu, sprites[1][jeu], 2}) end end if sprites[2][jeu] then if frame.args['diff-sprites-sexe'] or frame.args['diff-sprites-dos-sexe'] then table.insert(tableau[1][3], {jeu, forme .. "♀ dos " .. jeu, sprites[2][jeu], 1}) table.insert(tableau[2][3], {jeu, forme .. "♂ dos " .. jeu, sprites[2][jeu], 1}) table.insert(tableau[3][3], {jeu, forme .. "♀ chromatique dos " .. jeu, sprites[2][jeu], 1}) table.insert(tableau[4][3], {jeu, forme .. "♂ chromatique dos " .. jeu, sprites[2][jeu], 1}) else table.insert(tableau[1][3], {jeu, forme .. "dos " .. jeu, sprites[2][jeu], 2}) table.insert(tableau[3][3], {jeu, forme .. "chromatique dos " .. jeu, sprites[2][jeu], 2}) end end end else tableau = { { "", {}, {} }, { symbole_chromatique .. "<br />[[Pokémon chromatique|Chromatique]]", {}, {} } } for _, jeu in ipairs(jeux) do if sprites[1][jeu] then table.insert(tableau[1][2], {jeu, forme .. jeu, sprites[1][jeu], 1}) table.insert(tableau[2][2], {jeu, forme .. "chromatique " .. jeu, sprites[1][jeu], 1}) end if sprites[2][jeu] then table.insert(tableau[1][3], {jeu, forme .. "dos " .. jeu, sprites[2][jeu], 1}) table.insert(tableau[2][3], {jeu, forme .. "chromatique dos " .. jeu, sprites[2][jeu], 1}) end end end -- ENTETE DU TABLEAU et ARTWORK local resultat = {'<table class="tableaustandard centre">'} local colspanMax = 2 * #jeux + 3 if frame.args['artwork'] then table.insert(resultat, '<tr><th colspan="' .. colspanMax .. '" style="background-color: #C0C0FF;">Artwork officiel</th></tr><tr><td colspan="' .. colspanMax .. '">[[Fichier:' .. mw.text.split(frame:getParent():getTitle(),"/",true)[1]) if frame.args['artwork-précisions'] then table.insert(resultat, ' (' .. frame.args['artwork-précisions'] .. ')') end if frame.args['artwork'] ~= "oui" then table.insert(resultat, '-' .. frame.args['artwork']) end table.insert(resultat, '.png|175px]]</td></tr>') end table.insert(resultat, '<tr>') if frame.args['absence-miniature'] == 'non' then table.insert(resultat, '<th colspan="' .. colspanMax .. '" style="background-color: #C0C0FF;">Miniatures et sprites de la [[' .. nom_gen .. ' génération]]</th>') else table.insert(resultat, '<th colspan="' .. colspanMax .. '" style="background-color: #C0C0FF;">Sprites de la [[' .. nom_gen .. ' génération]]</th>') end table.insert(resultat, '</tr>') local colonnesFace, colonnesDos -- if ressources.tailleTableau(sprites[1]) == 1 then colonnesFace = false else colonnesFace = true end -- if ressources.tailleTableau(sprites[2]) == 1 then colonnesDos = false else colonnesDos = true end colonnesFace = true colonnesDos = true if generation ~= 1 then table.insert(resultat, '<th') if colonnesFace or colonnesDos then table.insert(resultat, ' rowspan="2"') end table.insert(resultat, '></th>') end if frame.args['absence-miniature'] == 'non' then table.insert(resultat, '<th') if colonnesFace or colonnesDos then table.insert(resultat, ' rowspan="2"') end table.insert(resultat, '>Miniature</th>') end local colspanFace = 0 local colspanDos = 0 for _, jeuSprite in ipairs(jeux) do if sprites[1][jeuSprite] then for _2, jeu in ipairs(sprites[1][jeuSprite]) do colspanFace = colspanFace + 1 end end if sprites[2][jeuSprite] then for _2, jeu in ipairs(sprites[2][jeuSprite]) do colspanDos = colspanDos + 1 end end end if colspanFace > 0 then table.insert(resultat, '<th') if colonnesFace then table.insert(resultat, ' colspan="' .. colspanFace .. '"') elseif colonnesDos then table.insert(resultat, ' rowspan="2"') end table.insert(resultat, '>Sprites de face</th>') end if colspanDos > 0 then table.insert(resultat, '<th') if colonnesDos then table.insert(resultat, ' colspan="' .. colspanDos .. '"') elseif colonnesFace then table.insert(resultat, ' rowspan="2"') end table.insert(resultat, '>Sprites de dos</th>') end if generation == 4 then table.insert(resultat, '<th') if colonnesFace or colonnesDos then table.insert(resultat, ' rowspan="2"') end table.insert(resultat, '>Compagnon' .. frame:expandTemplate{ title = 'Sup', args = { 'HGSS' }} .. '</th>') end table.insert(resultat, '</tr>') if colonnesFace or colonnesDos then table.insert(resultat, '<tr>') if colonnesFace then for _, jeuSprite in ipairs(jeux) do if sprites[1][jeuSprite] then for _2, jeu in ipairs(sprites[1][jeuSprite]) do table.insert(resultat, '<th>' .. frame:expandTemplate{ title = 'Jeu', args = { jeu } } .. '</th>') end end end end if colonnesDos then for _, jeuSprite in ipairs(jeux) do if sprites[2][jeuSprite] then for _2, jeu in ipairs(sprites[2][jeuSprite]) do table.insert(resultat, '<th>' .. frame:expandTemplate{ title = 'Jeu', args = { jeu } } .. '</th>') end end end end table.insert(resultat, '</tr>') end -- CORPS DU TABLEAU local i = 1 while tableau[i] do if generation ~= 1 then table.insert(resultat, '<tr><th>' .. tableau[i][1] .. '</th>') end local miniatExtension = "png" if generation >= 2 and generation <= 5 then miniatExtension = "gif" end if i == 1 and frame.args['absence-miniature'] == 'non' then table.insert(resultat, '<td rowspan="') if frame.args['diff-sprites-sexe'] or frame.args['diff-sprites-face-sexe'] or frame.args['diff-sprites-dos-sexe'] then table.insert(resultat, 4) else table.insert(resultat, 2) end table.insert(resultat, '">[[Fichier:Miniature ' .. num .. ' ' .. forme) if frame.args['diff-miniatures-sexe'] then table.insert(resultat, '♀ ') end table.insert(resultat, jeux[1] .. '.' .. miniatExtension .. ']]') if frame.args['diff-miniatures-sexe'] then table.insert(resultat, ' (femelle)<br>[[Fichier:Miniature ' .. num .. ' ' .. forme .. '♂ ' .. jeux[1] .. '.' .. miniatExtension .. ']] (mâle)') elseif frame.args['miniature2'] then for _, jeu in ipairs(jeux) do if string.lower(jeu) == string.lower(frame.args['miniature2']) then table.insert(resultat, ' [[Fichier:Miniature ' .. num .. ' ' .. forme .. jeu .. '.' .. miniatExtension .. ']]') end if jeu ~= "OA" then table.insert(resultat, frame:expandTemplate{ title = 'Sup', args = { jeu }}) end end end table.insert(resultat, '</td>') end if frame.args['shinylock'] and i > #tableau / 2 then if i == #tableau / 2 + 1 then table.insert(resultat, '<td colspan="' .. colspanMax .. '" rowspan="' .. #tableau / 2 .. '">\'\'Indisponible car ce Pokémon est [[Shiny Lock]]\'\'</td>') end else for _, sprite in ipairs(tableau[i][2]) do if i > #tableau / 2 and frame.args['shinylock-' .. string.lower(sprite[1])] then if i == #tableau / 2 + 1 then table.insert(resultat, '<td rowspan="' .. #tableau / 2 .. '">\'\'Indisponible car ce Pokémon est [[Shiny Lock]]\'\'</td>') end else table.insert(resultat, '<td') if colonnesFace then table.insert(resultat, ' colspan="' .. #sprite[3] .. '"') end table.insert(resultat, ' rowspan="' .. sprite[4] .. '">[[Fichier:Sprite ' .. num .. ' ' .. sprite[2] .. '.') if sprite[1] == "C" or sprite[1] == "E" then table.insert(resultat, 'gif') else table.insert(resultat, 'png') end table.insert(resultat, '|class=maxheight100px]]</td>') end end for _, sprite in ipairs(tableau[i][3]) do if i > #tableau / 2 and frame.args['shinylock-' .. string.lower(sprite[1])] then if i == #tableau / 2 + 1 then table.insert(resultat, '<td rowspan="' .. #tableau / 2 .. '">\'\'Indisponible car ce Pokémon est [[Shiny Lock]]\'\'</td>') end else table.insert(resultat, '<td') if colonnesDos then table.insert(resultat, ' colspan="' .. #sprite[3] .. '"') end table.insert(resultat, ' rowspan="' .. sprite[4] .. '">[[Fichier:Sprite ' .. num .. ' ' .. sprite[2] .. '.png|class=maxheight100px]]</td>') end end -- Compagnons HGSS if generation == 4 then if i == 1 then table.insert(resultat, '<td rowspan="' .. #tableau / 2 .. '">[[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'ouest HGSS.gif]] [[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'est HGSS.gif]]<br>[[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'sud HGSS.gif]] [[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'nord HGSS.gif]]</td>') elseif i == #tableau / 2 + 1 then table.insert(resultat, '<td rowspan="' .. #tableau / 2 .. '">[[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'chromatique ouest HGSS.gif]] [[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'chromatique est HGSS.gif]]<br>[[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'chromatique sud HGSS.gif]] [[Fichier:Compagnon ' .. num .. ' ' .. forme .. 'chromatique nord HGSS.gif]]</td>') end end end table.insert(resultat, '</tr>') i = i + 1 end -- Animations d'attaque 6G if generation == 6 then if frame.args['animations-attaque'] then table.insert(resultat, '<tr><th colspan="' .. colspanMax .. '>Animations d\'attaque</td></tr><tr><td colspan="' .. colspanMax .. '>') for i = 1, frame.args['animations-attaque'] do table.insert(resultat, '[[Fichier:Sprite ' .. num .. ' ' .. i .. ' XY.png]]') end table.insert(resultat, '</td></tr>') end end table.insert(resultat, '</table>') return table.concat(resultat, '') end return p