From f4f2db68e0067829ecbe87674e318bbd9f248547 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Mon, 9 Jan 2023 23:20:51 +0100 Subject: [PATCH 1/3] Table d'astrologie avec toutes les heures --- module/rdd-calendrier.js | 86 ++++++++++----------- styles/simple.css | 21 ++++- templates/calendar-astrologie-template.html | 53 ++++++++----- 3 files changed, 92 insertions(+), 68 deletions(-) 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/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 @@
- + {{#each astrologieData as |nombreData key|}} - + {{/each}} - + {{#each astrologieData as |nombreData key|}} -
Date{{nombreData.date.jour}}{{timestamp-imgSigneHeure nombreData.date.mois}}{{nombreData.date.jour}}{{timestamp-imgSigneHeure nombreData.date.mois}}
Nombre astral +
    {{nombreData.nombreAstral}} {{#each nombreData.valeursFausses as |fausseVal key|}} @@ -30,24 +30,35 @@
-
    - {{#each heuresParActeur as |heuresDef name|}} -
  • - {{name}}: - - |{{#each heuresDef as |ajustement|}} - - {{ajustement.ajustement}} - {{#each ajustement.heures as |heure|}} - {{timestamp-imgSigneHeure heure}} - {{/each}} - | - - {{/each}} - -
  • + + + + {{#each heures as |heure|}} + + {{/each}} + + {{#each ajustementsActeur as |ajustementActeur|}} + + + {{#each ajustementActeur.ajustements as |ajustement|}} + + {{/each}} + {{/each}} - +
    + {{timestamp-imgSigneHeure heure}} +
    + + {{actor.name}} + {{#if (ne ajustement.ajustement 0)}} + + {{numberFormat ajustement.ajustement decimals=0 sign=true}} + + {{else}} +
    + {{timestamp-imgSigneHeure ajustement.heure}} +
    + {{/if}}
From 14542cf7cde385cfb704addee982cbe0520c5642 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Mon, 9 Jan 2023 23:22:11 +0100 Subject: [PATCH 2/3] Suppression template inutile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit N'est plus utilisé, maintenant que les services sont des objets dans les boutiques --- templates/post-item-service.html | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 templates/post-item-service.html diff --git a/templates/post-item-service.html b/templates/post-item-service.html deleted file mode 100644 index 73c6b1c9..00000000 --- a/templates/post-item-service.html +++ /dev/null @@ -1,8 +0,0 @@ -
- {{#if img}} - - {{/if}} -

{{> 'systems/foundryvtt-reve-de-dragon/templates/common/compendium-link.hbs' pack=pack id=id name=name docType=docType}}

-

{{{system.description}}}

- -
From 009639dd5fa9a69b0b2dc0775c427458856b4627 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Mon, 9 Jan 2023 23:23:29 +0100 Subject: [PATCH 3/3] Version 10.5.3 --- system.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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",