Améliorer le choix du type d'objet à créer #143

Utilisation du fichier de langue
Utilisation de la même référence pour les compendiums
Fix sur les compendium, le type n'apparaissait pas toujours
This commit is contained in:
Vincent Vandemeulebrouck 2021-05-24 00:43:46 +02:00
parent 8e53759170
commit 286eaafe4e
5 changed files with 73 additions and 42 deletions

44
lang/fr.json Normal file
View File

@ -0,0 +1,44 @@
{
"ACTOR": {
"TypePersonnage": "Personnage",
"TypeCreature": "Créature",
"TypeEntite": "Entité de cauchemar",
"TypeVehicule": "Véhicule"
},
"ITEM": {
"TypeObjet": "Objet",
"TypeCompetence": "Compétence",
"TypeCompetencecreature": "Compétence de créature",
"TypeMaladie": "Maladie",
"TypePoison": "Poison",
"TypeNombreastral": "Nombre astral",
"TypeTarot": "Carte de tarot",
"TypeCasetmr": "TMR spéciale",
"TypeRencontresTMR": "Rencontre TMR",
"TypeMunition": "Munition",
"TypeMonnaie": "Monnaie",
"TypeHerbe": "Herbe ou plante",
"TypeIngredient": "Ingrédient",
"TypeLivre": "Livre",
"TypePotion": "Potion",
"TypeArme": "Arme",
"TypeArmure": "Armure",
"TypeConteneur": "Conteneur",
"TypeNourritureboisson": "Nourriture & boisson",
"TypeChant": "Chant",
"TypeDanse": "Danse",
"TypeMusique": "Musique",
"TypeOeuvre": "Oeuvre",
"TypeTache": "Tâche",
"TypeJeu": "Jeu",
"TypeRecettealchimique": "Recette alchimique",
"TypeRecettecuisine": "Recette de cuisine",
"TypeSort": "Sort",
"TypeMeditation": "Méditation",
"TypeSignedraconique": "Signe draconique",
"TypeQueue": "Queue de Dragon",
"TypeOmbre": "Ombre de Thanatos",
"TypeSouffle": "Souffle de Dragon",
"TypeTete": "Tête de Dragon"
}
}

View File

@ -108,6 +108,16 @@ export class Misc {
return Misc.data(it)?.data ?? {} return Misc.data(it)?.data ?? {}
} }
static getEntityTypeLabel(entity) {
const documentName = entity?.documentName;
const type = entity?.data.type;
if (documentName === 'Actor' || documentName === 'Item') {
const label = CONFIG[documentName]?.typeLabels?.[type] ?? type;
return game.i18n.has(label) ? game.i18n.localize(label) : t;
}
return type;
}
static connectedGMOrUser(ownerId = undefined) { static connectedGMOrUser(ownerId = undefined) {
if (ownerId && game.user.id == ownerId) { if (ownerId && game.user.id == ownerId) {
return ownerId; return ownerId;

View File

@ -1,36 +1,5 @@
import { Misc } from "./misc.js"; import { Misc } from "./misc.js";
/* -------------------------------------------- */
/**
* Mapping des types d'Item/Actor vers le nom d'affichage.
* Par défaut, on prend le type avec la première lettre
* majuscule, pas besoin d'ajouter tous les types.
*/
const typeDisplayName = {
"competence": "Compétence",
"herbe": "Plante",
"ingredient": "Ingrédient",
"queue": "Queue de Dragon",
"ombre": "Ombre de Thanatos",
"souffle": "Souffle de Dragon",
"tete": "Tête de Dragon",
"nourritureboisson": "Nourriture & boisson",
"rencontresTMR": "Rencontre des TMR",
"competencecreature": "Compétence de créature",
"nombreastral": "Nombre astral",
"casetmr": "Effet sur TMR",
"recettealchimique": "Recette alchimique",
"recettecuisine": "Recette de cuisine",
"tarot": "Carte de tarot draconique",
"tache": "Tâche",
"meditation": "Méditation",
"musique": "Mélodie",
"chant": "Chanson",
"creature": "Créature",
"entite": "Entité",
"vehicule": "Véhicule"
}
export class RddCompendiumOrganiser { export class RddCompendiumOrganiser {
static init() { static init() {
Hooks.on('renderCompendium', async (pack, html, data) => RddCompendiumOrganiser.onRenderCompendium(pack, html, data)) Hooks.on('renderCompendium', async (pack, html, data) => RddCompendiumOrganiser.onRenderCompendium(pack, html, data))
@ -38,22 +7,23 @@ export class RddCompendiumOrganiser {
static async onRenderCompendium(compendium, html, data) { static async onRenderCompendium(compendium, html, data) {
console.log('onRenderCompendium', compendium, html, data); console.log('onRenderCompendium', compendium, html, data);
let pack = compendium.collection const pack = compendium.collection
if (pack.metadata.system === 'foundryvtt-reve-de-dragon') { if (pack.metadata.system === 'foundryvtt-reve-de-dragon') {
html.find('.directory-item').each((i, element) => { html.find('.directory-item').each((i, element) => {
const entity = pack.get(element.dataset.documentId); RddCompendiumOrganiser.setEntityTypeName(pack, element);
const entityName = entity?.documentName;
if (entityName === 'Actor' || entityName === 'Item') {
const entityType = entity.data.type;
const typeName = typeDisplayName[entityType] ?? Misc.upperFirst(entitytype);
RddCompendiumOrganiser.insertEntityType(element, typeName);
}
}); });
} }
} }
static insertEntityType(element, type) { static async setEntityTypeName(pack, element) {
element.children[1].insertAdjacentHTML('afterbegin', `<label>${type}: </label>`); const label = Misc.getEntityTypeLabel(await pack.getDocument(element.dataset.documentId));
RddCompendiumOrganiser.insertEntityType(element, label);
}
static insertEntityType(element, label) {
if (label) {
element.children[1].insertAdjacentHTML('afterbegin', `<label class="type-compendium">${label}: </label>`);
}
} }
} }

View File

@ -530,6 +530,10 @@ table {border: 1px solid #7a7971;}
overflow: visible; overflow: visible;
} }
.type-compendium{
font-size: 0.60rem;
}
/* ======================================== */ /* ======================================== */
/* Sheet */ /* Sheet */
.window-app.sheet .window-content .sheet-header{ .window-app.sheet .window-content .sheet-header{

View File

@ -320,7 +320,10 @@
} }
], ],
"library": false, "library": false,
"languages": [], "languages": [
{ "lang": "en", "name": "English", "path": "lang/fr.json", "unreal": "this is a trick"},
{ "lang": "fr", "name": "Français", "path": "lang/fr.json" }
],
"gridDistance": 1, "gridDistance": 1,
"gridUnits": "m", "gridUnits": "m",
"primaryTokenAttribute": "sante.vie", "primaryTokenAttribute": "sante.vie",