« Module:Infobox/Lieu » : différence entre les versions
Remplacement du marqueur par défaut en non marqué |
Intégration de VaultTecData |
||
| (Une version intermédiaire par un autre utilisateur non affichée) | |||
| Ligne 1 : | Ligne 1 : | ||
--[[ | |||
Module:Infobox/Lieu — version intégrant la vignette VaulttecData. | |||
Un seul ajout par rapport à la version en place : le bloc « row1col » à la | |||
fin de la table « Emplacement », et la fonction buildVaulttec qui l'alimente. | |||
Tout le reste est inchangé. | |||
]] | |||
local localdata = require('Module:Infobox/Localdata') | local localdata = require('Module:Infobox/Localdata') | ||
| Ligne 14 : | Ligne 22 : | ||
['non marqué'] = 'Lieu non marqué', | ['non marqué'] = 'Lieu non marqué', | ||
['mentionné'] = 'Lieu mentionné', | ['mentionné'] = 'Lieu mentionné', | ||
['inutilisé'] = 'Lieu inutilisé', | |||
['égout'] = 'Égout', | ['égout'] = 'Égout', | ||
['abri'] = 'Abri', | ['abri'] = 'Abri', | ||
| Ligne 62 : | Ligne 71 : | ||
['repère'] = 'Icon landmark.png', | ['repère'] = 'Icon landmark.png', | ||
['pillards'] = 'FO76 icone pillards.png', | ['pillards'] = 'FO76 icone pillards.png', | ||
['mentionné'] = 'Icon mentioned.png' | ['mentionné'] = 'Icon mentioned.png', | ||
['inutilisé'] = 'Icone inutilise.png' | |||
} | } | ||
icon = types[localdata['type']:lower()] or icon | icon = types[localdata['type']:lower()] or icon | ||
| Ligne 69 : | Ligne 79 : | ||
end | end | ||
--[[ | |||
Vignette VaulttecData : carte locale du marqueur et son nom, liés à | |||
fallout-maps.com, à partir de « fomapmkr = MKR000000147 ». | |||
Trois précautions, chacune pour une raison précise : | |||
1. Le test sur mw.ext.vaulttecData. Si l'extension n'est pas installée ou | |||
vient d'être désactivée, l'appel direct lèverait « attempt to index a nil | |||
value » et ferait disparaître l'infobox ENTIÈRE de toutes les pages de | |||
lieu. Une intégration facultative ne doit jamais pouvoir faire ça. | |||
2. Le retour nil, jamais la chaîne vide. buildrow1col ne teste que la | |||
nullité ; une chaîne vide est vraie en Lua et produirait une ligne | |||
d'infobox vide à chaque lieu sans marqueur. | |||
3. Aucun message d'erreur. Un identifiant inconnu, un lieu masqué ou une | |||
carte injoignable ne rendent rien du tout : l'extension le signale par | |||
ses catégories de suivi, ce qui est l'affaire des mainteneurs, pas des | |||
lecteurs. | |||
]] | |||
local function buildVaulttec(localdata) | |||
local mkr = localdata['fomapmkr'] | |||
if not mkr or mkr == '' then | |||
return nil | |||
end | |||
if not (mw.ext and mw.ext.vaulttecData) then | |||
return nil | |||
end | |||
local vignette = mw.ext.vaulttecData.carte(mkr) | |||
if vignette == '' then | |||
return nil | |||
end | |||
return vignette | |||
end | |||
return { | return { | ||
| Ligne 78 : | Ligne 125 : | ||
{ type = 'row', label = 'Marqueur local', value = 'marqueur local' }, | { type = 'row', label = 'Marqueur local', value = 'marqueur local' }, | ||
{ type = 'row', label = 'Partie de', value = 'partie de' }, | { type = 'row', label = 'Partie de', value = 'partie de' }, | ||
{ type = 'images', imageparameters = 'image marqueur', captionparameter = 'image marqueur desc' } | { type = 'images', imageparameters = 'image marqueur', captionparameter = 'image marqueur desc' }, | ||
{ type = 'row1col', class = 'avt-infobox-vaulttec', value = buildVaulttec } | |||
}}, | }}, | ||
{ type = 'table', title = 'Segments', rows = { | { type = 'table', title = 'Segments', rows = { | ||
Dernière version du 31 juillet 2026 à 11:56
Ce module contient le paramétrage de l'infobox {{Infobox lieu}}.
--[[
Module:Infobox/Lieu — version intégrant la vignette VaulttecData.
Un seul ajout par rapport à la version en place : le bloc « row1col » à la
fin de la table « Emplacement », et la fonction buildVaulttec qui l'alimente.
Tout le reste est inchangé.
]]
local localdata = require('Module:Infobox/Localdata')
function buildSubject(localdata)
local subject = 'Lieu'
if localdata['type'] then
local types = {
['aéroport'] = 'Aéroport',
['bâtiment'] = 'Bâtiment',
['bunker'] = 'Bunker',
['colonie'] = 'Colonie',
['grande colonie'] = 'Colonie',
['colonie moyenne'] = 'Colonie',
['petite colonie'] = 'Colonie',
['non marqué'] = 'Lieu non marqué',
['mentionné'] = 'Lieu mentionné',
['inutilisé'] = 'Lieu inutilisé',
['égout'] = 'Égout',
['abri'] = 'Abri',
['gare'] = 'Gare',
['métro'] = 'Métro',
['usine'] = 'Usine',
['monument'] = 'Monument',
['dirigeable'] = 'Dirigeable',
['grotte'] = 'Grotte',
['région'] = 'Région',
['état'] = 'État',
['pays'] = 'Pays'
}
subject = types[localdata['type']:lower()] or subject
end
return subject
end
function buildIcon(localdata)
local icon = 'Icon unmarked.png'
if localdata['icône'] then
icon = localdata['icône']
elseif localdata['type'] then
local types = {
['principal'] = 'FO1 Icone cercle carte.png',
['aéroport'] = 'Icone avion.png',
['bâtiment'] = 'Icon building.png',
['bunker'] = 'FO76 Icone bunker.png',
['grotte'] = 'Icon cave.png',
['observation'] = 'Icon lookout tower.png',
['district'] = 'Icon district.png',
['grandes ruines'] = 'Icon district.png',
['usine'] = 'Icon factory.png',
['gare'] = 'Icon train.png',
['métro'] = 'Icon metro.png',
['militaire'] = 'Icon military.png',
['monument'] = 'Icon monument.png',
['ruines'] = 'Icon ruins.png',
['section'] = 'Icon section.png',
['colonie'] = 'Icon settlement medium.png',
['grande colonie'] = 'Icon settlement large.png',
['colonie moyenne'] = 'Icon settlement medium.png',
['petite colonie'] = 'Icon settlement small.png',
['égout'] = 'Icon sewer.png',
['tunnel'] = 'Icon sewer.png',
['non marqué'] = 'Icon unmarked.png',
['abri'] = 'Icon vault.png',
['repère'] = 'Icon landmark.png',
['pillards'] = 'FO76 icone pillards.png',
['mentionné'] = 'Icon mentioned.png',
['inutilisé'] = 'Icone inutilise.png'
}
icon = types[localdata['type']:lower()] or icon
end
return icon
end
--[[
Vignette VaulttecData : carte locale du marqueur et son nom, liés à
fallout-maps.com, à partir de « fomapmkr = MKR000000147 ».
Trois précautions, chacune pour une raison précise :
1. Le test sur mw.ext.vaulttecData. Si l'extension n'est pas installée ou
vient d'être désactivée, l'appel direct lèverait « attempt to index a nil
value » et ferait disparaître l'infobox ENTIÈRE de toutes les pages de
lieu. Une intégration facultative ne doit jamais pouvoir faire ça.
2. Le retour nil, jamais la chaîne vide. buildrow1col ne teste que la
nullité ; une chaîne vide est vraie en Lua et produirait une ligne
d'infobox vide à chaque lieu sans marqueur.
3. Aucun message d'erreur. Un identifiant inconnu, un lieu masqué ou une
carte injoignable ne rendent rien du tout : l'extension le signale par
ses catégories de suivi, ce qui est l'affaire des mainteneurs, pas des
lecteurs.
]]
local function buildVaulttec(localdata)
local mkr = localdata['fomapmkr']
if not mkr or mkr == '' then
return nil
end
if not (mw.ext and mw.ext.vaulttecData) then
return nil
end
local vignette = mw.ext.vaulttecData.carte(mkr)
if vignette == '' then
return nil
end
return vignette
end
return {
parts = {
{ type = 'title', value = 'nom', subtitle = 'sous-titre', icon = function(localdata) return buildIcon(localdata) end, subhead = { games = 'jeux', subject = buildSubject(localdata), link = 'Lieux' }},
{ type = 'images', imageparameters = { 'image', 'image2', 'image3', 'image4', 'image5' }, captionparameter = { 'légende', 'image desc' }},
{ type = 'table', title = 'Emplacement', rows = {
{ type = 'row', label = 'Marqueur', value = 'marqueur' },
{ type = 'row', label = 'Marqueur local', value = 'marqueur local' },
{ type = 'row', label = 'Partie de', value = 'partie de' },
{ type = 'images', imageparameters = 'image marqueur', captionparameter = 'image marqueur desc' },
{ type = 'row1col', class = 'avt-infobox-vaulttec', value = buildVaulttec }
}},
{ type = 'table', title = 'Segments', rows = {
{ type = 'row', label = 'Sections', value = 'sections' },
{ type = 'row', label = 'Bâtiments', value = 'bâtiments' }
}},
{ type = 'table', title = 'Population', rows = {
{ type = 'row', label = 'Factions', value = 'factions' },
{ type = 'row', label = 'Propriétaires', value = 'propriétaires' },
{ type = 'row', label = 'Chefs', value = { 'leaders', 'chefs' }},
{ type = 'row', label = '[[Superviseur d\'abri|Superviseur]]', value = 'superviseur' },
{ type = 'row', label = 'Médecins', value = { 'docteurs', 'médecins' }},
{ type = 'row', label = 'Marchands', value = 'marchands' },
{ type = 'row', label = 'Habitants', value = 'habitants' },
{ type = 'row', label = 'Établis', value = 'établis' }
}},
{ type = 'table', title = 'Autres acteurs', rows = {
{ type = 'row', label = 'Créatures', value = 'créatures' },
{ type = 'row', label = 'Robots', value = 'robots' }
}},
{ type = 'table', title = 'Connexions', rows = {
{ type = 'row', label = 'Connecté à', value = 'connecté à' },
{ type = 'row', label = 'Sorties de métro', value = 'sorties métro' },
{ type = 'row', label = 'Sorties monde', value = { 'sorties world map', 'sorties monde' } },
{ type = 'row', label = 'Autres sorties', value = 'autres sorties' }
}},
{ type = 'table', title = 'Autre', rows = {
{ type = 'row', label = 'Produits', value = 'produits' },
{ type = 'row', label = 'Quêtes', value = 'quêtes' },
{ type = 'row', label = 'Événements', value = 'événements' }
}},
{ type = 'table', title = 'Technique', collapseparameters = { collapsible = true, collapsed = true }, rows = {
{ type = 'row', label = 'Nom .map', value = 'nom map' },
{ type = 'row', label = 'Cellule', value = 'nom cellule' },
{ type = 'row', label = '[[Form ID|Ref ID]]', value = 'refid' },
{ type = 'row', label = 'Terminaux', value = 'terminaux' }
}},
{ type = 'images', imageparameters = 'carte locale', captionparameter = 'carte locale desc' },
{ type = 'images', imageparameters = 'carte locale2', captionparameter = 'carte locale2 desc' },
{ type = 'images', imageparameters = 'carte locale3', captionparameter = 'carte locale3 desc' },
{ type = 'images', imageparameters = 'carte locale4', captionparameter = 'carte locale4 desc' },
{ type = 'images', imageparameters = 'carte locale5', captionparameter = 'carte locale5 desc' },
{ type = 'row', label = 'Mentions', value = function(localdata) return require('Module:Abréviation').links({ localdata['mentions'], sep = '<br/>' }) end },
{ type = 'text', value = 'pied' }
}
}