From 20ae4a9a971154b5237825b3343d327eeee57529 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 8 Jun 2021 14:09:40 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Fix:=20calcul=20de=20date=20au=20del=C3=A0?= =?UTF-8?q?=20de=2012=20mois?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gestion de mois 12 (par modulo) Ajout de l'année incrémenter le jour se fait sur l'index (et calcul des infos de calendrier) + sécurité pour les calendriers existants --- module/rdd-calendrier.js | 42 ++++++++++++++++++---------------------- module/rdd-main.js | 2 ++ 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/module/rdd-calendrier.js b/module/rdd-calendrier.js index 0e4b3f48..473106fa 100644 --- a/module/rdd-calendrier.js +++ b/module/rdd-calendrier.js @@ -37,13 +37,15 @@ const MAX_NOMBRE_ASTRAL = 12; /* -------------------------------------------- */ export class RdDCalendrier extends Application { - getCalendrier(index) { - let month = Math.floor(index / 28) % 12; + + static getCalendrier(index) { let calendrier = { heureRdD: 0, // Index dans heuresList minutesRelative: 0, - moisRdD: month, - jour: (index - (month * 28)) + 1 + indexJour: index, + annee: Math.floor(index / (28 * 12)), + moisRdD: Math.floor(index / 28) % 12, + jour: (index % 28), } return calendrier; } @@ -52,9 +54,12 @@ export class RdDCalendrier extends Application { async initCalendrier() { // Calendrier this.calendrier = duplicate(game.settings.get("foundryvtt-reve-de-dragon", "calendrier")); + this.calendrier.annee = this.calendrier.annee ?? (this.calendrier.moisRdD == 12 ? 1 : 0); + this.calendrier.moisRdD = (this.calendrier.moisRdD ?? 0) % 12; + //console.log("CALENDRIER", this.calendrier); if (this.calendrier == undefined || this.calendrier.moisRdD == undefined) { - this.calendrier = this.getCalendrier(0); + this.calendrier = RdDCalendrier.getCalendrier(0); if (game.user.isGM) { // Uniquement si GM game.settings.set("foundryvtt-reve-de-dragon", "calendrier", this.calendrier); } @@ -94,19 +99,16 @@ export class RdDCalendrier extends Application { /* -------------------------------------------- */ getDateFromIndex(index) { - index = index ?? this.getCurrentDayIndex(); - let month = Math.floor(index / 28); - let day = (index - (month * 28)) + 1; - return day + " " + heuresList[month]; + const date = this.getNumericDateFromIndex(index); + return date.day + ' ' + date.month; } /* -------------------------------------------- */ getNumericDateFromIndex(index = undefined) { - if (!index) index = this.getCurrentDayIndex(); - let month = Math.floor(index / 28) + const dateRdD = RdDCalendrier.getCalendrier(index ?? this.getCurrentDayIndex()); return { - month: heuresList[month], - day: (index - (month * 28)) + 1 + day: dateRdD.jour + 1, + month: heuresDef[heuresList[dateRdD.moisRdD]].label } } @@ -117,7 +119,7 @@ export class RdDCalendrier extends Application { /* -------------------------------------------- */ getCurrentDayIndex() { - return (this.calendrier.moisRdD * 28) + this.calendrier.jour; + return (((this.calendrier.annee ?? 0) * 12 + (this.calendrier.moisRdD ?? 0)) * 28) + (this.calendrier.jour ?? 0); } /* -------------------------------------------- */ @@ -238,14 +240,8 @@ export class RdDCalendrier extends Application { /* -------------------------------------------- */ incrementerJour() { - this.calendrier.jour += 1; - if (this.calendrier.jour >= RDD_JOUR_PAR_MOIS) { - this.calendrier.jour -= RDD_JOUR_PAR_MOIS; - if (this.calendrier.jour <= 0) - this.calendrier.jour = 0; - this.calendrier.moisRdD += 1; - // Reconstruire les nombres astraux - } + const index = this.getCurrentDayIndex() + 1; + this.calendrier = RdDCalendrier.getCalendrier(index); this.rebuildListeNombreAstral(); } @@ -258,7 +254,7 @@ export class RdDCalendrier extends Application { /* -------------------------------------------- */ async positionnerHeure(indexHeure) { if (indexHeure <= this.calendrier.heureRdD) { - await this.incrementerJour(); + this.incrementerJour(); } this.calendrier.heureRdD = indexHeure; this.calendrier.minutesRelative = 0; diff --git a/module/rdd-main.js b/module/rdd-main.js index 0afcccbd..014a53e9 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -72,6 +72,7 @@ Hooks.once("init", async function () { name: "calendrier", scope: "world", config: false, + default: RdDCalendrier.getCalendrier(0), type: Object }); @@ -80,6 +81,7 @@ Hooks.once("init", async function () { name: "liste-nombre-astral", scope: "world", config: false, + default: [], type: Object }); From 9b6058353754639f83bc5f5af60623bb366e626e Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 8 Jun 2021 14:11:23 +0200 Subject: [PATCH 2/3] =?UTF-8?q?Fix:=20position=20du=20calendrier=20par=20d?= =?UTF-8?q?=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit calendrier positionné indépendamment par user default setting pour la position initiale --- module/rdd-calendrier.js | 7 ++++--- module/rdd-main.js | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/module/rdd-calendrier.js b/module/rdd-calendrier.js index 473106fa..6f385db4 100644 --- a/module/rdd-calendrier.js +++ b/module/rdd-calendrier.js @@ -37,6 +37,9 @@ const MAX_NOMBRE_ASTRAL = 12; /* -------------------------------------------- */ export class RdDCalendrier extends Application { + static createCalendrierPos() { + return { top: 200, left: 200 }; + } static getCalendrier(index) { let calendrier = { @@ -67,9 +70,7 @@ export class RdDCalendrier extends Application { // position this.calendrierPos = duplicate(game.settings.get("foundryvtt-reve-de-dragon", "calendrier-pos")); if (this.calendrierPos == undefined || this.calendrierPos.top == undefined) { - this.calendrierPos = {}; - this.calendrierPos.top = 200; - this.calendrierPos.left = 200; + this.calendrierPos = RdDCalendrier.createCalendrierPos(); if (game.user.isGM) { // Uniquement si GM game.settings.set("foundryvtt-reve-de-dragon", "calendrier-pos", this.calendrierPos); } diff --git a/module/rdd-main.js b/module/rdd-main.js index 014a53e9..9cc02aa1 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -88,8 +88,9 @@ Hooks.once("init", async function () { /* -------------------------------------------- */ game.settings.register("foundryvtt-reve-de-dragon", "calendrier-pos", { name: "calendrierPos", - scope: "world", + scope: "client", config: false, + default: RdDCalendrier.createCalendrierPos(), type: Object }); From 986b007633c5d1438b34382173be590452cd1000 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 8 Jun 2021 14:49:32 +0200 Subject: [PATCH 3/3] Fix: /astro chateau dormant --- module/rdd-calendrier.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/rdd-calendrier.js b/module/rdd-calendrier.js index 6f385db4..f99a53a1 100644 --- a/module/rdd-calendrier.js +++ b/module/rdd-calendrier.js @@ -329,8 +329,8 @@ export class RdDCalendrier extends Application { /* -------------------------------------------- */ findHeure(heure) { - heure = Grammar.toLowerCaseNoAccent(heure); - let parHeureOuLabel = Object.values(heuresDef).filter(it => (it.heure+1) == heure || Grammar.toLowerCaseNoAccentNoSpace(it.label) == heure); + heure = Grammar.toLowerCaseNoAccentNoSpace(heure); + let parHeureOuLabel = Object.values(heuresDef).filter(it => (it.heure + 1) == heure || Grammar.toLowerCaseNoAccentNoSpace(it.label) == heure); if (parHeureOuLabel.length == 1) { return parHeureOuLabel[0]; }