Fixes calendrier #489
@ -37,13 +37,18 @@ const MAX_NOMBRE_ASTRAL = 12;
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class RdDCalendrier extends Application {
|
export class RdDCalendrier extends Application {
|
||||||
|
|
||||||
getCalendrier(index) {
|
static createCalendrierPos() {
|
||||||
let month = Math.floor(index / 28) % 12;
|
return { top: 200, left: 200 };
|
||||||
|
}
|
||||||
|
|
||||||
|
static getCalendrier(index) {
|
||||||
let calendrier = {
|
let calendrier = {
|
||||||
heureRdD: 0, // Index dans heuresList
|
heureRdD: 0, // Index dans heuresList
|
||||||
minutesRelative: 0,
|
minutesRelative: 0,
|
||||||
moisRdD: month,
|
indexJour: index,
|
||||||
jour: (index - (month * 28)) + 1
|
annee: Math.floor(index / (28 * 12)),
|
||||||
|
moisRdD: Math.floor(index / 28) % 12,
|
||||||
|
jour: (index % 28),
|
||||||
}
|
}
|
||||||
return calendrier;
|
return calendrier;
|
||||||
}
|
}
|
||||||
@ -52,9 +57,12 @@ export class RdDCalendrier extends Application {
|
|||||||
async initCalendrier() {
|
async initCalendrier() {
|
||||||
// Calendrier
|
// Calendrier
|
||||||
this.calendrier = duplicate(game.settings.get("foundryvtt-reve-de-dragon", "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);
|
//console.log("CALENDRIER", this.calendrier);
|
||||||
if (this.calendrier == undefined || this.calendrier.moisRdD == undefined) {
|
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
|
if (game.user.isGM) { // Uniquement si GM
|
||||||
game.settings.set("foundryvtt-reve-de-dragon", "calendrier", this.calendrier);
|
game.settings.set("foundryvtt-reve-de-dragon", "calendrier", this.calendrier);
|
||||||
}
|
}
|
||||||
@ -62,9 +70,7 @@ export class RdDCalendrier extends Application {
|
|||||||
// position
|
// position
|
||||||
this.calendrierPos = duplicate(game.settings.get("foundryvtt-reve-de-dragon", "calendrier-pos"));
|
this.calendrierPos = duplicate(game.settings.get("foundryvtt-reve-de-dragon", "calendrier-pos"));
|
||||||
if (this.calendrierPos == undefined || this.calendrierPos.top == undefined) {
|
if (this.calendrierPos == undefined || this.calendrierPos.top == undefined) {
|
||||||
this.calendrierPos = {};
|
this.calendrierPos = RdDCalendrier.createCalendrierPos();
|
||||||
this.calendrierPos.top = 200;
|
|
||||||
this.calendrierPos.left = 200;
|
|
||||||
if (game.user.isGM) { // Uniquement si GM
|
if (game.user.isGM) { // Uniquement si GM
|
||||||
game.settings.set("foundryvtt-reve-de-dragon", "calendrier-pos", this.calendrierPos);
|
game.settings.set("foundryvtt-reve-de-dragon", "calendrier-pos", this.calendrierPos);
|
||||||
}
|
}
|
||||||
@ -94,19 +100,16 @@ export class RdDCalendrier extends Application {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getDateFromIndex(index) {
|
getDateFromIndex(index) {
|
||||||
index = index ?? this.getCurrentDayIndex();
|
const date = this.getNumericDateFromIndex(index);
|
||||||
let month = Math.floor(index / 28);
|
return date.day + ' ' + date.month;
|
||||||
let day = (index - (month * 28)) + 1;
|
|
||||||
return day + " " + heuresList[month];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getNumericDateFromIndex(index = undefined) {
|
getNumericDateFromIndex(index = undefined) {
|
||||||
if (!index) index = this.getCurrentDayIndex();
|
const dateRdD = RdDCalendrier.getCalendrier(index ?? this.getCurrentDayIndex());
|
||||||
let month = Math.floor(index / 28)
|
|
||||||
return {
|
return {
|
||||||
month: heuresList[month],
|
day: dateRdD.jour + 1,
|
||||||
day: (index - (month * 28)) + 1
|
month: heuresDef[heuresList[calendrier.moisRdD]].label
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,7 +120,7 @@ export class RdDCalendrier extends Application {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCurrentDayIndex() {
|
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 +241,8 @@ export class RdDCalendrier extends Application {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
incrementerJour() {
|
incrementerJour() {
|
||||||
this.calendrier.jour += 1;
|
const index = this.getCurrentDayIndex() + 1;
|
||||||
if (this.calendrier.jour >= RDD_JOUR_PAR_MOIS) {
|
this.calendrier = RdDCalendrier.getCalendrier(index);
|
||||||
this.calendrier.jour -= RDD_JOUR_PAR_MOIS;
|
|
||||||
if (this.calendrier.jour <= 0)
|
|
||||||
this.calendrier.jour = 0;
|
|
||||||
this.calendrier.moisRdD += 1;
|
|
||||||
// Reconstruire les nombres astraux
|
|
||||||
}
|
|
||||||
this.rebuildListeNombreAstral();
|
this.rebuildListeNombreAstral();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,7 +255,7 @@ export class RdDCalendrier extends Application {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async positionnerHeure(indexHeure) {
|
async positionnerHeure(indexHeure) {
|
||||||
if (indexHeure <= this.calendrier.heureRdD) {
|
if (indexHeure <= this.calendrier.heureRdD) {
|
||||||
await this.incrementerJour();
|
this.incrementerJour();
|
||||||
}
|
}
|
||||||
this.calendrier.heureRdD = indexHeure;
|
this.calendrier.heureRdD = indexHeure;
|
||||||
this.calendrier.minutesRelative = 0;
|
this.calendrier.minutesRelative = 0;
|
||||||
@ -332,8 +329,8 @@ export class RdDCalendrier extends Application {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
findHeure(heure) {
|
findHeure(heure) {
|
||||||
heure = Grammar.toLowerCaseNoAccent(heure);
|
heure = Grammar.toLowerCaseNoAccentNoSpace(heure);
|
||||||
let parHeureOuLabel = Object.values(heuresDef).filter(it => (it.heure+1) == heure || Grammar.toLowerCaseNoAccentNoSpace(it.label) == heure);
|
let parHeureOuLabel = Object.values(heuresDef).filter(it => (it.heure + 1) == heure || Grammar.toLowerCaseNoAccentNoSpace(it.label) == heure);
|
||||||
if (parHeureOuLabel.length == 1) {
|
if (parHeureOuLabel.length == 1) {
|
||||||
return parHeureOuLabel[0];
|
return parHeureOuLabel[0];
|
||||||
}
|
}
|
||||||
|
@ -72,6 +72,7 @@ Hooks.once("init", async function () {
|
|||||||
name: "calendrier",
|
name: "calendrier",
|
||||||
scope: "world",
|
scope: "world",
|
||||||
config: false,
|
config: false,
|
||||||
|
default: RdDCalendrier.getCalendrier(0),
|
||||||
type: Object
|
type: Object
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -80,14 +81,16 @@ Hooks.once("init", async function () {
|
|||||||
name: "liste-nombre-astral",
|
name: "liste-nombre-astral",
|
||||||
scope: "world",
|
scope: "world",
|
||||||
config: false,
|
config: false,
|
||||||
|
default: [],
|
||||||
type: Object
|
type: Object
|
||||||
});
|
});
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
game.settings.register("foundryvtt-reve-de-dragon", "calendrier-pos", {
|
game.settings.register("foundryvtt-reve-de-dragon", "calendrier-pos", {
|
||||||
name: "calendrierPos",
|
name: "calendrierPos",
|
||||||
scope: "world",
|
scope: "client",
|
||||||
config: false,
|
config: false,
|
||||||
|
default: RdDCalendrier.createCalendrierPos(),
|
||||||
type: Object
|
type: Object
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user