diff --git a/module/actor-creature-sheet.js b/module/actor-creature-sheet.js index acfd115f..d8187818 100644 --- a/module/actor-creature-sheet.js +++ b/module/actor-creature-sheet.js @@ -27,15 +27,15 @@ export class RdDActorCreatureSheet extends RdDActorSheet { if (!this.options.editable) return; // On competence change - html.find('.creature-carac').change(async event => { + this.html.find('.creature-carac').change(async event => { let compName = event.currentTarget.attributes.compname.value; this.actor.updateCreatureCompetence(compName, "carac_value", parseInt(event.target.value)); }); - html.find('.creature-niveau').change(async event => { + this.html.find('.creature-niveau').change(async event => { let compName = event.currentTarget.attributes.compname.value; this.actor.updateCreatureCompetence(compName, "niveau", parseInt(event.target.value)); }); - html.find('.creature-dommages').change(async event => { + this.html.find('.creature-dommages').change(async event => { let compName = event.currentTarget.attributes.compname.value; this.actor.updateCreatureCompetence(compName, "dommages", parseInt(event.target.value)); }); diff --git a/module/actor-entite-sheet.js b/module/actor-entite-sheet.js index 42577475..0b0e54c2 100644 --- a/module/actor-entite-sheet.js +++ b/module/actor-entite-sheet.js @@ -23,15 +23,15 @@ export class RdDActorEntiteSheet extends RdDActorSheet { if (!this.options.editable) return; // On competence change - html.find('.creature-carac').change(async event => { + this.html.find('.creature-carac').change(async event => { let compName = event.currentTarget.attributes.compname.value; this.actor.updateCreatureCompetence( compName, "carac_value", parseInt(event.target.value) ); } ); - html.find('.creature-niveau').change(async event => { + this.html.find('.creature-niveau').change(async event => { let compName = event.currentTarget.attributes.compname.value; this.actor.updateCreatureCompetence( compName, "niveau", parseInt(event.target.value) ); } ); - html.find('.creature-dommages').change(async event => { + this.html.find('.creature-dommages').change(async event => { let compName = event.currentTarget.attributes.compname.value; this.actor.updateCreatureCompetence( compName, "dommages", parseInt(event.target.value) ); } ); diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 7965a19d..6be3f32a 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -118,58 +118,26 @@ export class RdDActorSheet extends ActorSheet { return formData; } - isCompetenceAffichable(competence) { - return !this.options.showCompNiveauBase || !RdDItemCompetence.isNiveauBase(competence); - } - - /* -------------------------------------------- */ - async _onDropActor(event, dragData) { - const dropActor = fromUuidSync(dragData.uuid); - this.actor.addSubActeur(dropActor); - super._onDropActor(event, dragData); - } - - /* -------------------------------------------- */ - async _onDropItem(event, dragData) { - const destItemId = $(event.target)?.closest('.item').attr('data-item-id') - const dropParams = RdDSheetUtility.prepareItemDropParameters(destItemId, this.actor, dragData, this.objetVersConteneur) - if (dropParams) { - const callSuper = await this.actor.processDropItem(dropParams) - if (callSuper) { - await super._onDropItem(event, dragData) - } - } - } - - /* -------------------------------------------- */ - async createItem(name, type) { - await this.actor.createEmbeddedDocuments('Item', [{ name: name, type: type }], { renderSheet: true }); - } - - /* -------------------------------------------- */ - async createEmptyTache() { - await this.createItem('Nouvelle tache', 'tache'); - } - /* -------------------------------------------- */ /** @override */ activateListeners(html) { super.activateListeners(html); + this.html = html; - HtmlUtility._showControlWhen($(".appliquerFatigue"), ReglesOptionelles.isUsing("appliquer-fatigue")); + HtmlUtility._showControlWhen(this.html.find(".appliquerFatigue"), ReglesOptionelles.isUsing("appliquer-fatigue")); // Everything below here is only needed if the sheet is editable if (!this.options.editable) return; - html.find('.item-split').click(async event => { + this.html.find('.item-split').click(async event => { const item = RdDSheetUtility.getItem(event, this.actor); RdDSheetUtility.splitItem(item, this.actor); }); - html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true)) - html.find('.item-delete').click(async event => RdDUtility.confirmerSuppressionItem(this, RdDSheetUtility.getItem(event, this.actor))); - html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente()); - html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItem()); - html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor)); - html.find('.subacteur-delete').click(async event => { + this.html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true)) + this.html.find('.item-delete').click(async event => RdDUtility.confirmerSuppressionItem(this, RdDSheetUtility.getItem(event, this.actor))); + this.html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente()); + this.html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItem()); + this.html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor)); + this.html.find('.subacteur-delete').click(async event => { const li = RdDSheetUtility.getEventElement(event); const actorId = li.data("actor-id"); if (actorId) { @@ -177,54 +145,54 @@ export class RdDActorSheet extends ActorSheet { RdDUtility.confirmerSuppressionSubacteur(this, subActor, li); } }); - html.find('.experiencelog-delete').click(async event => { - const li = $(event.currentTarget)?.parents(".experiencelog"); + this.html.find('.experiencelog-delete').click(async event => { + const li = this.html.find(event.currentTarget)?.parents(".experiencelog"); const key = Number(li.data("key") ?? -1); await this.actor.deleteExperienceLog(key, 1); }); - html.find('.experiencelog-delete-previous').click(async event => { - const li = $(event.currentTarget)?.parents(".experiencelog"); + this.html.find('.experiencelog-delete-previous').click(async event => { + const li = this.html.find(event.currentTarget)?.parents(".experiencelog"); const key = Number(li.data("key") ?? -1); await this.actor.deleteExperienceLog(0, key + 1); }); - html.find('.encaisser-direct').click(async event => { + this.html.find('.encaisser-direct').click(async event => { this.actor.encaisser(); }) - html.find('.sheet-possession-attack').click(async event => { + this.html.find('.sheet-possession-attack').click(async event => { const poss = RdDSheetUtility.getItem(event, this.actor) this.actor.conjurerPossession(poss) }) - html.find('.remise-a-neuf').click(async event => { + this.html.find('.remise-a-neuf').click(async event => { if (game.user.isGM) { this.actor.remiseANeuf(); } }); - html.find('.creer-tache').click(async event => { + this.html.find('.creer-tache').click(async event => { this.createEmptyTache(); }); - html.find('.creer-un-objet').click(async event => { + this.html.find('.creer-un-objet').click(async event => { RdDUtility.selectObjetType(this); }); - html.find('.creer-une-oeuvre').click(async event => { + this.html.find('.creer-une-oeuvre').click(async event => { RdDUtility.selectTypeOeuvre(this); }); - html.find('.nettoyer-conteneurs').click(async event => { + this.html.find('.nettoyer-conteneurs').click(async event => { this.actor.nettoyerConteneurs(); }); // Blessure control - html.find('.blessure-control').click(async event => { - const tr = $(event.currentTarget).parents(".item"); + this.html.find('.blessure-control').click(async event => { + const tr = this.html.find(event.currentTarget).parents(".item"); let btype = tr.data("blessure-type"); let index = tr.data('blessure-index'); - let active = $(event.currentTarget).data('blessure-active'); + let active = this.html.find(event.currentTarget).data('blessure-active'); //console.log(btype, index, active); await this.actor.manageBlessureFromSheet(btype, index, active); }); // Blessure data - html.find('.blessure-soins').change(async event => { - const tr = $(event.currentTarget).parents(".item"); + this.html.find('.blessure-soins').change(async event => { + const tr = this.html.find(event.currentTarget).parents(".item"); let btype = tr.data('blessure-type'); let index = tr.data('blessure-index'); let psoins = tr.find('.blessure-premiers_soins').val(); @@ -238,57 +206,57 @@ export class RdDActorSheet extends ActorSheet { }); // Equip Inventory Item - html.find('.item-equip').click(async event => { + this.html.find('.item-equip').click(async event => { this.actor.equiperObjet(RdDSheetUtility.getItemId(event)); }); // Roll Carac - html.find('.carac-label a').click(async event => { + this.html.find('.carac-label a').click(async event => { let caracName = event.currentTarget.attributes.name.value; this.actor.rollCarac(caracName.toLowerCase()); }); - html.find('.chance-actuelle').click(async event => { + this.html.find('.chance-actuelle').click(async event => { this.actor.rollCarac('chance-actuelle'); }); - html.find('.chance-appel').click(async event => { + this.html.find('.chance-appel').click(async event => { this.actor.rollAppelChance(); }); - html.find('#jet-astrologie').click(async event => { + this.html.find('[name="jet-astrologie"]').click(async event => { this.actor.astrologieNombresAstraux(); }); // Roll Skill - html.find('a.competence-label').click(async event => { + this.html.find('a.competence-label').click(async event => { this.actor.rollCompetence(RdDSheetUtility.getItemId(event)); }); - html.find('.tache-label a').click(async event => { + this.html.find('.tache-label a').click(async event => { this.actor.rollTache(RdDSheetUtility.getItemId(event)); }); - html.find('.meditation-label a').click(async event => { + this.html.find('.meditation-label a').click(async event => { this.actor.rollMeditation(RdDSheetUtility.getItemId(event)); }); - html.find('.chant-label a').click(async event => { + this.html.find('.chant-label a').click(async event => { this.actor.rollChant(RdDSheetUtility.getItemId(event)); }); - html.find('.danse-label a').click(async event => { + this.html.find('.danse-label a').click(async event => { this.actor.rollDanse(RdDSheetUtility.getItemId(event)); }); - html.find('.musique-label a').click(async event => { + this.html.find('.musique-label a').click(async event => { this.actor.rollMusique(RdDSheetUtility.getItemId(event)); }); - html.find('.oeuvre-label a').click(async event => { + this.html.find('.oeuvre-label a').click(async event => { this.actor.rollOeuvre(RdDSheetUtility.getItemId(event)); }); - html.find('.jeu-label a').click(async event => { + this.html.find('.jeu-label a').click(async event => { this.actor.rollJeu(RdDSheetUtility.getItemId(event)); }); - html.find('.recettecuisine-label a').click(async event => { + this.html.find('.recettecuisine-label a').click(async event => { this.actor.rollRecetteCuisine(RdDSheetUtility.getItemId(event)); }); - html.find('.subacteur-label a').click(async event => { + this.html.find('.subacteur-label a').click(async event => { let actorId = RdDSheetUtility.getEventItemData(event, 'actor-id'); let actor = game.actors.get(actorId); if (actor) { @@ -297,25 +265,25 @@ export class RdDActorSheet extends ActorSheet { }); // Boutons spéciaux MJs - html.find('.forcer-tmr-aleatoire').click(async event => { + this.html.find('.forcer-tmr-aleatoire').click(async event => { this.actor.reinsertionAleatoire("Action MJ"); }); - html.find('.afficher-tmr').click(async event => { + this.html.find('.afficher-tmr').click(async event => { this.actor.changeTMRVisible(); }); // Points de reve actuel - html.find('.ptreve-actuel a').click(async event => { + this.html.find('.ptreve-actuel a').click(async event => { this.actor.rollCarac('reve-actuel'); }); // Roll Weapon1 - html.find('.arme-label a').click(async event => { + this.html.find('.arme-label a').click(async event => { let arme = this._getEventArmeCombat(event); this.actor.rollArme(duplicate(arme)); }); // Initiative pour l'arme - html.find('.arme-initiative a').click(async event => { + this.html.find('.arme-initiative a').click(async event => { let combatant = game.combat.combatants.find(c => c.actor.id == this.actor.id); if (combatant) { let action = this._getEventArmeCombat(event); @@ -325,88 +293,88 @@ export class RdDActorSheet extends ActorSheet { } }); // Display TMR, visualisation - html.find('.visu-tmr').click(async event => { + this.html.find('.visu-tmr').click(async event => { this.actor.displayTMR("visu"); }); // Display TMR, normal - html.find('.monte-tmr').click(async event => { + this.html.find('.monte-tmr').click(async event => { this.actor.displayTMR("normal"); }); // Display TMR, fast - html.find('.monte-tmr-rapide').click(async event => { + this.html.find('.monte-tmr-rapide').click(async event => { this.actor.displayTMR("rapide"); }); - html.find('.repos').click(async event => { + this.html.find('.repos').click(async event => { await DialogRepos.create(this.actor); }); - html.find('.delete-active-effect').click(async event => { + this.html.find('.delete-active-effect').click(async event => { if (game.user.isGM) { - let effect = $(event.currentTarget).parents(".active-effect").data('effect'); + let effect = this.html.find(event.currentTarget).parents(".active-effect").data('effect'); this.actor.removeEffect(effect); } }); - html.find('.enlever-tous-effets').click(async event => { + this.html.find('.enlever-tous-effets').click(async event => { if (game.user.isGM) { await this.actor.removeEffects(); } }); - html.find('.conteneur-name a').click(async event => { + this.html.find('.conteneur-name a').click(async event => { RdDUtility.toggleAfficheContenu(RdDSheetUtility.getItemId(event)); this.render(true); }); - html.find('.carac-xp-augmenter').click(async event => { + this.html.find('.carac-xp-augmenter').click(async event => { let caracName = event.currentTarget.name.replace("augmenter.", ""); this.actor.updateCaracXPAuto(caracName); }); - html.find('.competence-xp-augmenter').click(async event => { + this.html.find('.competence-xp-augmenter').click(async event => { this.actor.updateCompetenceXPAuto(RdDSheetUtility.getItemId(event)); }); - html.find('.competence-stress-augmenter').click(async event => { + this.html.find('.competence-stress-augmenter').click(async event => { this.actor.updateCompetenceStress(RdDSheetUtility.getItemId(event)); }); if (this.options.vueDetaillee) { // On carac change - html.find('.carac-value').change(async event => { + this.html.find('.carac-value').change(async event => { let caracName = event.currentTarget.name.replace(".value", "").replace("system.carac.", ""); this.actor.updateCarac(caracName, parseInt(event.target.value)); }); - html.find('input.carac-xp').change(async event => { + this.html.find('input.carac-xp').change(async event => { let caracName = event.currentTarget.name.replace(".xp", "").replace("system.carac.", ""); this.actor.updateCaracXP(caracName, parseInt(event.target.value)); }); // On competence change - html.find('.competence-value').change(async event => { + this.html.find('.competence-value').change(async event => { let compName = event.currentTarget.attributes.compname.value; //console.log("Competence changed :", compName); this.actor.updateCompetence(compName, parseInt(event.target.value)); }); // On competence xp change - html.find('input.competence-xp').change(async event => { + this.html.find('input.competence-xp').change(async event => { let compName = event.currentTarget.attributes.compname.value; this.actor.updateCompetenceXP(compName, parseInt(event.target.value)); }); // On competence xp change - html.find('input.competence-xp-sort').change(async event => { + this.html.find('input.competence-xp-sort').change(async event => { let compName = event.currentTarget.attributes.compname.value; this.actor.updateCompetenceXPSort(compName, parseInt(event.target.value)); }); // On competence archetype change - html.find('.competence-archetype').change(async event => { + this.html.find('.competence-archetype').change(async event => { let compName = event.currentTarget.attributes.compname.value; this.actor.updateCompetenceArchetype(compName, parseInt(event.target.value)); }); } - html.find('.show-hide-competences').click(async event => { + this.html.find('.show-hide-competences').click(async event => { this.options.showCompNiveauBase = !this.options.showCompNiveauBase; this.render(true); }); - html.find('.recherche') + this.html.find('.recherche') .each((index, field) => { if (this.options.recherche) { field.focus(); @@ -429,92 +397,125 @@ export class RdDActorSheet extends ActorSheet { .change(async event => this.options.recherche = this._optionRecherche(event.currentTarget) ); - html.find('.vue-detaillee').click(async event => { + this.html.find('.vue-detaillee').click(async event => { this.options.vueDetaillee = !this.options.vueDetaillee; this.render(true); }); // On pts de reve change - html.find('.pointsreve-value').change(async event => { + this.html.find('.pointsreve-value').change(async event => { let reveValue = event.currentTarget.value; this.actor.update({ "system.reve.reve.value": reveValue }); }); // On seuil de reve change - html.find('.seuil-reve-value').change(async event => { + this.html.find('.seuil-reve-value').change(async event => { console.log("seuil-reve-value", event.currentTarget) this.actor.setPointsDeSeuil(event.currentTarget.value); }); - html.find('#attribut-protection-edit').change(async event => { + this.html.find('#attribut-protection-edit').change(async event => { this.actor.updateAttributeValue(event.currentTarget.attributes.name.value, parseInt(event.target.value)); }); // On stress change - html.find('.compteur-edit').change(async event => { + this.html.find('.compteur-edit').change(async event => { let fieldName = event.currentTarget.attributes.name.value; this.actor.updateCompteurValue(fieldName, parseInt(event.target.value)); }); - html.find('#ethylisme').change(async event => { + this.html.find('#ethylisme').change(async event => { this.actor.setEthylisme(parseInt(event.target.value)); }); - html.find('.stress-test').click(async event => { + this.html.find('.stress-test').click(async event => { this.actor.transformerStress(); }); - html.find('.moral-malheureux').click(async event => { + this.html.find('.moral-malheureux').click(async event => { this.actor.jetDeMoral('malheureuse'); }); - html.find('.moral-neutre').click(async event => { + this.html.find('.moral-neutre').click(async event => { this.actor.jetDeMoral('neutre'); }); - html.find('.moral-heureux').click(async event => { + this.html.find('.moral-heureux').click(async event => { this.actor.jetDeMoral('heureuse'); }); - html.find('.ethylisme-test').click(async event => { + this.html.find('.ethylisme-test').click(async event => { this.actor.jetEthylisme(); }); - html.find('.jet-vie').click(async event => { + this.html.find('.jet-vie').click(async event => { this.actor.jetVie(); }); - html.find('.jet-endurance').click(async event => { + this.html.find('.jet-endurance').click(async event => { this.actor.jetEndurance(); }); - html.find('.monnaie-plus').click(async event => { + this.html.find('.monnaie-plus').click(async event => { this.actor.monnaieIncDec(RdDSheetUtility.getItemId(event), 1); }); - html.find('.monnaie-moins').click(async event => { + this.html.find('.monnaie-moins').click(async event => { this.actor.monnaieIncDec(RdDSheetUtility.getItemId(event), -1); }); - html.find('.vie-plus').click(async event => { + this.html.find('.vie-plus').click(async event => { this.actor.santeIncDec("vie", 1); }); - html.find('.vie-moins').click(async event => { + this.html.find('.vie-moins').click(async event => { this.actor.santeIncDec("vie", -1); }); - html.find('.endurance-plus').click(async event => { + this.html.find('.endurance-plus').click(async event => { this.actor.santeIncDec("endurance", 1); }); - html.find('.endurance-moins').click(async event => { + this.html.find('.endurance-moins').click(async event => { this.actor.santeIncDec("endurance", -1); }); - html.find('.ptreve-actuel-plus').click(async event => { + this.html.find('.ptreve-actuel-plus').click(async event => { this.actor.reveActuelIncDec(1); }); - html.find('.ptreve-actuel-moins').click(async event => { + this.html.find('.ptreve-actuel-moins').click(async event => { this.actor.reveActuelIncDec(-1); }); - html.find('.fatigue-plus').click(async event => { + this.html.find('.fatigue-plus').click(async event => { this.actor.santeIncDec("fatigue", 1); }); - html.find('.fatigue-moins').click(async event => { + this.html.find('.fatigue-moins').click(async event => { this.actor.santeIncDec("fatigue", -1); }); } + isCompetenceAffichable(competence) { + return !this.options.showCompNiveauBase || !RdDItemCompetence.isNiveauBase(competence); + } + + /* -------------------------------------------- */ + async _onDropActor(event, dragData) { + const dropActor = fromUuidSync(dragData.uuid); + this.actor.addSubActeur(dropActor); + super._onDropActor(event, dragData); + } + + /* -------------------------------------------- */ + async _onDropItem(event, dragData) { + const destItemId = this.html.find(event.target)?.closest('.item').attr('data-item-id') + const dropParams = RdDSheetUtility.prepareItemDropParameters(destItemId, this.actor, dragData, this.objetVersConteneur) + if (dropParams) { + const callSuper = await this.actor.processDropItem(dropParams) + if (callSuper) { + await super._onDropItem(event, dragData) + } + } + } + + /* -------------------------------------------- */ + async createItem(name, type) { + await this.actor.createEmbeddedDocuments('Item', [{ name: name, type: type }], { renderSheet: true }); + } + + /* -------------------------------------------- */ + async createEmptyTache() { + await this.createItem('Nouvelle tache', 'tache'); + } + _optionRecherche(target) { if (!target.value?.length){ return undefined; @@ -527,7 +528,7 @@ export class RdDActorSheet extends ActorSheet { } _getEventArmeCombat(event) { - const li = $(event.currentTarget)?.parents(".item"); + const li = this.html.find(event.currentTarget)?.parents(".item"); let armeName = li.data("arme-name"); let compName = li.data('competence-name'); const arme = this.armesList.find(a => a.name == armeName && a.system.competence == compName); diff --git a/module/actor-vehicule-sheet.js b/module/actor-vehicule-sheet.js index 5803f3f7..0124de0c 100644 --- a/module/actor-vehicule-sheet.js +++ b/module/actor-vehicule-sheet.js @@ -22,16 +22,16 @@ export class RdDActorVehiculeSheet extends RdDActorSheet { super.activateListeners(html); if (!this.options.editable) return; - html.find('.resistance-moins').click(async event => { + this.html.find('.resistance-moins').click(async event => { this.actor.vehicleIncDec("resistance", -1); }); - html.find('.resistance-plus').click(async event => { + this.html.find('.resistance-plus').click(async event => { this.actor.vehicleIncDec("resistance", 1); }); - html.find('.structure-moins').click(async event => { + this.html.find('.structure-moins').click(async event => { this.actor.vehicleIncDec("structure", -1); }); - html.find('.structure-plus').click(async event => { + this.html.find('.structure-plus').click(async event => { this.actor.vehicleIncDec("structure", 1); }); } diff --git a/module/actor.js b/module/actor.js index 5975448c..d4106077 100644 --- a/module/actor.js +++ b/module/actor.js @@ -3414,9 +3414,7 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async encaisser() { - let dialogData = { ajustementsEncaissement: RdDUtility.getAjustementsEncaissement() }; - let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-roll-encaisser.html', dialogData); - new RdDEncaisser(html, this).render(true); + await RdDEncaisser.encaisser(this); } /* -------------------------------------------- */ diff --git a/module/dialog-chronologie.js b/module/dialog-chronologie.js index 98762087..c86dd519 100644 --- a/module/dialog-chronologie.js +++ b/module/dialog-chronologie.js @@ -62,6 +62,7 @@ export class DialogChronologie extends Dialog { activateListeners(html) { super.activateListeners(html); + this.html = html; } async ajouter() { @@ -74,11 +75,11 @@ export class DialogChronologie extends Dialog { } async forceValidation() { - await $("form.rdddialogchrono :input").change(); + await this.html.find("form.rdddialogchrono :input").change(); } findJournal() { - const journalId = $("form.rdddialogchrono :input[name='journalId']").val(); + const journalId = this.html.find("form.rdddialogchrono :input[name='journalId']").val(); const journalEntry = game.journal.get(journalId); return { journalId, journalEntry }; } @@ -89,15 +90,15 @@ export class DialogChronologie extends Dialog { extractJournalParameters() { return { - auteur: $("form.rdddialogchrono :input[name='auteur']").val(), - information: $("form.rdddialogchrono :input[name='information']").val(), + auteur: this.html.find("form.rdddialogchrono :input[name='auteur']").val(), + information: this.html.find("form.rdddialogchrono :input[name='information']").val(), dateRdD: { - jour: $("form.rdddialogchrono :input[name='jourRdD']").val(), - moisRdD: $("form.rdddialogchrono :input[name='dateRdD.moisRdD.key']").val(), - annee: $("form.rdddialogchrono :input[name='dateRdD.annee']").val() + jour: this.html.find("form.rdddialogchrono :input[name='jourRdD']").val(), + moisRdD: this.html.find("form.rdddialogchrono :input[name='dateRdD.moisRdD.key']").val(), + annee: this.html.find("form.rdddialogchrono :input[name='dateRdD.annee']").val() }, - heureRdD: $("form.rdddialogchrono :input[name='heureRdD']").val(), - dateReel: $("form.rdddialogchrono :input[name='dateReel']").val().replace('T', ' ') + heureRdD: this.html.find("form.rdddialogchrono :input[name='heureRdD']").val(), + dateReel: this.html.find("form.rdddialogchrono :input[name='dateReel']").val().replace('T', ' ') } } diff --git a/module/dialog-create-signedraconique.js b/module/dialog-create-signedraconique.js index 2b4aa444..86b98d45 100644 --- a/module/dialog-create-signedraconique.js +++ b/module/dialog-create-signedraconique.js @@ -35,16 +35,16 @@ export class DialogCreateSigneDraconique extends Dialog { super(conf, options); this.dialogData = dialogData; } - + async _onCreerSigneActeurs() { - await $("[name='signe.system.ephemere']").change(); - await $(".signe-xp-sort").change(); + await this.html.find("[name='signe.system.ephemere']").change(); + await this.html.find(".signe-xp-sort").change(); this.validerSigne(); this.dialogData.actors.filter(it => it.selected) - .map(it => game.actors.get(it.id)) - .forEach(actor => this._createSigneForActor(actor, this.dialogData.signe)); + .map(it => game.actors.get(it.id)) + .forEach(actor => this._createSigneForActor(actor, this.dialogData.signe)); } - + async _createSigneForActor(actor, signe) { actor.createEmbeddedDocuments("Item", [signe]); ChatMessage.create({ @@ -57,19 +57,20 @@ export class DialogCreateSigneDraconique extends Dialog { } validerSigne() { - this.dialogData.signe.name = $("[name='signe.name']").val(); - this.dialogData.signe.system.valeur.norm = $("[name='signe.system.valeur.norm']").val(); - this.dialogData.signe.system.valeur.sign = $("[name='signe.system.valeur.sign']").val(); - this.dialogData.signe.system.valeur.part = $("[name='signe.system.valeur.part']").val(); - this.dialogData.signe.system.difficulte = $("[name='signe.system.difficulte']").val(); - this.dialogData.signe.system.ephemere = $("[name='signe.system.ephemere']").prop("checked"); - this.dialogData.signe.system.duree = $("[name='signe.system.duree']").val(); + this.dialogData.signe.name = this.html.find("[name='signe.name']").val(); + this.dialogData.signe.system.valeur.norm = this.html.find("[name='signe.system.valeur.norm']").val(); + this.dialogData.signe.system.valeur.sign = this.html.find("[name='signe.system.valeur.sign']").val(); + this.dialogData.signe.system.valeur.part = this.html.find("[name='signe.system.valeur.part']").val(); + this.dialogData.signe.system.difficulte = this.html.find("[name='signe.system.difficulte']").val(); + this.dialogData.signe.system.ephemere = this.html.find("[name='signe.system.ephemere']").prop("checked"); + this.dialogData.signe.system.duree = this.html.find("[name='signe.system.duree']").val(); this.dialogData.signe.system.typesTMR = TMRUtility.buildListTypesTMRSelection(this.dialogData.tmrs); } - + /* -------------------------------------------- */ activateListeners(html) { super.activateListeners(html); + this.html = html; this.setEphemere(this.dialogData.signe.system.ephemere); html.find(".signe-aleatoire").click(event => this.setSigneAleatoire()); html.find("[name='signe.system.ephemere']").change((event) => this.setEphemere(event.currentTarget.checked)); @@ -81,27 +82,27 @@ export class DialogCreateSigneDraconique extends Dialog { async setSigneAleatoire() { const newSigne = await RdDItemSigneDraconique.randomSigneDraconique({ephemere: true}); - $("[name='signe.name']").val(newSigne.name); - $("[name='signe.system.valeur.norm']").val(newSigne.system.valeur.norm); - $("[name='signe.system.valeur.sign']").val(newSigne.system.valeur.sign); - $("[name='signe.system.valeur.part']").val(newSigne.system.valeur.part); - $("[name='signe.system.difficulte']").val(newSigne.system.difficulte); - $("[name='signe.system.duree']").val(newSigne.system.duree); - $("[name='signe.system.ephemere']").prop("checked", newSigne.system.ephemere); + this.html.find("[name='signe.name']").val(newSigne.name); + this.html.find("[name='signe.system.valeur.norm']").val(newSigne.system.valeur.norm); + this.html.find("[name='signe.system.valeur.sign']").val(newSigne.system.valeur.sign); + this.html.find("[name='signe.system.valeur.part']").val(newSigne.system.valeur.part); + this.html.find("[name='signe.system.difficulte']").val(newSigne.system.difficulte); + this.html.find("[name='signe.system.duree']").val(newSigne.system.duree); + this.html.find("[name='signe.system.ephemere']").prop("checked", newSigne.system.ephemere); this.dialogData.tmrs = TMRUtility.buildSelectionTypesTMR(newSigne.system.typesTMR); this.dialogData.tmrs.forEach(t => { - $(`[data-tmr-name='${t.name}']`).prop( "checked", t.selected); + this.html.find(`[data-tmr-name='${t.name}']`).prop( "checked", t.selected); }) this.setEphemere(newSigne.system.ephemere); } async setEphemere(ephemere) { this.dialogData.signe.system.ephemere = ephemere; - HtmlUtility._showControlWhen($(".signe-system-duree"), ephemere); + HtmlUtility._showControlWhen(this.html.find(".signe-system-duree"), ephemere); } async onSelectActor(event) { - const actorId = $(event.currentTarget)?.data("actor-id"); + const actorId = this.html.find(event.currentTarget)?.data("actor-id"); const actor = this.dialogData.actors.find(it => it.id == actorId); if (actor) { actor.selected = event.currentTarget.checked; @@ -109,7 +110,7 @@ export class DialogCreateSigneDraconique extends Dialog { } onSelectTmr(event) { - const tmrName = $(event.currentTarget)?.data("tmr-name"); + const tmrName = this.html.find(event.currentTarget)?.data("tmr-name"); const onTmr = this.tmrs.find(it => it.name == tmrName); if (onTmr){ onTmr.selected = event.currentTarget.checked; diff --git a/module/dialog-fabriquer-potion.js b/module/dialog-fabriquer-potion.js index a9e552b5..3d3dd236 100644 --- a/module/dialog-fabriquer-potion.js +++ b/module/dialog-fabriquer-potion.js @@ -13,18 +13,12 @@ export class DialogFabriquerPotion extends Dialog { } let potionData = DialogFabriquerPotion.prepareData(actor, item); - let conf = { - title: `Fabriquer une potion de ${potionData.system.categorie}`, - content: await renderTemplate(dialogConfig.html, potionData), - default: potionData.buttonName, - }; + const html = await renderTemplate(dialogConfig.html, potionData); let options = { classes: ["dialogfabriquerpotion"], width: 600, height: 160, 'z-index': 99999 }; mergeObject(options, dialogConfig.options ?? {}, { overwrite: true }) - const dialog = new DialogFabriquerPotion(actor, potionData, conf, options); - dialog.render(true); - return dialog; + new DialogFabriquerPotion(actor, potionData, html, options).render(true); } /* -------------------------------------------- */ @@ -40,10 +34,15 @@ export class DialogFabriquerPotion extends Dialog { } /* -------------------------------------------- */ - constructor(actor, potionData, conf, options) { - conf.buttons = { - [potionData.buttonName]: { - label: potionData.buttonName, callback: it => this.onFabriquer(it) + constructor(actor, potionData, html, options) { + const conf = { + title: `Fabriquer une potion de ${potionData.system.categorie}`, + content: html, + default: 'fabriquer', + buttons: { + 'fabriquer': { + label: potionData.buttonName, callback: it => this.onFabriquer(html) + } } }; @@ -53,6 +52,24 @@ export class DialogFabriquerPotion extends Dialog { this.potionData = potionData; } + /* -------------------------------------------- */ + activateListeners(html) { + super.activateListeners(html); + this.html = html; + this.html.find("[name='nbBrins']").change(event => { + this.potionData.nbBrins = Misc.toInt(event.currentTarget.value); + const brinsManquants = Math.max(0, DialogFabriquerPotion.nombreBrinsOptimal(this.potionData) - this.potionData.nbBrins); + this.potionData.herbebonus = Math.max(0, this.potionData.system.niveau - brinsManquants) + }); + } + + /* -------------------------------------------- */ + async onFabriquer(html) { + await this.html.find("[name='nbBrins']").change(); + this.actor.fabriquerPotion(this.potionData); + this.close(); + } + static nombreBrinsMinimum(herbeData) { switch (herbeData.system.categorie ?? '') { case "Soin": return 1 + Math.max(0, 12 - 2 * herbeData.system.niveau); @@ -68,22 +85,4 @@ export class DialogFabriquerPotion extends Dialog { } return 1; } - - /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); - - html.find("[name='nbBrins']").change(event => { - this.potionData.nbBrins = Misc.toInt(event.currentTarget.value); - const brinsManquants = Math.max(0, DialogFabriquerPotion.nombreBrinsOptimal(this.potionData) - this.potionData.nbBrins); - this.potionData.herbebonus = Math.max(0, this.potionData.system.niveau - brinsManquants) - }); - } - - /* -------------------------------------------- */ - async onFabriquer(it) { - await $("[name='nbBrins']").change(); - this.actor.fabriquerPotion(this.potionData); - this.close(); - } } \ No newline at end of file diff --git a/module/dialog-item-achat.js b/module/dialog-item-achat.js index 649b1545..01162e97 100644 --- a/module/dialog-item-achat.js +++ b/module/dialog-item-achat.js @@ -42,8 +42,7 @@ export class DialogItemAchat extends Dialog { static async onAcheter(venteData) { const html = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/dialog-item-achat.html`, venteData); - const dialog = new DialogItemAchat(html, venteData); - dialog.render(true); + new DialogItemAchat(html, venteData).render(true); } constructor(html, venteData) { @@ -65,12 +64,11 @@ export class DialogItemAchat extends Dialog { }; super(conf, options); - this.venteData = venteData; } async onAchat() { - await $(".nombreLots").change(); + await this.html.find(".nombreLots").change(); (this.venteData.vendeur ?? this.venteData.acheteur).achatVente({ userId: game.user.id, vendeurId: this.venteData.vendeur?.id, @@ -90,9 +88,9 @@ export class DialogItemAchat extends Dialog { /* -------------------------------------------- */ activateListeners(html) { super.activateListeners(html); - - html.find(".nombreLots").change(event => this.setNombreLots(Number(event.currentTarget.value))); - html.find(".se-forcer").change(event => this.setSeForcer(event)); + this.html = html; + this.html.find(".nombreLots").change(event => this.setNombreLots(Number(event.currentTarget.value))); + this.html.find(".se-forcer").change(event => this.setSeForcer(event)); } setSeForcer(event) { @@ -105,8 +103,8 @@ export class DialogItemAchat extends Dialog { } this.venteData.choix.nombreLots = Math.min(nombreLots, this.venteData.quantiteNbLots); this.venteData.prixTotal = (nombreLots * this.venteData.prixLot).toFixed(2); - $(".nombreLots").val(this.venteData.choix.nombreLots); - $(".prixTotal").text(this.venteData.prixTotal); + this.html.find(".nombreLots").val(this.venteData.choix.nombreLots); + this.html.find(".prixTotal").text(this.venteData.prixTotal); } } \ No newline at end of file diff --git a/module/dialog-item-consommer.js b/module/dialog-item-consommer.js index 69642e7d..d669b5e9 100644 --- a/module/dialog-item-consommer.js +++ b/module/dialog-item-consommer.js @@ -17,7 +17,7 @@ export class DialogConsommer extends Dialog { buttons: { [consommerData.buttonName]: { label: consommerData.buttonName, callback: async it => { - await this.onConsommer(it); + await this.onConsommer(); await onActionItem(); } } @@ -31,9 +31,16 @@ export class DialogConsommer extends Dialog { this.consommerData = consommerData; } - async onConsommer(event) { - await $(".se-forcer").change(); - await $(".consommer-doses").change(); + activateListeners(html) { + super.activateListeners(html); + this.html = html; + this.html.find(".se-forcer").change(event => this.setSeForcer(event)); + this.html.find(".consommer-doses").change(event => this.selectDoses(event)); + } + + async onConsommer() { + await this.html.find(".se-forcer").change(); + await this.html.find(".consommer-doses").change(); await this.actor.consommer(this.item, this.consommerData.choix); } @@ -92,14 +99,6 @@ export class DialogConsommer extends Dialog { } - /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); - html.find(".se-forcer").change(event => this.setSeForcer(event)); - html.find(".consommer-doses").change(event => this.selectDoses(event)); - } - - setSeForcer(event) { this.consommerData.choix.seForcer = event.currentTarget.checked; } @@ -107,7 +106,7 @@ export class DialogConsommer extends Dialog { selectDoses(event) { this.consommerData.choix.doses = Number(event.currentTarget.value); DialogConsommer.calculDoses(this.consommerData, this.item); - $(".total-sust").text(this.consommerData.totalSust); - $(".total-desaltere").text(this.consommerData.totalDesaltere); + this.html.find(".total-sust").text(this.consommerData.totalSust); + this.html.find(".total-desaltere").text(this.consommerData.totalDesaltere); } } \ No newline at end of file diff --git a/module/dialog-item-vente.js b/module/dialog-item-vente.js index 32639eef..2b09b60b 100644 --- a/module/dialog-item-vente.js +++ b/module/dialog-item-vente.js @@ -37,26 +37,26 @@ export class DialogItemVente extends Dialog { this.venteData = venteData; } - async onProposer(it) { - await $(".tailleLot").change(); - await $(".quantiteNbLots").change(); - await $(".quantiteIllimite").change(); - await $(".prixLot").change(); - this.callback(this.venteData); - } - - /* -------------------------------------------- */ activateListeners(html) { super.activateListeners(html); + this.html = html; + HtmlUtility._showControlWhen(this.html.find(".quantiteNbLots"), !this.venteData.quantiteIllimite) - HtmlUtility._showControlWhen($(".quantiteNbLots"), !this.venteData.quantiteIllimite) - - html.find(".tailleLot").change(event => this.setTailleLot(Number(event.currentTarget.value))); - html.find(".quantiteNbLots").change(event => this.setNbLots(Number(event.currentTarget.value))); - html.find(".quantiteIllimite").change(event => this.setQuantiteIllimite(event.currentTarget.checked)); - html.find(".prixLot").change(event => this.setPrixLot(Number(event.currentTarget.value))); + this.html.find(".tailleLot").change(event => this.setTailleLot(Number(event.currentTarget.value))); + this.html.find(".quantiteNbLots").change(event => this.setNbLots(Number(event.currentTarget.value))); + this.html.find(".quantiteIllimite").change(event => this.setQuantiteIllimite(event.currentTarget.checked)); + this.html.find(".prixLot").change(event => this.setPrixLot(Number(event.currentTarget.value))); } + async onProposer(it) { + await this.html.find(".tailleLot").change(); + await this.html.find(".quantiteNbLots").change(); + await this.html.find(".quantiteIllimite").change(); + await this.html.find(".prixLot").change(); + this.callback(this.venteData); + } + + /* -------------------------------------------- */ setPrixLot(prixLot) { this.venteData.prixLot = prixLot; } @@ -65,15 +65,15 @@ export class DialogItemVente extends Dialog { // recalculer le prix du lot if (tailleLot != this.venteData.tailleLot) { this.venteData.prixLot = (tailleLot * this.venteData.prixOrigine).toFixed(2); - $(".prixLot").val(this.venteData.prixLot); + this.html.find(".prixLot").val(this.venteData.prixLot); } this.venteData.tailleLot = tailleLot; if (this.venteData.isOwned) { // recalculer le nombre de lots max this.venteData.quantiteMaxLots = Math.floor(this.venteData.quantiteMax / tailleLot); this.venteData.quantiteNbLots = Math.min(this.venteData.quantiteMaxLots, this.venteData.quantiteNbLots); - $(".quantiteNbLots").val(this.venteData.quantiteNbLots); - $(".quantiteNbLots").attr("max", this.venteData.quantiteMaxLots) + this.html.find(".quantiteNbLots").val(this.venteData.quantiteNbLots); + this.html.find(".quantiteNbLots").attr("max", this.venteData.quantiteMaxLots) } } @@ -82,12 +82,12 @@ export class DialogItemVente extends Dialog { nbLots = Math.max(0, Math.min(nbLots, this.venteData.quantiteMaxLots)); } this.venteData.quantiteNbLots = nbLots; - $(".quantiteNbLots").val(this.venteData.quantiteNbLots); + this.html.find(".quantiteNbLots").val(this.venteData.quantiteNbLots); } setQuantiteIllimite(checked) { this.venteData.quantiteIllimite = checked; - $(".label-quantiteIllimite").text(this.venteData.quantiteIllimite ? "Illimités" : "disponibles"); - HtmlUtility._showControlWhen($(".quantiteNbLots"), !this.venteData.quantiteIllimite) + this.html.find(".label-quantiteIllimite").text(this.venteData.quantiteIllimite ? "Illimités" : "disponibles"); + HtmlUtility._showControlWhen(this.html.find(".quantiteNbLots"), !this.venteData.quantiteIllimite) } } \ No newline at end of file diff --git a/module/dialog-repos.js b/module/dialog-repos.js index 324b6d91..e5e10576 100644 --- a/module/dialog-repos.js +++ b/module/dialog-repos.js @@ -21,13 +21,18 @@ export class DialogRepos extends Dialog { super(conf, options); this.actor = actor; } + activateListeners(html) { + super.activateListeners(html); + this.html = html; + } + /* -------------------------------------------- */ async repos() { - await $("[name='nb-heures']").change(); - await $("[name='nb-jours']").change(); - const selection = await $("[name='repos']:checked").val(); - const nbHeures = Number.parseInt(await $("[name='nb-heures']").val()); - const nbJours = Number.parseInt(await $("[name='nb-jours']").val()); + await this.html.find("[name='nb-heures']").change(); + await this.html.find("[name='nb-jours']").change(); + const selection = await this.html.find("[name='repos']:checked").val(); + const nbHeures = Number.parseInt(await this.html.find("[name='nb-heures']").val()); + const nbJours = Number.parseInt(await this.html.find("[name='nb-jours']").val()); switch (selection) { case "sieste": { await this.actor.dormir(nbHeures); @@ -35,7 +40,7 @@ export class DialogRepos extends Dialog { } case "nuit": { let heuresDormies = await this.actor.dormir(nbHeures); - if (heuresDormies == nbHeures){ + if (heuresDormies == nbHeures) { await this.actor.dormirChateauDormant(); } return; @@ -49,8 +54,4 @@ export class DialogRepos extends Dialog { } } } - /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); - } } \ No newline at end of file diff --git a/module/dialog-select-target.js b/module/dialog-select-target.js index 87f504f3..dd6140ff 100644 --- a/module/dialog-select-target.js +++ b/module/dialog-select-target.js @@ -20,8 +20,9 @@ export class DialogSelectTarget extends Dialog { activateListeners(html) { super.activateListeners(html); - html.find("li.select-target").click((event) => { - this.targetSelected($(event.currentTarget)?.data("token-id")); + this.html = html; + this.html.find("li.select-target").click((event) => { + this.targetSelected(this.html.find(event.currentTarget)?.data("token-id")); }); } diff --git a/module/dialog-split-item.js b/module/dialog-split-item.js index d5ba3298..4b21c6ef 100644 --- a/module/dialog-split-item.js +++ b/module/dialog-split-item.js @@ -13,39 +13,33 @@ export class DialogSplitItem extends Dialog { constructor(item, splitData, html, callback) { let options = { classes: ["dialogsplit"], width: 300, height: 160, 'z-index': 99999 }; - let conf = { title: "Séparer en deux", content: html, default: "separer", buttons: { - "separer": { - label: "Séparer", callback: it => { - this.onSplit(); - } - } + "separer": { label: "Séparer", callback: it => this.onSplit() } } }; - super(conf, options); - + this.callback = callback; this.item = item; this.splitData = splitData; } - async onSplit(){ - await $(".choix-quantite").change(); - this.callback(this.item, this.splitData.choix.quantite); - } - - /* -------------------------------------------- */ activateListeners(html) { super.activateListeners(html); - - html.find(".choix-quantite").change(event => { + this.html = html; + this.html.find(".choix-quantite").change(event => { this.splitData.choix.quantite = Number(event.currentTarget.value); }); } + /* -------------------------------------------- */ + async onSplit() { + await this.html.find(".choix-quantite").change(); + this.callback(this.item, this.splitData.choix.quantite); + } + } \ No newline at end of file diff --git a/module/dialog-stress.js b/module/dialog-stress.js index 6ec1efb5..f0b9b8e6 100644 --- a/module/dialog-stress.js +++ b/module/dialog-stress.js @@ -37,24 +37,24 @@ export class DialogStress extends Dialog { this.dialogData = dialogData; } + activateListeners(html) { + super.activateListeners(html); + this.html = html; + this.html.find("input.select-actor").change((event) => this.onSelectActor(event)); + } + async onStress() { - const motif = $("form.rdddialogstress input[name='motif']").val(); - const stress = Number($("form.rdddialogstress input[name='stress']").val()); - const compteur = ($("form.rdddialogstress input[name='immediat']").prop("checked")) ? 'experience' : 'stress'; + const motif = this.html.find("form.rdddialogstress input[name='motif']").val(); + const stress = Number(this.html.find("form.rdddialogstress input[name='stress']").val()); + const compteur = (this.html.find("form.rdddialogstress input[name='immediat']").prop("checked")) ? 'experience' : 'stress'; this.dialogData.actors.filter(it => it.selected) .map(it => game.actors.get(it.id)) .forEach(actor => actor.distribuerStress(compteur, stress, motif)); } - /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); - html.find("input.select-actor").change((event) => this.onSelectActor(event)); - } - async onSelectActor(event) { - const actorId = $(event.currentTarget)?.data("actor-id"); + const actorId = this.html.find(event.currentTarget)?.data("actor-id"); const actor = this.dialogData.actors.find(it => it.id == actorId); if (actor) { actor.selected = event.currentTarget.checked; diff --git a/module/dialog-validation-encaissement.js b/module/dialog-validation-encaissement.js index 034b9502..a5d092ea 100644 --- a/module/dialog-validation-encaissement.js +++ b/module/dialog-validation-encaissement.js @@ -55,11 +55,12 @@ export class DialogValidationEncaissement extends Dialog { /* -------------------------------------------- */ activateListeners(html) { super.activateListeners(html); - html.find('input.encaissement-roll-result').keyup(async event => { + this.html = html; + this.html.find('input.encaissement-roll-result').keyup(async event => { this.forceDiceResult.total = event.currentTarget.value; this.encaissement = await RdDUtility.jetEncaissement(this.rollData, this.armure, { showDice: HIDE_DICE, forceDiceResult: this.forceDiceResult}); - $('label.encaissement-total').text(this.encaissement.total); - $('label.encaissement-blessure').text(this.encaissement.blessures) + this.html.find('label.encaissement-total').text(this.encaissement.total); + this.html.find('label.encaissement-blessure').text(this.encaissement.blessures) }); } diff --git a/module/environnement.js b/module/environnement.js index eebc6834..0f278278 100644 --- a/module/environnement.js +++ b/module/environnement.js @@ -147,29 +147,29 @@ export class EnvironmentSheetHelper { }); } - static activateListeners(sheet, html) { + static activateListeners(sheet) { if (!sheet.options.editable) return; - html.find("input.input-selection-milieu").keypress(event => { + sheet.html.find("input.input-selection-milieu").keypress(event => { if (event.keyCode == '13') { - EnvironmentSheetHelper.onAddMilieu(html, sheet, event); + EnvironmentSheetHelper.onAddMilieu(sheet, event); } event.stopPropagation(); }) - html.find("a.milieu-add").click(event => EnvironmentSheetHelper.onAddMilieu(html, sheet, event)); - html.find("div.environnement-milieu a.milieu-delete").click(event => EnvironmentSheetHelper.onDeleteMilieu(sheet, event)); - html.find("div.environnement-milieu select.environnement-rarete").change(event => EnvironmentSheetHelper.onChange(sheet, event, - updated => EnvironmentSheetHelper.$changeRarete(event, updated))); - html.find("div.environnement-milieu input[name='environnement-frequence']").change(event => EnvironmentSheetHelper.onChange(sheet, event, - updated => EnvironmentSheetHelper.$changeFrequence(updated, event))); + sheet.html.find("a.milieu-add").click(event => EnvironmentSheetHelper.onAddMilieu(sheet, event)); + sheet.html.find("div.environnement-milieu a.milieu-delete").click(event => EnvironmentSheetHelper.onDeleteMilieu(sheet, event)); + sheet.html.find("div.environnement-milieu select.environnement-rarete").change(event => EnvironmentSheetHelper.onChange(sheet, event, + updated => EnvironmentSheetHelper.$changeRarete(sheet, event, updated))); + sheet.html.find("div.environnement-milieu input[name='environnement-frequence']").change(event => EnvironmentSheetHelper.onChange(sheet, event, + updated => EnvironmentSheetHelper.$changeFrequence(sheet, event, updated))); } - static $changeFrequence(updated, event) { - updated.frequence = Number($(event.currentTarget).val()); + static $changeFrequence(sheet, event, updated) { + updated.frequence = Number(sheet.html.find(event.currentTarget).val()); } - static $changeRarete(event, updated) { - const name = $(event.currentTarget).val(); + static $changeRarete(sheet, event, updated) { + const name = sheet.html.find(event.currentTarget).val(); const rarete = Environnement.getRarete(name); updated.rarete = rarete.name; updated.frequence = rarete.frequence; @@ -178,8 +178,8 @@ export class EnvironmentSheetHelper { // rarete.max); } - static async onAddMilieu(html, sheet, event) { - const milieu = html.find('input.input-selection-milieu').val(); + static async onAddMilieu(sheet, event) { + const milieu = sheet.html.find('input.input-selection-milieu').val(); if (!milieu) { ui.notifications.warn(`Choisissez le milieu dans lequel se trouve le/la ${sheet.item.name}`); return @@ -206,7 +206,7 @@ export class EnvironmentSheetHelper { static async onChange(sheet, event, doMutation) { const list = sheet.item.system.environnement; - const milieu = EnvironmentSheetHelper.$getEventMilieu(event); + const milieu = EnvironmentSheetHelper.$getEventMilieu(sheet, event); const updated = list.find(it => it.milieu == milieu); if (updated) { doMutation(updated); @@ -216,8 +216,8 @@ export class EnvironmentSheetHelper { } } - static $getEventMilieu(event) { - return $(event.currentTarget)?.parents("div.environnement-milieu").data("milieu"); + static $getEventMilieu(sheet, event) { + return sheet.html.find(event.currentTarget)?.parents("div.environnement-milieu").data("milieu"); } } \ No newline at end of file diff --git a/module/html-utility.js b/module/html-utility.js index 1566039c..c4754cc5 100644 --- a/module/html-utility.js +++ b/module/html-utility.js @@ -1,10 +1,10 @@ export class HtmlUtility{ - static _showControlWhen(control, condition) { + static _showControlWhen(jQuerySelector, condition) { if (condition) { - control.show(); + jQuerySelector.show(); } else { - control.hide(); + jQuerySelector.hide(); } } } \ No newline at end of file diff --git a/module/item-conteneur-sheet.js b/module/item-conteneur-sheet.js index 4cb398fb..0df3121a 100644 --- a/module/item-conteneur-sheet.js +++ b/module/item-conteneur-sheet.js @@ -16,9 +16,10 @@ export class RdDConteneurItemSheet extends RdDItemSheet { activateListeners(html) { super.activateListeners(html); + if (!this.options.editable) return; - html.find('.conteneur-name a').click(async event => { + this.html.find('.conteneur-name a').click(async event => { RdDUtility.toggleAfficheContenu(RdDSheetUtility.getItemId(event)); this.render(true); }); diff --git a/module/item-faune-sheet.js b/module/item-faune-sheet.js index 3b97d7ca..f49d2317 100644 --- a/module/item-faune-sheet.js +++ b/module/item-faune-sheet.js @@ -23,7 +23,7 @@ export class RdDFauneItemSheet extends RdDItemSheet { super.activateListeners(html); if (!this.options.editable) return; - EnvironmentSheetHelper.activateListeners(this, html); + EnvironmentSheetHelper.activateListeners(this); html.find("a.linked-actor-delete").click(event => this.onDeleteLinkedActor()); html.find("a.preparer-nourriture").click(event => this.preparerNourriture(event)); diff --git a/module/item-herbe-sheet.js b/module/item-herbe-sheet.js index 940eec58..0cc0c36b 100644 --- a/module/item-herbe-sheet.js +++ b/module/item-herbe-sheet.js @@ -20,6 +20,6 @@ export class RdDHerbeItemSheet extends RdDItemSheet { activateListeners(html) { super.activateListeners(html); - EnvironmentSheetHelper.activateListeners(this, html); + EnvironmentSheetHelper.activateListeners(this); } } diff --git a/module/item-ingredient-sheet.js b/module/item-ingredient-sheet.js index fe78bc68..fdfc66ae 100644 --- a/module/item-ingredient-sheet.js +++ b/module/item-ingredient-sheet.js @@ -20,6 +20,6 @@ export class RdDIngredientItemSheet extends RdDItemSheet { activateListeners(html) { super.activateListeners(html); - EnvironmentSheetHelper.activateListeners(this, html); + EnvironmentSheetHelper.activateListeners(this); } } diff --git a/module/item-rencontre-sheet.js b/module/item-rencontre-sheet.js index d4b74a98..e806222c 100644 --- a/module/item-rencontre-sheet.js +++ b/module/item-rencontre-sheet.js @@ -51,15 +51,15 @@ export class RdDRencontreItemSheet extends RdDItemSheet { activateListeners(html) { super.activateListeners(html); if (!this.options.editable) return; - html.find("a.effet-add").click(event => this.onAddEffet(event)); - html.find("a.effet-delete").click(event => this.onDeleteEffet(event)); + this.html.find("a.effet-add").click(event => this.onAddEffet(event)); + this.html.find("a.effet-delete").click(event => this.onDeleteEffet(event)); } async onAddEffet(event) { - const resultat = $(event.currentTarget)?.data("effet-resultat"); + const resultat = this.html.find(event.currentTarget)?.data("effet-resultat"); const keyEffets = `system.${resultat}.effets`; - const code = $(event.currentTarget)?.data("effet-code"); + const code = this.html.find(event.currentTarget)?.data("effet-code"); const liste = RdDRencontre.getListeEffets(this.item, resultat); liste.push(code); @@ -67,10 +67,10 @@ export class RdDRencontreItemSheet extends RdDItemSheet { } async onDeleteEffet(event) { - const resultat = $(event.currentTarget)?.data("effet-resultat"); + const resultat = this.html.find(event.currentTarget)?.data("effet-resultat"); const keyEffets = `system.${resultat}.effets`; - const pos = $(event.currentTarget)?.data("effet-pos"); + const pos = this.html.find(event.currentTarget)?.data("effet-pos"); const liste = RdDRencontre.getListeEffets(this.item, resultat); liste.splice(pos, 1); diff --git a/module/item-sheet.js b/module/item-sheet.js index baeb40e5..b928d36d 100644 --- a/module/item-sheet.js +++ b/module/item-sheet.js @@ -157,36 +157,39 @@ export class RdDItemSheet extends ItemSheet { /** @override */ activateListeners(html) { super.activateListeners(html); + this.html = html; + let itemSheetDialog = this; - HtmlUtility._showControlWhen($(".item-cout"), ReglesOptionelles.isUsing('afficher-prix-joueurs') || game.user.isGM || !this.item.isOwned); - HtmlUtility._showControlWhen($(".item-magique"), this.item.isMagique()); + HtmlUtility._showControlWhen(this.html.find(".item-cout"), ReglesOptionelles.isUsing('afficher-prix-joueurs') || game.user.isGM || !this.item.isOwned); + HtmlUtility._showControlWhen(this.html.find(".item-magique"), this.item.isMagique()); // Everything below here is only needed if the sheet is editable if (!this.options.editable) return; + this.form.ondragstart = (event) => this._onDragStart(event); this.form.ondrop = (event) => this._onDrop(event); // Select competence categorie - html.find(".categorie").change(event => this._onSelectCategorie(event)); + this.html.find(".categorie").change(event => this._onSelectCategorie(event)); - html.find('.sheet-competence-xp').change((event) => { + this.html.find('.sheet-competence-xp').change((event) => { if (this.item.isCompetencePersonnage()) { RdDUtility.checkThanatosXP(this.item.name); } }); - html.find('.enchanteDate').change((event) => { - let jour = Number($('#jourMois').val()); - let mois = $('#nomMois').val(); + this.html.find('.enchanteDate').change((event) => { + let jour = Number(this.html.find('[name="splitDate.day"]').val()); + let mois = this.html.find('[name="splitDate.month"]').val(); this.dateUpdated = game.system.rdd.calendrier.getIndexFromDate(jour, mois); }); - html.find('.creer-tache-livre').click((event) => this._getEventActor(event).creerTacheDepuisLivre(this.item)); - html.find('.consommer-potion').click((event) => this._getEventActor(event).consommerPotion(this.item)); - html.find('.creer-potion-base').click((event) => this._getEventActor(event).dialogFabriquerPotion(this.item)); + this.html.find('.creer-tache-livre').click((event) => this._getEventActor(event).creerTacheDepuisLivre(this.item)); + this.html.find('.consommer-potion').click((event) => this._getEventActor(event).consommerPotion(this.item)); + this.html.find('.creer-potion-base').click((event) => this._getEventActor(event).dialogFabriquerPotion(this.item)); - html.find('.alchimie-tache a').click((event) => { + this.html.find('.alchimie-tache a').click((event) => { let actor = this._getEventActor(event); if (actor) { let recetteId = event.currentTarget.attributes['data-recette-id'].value; @@ -198,12 +201,12 @@ export class RdDItemSheet extends ItemSheet { } }); - html.find('.item-split').click(async event => RdDSheetUtility.splitItem(RdDSheetUtility.getItem(event, this.actor), this.actor, async () => itemSheetDialog.render(true))); - html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true)); - html.find('.item-delete').click(async event => RdDUtility.confirmerSuppressionItem(this, RdDSheetUtility.getItem(event, this.actor))); - html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente()); - html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItem()); - html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor, async () => itemSheetDialog.render(true))); + this.html.find('.item-split').click(async event => RdDSheetUtility.splitItem(RdDSheetUtility.getItem(event, this.actor), this.actor, async () => itemSheetDialog.render(true))); + this.html.find('.item-edit').click(async event => RdDSheetUtility.getItem(event, this.actor)?.sheet.render(true)); + this.html.find('.item-delete').click(async event => RdDUtility.confirmerSuppressionItem(this, RdDSheetUtility.getItem(event, this.actor))); + this.html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente()); + this.html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItem()); + this.html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor, async () => itemSheetDialog.render(true))); } _getEventActor(event) { @@ -219,7 +222,7 @@ export class RdDItemSheet extends ItemSheet { if (this.item.isCompetence()) { let level = RdDItemCompetence.getNiveauBase(event.currentTarget.value); this.item.system.base = level; - $("#base").val(level); + this.html.find('[name="system.base"]').val(level); } } diff --git a/module/rdd-astrologie-editeur.js b/module/rdd-astrologie-editeur.js index 13582a27..b2dd6260 100644 --- a/module/rdd-astrologie-editeur.js +++ b/module/rdd-astrologie-editeur.js @@ -22,6 +22,12 @@ this.updateData( calendrierData ); } + activateListeners(html) { + super.activateListeners(html); + this.html = html; + } + + /* -------------------------------------------- */ async resetNombreAstraux() { game.system.rdd.calendrier.resetNombreAstral(); @@ -39,15 +45,4 @@ this.calendrierData = duplicate(calendrierData); } - /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); - - let astrologieData = this.astrologieData; - - $(function () { - }); - - } - } diff --git a/module/rdd-astrologie-joueur.js b/module/rdd-astrologie-joueur.js index 0a604d0a..5ec5660d 100644 --- a/module/rdd-astrologie-joueur.js +++ b/module/rdd-astrologie-joueur.js @@ -29,21 +29,35 @@ export class RdDAstrologieJoueur extends Dialog { /* -------------------------------------------- */ constructor(html, actor, dialogData) { - - let myButtons = { - saveButton: { label: "Fermer", callback: html => this.quitDialog() } + const dialogConf = { + title: "Nombres Astraux", + content: html, + default: "saveButton", + buttons: { + saveButton: { label: "Fermer", callback: html => this.quitDialog() } + }, }; - - // Get all n - // Common conf - let dialogConf = { content: html, title: "Nombres Astraux", buttons: myButtons, default: "saveButton" }; - let dialogOptions = { classes: ["rdd-roll-dialog"], width: 600, height: 300, 'z-index': 99999 }; + const dialogOptions = { classes: ["rdd-roll-dialog"], width: 600, height: 300, 'z-index': 99999 }; super(dialogConf, dialogOptions); this.actor = actor; this.dataNombreAstral = duplicate(dialogData); } + /* -------------------------------------------- */ + activateListeners(html) { + super.activateListeners(html); + this.html = html; + + this.html.find(function () { + this.html.find("[name='diffConditions']").val(0); + }); + + this.html.find('[name="jet-astrologie"]').click((event) => { + this.requestJetAstrologie(); + }); + } + /* -------------------------------------------- */ static organizeNombres(actor) { let itemNombres = actor.listItemsData('nombreastral'); @@ -68,8 +82,8 @@ export class RdDAstrologieJoueur extends Dialog { carac_vue: this.actor.system.carac['vue'].value, etat: this.dataNombreAstral.etat, astrologie: this.dataNombreAstral.astrologie, - conditions: $("[name='diffConditions']").val(), - date: $("#joursAstrologie").val(), + conditions: this.html.find('[name="diffConditions"]').val(), + date: this.html.find('[name="joursAstrologie"]').val(), userId: game.user.id } if (Misc.isUniqueConnectedGM()) { @@ -87,17 +101,4 @@ export class RdDAstrologieJoueur extends Dialog { quitDialog() { } - /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); - - $(function () { - $("[name='diffConditions']").val(0); - }); - - html.find('#jet-astrologie').click((event) => { - this.requestJetAstrologie(); - }); - } - } diff --git a/module/rdd-calendrier-editeur.js b/module/rdd-calendrier-editeur.js index 6a740d5c..936dee45 100644 --- a/module/rdd-calendrier-editeur.js +++ b/module/rdd-calendrier-editeur.js @@ -23,15 +23,24 @@ export class RdDCalendrierEditeur extends Dialog { this.calendrierData = calendrierData; } + activateListeners(html) { + super.activateListeners(html); + this.html = html; + this.html.find("input[name='nomMois']").val(this.calendrierData.moisKey); + this.html.find("select[name='nomHeure']").val(this.calendrierData.heureKey); + this.html.find("select[name='jourMois']").val(this.calendrierData.jourMois); + this.html.find("select[name='minutesRelative']").val(calendrierData.minutesRelative); + this.html.find("select[name='annee']").val(this.calendrierData.annee); + } + /* -------------------------------------------- */ fillData() { - this.calendrierData.annee = $("input[name='annee']").val(); - this.calendrierData.moisKey = $("select[name='nomMois']").val(); - this.calendrierData.heureKey = $("select[name='nomHeure']").val(); - this.calendrierData.jourMois = $("select[name='jourMois']").val(); - this.calendrierData.minutesRelative = $("select[name='minutesRelative']").val(); + this.calendrierData.annee = this.html.find("input[name='annee']").val(); + this.calendrierData.moisKey = this.html.find("select[name='nomMois']").val(); + this.calendrierData.heureKey = this.html.find("select[name='nomHeure']").val(); + this.calendrierData.jourMois = this.html.find("select[name='jourMois']").val(); + this.calendrierData.minutesRelative = this.html.find("select[name='minutesRelative']").val(); - console.log("UPDATE ", this.calendrierData); this.calendrier.saveEditeur(this.calendrierData) } @@ -40,21 +49,4 @@ export class RdDCalendrierEditeur extends Dialog { this.calendrierData = duplicate(calendrierData); } - /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); - - let calendrierData = this.calendrierData; - - $(function () { - console.log(calendrierData); - $("input[name='nomMois']").val(calendrierData.moisKey); - $("select[name='nomHeure']").val(calendrierData.heureKey); - $("select[name='jourMois']").val(calendrierData.jourMois); - $("select[name='minutesRelative']").val(calendrierData.minutesRelative); - $("select[name='annee']").val(calendrierData.annee); - }); - - } - } diff --git a/module/rdd-calendrier.js b/module/rdd-calendrier.js index f47ca3fd..554a11e2 100644 --- a/module/rdd-calendrier.js +++ b/module/rdd-calendrier.js @@ -43,6 +43,14 @@ const MAX_NOMBRE_ASTRAL = 12; /* -------------------------------------------- */ export class RdDCalendrier extends Application { + static get defaultOptions() { + return mergeObject(super.defaultOptions, { + template: "systems/foundryvtt-reve-de-dragon/templates/calendar-template.html", + popOut: false, + resizable: false + }); + } + static createCalendrierPos() { return { top: 200, left: 200 }; } @@ -121,20 +129,103 @@ export class RdDCalendrier extends Application { console.log('RdDCalendrier.constructor()', this.calendrier, this.calendrierPos, this.listeNombreAstral); } + /* -------------------------------------------- */ + /** @override */ + async activateListeners(html) { + super.activateListeners(html); + this.html = html; + + this.updateDisplay(); + + this.html.find('.ajout-chronologie').click(ev => DialogChronologie.create()); + + this.html.find('.calendar-btn').click(ev => this.onCalendarButton(ev)); + + this.html.find('.calendar-btn-edit').click(ev => { + ev.preventDefault(); + this.showCalendarEditor(); + }); + + this.html.find('.astrologie-btn-edit').click(ev => { + ev.preventDefault(); + this.showAstrologieEditor(); + }); + + this.html.find('#calendar-move-handle').mousedown(ev => { + ev.preventDefault(); + ev = ev || window.event; + let isRightMB = false; + if ("which" in ev) { // Gecko (Firefox), WebKit (Safari/Chrome) & Opera + isRightMB = ev.which == 3; + } else if ("button" in ev) { // IE, Opera + isRightMB = ev.button == 2; + } + + if (!isRightMB) { + dragElement(document.getElementById("calendar-time-container")); + let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; + + function dragElement(elmnt) { + elmnt.onmousedown = dragMouseDown; + function dragMouseDown(e) { + e = e || window.event; + e.preventDefault(); + pos3 = e.clientX; + pos4 = e.clientY; + + document.onmouseup = closeDragElement; + document.onmousemove = elementDrag; + } + + function elementDrag(e) { + e = e || window.event; + e.preventDefault(); + // calculate the new cursor position: + pos1 = pos3 - e.clientX; + pos2 = pos4 - e.clientY; + pos3 = e.clientX; + pos4 = e.clientY; + // set the element's new position: + elmnt.style.bottom = undefined + elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; + elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; + } + + function closeDragElement() { + // stop moving when mouse button is released: + elmnt.onmousedown = undefined; + document.onmouseup = undefined; + document.onmousemove = undefined; + let xPos = (elmnt.offsetLeft - pos1) > window.innerWidth ? window.innerWidth - 200 : (elmnt.offsetLeft - pos1); + let yPos = (elmnt.offsetTop - pos2) > window.innerHeight - 20 ? window.innerHeight - 100 : (elmnt.offsetTop - pos2) + xPos = xPos < 0 ? 0 : xPos; + yPos = yPos < 0 ? 0 : yPos; + if (xPos != (elmnt.offsetLeft - pos1) || yPos != (elmnt.offsetTop - pos2)) { + elmnt.style.top = (yPos) + "px"; + elmnt.style.left = (xPos) + "px"; + } + game.system.rdd.calendrier.calendrierPos.top = yPos; + game.system.rdd.calendrier.calendrierPos.left = xPos; + if (game.user.isGM) { + game.settings.set(SYSTEM_RDD, "calendrier-pos", duplicate(game.system.rdd.calendrier.calendrierPos)); + } + } + } + } else if (isRightMB) { + game.system.rdd.calendrier.calendrierPos.top = 200; + game.system.rdd.calendrier.calendrierPos.left = 200; + if (game.user.isGM) { + game.settings.set(SYSTEM_RDD, "calendrier-pos", duplicate(game.system.rdd.calendrier.calendrierPos)); + } + this.setPos(game.system.rdd.calendrier.calendrierPos); + } + }); + } /* -------------------------------------------- */ getListeNombreAstral() { return game.settings.get(SYSTEM_RDD, "liste-nombre-astral") ?? []; } - /* -------------------------------------------- */ - static get defaultOptions() { - return mergeObject(super.defaultOptions, { - template: "systems/foundryvtt-reve-de-dragon/templates/calendar-template.html", - popOut: false, - resizable: false - }); - } - /* -------------------------------------------- */ getDateFromIndex(index) { const dateRdD = this.getCalendrier(index); @@ -555,97 +646,4 @@ export class RdDCalendrier extends Application { astrologieEditeur.updateData(calendrierData); astrologieEditeur.render(true); } - - /* -------------------------------------------- */ - /** @override */ - async activateListeners(html) { - super.activateListeners(html); - - this.updateDisplay(); - - html.find('.ajout-chronologie').click(ev => DialogChronologie.create()); - - html.find('.calendar-btn').click(ev => this.onCalendarButton(ev)); - - html.find('.calendar-btn-edit').click(ev => { - ev.preventDefault(); - this.showCalendarEditor(); - }); - - html.find('.astrologie-btn-edit').click(ev => { - ev.preventDefault(); - this.showAstrologieEditor(); - }); - - html.find('#calendar-move-handle').mousedown(ev => { - ev.preventDefault(); - ev = ev || window.event; - let isRightMB = false; - if ("which" in ev) { // Gecko (Firefox), WebKit (Safari/Chrome) & Opera - isRightMB = ev.which == 3; - } else if ("button" in ev) { // IE, Opera - isRightMB = ev.button == 2; - } - - if (!isRightMB) { - dragElement(document.getElementById("calendar-time-container")); - let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; - - function dragElement(elmnt) { - elmnt.onmousedown = dragMouseDown; - function dragMouseDown(e) { - e = e || window.event; - e.preventDefault(); - pos3 = e.clientX; - pos4 = e.clientY; - - document.onmouseup = closeDragElement; - document.onmousemove = elementDrag; - } - - function elementDrag(e) { - e = e || window.event; - e.preventDefault(); - // calculate the new cursor position: - pos1 = pos3 - e.clientX; - pos2 = pos4 - e.clientY; - pos3 = e.clientX; - pos4 = e.clientY; - // set the element's new position: - elmnt.style.bottom = undefined - elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; - elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; - } - - function closeDragElement() { - // stop moving when mouse button is released: - elmnt.onmousedown = undefined; - document.onmouseup = undefined; - document.onmousemove = undefined; - let xPos = (elmnt.offsetLeft - pos1) > window.innerWidth ? window.innerWidth - 200 : (elmnt.offsetLeft - pos1); - let yPos = (elmnt.offsetTop - pos2) > window.innerHeight - 20 ? window.innerHeight - 100 : (elmnt.offsetTop - pos2) - xPos = xPos < 0 ? 0 : xPos; - yPos = yPos < 0 ? 0 : yPos; - if (xPos != (elmnt.offsetLeft - pos1) || yPos != (elmnt.offsetTop - pos2)) { - elmnt.style.top = (yPos) + "px"; - elmnt.style.left = (xPos) + "px"; - } - game.system.rdd.calendrier.calendrierPos.top = yPos; - game.system.rdd.calendrier.calendrierPos.left = xPos; - if (game.user.isGM) { - game.settings.set(SYSTEM_RDD, "calendrier-pos", duplicate(game.system.rdd.calendrier.calendrierPos)); - } - } - } - } else if (isRightMB) { - game.system.rdd.calendrier.calendrierPos.top = 200; - game.system.rdd.calendrier.calendrierPos.left = 200; - if (game.user.isGM) { - game.settings.set(SYSTEM_RDD, "calendrier-pos", duplicate(game.system.rdd.calendrier.calendrierPos)); - } - this.setPos(game.system.rdd.calendrier.calendrierPos); - } - }); - } - } \ No newline at end of file diff --git a/module/rdd-roll-encaisser.js b/module/rdd-roll-encaisser.js index 1968d744..4d98e413 100644 --- a/module/rdd-roll-encaisser.js +++ b/module/rdd-roll-encaisser.js @@ -1,4 +1,5 @@ -import { ENTITE_BLURETTE, ENTITE_INCARNE} from "./constants.js"; +import { ENTITE_BLURETTE, ENTITE_INCARNE } from "./constants.js"; +import { RdDUtility } from "./rdd-utility.js"; /** * Extend the base Dialog entity by defining a custom window to perform roll. @@ -6,30 +7,35 @@ import { ENTITE_BLURETTE, ENTITE_INCARNE} from "./constants.js"; */ export class RdDEncaisser extends Dialog { + static async encaisser(actor) { + let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-roll-encaisser.html', + { ajustementsEncaissement: RdDUtility.getAjustementsEncaissement() } + ); + new RdDEncaisser(html, actor).render(true); + } + /* -------------------------------------------- */ constructor(html, actor) { - // Common conf - let buttons = {}; - if (!actor.isEntite()){ - buttons = { + let dialogConf = { + title: "Jet d'Encaissement", + content: html, + } + + if (!actor.isEntite()) { + dialogConf.default = "mortel"; + dialogConf.buttons = { "mortel": { label: "Mortel", callback: html => this.performEncaisser("mortel") }, "non-mortel": { label: "Non-mortel", callback: html => this.performEncaisser("non-mortel") }, "sonne": { label: "Sonné", callback: html => this.actor.setSonne() }, }; } - else if (actor.isEntite([ENTITE_BLURETTE, ENTITE_INCARNE])){ - buttons = { - "cauchemar": { label: "cauchemar", callback: html => this.performEncaisser("cauchemar") } + else if (actor.isEntite([ENTITE_BLURETTE, ENTITE_INCARNE])) { + dialogConf.default = "cauchemar" + dialogConf.buttons = { + "cauchemar": { label: "Cauchemar", callback: html => this.performEncaisser("cauchemar") } } } - let dialogConf = { - title: "Jet d'Encaissement", - content: html, - buttons: buttons, - default: "mortel" - } - let dialogOptions = { classes: ["rdd-roll-dialog"], width: 320, @@ -44,7 +50,18 @@ export class RdDEncaisser extends Dialog { this.encaisserSpecial = "aucun"; } + activateListeners(html) { + super.activateListeners(html); + this.html = html; + this.html.find('[name="modificateurDegats"]').val("0"); + this.html.find('[name="modificateurDegats"]').change((event) => { + this.modifier = event.currentTarget.value; // Update the selected bonus/malus + }); + this.html.find('[name="encaisserSpecial"]').change((event) => { + this.encaisserSpecial = event.currentTarget.value; // Update the selected bonus/malus + }); + } /* -------------------------------------------- */ performEncaisser(mortalite) { @@ -58,22 +75,4 @@ export class RdDEncaisser extends Dialog { } }); } - - /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); - - // Setup everything onload - $(function () { - $("#modificateurDegats").val("0"); - }); - - html.find('#modificateurDegats').change((event) => { - this.modifier = event.currentTarget.value; // Update the selected bonus/malus - }); - html.find('#encaisserSpecial').change((event) => { - this.encaisserSpecial = event.currentTarget.value; // Update the selected bonus/malus - }); - } - } diff --git a/module/rdd-roll-ethylisme.js b/module/rdd-roll-ethylisme.js index 157ecaec..440d7a08 100644 --- a/module/rdd-roll-ethylisme.js +++ b/module/rdd-roll-ethylisme.js @@ -13,47 +13,33 @@ export class RdDRollDialogEthylisme extends Dialog { title: "Test d'éthylisme", content: html, default: "rollButton", - buttons: { "rollButton": { label: "Test d'éthylisme", callback: html => this.onButton(html) } } + buttons: { "rollButton": { label: "Test d'éthylisme", callback: html => onRoll(this.rollData) } } }; let dialogOptions = { classes: ["rdd-roll-dialog"], width: 400, height: 'fit-content', 'z-index': 99999 } super(dialogConf, dialogOptions) - //console.log("ETH", rollData); - this.onRoll = onRoll; this.rollData = rollData; this.actor = actor; } - async onButton(html) { - this.onRoll(this.rollData); + activateListeners(html) { + super.activateListeners(html); + this.html = html; + this.bringToTop(); + + this.html.find(".force-alcool").change((event) => { + this.rollData.forceAlcool = Misc.toInt(event.currentTarget.value); + this.updateRollResult(); + }); + + this.html.find(".force-alcool").val(Misc.toInt(this.rollData.forceAlcool)); + this.updateRollResult(); } /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); - - this.bringToTop(); // Ensure top level - // Get the rollData stuff - var rollData = this.rollData; - var dialog = this; - - // Setup everything onload - $(function () { - html.find(".force-alcool").val(Misc.toInt(rollData.forceAlcool)); - dialog.updateRollResult(); - }); - - // Update ! - html.find(".force-alcool").change((event) => { - rollData.forceAlcool = Misc.toInt(event.currentTarget.value); - dialog.updateRollResult(); - }); - } async updateRollResult() { - - // Mise à jour valeurs - $(".roll-ethylisme").text(this.rollData.vie + " / " + Misc.toSignedString(Number(this.rollData.etat) + Number(this.rollData.forceAlcool) + this.rollData.diffNbDoses)); - $(".table-resolution").remove(); + this.html.find(".roll-ethylisme").text(this.rollData.vie + " / " + Misc.toSignedString(Number(this.rollData.etat) + Number(this.rollData.forceAlcool) + this.rollData.diffNbDoses)); + this.html.find(".table-resolution").remove(); } } diff --git a/module/rdd-roll-resolution-table.js b/module/rdd-roll-resolution-table.js index 5b44778f..ed73babf 100644 --- a/module/rdd-roll-resolution-table.js +++ b/module/rdd-roll-resolution-table.js @@ -65,6 +65,35 @@ export class RdDRollResolutionTable extends Dialog { this.rollData = rollData; } + activateListeners(html) { + super.activateListeners(html); + this.html = html; + this.bringToTop(); + + + this.html.find("[name='diffLibre']").val(Misc.toInt(this.rollData.diffLibre)); + this.html.find("[name='diffConditions']").val(Misc.toInt(this.rollData.diffConditions)); + this.updateRollResult(); + + this.html.find('.lancer-table-resolution').click((event) => { + this.onLancer(); + }); + // Update ! + this.html.find("[name='diffLibre']").change((event) => { + this.rollData.diffLibre = Misc.toInt(event.currentTarget.value); + this.updateRollResult(); + }); + this.html.find("[name='diffConditions']").change((event) => { + this.rollData.diffConditions = Misc.toInt(event.currentTarget.value); + this.updateRollResult(); + }); + this.html.find("[name='carac']").change((event) => { + let caracKey = event.currentTarget.value; + this.rollData.selectedCarac = this.rollData.carac[caracKey]; + this.updateRollResult(); + }); + } + /* -------------------------------------------- */ async onLancer() { await RdDResolutionTable.rollData(this.rollData); @@ -80,41 +109,7 @@ export class RdDRollResolutionTable extends Dialog { } /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); - - this.bringToTop(); - - var dialog = this; - - // Setup everything onload - function onLoad(){ - $("[name='diffLibre']").val(Misc.toInt(dialog.rollData.diffLibre)); - $("[name='diffConditions']").val(Misc.toInt(dialog.rollData.diffConditions)); - dialog.updateRollResult(html); - } - $(function () { onLoad();}); - html.find('.lancer-table-resolution').click((event) => { - this.onLancer(); - }); - // Update ! - html.find("[name='diffLibre']").change((event) => { - this.rollData.diffLibre = Misc.toInt(event.currentTarget.value); - this.updateRollResult(html); - }); - html.find("[name='diffConditions']").change((event) => { - this.rollData.diffConditions = Misc.toInt(event.currentTarget.value); - this.updateRollResult(html); - }); - html.find("[name='carac']").change((event) => { - let caracKey = event.currentTarget.value; - this.rollData.selectedCarac = this.rollData.carac[caracKey]; - this.updateRollResult(html); - }); - } - - /* -------------------------------------------- */ - async updateRollResult(html) { + async updateRollResult() { let rollData = this.rollData; rollData.caracValue = parseInt(rollData.selectedCarac.value) rollData.finalLevel = this._computeFinalLevel(rollData); @@ -125,12 +120,12 @@ export class RdDRollResolutionTable extends Dialog { }); // Mise à jour valeurs - html.find("[name='carac']").val(rollData.caracValue); - $(".roll-param-resolution").text(rollData.selectedCarac.value + " / " + Misc.toSignedString(rollData.finalLevel)); - $(".table-resolution").remove(); - $(".table-proba-reussite").remove(); + this.html.find("[name='carac']").val(rollData.caracValue); + this.html.find(".roll-param-resolution").text(rollData.selectedCarac.value + " / " + Misc.toSignedString(rollData.finalLevel)); + this.html.find(".table-resolution").remove(); + this.html.find(".table-proba-reussite").remove(); - html.find("div.placeholder-resolution").append(htmlTable) + this.html.find("div.placeholder-resolution").append(htmlTable) } diff --git a/module/rdd-roll.js b/module/rdd-roll.js index 8c7a8e17..57c5ff70 100644 --- a/module/rdd-roll.js +++ b/module/rdd-roll.js @@ -16,17 +16,17 @@ import { ReglesOptionelles } from "./settings/regles-optionelles.js"; export class RdDRoll extends Dialog { /* -------------------------------------------- */ - static async create(actor, rollData, dialogConfig, ...actions) { - RdDRoll._ensureCorrectActions(actions); + static async create(actor, rollData, dialogConfig, action) { + RdDRoll._ensureCorrectAction(action); RdDRoll._setDefaultOptions(actor, rollData); const html = await renderTemplate(dialogConfig.html, rollData); - let options = { classes: [ "rdd-roll-dialog"], width: 600, height: 'fit-content', 'z-index': 99999 }; - if (dialogConfig.options) { - mergeObject(options, dialogConfig.options, { overwrite: true }) + let options = { classes: ["rdd-roll-dialog"], width: 600, height: 'fit-content', 'z-index': 99999, close: html => {} }; + if (dialogConfig.close) { + options.close = dialogConfig.close; } - return new RdDRoll(actor, rollData, html, options, actions); + return new RdDRoll(actor, rollData, html, options, action); } /* -------------------------------------------- */ @@ -60,7 +60,7 @@ export class RdDRoll extends Dialog { forceDiceResult: -1 } // Mini patch :Ajout du rêve actuel - if ( actor.system.type == "personnage") { + if (actor.system.type == "personnage") { defaultRollData.carac["reve-actuel"] = actor.system.reve.reve } @@ -72,6 +72,7 @@ export class RdDRoll extends Dialog { RollDataAjustements.calcul(rollData, actor); } + /* -------------------------------------------- */ static getDiviseurSignificative(rollData) { let facteurSign = 1; @@ -91,167 +92,131 @@ export class RdDRoll extends Dialog { } /* -------------------------------------------- */ - static _ensureCorrectActions(actions) { - if (actions.length == 0) { - throw 'No action defined'; + static _ensureCorrectAction(action) { + if (action.callbacks == undefined) { + console.warn('No callback defined for ', action.name); + action.callbacks = [{ action: r => console.warn(action.name, r) }]; } - actions.forEach(action => { - if (action.callbacks == undefined) { - action.callbacks = [{ action: r => console.log(action.name, r) }]; - } - }); } /* -------------------------------------------- */ - constructor(actor, rollData, html, options, actions) { + constructor(actor, rollData, html, options, action) { let conf = { - title: actions[0].label, + title: action.label, content: html, - buttons: {}, - default: actions[0].name, + buttons: { + "onAction": { + label: action.label, callback: html => { + this.rollData.canClose = true; + this.onAction(action) + } + } + }, + default: "onAction", close: options.close }; - for (let action of actions) { - conf.buttons[action.name] = { - label: action.label, callback: html => { - this.rollData.canClose = true; - this.onAction(action, html) - } - }; - } - super(conf, options); this.actor = actor; this.rollData = rollData; } - close() { - if (this.rollData.canClose) { - return super.close(); - } - ui.notifications.info("Vous devez faire ce jet de dés!"); - } - - - /* -------------------------------------------- */ - async onAction(action, html) { - this.rollData.forceDiceResult = Number.parseInt(html.find("[name='force-dice-result']").val()) ?? -1; - await RdDResolutionTable.rollData(this.rollData); - console.log("RdDRoll -=>", this.rollData, this.rollData.rolled); - if (action.callbacks) - for (let callback of action.callbacks) { - if (callback.condition == undefined || callback.condition(this.rollData)) { - await callback.action(this.rollData); - } - } - } - - /* -------------------------------------------- */ activateListeners(html) { super.activateListeners(html); - + this.html = html; this.bringToTop(); - var dialog = this; + console.log('RdDRoll.activateListeners', this.rollData); - function onLoad() { - let rollData = dialog.rollData; - console.log('Ouverture RdDRoll', rollData); - // Update html, according to rollData - if (rollData.competence) { - const defaut_carac = rollData.competence.system.defaut_carac - // Set the default carac from the competence item - rollData.selectedCarac = rollData.carac[defaut_carac]; - html.find("[name='carac']").val(defaut_carac); - } - if (rollData.selectedSort) { - dialog.setSelectedSort(rollData.selectedSort, html); - html.find(".draconic").val(rollData.selectedSort.system.listIndex); // Uniquement a la selection du sort, pour permettre de changer - } - RdDItemSort.setCoutReveReel(rollData.selectedSort); - html.find("[name='diffLibre']").val(Misc.toInt(rollData.diffLibre)); - html.find("[name='diffConditions']").val(Misc.toInt(rollData.diffConditions)); - dialog.updateRollResult(html); + // Update html, according to rollData + if (this.rollData.competence) { + const defaut_carac = this.rollData.competence.system.defaut_carac + // Set the default carac from the competence item + this.rollData.selectedCarac = this.rollData.carac[defaut_carac]; + this.html.find("[name='carac']").val(defaut_carac); } + if (this.rollData.selectedSort) { + this.setSelectedSort(this.rollData.selectedSort); + this.html.find(".draconic").val(this.rollData.selectedSort.system.listIndex); // Uniquement a la selection du sort, pour permettre de changer + } + RdDItemSort.setCoutReveReel(this.rollData.selectedSort); + this.html.find("[name='diffLibre']").val(Misc.toInt(this.rollData.diffLibre)); + this.html.find("[name='diffConditions']").val(Misc.toInt(this.rollData.diffConditions)); + this.updateRollResult(html); - // Setup everything onload - $(function () { onLoad(); }); - - // Update ! - html.find("[name='diffLibre']").change((event) => { + this.html.find("[name='diffLibre']").change((event) => { this.rollData.diffLibre = Misc.toInt(event.currentTarget.value); // Update the selected bonus/malus this.updateRollResult(html); }); - html.find("[name='diffConditions']").change((event) => { + this.html.find("[name='diffConditions']").change((event) => { this.rollData.diffConditions = Misc.toInt(event.currentTarget.value); // Update the selected bonus/malus this.updateRollResult(html); }); - html.find("[name='force-dice-result']").change((event) => { + this.html.find("[name='force-dice-result']").change((event) => { this.rollData.forceDiceResult = Misc.toInt(event.currentTarget.value); }); - html.find("[name='carac']").change((event) => { + this.html.find("[name='carac']").change((event) => { let caracKey = event.currentTarget.value; this.rollData.selectedCarac = this.rollData.carac[caracKey]; // Update the selectedCarac this.updateRollResult(html); }); - html.find('.roll-draconic').change((event) => { + this.html.find('.roll-draconic').change((event) => { let draconicKey = Misc.toInt(event.currentTarget.value); this.rollData.competence = this.rollData.draconicList[draconicKey]; // Update the selectedCarac this.updateRollResult(html); }); - html.find('.roll-sort').change((event) => { + this.html.find('.roll-sort').change((event) => { let sortKey = Misc.toInt(event.currentTarget.value); - this.setSelectedSort(this.rollData.sortList[sortKey], html); + this.setSelectedSort(this.rollData.sortList[sortKey]); this.updateRollResult(html); - html.find("[name='diffLibre']").val(this.rollData.diffLibre); + this.html.find("[name='diffLibre']").val(this.rollData.diffLibre); }); - html.find('.roll-carac-competence').change((event) => { + this.html.find('.roll-carac-competence').change((event) => { const competence = event.currentTarget.value; this.rollData.competence = this.rollData.competences.find(it => it.name == competence); this.updateRollResult(html); }); - html.find('.roll-signedraconique').change((event) => { + this.html.find('.roll-signedraconique').change((event) => { let sortKey = Misc.toInt(event.currentTarget.value); this.setSelectedSigneDraconique(this.rollData.signes[sortKey]); this.updateRollResult(html); }); - html.find("[name='ptreve-variable']").change((event) => { + this.html.find("[name='ptreve-variable']").change((event) => { let ptreve = Misc.toInt(event.currentTarget.value); this.rollData.selectedSort.system.ptreve_reel = ptreve; console.log("RdDRollSelectDialog - Cout reve", ptreve); this.updateRollResult(html); }); - html.find("[name='coupsNonMortels']").change((event) => { + this.html.find("[name='coupsNonMortels']").change((event) => { this.rollData.dmg.mortalite = event.currentTarget.checked ? "non-mortel" : "mortel"; this.updateRollResult(html); }); - html.find('.cuisine-proportions').change((event) => { + this.html.find('.cuisine-proportions').change((event) => { this.rollData.proportions = Number(event.currentTarget.value); this.updateRollResult(html); }); - html.find('.select-by-name').change((event) => { + this.html.find('.select-by-name').change((event) => { const attribute = event.currentTarget.attributes['name'].value; this.rollData[attribute] = event.currentTarget.value; this.updateRollResult(html); }); - html.find('.checkbox-by-name').change((event) => { + this.html.find('.checkbox-by-name').change((event) => { const attribute = event.currentTarget.attributes['name'].value; this.rollData[attribute] = event.currentTarget.checked; this.updateRollResult(html); }); - html.find('input.use-encTotal').change((event) => { + this.html.find('input.use-encTotal').change((event) => { this.rollData.use.encTotal = event.currentTarget.checked; this.updateRollResult(html); }); - html.find('input.use-surenc').change((event) => { + this.html.find('input.use-surenc').change((event) => { this.rollData.use.surenc = event.currentTarget.checked; this.updateRollResult(html); }); - html.find('.appel-moral').click((event) => { /* l'appel au moral, qui donne un bonus de +1 */ + this.html.find('.appel-moral').click((event) => { /* l'appel au moral, qui donne un bonus de +1 */ this.rollData.use.moral = !this.rollData.use.moral; - const appelMoral = html.find('.icon-appel-moral')[0]; - const tooltip = html.find('.tooltipAppelAuMoralText')[0]; + const appelMoral = this.html.find('.icon-appel-moral')[0]; + const tooltip = this.html.find('.tooltipAppelAuMoralText')[0]; if (this.rollData.use.moral) { if (this.rollData.moral > 0) { tooltip.innerHTML = "Appel au moral"; @@ -267,41 +232,61 @@ export class RdDRoll extends Dialog { this.updateRollResult(html); }); // Section Méditation - html.find('.conditionMeditation').change((event) => { + this.html.find('.conditionMeditation').change((event) => { let condition = event.currentTarget.attributes['name'].value; this.rollData.conditionMeditation[condition] = event.currentTarget.checked; this.updateRollResult(html); }); } - async setSelectedSort(sort, html) { + /* -------------------------------------------- */ + close() { + if (this.rollData.canClose) { + return super.close(); + } + ui.notifications.info("Vous devez faire ce jet de dés!"); + } + + async onAction(action) { + this.rollData.forceDiceResult = Number.parseInt(this.html.find("[name='force-dice-result']").val()) ?? -1; + await RdDResolutionTable.rollData(this.rollData); + console.log("RdDRoll -=>", this.rollData, this.rollData.rolled); + if (action.callbacks) + for (let callback of action.callbacks) { + if (callback.condition == undefined || callback.condition(this.rollData)) { + await callback.action(this.rollData); + } + } + } + + async setSelectedSort(sort) { this.rollData.selectedSort = sort; // Update the selectedCarac this.rollData.competence = RdDItemCompetence.getVoieDraconic(this.rollData.draconicList, sort.system.draconic); this.rollData.bonus = RdDItemSort.getCaseBonus(sort, this.rollData.tmr.coord); this.rollData.diffLibre = RdDItemSort.getDifficulte(sort, -7); RdDItemSort.setCoutReveReel(sort); const htmlSortDescription = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/partial-description-sort.html", { sort: sort }); - html.find(".sort-ou-rituel").text(sort.system.isrituel ? "rituel" : "sort"); - html.find(".bonus-case").text(`${this.rollData.bonus}%`); - html.find(".details-sort").remove(); - html.find(".description-sort").append(htmlSortDescription); - html.find(".roll-draconic").val(sort.system.listIndex); - html.find(".div-sort-difficulte-fixe").text(Misc.toSignedString(sort.system.difficulte)); - html.find(".div-sort-ptreve-fixe").text(sort.system.ptreve); + this.html.find(".sort-ou-rituel").text(sort.system.isrituel ? "rituel" : "sort"); + this.html.find(".bonus-case").text(`${this.rollData.bonus}%`); + this.html.find(".placeholder-description-sort").children().remove(); + this.html.find(".placeholder-description-sort").append(htmlSortDescription); + this.html.find(".roll-draconic").val(sort.system.listIndex); + this.html.find(".div-sort-difficulte-fixe").text(Misc.toSignedString(sort.system.difficulte)); + this.html.find(".div-sort-ptreve-fixe").text(sort.system.ptreve); const diffVariable = RdDItemSort.isDifficulteVariable(sort); const coutVariable = RdDItemSort.isCoutVariable(sort); - HtmlUtility._showControlWhen(html.find(".div-sort-non-rituel"), !sort.system.isrituel); - HtmlUtility._showControlWhen(html.find(".div-sort-difficulte-var"), diffVariable); - HtmlUtility._showControlWhen(html.find(".div-sort-difficulte-fixe"), !diffVariable); - HtmlUtility._showControlWhen(html.find(".div-sort-ptreve-var"), coutVariable); - HtmlUtility._showControlWhen(html.find(".div-sort-ptreve-fixe"), !coutVariable); + HtmlUtility._showControlWhen(this.html.find(".div-sort-non-rituel"), !sort.system.isrituel); + HtmlUtility._showControlWhen(this.html.find(".div-sort-difficulte-var"), diffVariable); + HtmlUtility._showControlWhen(this.html.find(".div-sort-difficulte-fixe"), !diffVariable); + HtmlUtility._showControlWhen(this.html.find(".div-sort-ptreve-var"), coutVariable); + HtmlUtility._showControlWhen(this.html.find(".div-sort-ptreve-fixe"), !coutVariable); } - async setSelectedSigneDraconique(signe){ + async setSelectedSigneDraconique(signe) { this.rollData.signe = signe; this.rollData.diffLibre = signe.system.difficulte, - $(".signe-difficulte").text(Misc.toSignedString(this.rollData.diffLibre)); + $(".signe-difficulte").text(Misc.toSignedString(this.rollData.diffLibre)); } /* -------------------------------------------- */ @@ -315,9 +300,9 @@ export class RdDRoll extends Dialog { rollData.use.appelAuMoral = this.actor.isPersonnage() && RdDCarac.isActionPhysique(rollData.selectedCarac); let dmgText = Misc.toSignedString(rollData.dmg.total); - switch (rollData.mortalite){ - case 'non-mortel': dmgText = `(${dmgText}) non-mortel`; break; - case 'empoignade': dmgText = `empoignade`; break; + switch (rollData.mortalite) { + case 'non-mortel': dmgText = `(${dmgText}) non-mortel`; break; + case 'empoignade': dmgText = `empoignade`; break; } RollDataAjustements.calcul(rollData, this.actor); @@ -326,18 +311,18 @@ export class RdDRoll extends Dialog { const resolutionTable = await RdDResolutionTable.buildHTMLTable(RdDResolutionTable.subTable(rollData.caracValue, rollData.finalLevel)) const adjustements = await this.buildAjustements(rollData); - HtmlUtility._showControlWhen($(".use-encTotal"), rollData.ajustements.encTotal.visible && RdDCarac.isAgiliteOuDerivee(rollData.selectedCarac)); - HtmlUtility._showControlWhen($(".use-surenc"), rollData.ajustements.surenc.visible && RdDCarac.isActionPhysique(rollData.selectedCarac)); - HtmlUtility._showControlWhen($(".utilisation-moral"), rollData.use.appelAuMoral); - HtmlUtility._showControlWhen($(".diffMoral"), rollData.ajustements.moralTotal.used); - HtmlUtility._showControlWhen($(".divAppelAuMoral"), rollData.use.appelAuMoral); + HtmlUtility._showControlWhen(this.html.find(".use-encTotal"), rollData.ajustements.encTotal.visible && RdDCarac.isAgiliteOuDerivee(rollData.selectedCarac)); + HtmlUtility._showControlWhen(this.html.find(".use-surenc"), rollData.ajustements.surenc.visible && RdDCarac.isActionPhysique(rollData.selectedCarac)); + HtmlUtility._showControlWhen(this.html.find(".utilisation-moral"), rollData.use.appelAuMoral); + HtmlUtility._showControlWhen(this.html.find(".diffMoral"), rollData.ajustements.moralTotal.used); + HtmlUtility._showControlWhen(this.html.find(".divAppelAuMoral"), rollData.use.appelAuMoral); // Mise à jour valeurs - html.find(".dialog-roll-title").text(this._getTitle(rollData)); - html.find("[name='coupsNonMortels']").prop('checked', rollData.mortalite == 'non-mortel'); - html.find(".dmg-arme-actor").text(dmgText); - html.find("div.placeholder-ajustements").empty().append(adjustements); - html.find("div.placeholder-resolution").empty().append(resolutionTable) + this.html.find(".dialog-roll-title").text(this._getTitle(rollData)); + this.html.find("[name='coupsNonMortels']").prop('checked', rollData.mortalite == 'non-mortel'); + this.html.find(".dmg-arme-actor").text(dmgText); + this.html.find("div.placeholder-ajustements").empty().append(adjustements); + this.html.find("div.placeholder-resolution").empty().append(resolutionTable) } diff --git a/module/rdd-tmr-dialog.js b/module/rdd-tmr-dialog.js index 368bcdd3..f818bed2 100644 --- a/module/rdd-tmr-dialog.js +++ b/module/rdd-tmr-dialog.js @@ -197,32 +197,33 @@ export class RdDTMRDialog extends Dialog { /* -------------------------------------------- */ async activateListeners(html) { super.activateListeners(html); + this.html = html; document.getElementById("tmrrow1").insertCell(0).append(this.pixiApp.view); if (this.viewOnly) { - html.find('.lancer-sort').remove(); - html.find('.lire-signe-draconique').remove(); + this.html.find('.lancer-sort').remove(); + this.html.find('.lire-signe-draconique').remove(); return; } - HtmlUtility._showControlWhen($(".appliquerFatigue"), ReglesOptionelles.isUsing("appliquer-fatigue")); - HtmlUtility._showControlWhen($(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(this._getActorCoord())); + HtmlUtility._showControlWhen(this.html.find(".appliquerFatigue"), ReglesOptionelles.isUsing("appliquer-fatigue")); + HtmlUtility._showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(this._getActorCoord())); // Roll Sort - html.find('.lancer-sort').click((event) => { + this.html.find('.lancer-sort').click((event) => { this.actor.rollUnSort(this._getActorCoord()); }); - html.find('.lire-signe-draconique').click((event) => { + this.html.find('.lire-signe-draconique').click((event) => { this.actor.rollLireSigneDraconique(this._getActorCoord()); }); - html.find('#dir-top').click((event) => this.moveFromKey("top")); - html.find('#dir-top-left').click((event) => this.moveFromKey("top-left")); - html.find('#dir-top-right').click((event) => this.moveFromKey("top-right")); - html.find('#dir-bottom-left').click((event) => this.moveFromKey("bottom-left")); - html.find('#dir-bottom-right').click((event) => this.moveFromKey("bottom-right")); - html.find('#dir-bottom').click((event) => this.moveFromKey("bottom")); + this.html.find('#dir-top').click((event) => this.moveFromKey("top")); + this.html.find('#dir-top-left').click((event) => this.moveFromKey("top-left")); + this.html.find('#dir-top-right').click((event) => this.moveFromKey("top-right")); + this.html.find('#dir-bottom-left').click((event) => this.moveFromKey("bottom-left")); + this.html.find('#dir-bottom-right').click((event) => this.moveFromKey("bottom-right")); + this.html.find('#dir-bottom').click((event) => this.moveFromKey("bottom")); // Gestion du cout de montée en points de rêve let reveCout = ((this.tmrdata.isRapide && !EffetsDraconiques.isDeplacementAccelere(this.actor)) ? -2 : -1) - this.actor.countMonteeLaborieuse(); @@ -244,7 +245,7 @@ export class RdDTMRDialog extends Dialog { } const coord = this._getActorCoord(); - HtmlUtility._showControlWhen($(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(coord)); + HtmlUtility._showControlWhen(this.html.find(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(coord)); let ptsreve = document.getElementById("tmr-pointsreve-value"); ptsreve.innerHTML = this.actor.system.reve.reve.value; @@ -279,7 +280,7 @@ export class RdDTMRDialog extends Dialog { } await this.actor.santeIncDec("fatigue", this.cumulFatigue) } - await super.close(); // moving 1 cell costs 1 fatigue + await super.close(); } /* -------------------------------------------- */ diff --git a/module/tmr-rencontres.js b/module/tmr-rencontres.js index 2c7e6163..0d7bfcd1 100644 --- a/module/tmr-rencontres.js +++ b/module/tmr-rencontres.js @@ -1,6 +1,7 @@ import { Grammar } from "./grammar.js"; import { Misc } from "./misc.js"; import { RdDDice } from "./rdd-dice.js"; +import { RdDUtility } from "./rdd-utility.js"; import { SystemCompendiums, CompendiumTable, CompendiumTableHelpers } from "./settings/system-compendiums.js"; import { TMRUtility } from "./tmr-utility.js"; diff --git a/styles/simple.css b/styles/simple.css index 7c2b6e42..724bb2eb 100644 --- a/styles/simple.css +++ b/styles/simple.css @@ -618,13 +618,10 @@ input:is(.blessure-premiers_soins, .blessure-soins_complets) { opacity: 0.7 ; } -.rdd-roll-dialog .dialog-roll-sort { - width: 600px; - height: 430px; - z-index: 9999; - display: block; +.rdd-roll-dialog .description-sort { + max-width: 550px; } -.rdd-roll-part{ +.rdd-roll-part { align-items: center; border-radius: 6px; padding: 3px; background: var(--gradient-gold); diff --git a/templates/actor/astrologie.html b/templates/actor/astrologie.html index d5094e1e..90e15b53 100644 --- a/templates/actor/astrologie.html +++ b/templates/actor/astrologie.html @@ -1,2 +1,2 @@

Astrologie

-Astrologie : Nombres Astraux +Astrologie : Nombres Astraux diff --git a/templates/dialog-astrologie-joueur.html b/templates/dialog-astrologie-joueur.html index 60f0d40a..24096304 100644 --- a/templates/dialog-astrologie-joueur.html +++ b/templates/dialog-astrologie-joueur.html @@ -14,7 +14,7 @@ {{/select}} - {{#select joursSuivants}} {{#each dates as |date key|}} @@ -22,7 +22,7 @@ {{/select}} - + {{!-- Sheet Body --}}
diff --git a/templates/dialog-roll-encaisser.html b/templates/dialog-roll-encaisser.html index a794c67a..16e3bba7 100644 --- a/templates/dialog-roll-encaisser.html +++ b/templates/dialog-roll-encaisser.html @@ -1,8 +1,7 @@
-

- {{#select modificateurDegats}} {{#each ajustementsEncaissement as |key|}} @@ -11,11 +10,14 @@
- -
+
+ +
diff --git a/templates/dialog-roll-sort.html b/templates/dialog-roll-sort.html index 9f40430a..ff7cf3a6 100644 --- a/templates/dialog-roll-sort.html +++ b/templates/dialog-roll-sort.html @@ -1,16 +1,18 @@
-

Lancer le {{#if sort.system.isrituel}}rituel{{else}}sort{{/if}}: + {{competence.name}} +
+

Lancer le {{#if sort.system.isrituel}}rituel{{else}}sort{{/if}}

-

- {{competence.name}} +
@@ -67,13 +69,8 @@
-
-
- {{> "systems/foundryvtt-reve-de-dragon/templates/partial-description-sort.html" sort=selectedSort}} +
- - \ No newline at end of file diff --git a/templates/item-competence-sheet.html b/templates/item-competence-sheet.html index c53a9274..77b2115b 100644 --- a/templates/item-competence-sheet.html +++ b/templates/item-competence-sheet.html @@ -33,13 +33,13 @@
{{#if isGM}} - {{#select system.base}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-base-competence.html"}} {{/select}} {{else}} - + {{/if}}
diff --git a/templates/item-potion-sheet.html b/templates/item-potion-sheet.html index f696d0e5..b7ecd665 100644 --- a/templates/item-potion-sheet.html +++ b/templates/item-potion-sheet.html @@ -85,14 +85,14 @@
- {{#select splitDate.day}} {{#each jourMoisOptions as |key|}} {{/each}} {{/select}} - {{#select splitDate.month}} {{>"systems/foundryvtt-reve-de-dragon/templates/enum-heures.html"}} {{/select}} diff --git a/templates/partial-description-sort.html b/templates/partial-description-sort.html index efb6d1ef..ff63cbee 100644 --- a/templates/partial-description-sort.html +++ b/templates/partial-description-sort.html @@ -5,6 +5,6 @@ {{#if sort.system.duree}}{{/if}} {{#if sort.system.coutseuil}}{{/if}}
-
+
{{> "systems/foundryvtt-reve-de-dragon/templates/partial-description-overflow.html" sort.system}}
\ No newline at end of file