« Module:Infobox/Lieu » : différence entre les versions

Kims (discussion | contributions)
Intégration de VaultTecData
Kims (discussion | contributions)
Aucun résumé des modifications
 
Ligne 1 : Ligne 1 :
--[[
--[[
Module:Infobox/Lieu — version intégrant la vignette VaulttecData.
Module:Infobox/Lieu — version intégrant les données VaulttecData.


Un seul ajout par rapport à la version en place : le bloc « row1col » à la
Deux ajouts par rapport à la version en place, tous deux dans la table
fin de la table « Emplacement », et la fonction buildVaulttec qui l'alimente.
« Emplacement » : le nom du marqueur, présenté comme n'importe quelle autre
Tout le reste est inchangé.
donnée, et la vignette de carte en pleine largeur.
 
Aucune fonction ici : la logique vit dans Module:Infobox. Toute autre infobox
— créature, quête, objet — déclare les deux mêmes blocs et n'a rien à
requérir ni à recopier.
 
Les deux pages vont ensemble : Module:Infobox et celle-ci. Déployer celle-ci
seule donnerait « Bloc de données invalide ».
]]
]]


Ligne 77 : Ligne 84 :
end
end
return icon
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
end


Ligne 126 : Ligne 95 :
{ 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 = 'vaulttec row', label = 'Repère' },
{ type = 'vaulttec image' }
}},
}},
{ type = 'table', title = 'Segments', rows = {
{ type = 'table', title = 'Segments', rows = {

Dernière version du 7 août 2026 à 10:55

Documentation du module

Ce module contient le paramétrage de l'infobox {{Infobox lieu}}.

Documentation transclues de Module:Infobox/Lieu/doc.
--[[
	Module:Infobox/Lieu — version intégrant les données VaulttecData.

	Deux ajouts par rapport à la version en place, tous deux dans la table
	« Emplacement » : le nom du marqueur, présenté comme n'importe quelle autre
	donnée, et la vignette de carte en pleine largeur.

	Aucune fonction ici : la logique vit dans Module:Infobox. Toute autre infobox
	— créature, quête, objet — déclare les deux mêmes blocs et n'a rien à
	requérir ni à recopier.

	Les deux pages vont ensemble : Module:Infobox et celle-ci. Déployer celle-ci
	seule donnerait « Bloc de données invalide ».
]]

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

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 = 'vaulttec row', label = 'Repère' },
			{ type = 'vaulttec image' }
		}},
		{ 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' }
	}
}