Fix: recalcul nombre astral pour retour arrière

quand on remet la date en arrière (suite à erreur sur l'avancement
du calendrier), le nombre astral est maintenant correctement
initialisé (nombres aléatoires)

Ce qui permet de ne plus tomber sur le cas "N/A" ou sur un nombre
non disponible, et donc débloque la fenêtre de jets de dés
(bloquée à cause de l'ajustement astrologique)
This commit is contained in:
Vincent Vandemeulebrouck 2021-02-04 01:00:17 +01:00
parent e936fc3234
commit 781b6353a8

View File

@ -117,45 +117,33 @@ export class RdDCalendrier extends Application {
/* -------------------------------------------- */
getCurrentNombreAstral() {
let index = this.getCurrentDayIndex();
return this.getNombreAstral(index);
let indexDate = this.getCurrentDayIndex();
return this.getNombreAstral(indexDate);
}
/* -------------------------------------------- */
getNombreAstral( index ) {
const liste = this.listeNombreAstral || this._loadListNombreAstral();
let astralData = liste.find( (nombreAstral, i) => nombreAstral.index == index );
if ( astralData == undefined ) {
getNombreAstral( indexDate ) {
const liste = this.listeNombreAstral ?? this._loadListNombreAstral();
let astralData = liste.find( (nombreAstral, i) => nombreAstral.index == indexDate );
if (! astralData?.nombreAstral ) {
this.rebuildListeNombreAstral();
astralData = liste.find( (nombreAstral, i) => nombreAstral.index == index );
astralData = liste.find( (nombreAstral, i) => nombreAstral.index == indexDate );
}
return astralData.nombreAstral || "N/A";
return astralData?.nombreAstral ?? "N/A";
}
/* -------------------------------------------- */
rebuildListeNombreAstral() {
// Auto-create if needed
if ( this.listeNombreAstral == undefined)
this.listeNombreAstral = [];
// Nettoyage des nombres astraux anciens
let jourCourant = this.getCurrentDayIndex();
let jourFin = jourCourant + 12;
let newList = this.listeNombreAstral.filter( (nombreAstral, i) => nombreAstral && nombreAstral.index >= jourCourant && nombreAstral.index < jourFin);
//console.log("LSTES", this.listeNombreAstral, newList );
let lastDay = jourCourant;
for (let i=0; i < MAX_NOMBRE_ASTRAL; i++) {
let nombreAstral = newList[i];
if ( nombreAstral ) {
lastDay = nombreAstral.index + 1;
} else {
newList.push( this.ajouterNombreAstral( lastDay) );
lastDay += 1;
let newList = [0,1,2,3,4,5,6,7,8,9,10,11].map( i => this.ajouterNombreAstral(jourCourant + i));
if (this.listeNombreAstral) {
for (const na of this.listeNombreAstral) {
if (na && na.index >= jourCourant && na.index < jourFin) {
newList[na.index - jourCourant] = na;
}
}
}
this.listeNombreAstral = newList;
game.settings.set("foundryvtt-reve-de-dragon", "liste-nombre-astral", this.listeNombreAstral );
}