Module:DinoIcon
Ce module traite la reconnaissance dans les {{ItemLink}}
s et modèles semblables, et permet une colorisation dynamique, en rapport avec le navigateur, des icônes de créatures.
La configuration (et l'explication de ses champs) est trouvée à Module:DinoIcon/config.
Fonctionnement
La table Cargo Entities est utilisée. En outre, Modèle:Infobox creature invoque ce module pour déterminer dynamiquement les paramètres d'une icône, avec le résultat stocké dans la table Cargo comme optimisation.
Traducteurs: votre définition des tables et creature infobox doivent être mis à jour pour contenir les changements du 15 octobre 2023 pour que ce module fonctionne. Après que les modèles sont mis à jour, recréez la table Cargo (ce processus peut prendre jusqu'à une heure selon la charge serveur). Ensuite, ItemLink et possiblement d'autres modèles devront être mis à jour pour optimiser les icônes dynamiques.
Comparateurs
Le module procède à trois méthode pour attribuer une catégorie:
- Le comparateur"Direct" (Rigged)contrôle si la configuration fournit un résultat direct depuis le nom d'article de la créature.
- Après quoi, le nom d'article de la créature est comparé avec les formats de noms, selon le format de nom Lua. L'ordre de contrôle n'est pas garanti.
- Si les deux méthodes ci-dessus ne fournissent pas de résultat, le groupe taxonomique de la créature est retenu. L'ordre de contrôle est garanti pour correspondre à l'ordre dans la configuration.
Choix de fichier
Dans le comparateur direct, le fichier d'icône configuré est utilisé. Avec les autres comparateurs, le fichier d'icône utilisé est toujours soit le nom de la créature parent (si la créature est une variante) soit le nom d'article de la créature contrôlée.
local p = {}
local Utility = require( 'Module:Utility' )
local PatternBindings = {
[' %(Alpha%)$'] = 'alpha',
['^Alpha '] = 'alpha',
[' %(Beta%)$'] = 'beta',
['^Beta '] = 'beta',
[' %(Gamma%)$'] = 'gamma',
['^Gamma '] = 'gamma',
}
local GroupBindings = {
['Créatures irradiées'] = 'aberrant',
['Créatures alphas'] = 'alpha',
['Créatures brutales'] = 'brute',
['Créatures corrompues'] = 'corrupt',
['Créatures enragées'] = 'enraged',
['Créatures d\'événement'] = 'event',
['Créatures Tek défectueuses'] = 'mtek',
['Créatures-R'] = 'r',
['Créatures Tek'] = 'tek',
['Créatures RV'] = 'vr',
['Créatures-X'] = 'x',
}
local Enable = mw.ext.VariablesLua.var( 'FF_DINO_ICONS' ) == '1'
local AllowIconOverrides = false
local UseDynamicResolution = true
local Pregenerated = nil -- mw.loadData( 'Module:DinoIcon/pregenerated' )
function p.resolveStatic( creature )
local result = Pregenerated[creature]
if result == true then
result = { 'dinolink', creature }
end
return result
end
function p.resolveDynamic( creature )
local data = Utility.runCachedCargoQuery( 'DinoIconMetadata:3', {
expiryTime = 60 * 30,
inProcess = true,
tableName = 'Entities',
fields = 'Article, VariantOf, Groups',
key = 'Article',
options = {
limit = 9999
}
} )
local row = data[creature]
if row then
if row.VariantOf then
if AllowIconOverrides and Utility.doesFileExist( creature .. '.png' ) then
return { 'dinolink', creature }
end
for pattern, class in pairs( PatternBindings ) do
if row.Article:find( pattern, nil, false ) then
return { 'dinolink dinolink--' .. class, row.VariantOf }
end
end
for group, class in pairs( GroupBindings ) do
if row.Groups:find( group, nil, true ) then
return { 'dinolink dinolink--' .. class, row.VariantOf }
end
end
end
return { 'dinolink', creature }
end
return nil
end
function p.resolve( creature )
if not Enable then
return nil
end
local result = -2
if Pregenerated ~= nil then
result = p.resolveStatic( creature )
end
if result == -2 and UseDynamicResolution then
result = p.resolveDynamic( creature )
end
if result == -2 then
result = nil
end
return result
end
return p