104 lines
3.7 KiB
JavaScript
104 lines
3.7 KiB
JavaScript
import { TeDeumUtility } from "../common/tedeum-utility.js";
|
|
|
|
const { HandlebarsApplicationMixin } = foundry.applications.api
|
|
|
|
/* -------------------------------------------- */
|
|
export class TeDeumRollDialog extends HandlebarsApplicationMixin(foundry.applications.api.ApplicationV2) {
|
|
|
|
static DEFAULT_OPTIONS = {
|
|
classes: ["fvtt-te-deum", "te-deum-roll-dialog"],
|
|
window: { title: "Lancer !", resizable: false },
|
|
position: { width: 540 },
|
|
actions: {
|
|
roll: TeDeumRollDialog.#onRoll,
|
|
cancel: TeDeumRollDialog.#onCancel,
|
|
}
|
|
}
|
|
|
|
static PARTS = {
|
|
content: { template: "systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs" }
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
constructor(actor, rollData, options = {}) {
|
|
super(options)
|
|
this.actor = actor
|
|
this.rollData = rollData
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static async create(actor, rollData) {
|
|
const dialog = new TeDeumRollDialog(actor, rollData)
|
|
dialog.render(true)
|
|
return dialog
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
async _prepareContext() {
|
|
return { ...this.rollData }
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
async refreshDialog() {
|
|
this.render()
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static #onRoll(event, target) {
|
|
TeDeumUtility.rollTeDeum(this.rollData)
|
|
this.close()
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static #onCancel(event, target) {
|
|
this.close()
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
_onRender(context, options) {
|
|
super._onRender(context, options)
|
|
|
|
const html = this.element
|
|
|
|
html.querySelector('#bonusMalusPerso')?.addEventListener('change', (event) => {
|
|
this.rollData.bonusMalusPerso = Number(event.currentTarget.value)
|
|
})
|
|
html.querySelector('#roll-allonge')?.addEventListener('change', (event) => {
|
|
this.rollData.allongeId = event.currentTarget.value
|
|
})
|
|
html.querySelector('#roll-main-gauche')?.addEventListener('change', (event) => {
|
|
this.rollData.isMainGauche = event.currentTarget.checked
|
|
})
|
|
html.querySelector('#roll-difficulty')?.addEventListener('change', (event) => {
|
|
this.rollData.difficulty = String(event.currentTarget.value) || "pardefaut"
|
|
})
|
|
html.querySelector('#roll-attaque-ciblee')?.addEventListener('change', (event) => {
|
|
this.rollData.attaqueCiblee = event.currentTarget.value || "0"
|
|
})
|
|
html.querySelector('#roll-bonus-malus')?.addEventListener('change', (event) => {
|
|
this.rollData.bonusMalus = event.currentTarget.value || "0"
|
|
})
|
|
html.querySelector('#roll-enable-providence')?.addEventListener('change', (event) => {
|
|
this.rollData.enableProvidence = event.currentTarget.checked
|
|
})
|
|
html.querySelector('#roll-portee-tir')?.addEventListener('change', (event) => {
|
|
this.rollData.porteeTir = event.currentTarget.value
|
|
this.rollData.difficulty = game.system.tedeum.config.ARME_PORTEES[this.rollData.porteeTir].difficulty
|
|
this.rollData.porteeLabel = game.system.tedeum.config.ARME_PORTEES[this.rollData.porteeTir].label
|
|
this.refreshDialog()
|
|
})
|
|
html.querySelector('#roll-tir-viser')?.addEventListener('change', (event) => {
|
|
this.rollData.isViser = event.currentTarget.checked
|
|
})
|
|
html.querySelector('#roll-tir-mouvement')?.addEventListener('change', (event) => {
|
|
this.rollData.isMouvement = event.currentTarget.checked
|
|
})
|
|
html.querySelector('#roll-charge-a-pied')?.addEventListener('change', (event) => {
|
|
this.rollData.isChargeAPied = event.currentTarget.checked
|
|
})
|
|
html.querySelector('#roll-charge-a-cheval')?.addEventListener('change', (event) => {
|
|
this.rollData.isChargeACheval = event.currentTarget.checked
|
|
})
|
|
}
|
|
}
|