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

Aucun résumé des modifications
Kims (discussion | contributions)
Intégration de VaultTecData
 
(7 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 13 : 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 31 : Ligne 41 :


function buildIcon(localdata)
function buildIcon(localdata)
local icon = 'Icon landmark.png'
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 = {
['aéroport']        = 'Icone_avion.png',
['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']      = 'Icon_lookout_tower.png',
['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']            = 'Icon_train.png',
['gare']            = 'Icon train.png',
['métro']            = 'Icon metro.png',
['métro']            = 'Icon metro.png',
['militaire']        = 'Icon military.png',
['militaire']        = 'Icon military.png',
Ligne 59 : 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 66 : 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 73 : 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 84 : 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 100 : 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

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 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' }
	}
}