Prise en compte des milieux

Les filtrages par milieux prennent en compte la rareté/fréquence
du milieu
This commit is contained in:
2023-01-20 03:25:40 +01:00
parent 7f051e76be
commit 7a67cb7cea
7 changed files with 182 additions and 147 deletions

View File

@ -178,28 +178,35 @@ export class RdDItem extends Item {
isHerbeAPotion() { return this.type == 'herbe' && (this.system.categorie == 'Soin' || this.system.categorie == 'Repos'); }
isPresentDansMilieux(milieux) {
return this.getEnvironnement(milieux).length > 0
return this.getEnvironnements(milieux).length > 0
}
getEnvironnement(milieux = undefined) {
const environnements = this.isInventaire() ? this.system?.environnement ?? [] : [];
return environnements.filter(env => !milieux || milieux.includes(env.milieu))
getEnvironnements(milieux = undefined) {
const environnements = this.isInventaire() ? this.system.environnement : undefined;
if (milieux == undefined || !environnements) {
return environnements ?? [];
}
return environnements.filter(env => milieux.includes(env.milieu))
}
getMilieux() {
return this.getEnvironnement().map(env => env.milieu);
return this.getEnvironnements().map(env => env.milieu);
}
getRarete(milieux = undefined) {
getRaretes(milieux = undefined) {
if (this.isInventaire()) {
return RdDRaretes.selonEnvironnement(this, milieux)
const raretes = this.getEnvironnements(milieux).map(env => RdDRaretes.byCode(env.rarete));
if (milieux == undefined && raretes.length == 0) {
return [RdDRaretes.rareteFrequente()];
}
return raretes;
}
return RdDRaretes.rareteFrequente();
return [RdDRaretes.rareteEgale()];
}
getFrequence(milieux = undefined) {
return this.getRarete(milieux)?.frequence ?? 0;
const frequences = this.getEnvironnements(milieux).map(it => it.frequence);
return frequences.length == 0 ? 0 : Math.max(...frequences);
}
getItemGroup() {