From 60e11aa2347d71ceedc45e82f1aa6d315b195634 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Thu, 6 May 2021 08:47:25 +0200 Subject: [PATCH 01/10] Fix typos --- templates/chat-actor-turn-summary.html | 2 +- templates/item-arme-sheet.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/chat-actor-turn-summary.html b/templates/chat-actor-turn-summary.html index f0f89a1e..15058a36 100644 --- a/templates/chat-actor-turn-summary.html +++ b/templates/chat-actor-turn-summary.html @@ -2,7 +2,7 @@
{{blessuresStatus}}
Son état général est de : {{etatGeneral}} {{#if isSonne}} et est sonné{{/if}}
{{#if isGrave}} -
{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Je de Vie toutes les SC ({{SConst}}) minutes.
+
{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Jet de Vie toutes les SC ({{SConst}}) minutes, et de retirer 1 point d'endurance par blessure grave.
{{/if}} {{#if isCritique}}
{{alias}} souffre d'une Blessure Critique : faites un Jet de Vie.
diff --git a/templates/item-arme-sheet.html b/templates/item-arme-sheet.html index b39d65e5..4bd347a6 100644 --- a/templates/item-arme-sheet.html +++ b/templates/item-arme-sheet.html @@ -17,7 +17,7 @@
- +
From 4fa3f55a06f4385dbdd5ea0ec15e4d9f39011119 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Thu, 6 May 2021 19:33:11 +0200 Subject: [PATCH 02/10] Fix label for --- templates/item-arme-sheet.html | 36 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/templates/item-arme-sheet.html b/templates/item-arme-sheet.html index 4bd347a6..0e0646d2 100644 --- a/templates/item-arme-sheet.html +++ b/templates/item-arme-sheet.html @@ -9,7 +9,7 @@ {{!-- Sheet Body --}}
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
-
+
diff --git a/templates/item-armure-sheet.html b/templates/item-armure-sheet.html index b180f0d4..0f6ac604 100644 --- a/templates/item-armure-sheet.html +++ b/templates/item-armure-sheet.html @@ -24,7 +24,7 @@
-
+
diff --git a/templates/item-conteneur-sheet.html b/templates/item-conteneur-sheet.html index ffca355b..b6fd46ca 100644 --- a/templates/item-conteneur-sheet.html +++ b/templates/item-conteneur-sheet.html @@ -20,7 +20,7 @@
-
+
diff --git a/templates/item-herbe-sheet.html b/templates/item-herbe-sheet.html index 48227912..9d40e257 100644 --- a/templates/item-herbe-sheet.html +++ b/templates/item-herbe-sheet.html @@ -22,7 +22,7 @@
-
+
diff --git a/templates/item-ingredient-sheet.html b/templates/item-ingredient-sheet.html index 601aa2b5..94004736 100644 --- a/templates/item-ingredient-sheet.html +++ b/templates/item-ingredient-sheet.html @@ -21,7 +21,7 @@
-
+
diff --git a/templates/item-livre-sheet.html b/templates/item-livre-sheet.html index 276b7703..8230103c 100644 --- a/templates/item-livre-sheet.html +++ b/templates/item-livre-sheet.html @@ -55,7 +55,7 @@
-
+
diff --git a/templates/item-munition-sheet.html b/templates/item-munition-sheet.html index 7374f057..e438ef6f 100644 --- a/templates/item-munition-sheet.html +++ b/templates/item-munition-sheet.html @@ -20,7 +20,7 @@
-
+
diff --git a/templates/item-nourritureboisson-sheet.html b/templates/item-nourritureboisson-sheet.html index 8f0f7fa4..ee965f5e 100644 --- a/templates/item-nourritureboisson-sheet.html +++ b/templates/item-nourritureboisson-sheet.html @@ -49,7 +49,7 @@
-
+
diff --git a/templates/item-objet-sheet.html b/templates/item-objet-sheet.html index db84dffe..1ce77f5e 100644 --- a/templates/item-objet-sheet.html +++ b/templates/item-objet-sheet.html @@ -24,7 +24,7 @@
-
+
diff --git a/templates/item-potion-sheet.html b/templates/item-potion-sheet.html index 628a6064..ec6e2165 100644 --- a/templates/item-potion-sheet.html +++ b/templates/item-potion-sheet.html @@ -21,7 +21,7 @@
-
+
From 474a6a7ed8c7410d92d2d4b4476ef50b22f4dccb Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Thu, 6 May 2021 21:36:40 +0200 Subject: [PATCH 06/10] Masquer attributs magiques si non-magique --- module/actor.js | 6 +++--- module/item-sheet.js | 3 +-- module/item.js | 7 +++++-- templates/chat-consommer-potion-generique.html | 4 ++-- templates/chat-consommer-potion-repos.html | 4 ++-- templates/chat-consommer-potion-soin.html | 4 ++-- templates/item-arme-sheet.html | 4 ++-- templates/item-potion-sheet.html | 2 +- 8 files changed, 18 insertions(+), 16 deletions(-) diff --git a/module/actor.js b/module/actor.js index 3e037ff2..56959ff2 100644 --- a/module/actor.js +++ b/module/actor.js @@ -349,7 +349,7 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async verifierPotionsEnchantees() { - let potionsEnchantees = this.filterItemsData(it => it.type == 'potion' && it.data.isEnchante); + let potionsEnchantees = this.filterItemsData(it => it.type == 'potion' && it.data.magique); for (let potion of potionsEnchantees) { if (!potion.prpermanent) { console.log(potion); @@ -3444,7 +3444,7 @@ export class RdDActor extends Actor { potionData.alias = this.name; potionData.supprimer = true; - if (potionData.data.isEnchante) { + if (potionData.data.magique) { ChatMessage.create({ whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-soin.html`, potionData) @@ -3476,7 +3476,7 @@ export class RdDActor extends Actor { potionData.alias = this.name; potionData.supprimer = true; - if (potionData.data.isEnchante) { + if (potionData.data.magique) { ChatMessage.create({ whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name), content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-consommer-potion-repos.html`, potionData) diff --git a/module/item-sheet.js b/module/item-sheet.js index d8eaeede..41f57438 100644 --- a/module/item-sheet.js +++ b/module/item-sheet.js @@ -64,8 +64,7 @@ export class RdDItemSheet extends ItemSheet { owner: this.document.isOwner, editable: this.isEditable, cssClass: this.isEditable ? "editable" : "locked", - isSoins: false, - isEnchante: false + isSoins: false } if ( this.actor ) { formData.isOwned = true; diff --git a/module/item.js b/module/item.js index b1de3222..e20021ab 100644 --- a/module/item.js +++ b/module/item.js @@ -43,6 +43,9 @@ export class RdDItem extends Item { return itemData.type == 'objet' && Grammar.toLowerCaseNoAccent(itemData.name) == 'cristal alchimique' && itemData.data.quantite > 0; } + isMagique(){ + return Misc.templateData(this.object).magique; + } getEnc() { const itemData = Misc.data(this); @@ -68,8 +71,8 @@ export class RdDItem extends Item { prepareDataPotion() { const tplData = Misc.templateData(this); const categorie = Grammar.toLowerCaseNoAccent(tplData.categorie); - tplData.isEnchante = categorie.includes('enchante'); - if (tplData.isEnchante) { + tplData.magique = categorie.includes('enchante'); + if (tplData.magique) { if (categorie.includes('soin') || categorie.includes('repos')) { tplData.puissance = tplData.herbebonus * tplData.pr; } diff --git a/templates/chat-consommer-potion-generique.html b/templates/chat-consommer-potion-generique.html index 8f2b5838..e3d514ca 100644 --- a/templates/chat-consommer-potion-generique.html +++ b/templates/chat-consommer-potion-generique.html @@ -1,9 +1,9 @@ potion de repos

- {{alias}} consomme sa Potion {{#if data.isEnchante}}enchantée{{/if}} de {{name}}. + {{alias}} consomme sa Potion {{#if data.magique}}enchantée{{/if}} de {{name}}.


- Les effets de la potions sont à gérer manuellement, en fonction de sa nature{{#if data.isEnchante}} et de son enchantement ({{data.pr}} Points de Rêve){{/if}}. + Les effets de la potions sont à gérer manuellement, en fonction de sa nature{{#if data.magique}} et de son enchantement ({{data.pr}} Points de Rêve){{/if}}.
La potion a été supprimée de l'équipement.
diff --git a/templates/chat-consommer-potion-repos.html b/templates/chat-consommer-potion-repos.html index a51e11f9..37cc9f99 100644 --- a/templates/chat-consommer-potion-repos.html +++ b/templates/chat-consommer-potion-repos.html @@ -1,10 +1,10 @@ potion de repos

- {{alias}} consomme sa Potion de Repos {{#if data.isEnchante}}enchantée{{/if}} de {{name}} ({{data.herbe}}, {{data.herbebrins}} brins). + {{alias}} consomme sa Potion de Repos {{#if data.magique}}enchantée{{/if}} de {{name}} ({{data.herbe}}, {{data.herbebrins}} brins).


- {{#if data.isEnchante}} + {{#if data.magique}} Elle permet de récupérer jusqu'à {{data.puissance}} cases de repos. {{else}} Une fois consommée vers fin Lyre, elle vous octroie un bonus de {{data.herbebonus}} segments de fatigue récupérés en plus à la fin de Chateau Dormant (à gérer manuellement). diff --git a/templates/chat-consommer-potion-soin.html b/templates/chat-consommer-potion-soin.html index 61a400b6..0d88518a 100644 --- a/templates/chat-consommer-potion-soin.html +++ b/templates/chat-consommer-potion-soin.html @@ -1,10 +1,10 @@ potion de soin

- {{alias}} consomme sa Potion de soins {{#if data.isEnchante}}enchantée{{/if}} de {{name}} ({{data.herbe}}, {{data.herbebrins}} brins). + {{alias}} consomme sa Potion de soins {{#if data.magique}}enchantée{{/if}} de {{name}} ({{data.herbe}}, {{data.herbebrins}} brins).


- {{#if data.isEnchante}} + {{#if data.magique}} Elle permet de guérir {{data.puissance}} Points de Guérison. {{else}} Lors de votre prochain jet de récupération à Chateau Dormant, vous bénéficierez d'un bonus de {{data.herbebonus}} (appliqué automatiquement). diff --git a/templates/item-arme-sheet.html b/templates/item-arme-sheet.html index 82764717..494f7b87 100644 --- a/templates/item-arme-sheet.html +++ b/templates/item-arme-sheet.html @@ -76,11 +76,11 @@
-
+
-
+
diff --git a/templates/item-potion-sheet.html b/templates/item-potion-sheet.html index ec6e2165..4cb178b2 100644 --- a/templates/item-potion-sheet.html +++ b/templates/item-potion-sheet.html @@ -77,7 +77,7 @@
{{/if}} - {{#if data.isEnchante}} + {{#if data.magique}}
From 6b96f73b7ab8368b7a9d67c2e0ffdcf40041f6a0 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 7 May 2021 00:05:36 +0200 Subject: [PATCH 07/10] =?UTF-8?q?Ignorer=20les=20diff=C3=A9rences=20de=20c?= =?UTF-8?q?o=C3=BBt=20pour=20regrouper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/item.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/item.js b/module/item.js index e20021ab..2f74d075 100644 --- a/module/item.js +++ b/module/item.js @@ -151,7 +151,7 @@ export class RdDItem extends Item { if (tplData.quantite == undefined) return false; for (const [key, value] of Object.entries(tplData)) { - if (['quantite', 'encTotal', 'prixTotal'].includes(key)) continue; + if (['quantite', 'encTotal', 'prixTotal', 'cout'].includes(key)) continue; if (value != otherTplData[key]) return false; } return true; From e41a936def2b1d488e814d09d391eb147bcb7fa3 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 7 May 2021 00:06:47 +0200 Subject: [PATCH 08/10] =?UTF-8?q?Fix=20quantit=C3=A9=20split=20item?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/actor-sheet.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 4b5b3512..2c3f843d 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -623,11 +623,10 @@ export class RdDActorSheet extends ActorSheet { } async _onSplitItem(item, split) { - const itemData = Misc.data(item); - if (split >= 1 && split < itemData.data.quantite) { + if (split >= 1 && split < Misc.data(item).data.quantite) { await item.diminuerQuantite(split); + const itemData = duplicate( Misc.data(item)); itemData.data.quantite = split; - itemData.id = undefined; await this.actor.createEmbeddedDocuments('Item', [itemData]) } } From 6eb79c3ec7c338b4c30e3807d2a34dfa12b12a8a Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 7 May 2021 00:07:16 +0200 Subject: [PATCH 09/10] suppression param inutile --- module/rdd-utility.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/rdd-utility.js b/module/rdd-utility.js index 332be836..068bee9f 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -257,7 +257,7 @@ export class RdDUtility { } /* -------------------------------------------- */ - static filterItemsPerTypeForSheet(formData, itemsByType) { + static filterItemsPerTypeForSheet(formData) { formData.materiel = this.checkNull(formData.itemsByType['objet']); formData.conteneurs = this.checkNull(formData.itemsByType['conteneur']); formData.armes = this.checkNull(formData.itemsByType['arme']); From 56c82d935aaaad85c65b1d232c490ca9c00743f3 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 7 May 2021 01:47:51 +0200 Subject: [PATCH 10/10] Fix sortie de conteneur --- module/actor-creature-sheet.js | 3 +- module/actor-sheet.js | 22 +++++---- module/actor-vehicule-sheet.js | 11 +++-- module/actor.js | 87 ++++++++++++++++------------------ module/misc.js | 11 ++--- module/rdd-utility.js | 26 +++++----- 6 files changed, 83 insertions(+), 77 deletions(-) diff --git a/module/actor-creature-sheet.js b/module/actor-creature-sheet.js index beef2d47..6e817b2d 100644 --- a/module/actor-creature-sheet.js +++ b/module/actor-creature-sheet.js @@ -37,7 +37,8 @@ export class RdDActorCreatureSheet extends RdDActorSheet { formData.calc.surEncombrementMessage = (formData.data.compteurs.surenc.value < 0) ? "Sur-Encombrement!" : ""; RdDUtility.filterItemsPerTypeForSheet(formData); - RdDUtility.buildArbreDeConteneur(this, formData); + this.objetVersConteneur = RdDUtility.buildArbreDeConteneurs(formData.conteneurs, formData.objets); + formData.conteneurs = RdDUtility.conteneursRacine(formData.conteneurs); console.log("Creature : ", this.objetVersConteneur, formData); diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 2c3f843d..49b6e088 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -112,7 +112,9 @@ export class RdDActorSheet extends ActorSheet { cacheTMR: this.actor.isTMRCache() } - RdDUtility.buildArbreDeConteneur(this, formData); + this.objetVersConteneur = RdDUtility.buildArbreDeConteneurs(formData.conteneurs, formData.objets); + formData.conteneurs = RdDUtility.conteneursRacine(formData.conteneurs); + formData.subacteurs = { vehicules: this.actor.listeVehicules(), montures: this.actor.listeMontures(), @@ -130,10 +132,17 @@ export class RdDActorSheet extends ActorSheet { } /* -------------------------------------------- */ - async _onDrop(event) { - let toSuper = await this.actor.processItemDropEvent(event, this.objetVersConteneur); - if (toSuper) { - super._onDrop(event); + async _onDropActor(event, dragData) { + console.log("DRAG", this.actor.id, dragData); + this.actor.addSubacteur(dragData.id || dragData.data._id); + super._onDropActor(event, dragData); + } + + /* -------------------------------------------- */ + async _onDropItem(event, dragData) { + const callSuper = await this.actor.processDropItem(event, dragData, this.objetVersConteneur); + if (callSuper) { + await super._onDropItem(event, dragData) } } @@ -221,14 +230,11 @@ export class RdDActorSheet extends ActorSheet { const item = this.actor.items.get(li.data("item-id")); item.sheet.render(true); }); - // Update Inventory Item html.find('.rencontre-delete').click(ev => { const li = $(ev.currentTarget).parents(".item"); const rencontreKey = li.data("item-id"); this.actor.deleteTMRRencontre(rencontreKey); }); - - // Delete Inventory Item html.find('.item-delete').click(ev => { const li = $(ev.currentTarget).parents(".item"); RdDUtility.confirmerSuppression(this, li); diff --git a/module/actor-vehicule-sheet.js b/module/actor-vehicule-sheet.js index 13ac3c1e..21c90ea5 100644 --- a/module/actor-vehicule-sheet.js +++ b/module/actor-vehicule-sheet.js @@ -52,7 +52,8 @@ export class RdDActorVehiculeSheet extends ActorSheet { }; RdDUtility.filterItemsPerTypeForSheet(formData); - RdDUtility.buildArbreDeConteneur(this, formData); + this.objetVersConteneur = RdDUtility.buildArbreDeConteneurs(formData.conteneurs, formData.objets); + formData.conteneurs = RdDUtility.conteneursRacine(formData.conteneurs); formData.options.isGM = game.user.isGM; @@ -67,10 +68,10 @@ export class RdDActorVehiculeSheet extends ActorSheet { } /* -------------------------------------------- */ - async _onDrop(event) { - let toSuper = await this.actor.processItemDropEvent(event, this.objetVersConteneur); - if ( toSuper) { - super._onDrop(event); + async _onDropItem(event, dragData) { + const callSuper = await this.actor.processDropItem(event, dragData, this.objetVersConteneur); + if (callSuper) { + await super._onDropItem(event, dragData) } } diff --git a/module/actor.js b/module/actor.js index 56959ff2..5132b08e 100644 --- a/module/actor.js +++ b/module/actor.js @@ -920,28 +920,29 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ /** Supprime un item d'un conteneur, sur la base * de leurs ID */ - async enleverDeConteneur(itemId, conteneur) { - if (conteneur?.isConteneur()) { // Si présent + async enleverDeConteneur(item, conteneur, objetVersConteneur) { + if (conteneur?.isConteneur()) { let data2use = duplicate(Misc.data(conteneur)); - //console.log("Suppression du conteneur1", conteneurId, itemId, data2use.data.contenu); let contenu = data2use.data.contenu; - let index = contenu.indexOf(itemId); + let index = contenu.indexOf(item.id); while (index >= 0) { // Force cleanup, itemId is unique contenu.splice(index, 1); - index = contenu.indexOf(itemId); + index = contenu.indexOf(item.id); } await this.updateEmbeddedDocuments('Item', [data2use]); + delete objetVersConteneur[item.id]; } } /* -------------------------------------------- */ /** Ajoute un item dans un conteneur, sur la base * de leurs ID */ - async ajouterDansConteneur(itemId, conteneur) { + async ajouterDansConteneur(item, conteneur, objetVersConteneur) { if (conteneur?.isConteneur()) { let data2use = duplicate(Misc.data(conteneur)); - data2use.data.contenu.push(itemId); + data2use.data.contenu.push(item.id); await this.updateEmbeddedDocuments('Item', [data2use]); + objetVersConteneur[item.id] = conteneur.id; } } @@ -959,54 +960,52 @@ export class RdDActor extends Actor { await this.updateEmbeddedDocuments('Item', conteneurFixedList); } - /* -------------------------------------------- */ - async processItemDropEvent(event, objetVersConteneur) { - let dragData = JSON.parse(event.dataTransfer.getData("text/plain")); + async processDropItem(event, dragData, objetVersConteneur) { console.log("DRAG", this.id, dragData); - let itemId = dragData.id || dragData.data._id; - if (dragData.type == 'Item') { - if (dragData.actorId && dragData.actorId != this.id) { - console.log("Moving objects", dragData); - this.moveItemsBetweenActors(itemId, dragData.actorId); - return false; - } + const droppedItemId = dragData.id || dragData.data._id; + if (dragData.actorId && dragData.actorId != this.id) { + console.log("Moving objects", dragData); + this.moveItemsBetweenActors(droppedItemId, dragData.actorId); + return false; + } + + let result = true; + const destId = $(event.target).parents(".item").attr("data-item-id"); + const itemId = dragData.id || dragData.data._id; + const item = this.getObjet(itemId); + if (item.isEquipement()) { if (dragData.actorId == this.id) { // rangement - const destId = $(event.target).parents(".item").attr("data-item-id"); const srcId = objetVersConteneur[itemId]; if (srcId != destId && itemId != destId) { // déplacement de l'objet - const item = this.getObjet(itemId); const dest = this.getObjet(destId); const src = this.getObjet(srcId); - if (!dest) { - // on peut toujours vider son sac - await this.enleverDeConteneur(itemId, src); + if (dest?.isConteneur()) { + if (this.conteneurPeutContenir(dest, item)) { + await this.enleverDeConteneur(item, src, objetVersConteneur); + await this.ajouterDansConteneur(item, dest, objetVersConteneur); + } } - else if (!dest.isConteneur()) { - // regrouper? - await this.regrouperEquipementsSimilaires(item, dest); - } - else if (this.conteneurPeutContenir(dest, item)) { - // déplacer? - await this.enleverDeConteneur(itemId, src); - await this.ajouterDansConteneur(itemId, dest); + else { + if (src?.isConteneur() && !item?.isConteneur()) { + await this.enleverDeConteneur(item, src, objetVersConteneur); + // simuler la re-création + dragData.actorId = null; + await this.deleteEmbeddedDocuments('Item', [item.id]); + } + else if (dest?.isEquipementSimilaire(item)) { + await this.regrouperEquipementsSimilaires(item, dest); + } } } } - this.computeEncombrementTotalEtMalusArmure(); + await this.computeEncombrementTotalEtMalusArmure(); } - if (dragData.type == "Actor") { - this.addSubacteur(itemId); - } - return true; + return result; } - + /* -------------------------------------------- */ conteneurPeutContenir(dest, item) { const destData = Misc.data(dest); - if (destData?.type != 'conteneur') { - ui.notifications.warn(`Impossible de déplacer un objet (${item.name}) vers un ${destData.type} qui n'est pas un conteneur (${dest.name}) !`); - return false; - } if (this._isConteneurContenu(item, dest)) { ui.notifications.warn(`Impossible de déplacer un conteneur parent (${item.name}) dans un de ses contenus ${destData.name} !`); return false; // Loop detected ! @@ -1061,10 +1060,8 @@ export class RdDActor extends Actor { } async regrouperEquipementsSimilaires(item, dest) { - if (item.isEquipementSimilaire(dest)) { - await dest.quantiteIncDec(Misc.templateData(item).quantite); - await this.deleteEmbeddedDocuments('Item', [item.id]); - } + await dest.quantiteIncDec(Misc.templateData(item).quantite); + await this.deleteEmbeddedDocuments('Item', [item.id]); } /* -------------------------------------------- */ @@ -2348,7 +2345,7 @@ export class RdDActor extends Actor { // Mise à jour de la tache rollData.tache = duplicate(rollData.tache); rollData.tache.data.points_de_tache_courant += rollData.rolled.ptTache; - if (rollData.rolled.isETotal){ + if (rollData.rolled.isETotal) { rollData.tache.data.difficulte--; } this.updateEmbeddedDocuments('Item', [rollData.tache]); diff --git a/module/misc.js b/module/misc.js index 30371b8d..68269af3 100644 --- a/module/misc.js +++ b/module/misc.js @@ -63,9 +63,9 @@ export class Misc { } } - static classify(items, classifier = it => it.type, transform = it => it) { + static classify(items, classifier = it => it.type) { let itemsBy = {}; - Misc.classifyInto(itemsBy, items, classifier, transform); + Misc.classifyInto(itemsBy, items, classifier); return itemsBy; } @@ -80,7 +80,7 @@ export class Misc { return itemsBy; } - static classifyInto(itemsBy, items, classifier = it => it.type, transform = it => it) { + static classifyInto(itemsBy, items, classifier = it => it.type) { for (const item of items) { const classification = classifier(item); let list = itemsBy[classification]; @@ -88,11 +88,8 @@ export class Misc { list = []; itemsBy[classification] = list; } - list.push(transform(item)); + list.push(item); } - for (const [key, list] of Object.entries(itemsBy)) { - list.sort(); - }; } static rollOneOf(array) { diff --git a/module/rdd-utility.js b/module/rdd-utility.js index 068bee9f..97c852f6 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -296,30 +296,34 @@ export class RdDUtility { } /* -------------------------------------------- */ - static buildArbreDeConteneur(actorSheet, formData) { - actorSheet.objetVersConteneur = {}; // Table de hash locale pour recupération rapide du conteneur parent (si existant) + static buildArbreDeConteneurs(conteneurs, objets) { + let objetVersConteneur = {}; // Attribution des objets aux conteneurs - for (let conteneur of formData.conteneurs) { + for (let conteneur of conteneurs) { conteneur.subItems = []; - if (!conteneur.data.encTotal) conteneur.data.encTotal = 0; + if (!conteneur.data.encTotal) + conteneur.data.encTotal = 0; //conteneur.data.encTotal = ; Deja calculé if (conteneur.data.contenu) { for (let id of conteneur.data.contenu) { - let objet = formData.objets.find(objet => (id == objet._id)); + let objet = objets.find(objet => (id == objet._id)); if (objet) { - if (!objet.data.encombrement) objet.data.encombrement = 0; // Auto-fix + if (!objet.data.encombrement) + objet.data.encombrement = 0; // Auto-fix objet.estContenu = true; // Permet de filtrer ce qifui est porté dans le template - actorSheet.objetVersConteneur[id] = conteneur._id; + objetVersConteneur[id] = conteneur._id; conteneur.data.encTotal += Number(objet.data.encombrement) * Number(((objet.data.quantite) ? objet.data.quantite : 1)); conteneur.subItems.push(objet); } } } } - // Construit la liste des conteneurs de niveau 1 (c'est à dire non contenu eux-même dans un conteneur) - let newConteneurs = formData.conteneurs.filter(function (conteneur, index, arr) { return !conteneur.estContenu }); - formData.conteneurs = newConteneurs; - //console.log(newConteneurs); + return objetVersConteneur; + } + + // Construit la liste des conteneurs de niveau 1 (c'est à dire non contenu eux-même dans un conteneur) + static conteneursRacine(conteneurs) { + return conteneurs.filter( (conteneur, index, arr) => !conteneur.estContenu); } /* -------------------------------------------- */