forked from public/foundryvtt-reve-de-dragon
Reprise de l'arbre d'inventaire
Soucis lors de l'affichage dans la fenêtre d'un conteneur
This commit is contained in:
@ -278,8 +278,9 @@ export class RdDUtility {
|
||||
Handlebars.registerHelper('apostrophe', (article, str) => Grammar.apostrophe(article, str));
|
||||
Handlebars.registerHelper('un', str => Grammar.articleIndetermine(str));
|
||||
Handlebars.registerHelper('accord', (genre, ...args) => Grammar.accord(genre, args));
|
||||
Handlebars.registerHelper('buildConteneur', (objet, templateItem, options) => { return new Handlebars.SafeString(RdDUtility.buildConteneur(objet, 1, templateItem, options)); });
|
||||
Handlebars.registerHelper('buildContenu', (objet) => { return new Handlebars.SafeString(RdDUtility.buildContenu(objet, 1, true)); });
|
||||
Handlebars.registerHelper('buildLigneInventaire', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildLigneInventaire(item, options)); });
|
||||
Handlebars.registerHelper('buildInventaireConteneur', (actorId, itemId, options) => { return new Handlebars.SafeString(RdDUtility.buildInventaireConteneur(actorId, itemId, options)); });
|
||||
Handlebars.registerHelper('buildContenuConteneur', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildContenuConteneur(item, options)); });
|
||||
Handlebars.registerHelper('calculerPrixCommercant', item => item.calculerPrixCommercant());
|
||||
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
|
||||
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
|
||||
@ -394,38 +395,58 @@ export class RdDUtility {
|
||||
return conteneurs.filter((conteneur, index, arr) => !conteneur.estContenu);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** Construit la structure récursive des conteneurs, avec imbrication potentielle
|
||||
*
|
||||
*/
|
||||
static buildConteneur(objet, profondeur, templateItem, options) {
|
||||
if (!profondeur) profondeur = 1;
|
||||
if (!templateItem) templateItem = 'actor/inventaire-item.html'
|
||||
objet.niveau = profondeur;
|
||||
|
||||
const isConteneur = objet.type == 'conteneur';
|
||||
const isOuvert = isConteneur && this.getAfficheContenu(objet._id);
|
||||
const isVide = isConteneur && objet.system.contenu.length == 0;
|
||||
const conteneur = Handlebars.partials[`systems/foundryvtt-reve-de-dragon/templates/${templateItem}`]({
|
||||
item: objet,
|
||||
vide: isVide,
|
||||
ouvert: isOuvert,
|
||||
options: options
|
||||
});
|
||||
const contenu = isConteneur ? RdDUtility.buildContenu(objet, profondeur, isOuvert, templateItem, options) : '';
|
||||
return conteneur + contenu;
|
||||
static prepareOptionsArbreInventaire(item, optionsArbre) {
|
||||
if (!optionsArbre.profondeur) {
|
||||
optionsArbre.profondeur = 1
|
||||
};
|
||||
if (!optionsArbre.templateItem) {
|
||||
optionsArbre.templateItem = item.parent?.type == 'commerce'
|
||||
? "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire-item.html"
|
||||
: "systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-item.html";
|
||||
}
|
||||
item.niveau = optionsArbre.profondeur;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static buildContenu(objet, profondeur, afficherContenu, templateItem, options) {
|
||||
if (!profondeur) profondeur = 1;
|
||||
if (!templateItem) templateItem = 'actor/inventaire-item.html'
|
||||
objet.niveau = profondeur;
|
||||
|
||||
const display = afficherContenu ? 'item-display-show' : 'item-display-hide';
|
||||
let strContenu = `<ul class='item-list alterne-list ${display} list-item-margin${Math.min(profondeur, 6)}'>`;
|
||||
for (let subItem of objet.subItems) {
|
||||
strContenu += this.buildConteneur(subItem, profondeur + 1, templateItem, options);
|
||||
/**
|
||||
* Construit la structure récursive des conteneurs, avec imbrication potentielle
|
||||
*/
|
||||
static buildLigneInventaire(item, options = {}, optionsArbre = { ouvert: false, profondeur: 1 }) {
|
||||
RdDUtility.prepareOptionsArbreInventaire(item, optionsArbre);
|
||||
|
||||
const isConteneur = item.type == 'conteneur';
|
||||
const inventaire = {
|
||||
item: item,
|
||||
vide: isConteneur && item.system.contenu.length == 0,
|
||||
ouvert: isConteneur && RdDUtility.getAfficheContenu(item._id),
|
||||
options: options
|
||||
};
|
||||
optionsArbre.ouvert = inventaire.ouvert
|
||||
const ligneObjet = Handlebars.partials[optionsArbre.templateItem](inventaire);
|
||||
if (isConteneur) {
|
||||
return ligneObjet + RdDUtility.buildContenuConteneur(item, options, optionsArbre);
|
||||
}
|
||||
return ligneObjet;
|
||||
}
|
||||
|
||||
static buildInventaireConteneur(actorId, itemId, options) {
|
||||
const actor = game.actors.get(actorId)
|
||||
const item = actor?.items.get(itemId)
|
||||
if (item) {
|
||||
return RdDUtility.buildContenuConteneur(item, options, { ouvert: true, profondeur: 1 });
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static buildContenuConteneur(conteneur, options = {}, optionsArbre = {}) {
|
||||
RdDUtility.prepareOptionsArbreInventaire(conteneur, optionsArbre);
|
||||
const display = optionsArbre.ouvert ? 'item-display-show' : 'item-display-hide';
|
||||
let strContenu = `<ul class='item-list alterne-list ${display} list-item-margin${Math.min(optionsArbre.profondeur, 6)}'>`;
|
||||
optionsArbre.profondeur++;
|
||||
for (let contenu of conteneur.subItems) {
|
||||
strContenu += this.buildLigneInventaire(contenu, options, optionsArbre);
|
||||
}
|
||||
return strContenu + "</ul>";
|
||||
}
|
||||
|
Reference in New Issue
Block a user