« Module:Infobox/Lieu » : différence entre les versions
icone pillards |
Intégration de VaultTecData |
||
| (9 versions intermédiaires par un autre utilisateur non affichées) | |||
| 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 5 : | Ligne 13 : | ||
if localdata['type'] then | if localdata['type'] then | ||
local types = { | local types = { | ||
['aéroport'] = 'Aéroport', | |||
['bâtiment'] = 'Bâtiment', | ['bâtiment'] = 'Bâtiment', | ||
['bunker'] = 'Bunker', | ['bunker'] = 'Bunker', | ||
| Ligne 12 : | Ligne 21 : | ||
['petite colonie'] = 'Colonie', | ['petite colonie'] = 'Colonie', | ||
['non marqué'] = 'Lieu non marqué', | ['non marqué'] = 'Lieu non marqué', | ||
['mentionné'] = 'Lieu mentionné', | |||
['inutilisé'] = 'Lieu inutilisé', | |||
['égout'] = 'Égout', | ['égout'] = 'Égout', | ||
['abri'] = 'Abri', | ['abri'] = 'Abri', | ||
| Ligne 30 : | Ligne 41 : | ||
function buildIcon(localdata) | function buildIcon(localdata) | ||
local icon = 'Icon | local icon = 'Icon unmarked.png' | ||
if localdata['icône'] then | if localdata['icône'] then | ||
icon = localdata['icône'] | icon = localdata['icône'] | ||
elseif localdata['type'] then | elseif localdata['type'] then | ||
local types = { | local types = { | ||
['principal'] = 'FO1 Icone cercle carte.png', | |||
['aéroport'] = 'Icone avion.png', | |||
['bâtiment'] = 'Icon building.png', | ['bâtiment'] = 'Icon building.png', | ||
['bunker'] = 'FO76 Icone bunker.png', | ['bunker'] = 'FO76 Icone bunker.png', | ||
['grotte'] = 'Icon cave.png', | ['grotte'] = 'Icon cave.png', | ||
['observation'] = ' | ['observation'] = 'Icon lookout tower.png', | ||
['district'] = 'Icon district.png', | ['district'] = 'Icon district.png', | ||
['grandes ruines'] = 'Icon district.png', | ['grandes ruines'] = 'Icon district.png', | ||
['usine'] = 'Icon factory.png', | ['usine'] = 'Icon factory.png', | ||
['gare'] = ' | ['gare'] = 'Icon train.png', | ||
['métro'] = 'Icon metro.png', | ['métro'] = 'Icon metro.png', | ||
['militaire'] = 'Icon military.png', | ['militaire'] = 'Icon military.png', | ||
| Ligne 57 : | Ligne 70 : | ||
['abri'] = 'Icon vault.png', | ['abri'] = 'Icon vault.png', | ||
['repère'] = 'Icon landmark.png', | ['repère'] = 'Icon landmark.png', | ||
['pillards'] = 'FO76 icone pillards.png' | ['pillards'] = 'FO76 icone pillards.png', | ||
['mentionné'] = 'Icon mentioned.png', | |||
['inutilisé'] = 'Icone inutilise.png' | |||
} | } | ||
icon = types[localdata['type']:lower()] or icon | icon = types[localdata['type']:lower()] or icon | ||
| Ligne 64 : | 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 71 : | Ligne 123 : | ||
{ type = 'table', title = 'Emplacement', rows = { | { type = 'table', title = 'Emplacement', rows = { | ||
{ type = 'row', label = 'Marqueur', value = 'marqueur' }, | { type = 'row', label = 'Marqueur', value = 'marqueur' }, | ||
{ 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 = { | ||
| Ligne 82 : | Ligne 136 : | ||
{ type = 'row', label = 'Propriétaires', value = 'propriétaires' }, | { type = 'row', label = 'Propriétaires', value = 'propriétaires' }, | ||
{ type = 'row', label = 'Chefs', value = { 'leaders', 'chefs' }}, | { 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 = 'Médecins', value = { 'docteurs', 'médecins' }}, | ||
{ type = 'row', label = 'Marchands', value = 'marchands' }, | { type = 'row', label = 'Marchands', value = 'marchands' }, | ||
| Ligne 98 : | Ligne 153 : | ||
}}, | }}, | ||
{ type = 'table', title = 'Autre', rows = { | { type = 'table', title = 'Autre', rows = { | ||
{ type = 'row', label = 'Produits', value = 'produits' }, | |||
{ type = 'row', label = 'Quêtes', value = 'quêtes' }, | { type = 'row', label = 'Quêtes', value = 'quêtes' }, | ||
{ type = 'row', label = 'Événements', value = 'événements' } | { type = 'row', label = 'Événements', value = 'événements' } | ||
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' }
}
}