Module:DinoIcon

De ARK Wiki
Aller à la navigation Aller à la recherche
Template-info.png Documentation

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