From 3e65bcb84892b22b192da78d898457d50cbeb5fc Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Mon, 17 Oct 2022 21:19:01 +0200 Subject: [PATCH] Fix: empilement de nouveau possible MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les objets empilables peuvent de nouveau être empilés. Un message indique en cas de drop sur un objet non empilable qui n'est pas un conteneur que l'objet est déplacé dans le conteneur parent ou dans les objets portés. --- module/actor.js | 12 +++++++----- module/item.js | 20 +++++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/module/actor.js b/module/actor.js index e7de17ce..223a5e90 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1187,8 +1187,8 @@ export class RdDActor extends Actor { const src = this.getObjet(srcId); const dest = this.getObjet(destId); const cible = this.getContenantOrParent(dest); - const messageEquipementDifferent = item.messageEquipementDifferent(dest); - if (dest && !messageEquipementDifferent) { + const [empilable, message] = item.isEquipementEmpilable(dest); + if (empilable) { await this.regrouperEquipementsSimilaires(item, dest); result = false; } @@ -1196,9 +1196,11 @@ export class RdDActor extends Actor { else if (!cible || this.conteneurPeutContenir(cible, item)) { await this.enleverDeConteneur(item, src, params.onEnleverConteneur); await this.ajouterDansConteneur(item, cible, params.onAjouterDansConteneur); - } - else { - ui.notifications.info(messageEquipementDifferent); + if (message && !dest.isConteneur()) { + ui.notifications.info(cible + ? `${message}
${item.name} a été déplacé dans: ${cible.name}` + : `${message}
${item.name} a été sorti du conteneur`); + } } } } diff --git a/module/item.js b/module/item.js index 30bd3859..0652d11c 100644 --- a/module/item.js +++ b/module/item.js @@ -242,30 +242,32 @@ export class RdDItem extends Item { /* -------------------------------------------- */ // détermine si deux équipements sont similaires: de même type, et avec les même champs hormis la quantité - messageEquipementDifferent(other) { - if (!other || !this.isEquipement()) return undefined; + isEquipementEmpilable(other) { + if (!other || !this.isEquipement()) { + return [false, undefined]; + } - let message = undefined; if (this.system.quantite == undefined) { - message = `Impossible de regrouper des ${this.type}, ils ne sont pas empilables`; + return [false, `Impossible de regrouper des ${this.type}, ils ne sont pas empilables`]; } else if (this.type != other.type) { - message = `Impossible de regrouper des ${this.type} avec des ${other.type}`; + return [false, `Impossible de regrouper des ${this.type} avec des ${other.type}`]; } else if (this.name != other.name) { - message = `Impossible de regrouper ${this.name} avec ${other.name}`; + return [false, `Impossible de regrouper ${this.name} avec ${other.name}`]; } else { const differences = Object.entries(this.system) - .filter(([key, value]) => !['quantite', 'cout'].includes(key) && value != other.system[key]); + .filter(([key, value]) => !['quantite', 'cout', 'encTotal'].includes(key) && value != other.system[key]); if (differences.length > 0) { - message = `Impossible de regrouper les ${this.type} ${this.name}: `; + let message = `Impossible de regrouper les ${this.type} ${this.name}: `; for (const [key, value] of differences) { message += `
${key}: ${value} vs ${other.system[key]}`; } + return [false, message]; } } - return message; + return [true, undefined]; } async proposerVente() {