From 0d2bb2d9a379397c4634bc88cfc7f97980689058 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Sun, 25 Sep 2022 17:47:58 +0200 Subject: [PATCH] Drop sur un objet met dans le conteneur parent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Augmenter la zone pour lacher un objet: * si c'est un objet similaire, on regroupe * si c'est un conteneur: on met dans le conteneur * si c'est un objet dans un conteneur, on met dans le conteneur * si c'est un objet porté, on met dans les objets portés --- module/actor.js | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/module/actor.js b/module/actor.js index 5b1dbe3d..e2242499 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1217,21 +1217,39 @@ export class RdDActor extends Actor { if (srcId != destId && itemId != destId) { // déplacement de l'objet const dest = this.getObjet(destId); const src = this.getObjet(srcId); - // changer de conteneur - if (this.conteneurPeutContenir(dest, item)) { - await this.enleverDeConteneur(item, src, params.onEnleverConteneur); - await this.ajouterDansConteneur(item, dest, params.onAjouterDansConteneur); - } - else if (dest?.isEquipementSimilaire(item)) { + if (dest?.isEquipementSimilaire(item)) { await this.regrouperEquipementsSimilaires(item, dest); result = false; } + else + { + const cible = this.getContenantOrParent(dest); + // changer de conteneur + if (cible == undefined) { + await this.enleverDeConteneur(item, src, params.onEnleverConteneur); + } + else if (this.conteneurPeutContenir(cible, item)) { + await this.enleverDeConteneur(item, src, params.onEnleverConteneur); + await this.ajouterDansConteneur(item, cible, params.onAjouterDansConteneur); + } + } } } await this.computeEncombrementTotalEtMalusArmure(); return result; } + getContenantOrParent(dest) { + if (!dest || dest.isConteneur()) { + return dest; + } + return this.getContenant(dest); + } + + getContenant(item) { + return this.items.find(it => it.isConteneur() && Misc.templateData(it).contenu.includes(item.id)); + } + /* -------------------------------------------- */ conteneurPeutContenir(dest, item) { if (!dest) {