Fix calcul encTotal
Autant le calculer depuis les objets eux-mêmes
This commit is contained in:
parent
46642d31a9
commit
95bcc2e77c
@ -1142,9 +1142,7 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
computeEncombrement() {
|
computeEncombrement() {
|
||||||
this.encTotal = this.filterItemsData(it => it.data.encombrement != undefined)
|
this.encTotal = this.items.map(it => it.getEncTotal()).reduce(Misc.sum(), 0);
|
||||||
.map(it => it.data.encTotal)
|
|
||||||
.reduce(Misc.sum(), 0);
|
|
||||||
return this.encTotal;
|
return this.encTotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,13 +88,17 @@ export class RdDItem extends Item {
|
|||||||
return Misc.templateData(this).magique;
|
return Misc.templateData(this).magique;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getEncTotal() {
|
||||||
|
const itemData = Misc.data(this);
|
||||||
|
return Number(itemData.data.encombrement ?? 0) * Number(itemData.data.quantite ?? 1);
|
||||||
|
}
|
||||||
getEnc() {
|
getEnc() {
|
||||||
const itemData = Misc.data(this);
|
const itemData = Misc.data(this);
|
||||||
switch (itemData.type) {
|
switch (itemData.type) {
|
||||||
case 'herbe':
|
case 'herbe':
|
||||||
return encBrin;
|
return encBrin;
|
||||||
}
|
}
|
||||||
return itemData.data.encombrement
|
return itemData.data.encombrement ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
prepareDerivedData() {
|
prepareDerivedData() {
|
||||||
|
@ -339,25 +339,37 @@ export class RdDUtility {
|
|||||||
// Attribution des objets aux conteneurs
|
// Attribution des objets aux conteneurs
|
||||||
for (let conteneur of conteneurs) {
|
for (let conteneur of conteneurs) {
|
||||||
conteneur.subItems = [];
|
conteneur.subItems = [];
|
||||||
conteneur.data.encTotal = conteneur.data.encombrement;
|
for (let id of conteneur.data.contenu ?? []) {
|
||||||
//conteneur.data.encTotal = ; Deja calculé
|
|
||||||
if (conteneur.data.contenu) {
|
|
||||||
for (let id of conteneur.data.contenu) {
|
|
||||||
let objet = objets.find(objet => (id == objet._id));
|
let objet = objets.find(objet => (id == objet._id));
|
||||||
if (objet) {
|
if (objet) {
|
||||||
if (!objet.data.encombrement)
|
objet.estContenu = true; // Permet de filtrer ce qui est porté dans le template
|
||||||
objet.data.encombrement = 0; // Auto-fix
|
|
||||||
objet.estContenu = true; // Permet de filtrer ce qifui est porté dans le template
|
|
||||||
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);
|
conteneur.subItems.push(objet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (let conteneur of conteneurs) {
|
||||||
|
conteneur.data.encTotal = RdDUtility.calculEncContenu(conteneur, objets);
|
||||||
}
|
}
|
||||||
return objetVersConteneur;
|
return objetVersConteneur;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static calculEncContenu(conteneur, objets) {
|
||||||
|
const itemData = Misc.data(conteneur);
|
||||||
|
const contenuDatas = (itemData.data.contenu ?? []).filter(id => id != undefined)
|
||||||
|
.map(id => Misc.data(objets.find(it => (id == it._id))));
|
||||||
|
let enc = Number(itemData.data.encombrement ?? 0) * Number(itemData.data.quantite ?? 1);
|
||||||
|
for (let itemData of contenuDatas){
|
||||||
|
if (itemData.type == 'conteneur') {
|
||||||
|
enc += RdDUtility.calculEncContenu(itemData, objets);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
enc += Number(itemData.data.encombrement ?? 0) * Number(itemData.data.quantite ?? 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return enc;
|
||||||
|
}
|
||||||
|
|
||||||
// Construit la liste des conteneurs de niveau 1 (c'est à dire non contenu eux-même dans un conteneur)
|
// Construit la liste des conteneurs de niveau 1 (c'est à dire non contenu eux-même dans un conteneur)
|
||||||
static conteneursRacine(conteneurs) {
|
static conteneursRacine(conteneurs) {
|
||||||
return conteneurs.filter((conteneur, index, arr) => !conteneur.estContenu);
|
return conteneurs.filter((conteneur, index, arr) => !conteneur.estContenu);
|
||||||
|
Loading…
Reference in New Issue
Block a user