Fixes sur calculs enc et prix

Ajout de la classe de base RdDItem qui se charge du calcul pour un Item

Formatage de la zone d'équipement pour avoir de la place pour le Nom

Simplification des calculs de totaux
This commit is contained in:
Vincent Vandemeulebrouck
2021-04-06 23:36:35 +02:00
parent 4792e36922
commit 674582d6e8
8 changed files with 88 additions and 71 deletions

View File

@ -240,7 +240,7 @@ export class RdDActor extends Actor {
return Math.floor(Misc.templateData(this).prixTotalEquipement ?? 0);
}
getSurenc() {
return Misc.toInt(Misc.templateData(this).compteurs.surenc?.value);
return Misc.templateData(this).compteurs.surenc?.value ?? 0;
}
/* -------------------------------------------- */
getCompetence(name) {
@ -956,8 +956,9 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
detectSurEncombrement() {
return Math.max(0, Math.ceil(Number(this.data.encTotal) - this.getEncombrementMax()));
return Math.max(0, Math.ceil(Number(this.encTotal) - this.getEncombrementMax()));
}
getEncombrementMax() {
return (this.data.type == 'vehicule')
? Misc.templateData(this).capacite_encombrement
@ -980,17 +981,11 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
computeEncombrement() {
Misc.templateData(this).encTotal = this.filterItemsData(it => it.data.encombrement)
.map(it => this._calcEncItem(it))
const tplData = Misc.templateData(this);
tplData.encTotal = this.filterItemsData(it => it.data.encombrement != undefined)
.map(it => it.data.encTotal)
.reduce(Misc.sum(), 0);
return Misc.templateData(this).encTotal;
}
_calcEncItem(it) {
it.data.encombrement = Number(it.data.encombrement ?? 0);
it.data.quantite = Math.min(1, Number(it.data.quantite ?? 1));
it.data.encTotal = it.data.encombrement * it.data.quantite;
return it.data.encTotal;
return tplData.encTotal;
}
/* -------------------------------------------- */
@ -1007,17 +1002,12 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
computePrixTotalEquipement() {
let prixTotalEquipement = 0;
// prix total de l'équipement est la somme du cout de chaque équipement multiplié par sa quantité.
for (const itemData of this.filterItemsData(it => it?.data.cout)) {
const cout = Math.min(Number(itemData.data.cout ?? 0), 0);
const quantite = Math.min(Number(itemData.data?.quantite ?? 1), 1);
prixTotalEquipement += cout * quantite;
}
const tplData = Misc.templateData(this);
tplData.prixTotalEquipement = this.filterItemsData(it => it.data.prixTotal)
.map(it => it.data.prixTotal ?? 0)
.reduce(Misc.sum(), 0);
// Mise à jour valeur totale de l'équipement
Misc.templateData(this).prixTotalEquipement = prixTotalEquipement;
return prixTotalEquipement;
return tplData.prixTotalEquipement;
}
/* -------------------------------------------- */
@ -1068,7 +1058,7 @@ export class RdDActor extends Actor {
state += Math.min(0, (actorData.data.compteurs.ethylisme?.value ?? 0));
actorData.data.compteurs.etat.value = state;
if (actorData.data.compteurs && actorData.data.compteurs.surenc) {
if (actorData.data.compteurs?.surenc) {
actorData.data.compteurs.surenc.value = - this.detectSurEncombrement();
}
}