diff --git a/module/rdd-calendrier.js b/module/rdd-calendrier.js
index 23aa64d0..0b1f65af 100644
--- a/module/rdd-calendrier.js
+++ b/module/rdd-calendrier.js
@@ -210,15 +210,10 @@ export class RdDCalendrier extends Application {
}
}
- /* -------------------------------------------- */
- getCurrentNombreAstral() {
- return this.getNombreAstral(this.timestamp.indexDate);
- }
-
/* -------------------------------------------- */
resetNombreAstral() {
this.listeNombreAstral = [];
- game.settings.set(SYSTEM_RDD, "liste-nombre-astral", this.listeNombreAstral);
+ game.settings.set(SYSTEM_RDD, "liste-nombre-astral", []);
game.socket.emit(SYSTEM_SOCKET_ID, {
msg: "msg_reset_nombre_astral",
@@ -227,10 +222,19 @@ export class RdDCalendrier extends Application {
}
/* -------------------------------------------- */
- getNombreAstral(indexDate) {
+ /**
+ *
+ * @param {*} indexDate la date pour laquelle obtenir le nombre astral. Si undefined, on prend la date du jour
+ * @returns le nombre astral pour la date, ou pour la date du jour si la date n'est pas fournie.
+ * Si aucun nombre astral n'est trouvé, retourne 0 (cas où l'on demanderait un nombre astral en dehors des 12 jours courant et à venir)
+ */
+ getNombreAstral(indexDate = undefined) {
+ if (indexDate == undefined) {
+ indexDate = this.timestamp.indexDate;
+ }
const listNombreAstral = this.getListeNombreAstral();
let astralData = listNombreAstral.find((nombreAstral, i) => nombreAstral.index == indexDate);
- return astralData?.nombreAstral;
+ return astralData?.nombreAstral ?? 0;
}
/* -------------------------------------------- */
@@ -289,8 +293,9 @@ export class RdDCalendrier extends Application {
const indexDate = this.timestamp.indexDate;
const addDay = this.timestamp.heure < heure ? 0 : 1;
await this.setNewTimestamp(new RdDTimestamp({
- indexDate: indexDate + addDay, indexHeure: 0 })
- .addHeures(heure))
+ indexDate: indexDate + addDay, indexHeure: 0
+ })
+ .addHeures(heure))
}
/* -------------------------------------------- */
@@ -358,38 +363,15 @@ export class RdDCalendrier extends Application {
game.settings.set(SYSTEM_RDD, "liste-nombre-astral", this.listeNombreAstral);
}
- getHeureChance(heure) {
- return heure + (this.getCurrentNombreAstral() ?? 0);
- }
-
- /* -------------------------------------------- */
- getHeuresChanceMalchance(heureNaissance) {
- let defHeure = RdDTimestamp.findHeure(heureNaissance);
- if (defHeure) {
- const signe = h => h % RDD_HEURES_PAR_JOUR;
- const chance = this.getHeureChance(defHeure.heure);
- return [
- { ajustement: "+4", heures: [signe(chance)] },
- { ajustement: "+2", heures: [signe(chance + 4), signe(chance + 8)] },
- { ajustement: "-4", heures: [signe(chance + 6)] },
- { ajustement: "-2", heures: [signe(chance + 3), signe(chance + 9)] }
- ];
- }
- return [];
+ static ecartHeureChance(heureNaissance, nombreAstral, heure) {
+ return (heureNaissance + nombreAstral - heure) % RDD_HEURES_PAR_JOUR;
}
/* -------------------------------------------- */
getAjustementAstrologique(heureNaissance, name = undefined) {
let defHeure = RdDTimestamp.findHeure(heureNaissance);
if (defHeure) {
- const chance = this.getHeureChance(defHeure.heure);
- const ecartChance = (chance - this.timestamp.heure) % RDD_HEURES_PAR_JOUR;
- switch (ecartChance) {
- case 0: return 4;
- case 4: case 8: return 2;
- case 6: return -4;
- case 3: case 9: return -2;
- }
+ return RdDCalendrier.ajustementAstrologiqueHeure(defHeure.heure, this.getNombreAstral(), this.timestamp.heure);
}
else if (name) {
ui.notifications.warn(name + " n'a pas d'heure de naissance, ou elle est incorrecte : " + heureNaissance);
@@ -400,6 +382,16 @@ export class RdDCalendrier extends Application {
return 0;
}
+ static ajustementAstrologiqueHeure(hn, nbAstral, heure) {
+ switch (RdDCalendrier.ecartHeureChance(hn, nbAstral, heure)) {
+ case 0: return 4;
+ case 4: case 8: return 2;
+ case 6: return -4;
+ case 3: case 9: return -2;
+ }
+ return 0;
+ }
+
/* -------------------------------------------- */
getData() {
let formData = super.getData();
@@ -434,7 +426,7 @@ export class RdDCalendrier extends Application {
// Rebuild text du calendrier
let dateHTML = `${calendrier.jourDuMois} ${calendrier.mois.label} (${calendrier.mois.saison}) de l'année ${calendrier.annee}`
if (game.user.isGM) {
- dateHTML = dateHTML + "
Nombre Astral: " + (this.getCurrentNombreAstral() ?? "?");
+ dateHTML = dateHTML + "
Nombre Astral: " + (this.getNombreAstral() ?? "?");
}
for (let handle of document.getElementsByClassName("calendar-date-rdd")) {
handle.innerHTML = dateHTML;
@@ -490,13 +482,21 @@ export class RdDCalendrier extends Application {
return astro;
});
- calendrierData.heuresParActeur = {};
- game.actors.filter(it => it.isPersonnage() && it.hasPlayerOwner).forEach(actor => {
- let heureNaissance = actor.getHeureNaissance();
- if (heureNaissance) {
- calendrierData.heuresParActeur[actor.name] = this.getHeuresChanceMalchance(heureNaissance);
+ const nbAstral = this.getNombreAstral()
+ calendrierData.heures = Array.from(Array(RDD_HEURES_PAR_JOUR).keys());
+ calendrierData.ajustementsActeur = game.actors.filter(it => it.isPersonnage() && it.hasPlayerOwner).map(actor => {
+ return {
+ actor,
+ ajustements: calendrierData.heures.map(heure => {
+ const hn = RdDTimestamp.findHeure(actor.getHeureNaissance())?.heure;
+ return {
+ heure,
+ ajustement: RdDCalendrier.ajustementAstrologiqueHeure(hn, nbAstral, heure)
+ }
+ })
}
- })
+ });
+
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/calendar-astrologie-template.html', calendrierData);
let astrologieEditeur = new RdDAstrologieEditeur(html, this, calendrierData)
astrologieEditeur.updateData(calendrierData);
diff --git a/styles/simple.css b/styles/simple.css
index d3f97b21..8780c7b0 100644
--- a/styles/simple.css
+++ b/styles/simple.css
@@ -482,6 +482,9 @@ input:is(.blessure-premiers_soins, .blessure-soins_complets) {
max-height: 1.5em;
border-width: 0;
}
+div.dimmed .img-signe-heure {
+ opacity: 50%;
+}
.button-effect-img {
vertical-align: baseline;
max-width: 16px;
@@ -1199,15 +1202,25 @@ div.competence-column div.categorie-competence{
}
/* ======================================== */
-.table-nombres-astraux {
- border:1;
+table.table-nombres-astraux {
+ border: 2px solid rgba(0, 0, 0, 0.8);
+}
+table.table-nombres-astraux th >td {
+ font-size: 1rem;
+}
+table.table-nombres-astraux tr >td {
font-size: 0.8rem;
}
-.table-nombres-astraux td {
- border: 1px solid black;
+table.table-nombres-astraux :is(tr, th, td) {
+ border-style: solid;
+ border-width: 1px;
+ border-color: rgba(102, 95, 122, 0.2);
text-align: center;
vertical-align: top;
}
+table.table-nombres-astraux tr:hover {
+ background-color: hsla(38, 20%, 50%, 0.5);
+}
/* ======================================== */
.tokenhudext {
diff --git a/system.json b/system.json
index 6c67b242..7c9e945e 100644
--- a/system.json
+++ b/system.json
@@ -1,8 +1,8 @@
{
"id": "foundryvtt-reve-de-dragon",
"title": "Rêve de Dragon",
- "version": "10.5.2",
- "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.5.2.zip",
+ "version": "10.5.3",
+ "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.5.3.zip",
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json",
"compatibility": {
"minimum": "10",
diff --git a/templates/calendar-astrologie-template.html b/templates/calendar-astrologie-template.html
index 07a12afc..c1872c98 100644
--- a/templates/calendar-astrologie-template.html
+++ b/templates/calendar-astrologie-template.html
@@ -8,16 +8,16 @@
-
+
- Date
{{#each astrologieData as |nombreData key|}}
- {{nombreData.date.jour}}{{timestamp-imgSigneHeure nombreData.date.mois}}
+ {{nombreData.date.jour}}{{timestamp-imgSigneHeure nombreData.date.mois}}
{{/each}}
+
Nombre astral
{{#each astrologieData as |nombreData key|}}
-
+
{{nombreData.nombreAstral}}
{{#each nombreData.valeursFausses as |fausseVal key|}}
@@ -30,24 +30,35 @@
- {{#each heuresParActeur as |heuresDef name|}}
-
+
+
+ {{#each ajustementsActeur as |ajustementActeur|}}
+
+ {{#each heures as |heure|}}
+
+ {{timestamp-imgSigneHeure heure}}
+
+ {{/each}}
+
+
{{/each}}
-
+
+
+ {{actor.name}}
+
+ {{#each ajustementActeur.ajustements as |ajustement|}}
+ {{#if (ne ajustement.ajustement 0)}}
+
+ {{numberFormat ajustement.ajustement decimals=0 sign=true}}
+
+ {{else}}
+
+ {{/each}}
+
{{> 'systems/foundryvtt-reve-de-dragon/templates/common/compendium-link.hbs' pack=pack id=id name=name docType=docType}}
-{{{system.description}}}
- -