Nouvelle fenêtre de jets de dés
This commit is contained in:
97
module/roll/roll-part.mjs
Normal file
97
module/roll/roll-part.mjs
Normal file
@@ -0,0 +1,97 @@
|
||||
import { Misc } from "../misc.js"
|
||||
|
||||
export const ROLLDIALOG_SECTION = {
|
||||
ACTION: 'action',
|
||||
CARAC: 'carac',
|
||||
COMP: 'comp',
|
||||
CHOIX: 'choix',
|
||||
CONDITIONS: 'conditions',
|
||||
AJUSTEMENTS: 'ajustements',
|
||||
}
|
||||
export class RollPart {
|
||||
static settingKey(rollPart, key) { return `roll-part-${rollPart.code}.${key}` }
|
||||
|
||||
get code() { throw new Error(`Pas dse code définie pour ${this}`) }
|
||||
get name() { return this.code }
|
||||
/** la section de la fenêtre ou le paramêtre apparaît */
|
||||
get section() { return undefined }
|
||||
get priority() { return 0 /* TODO */ }
|
||||
/** le template handlebars pour affichage */
|
||||
get template() { return `systems/foundryvtt-reve-de-dragon/templates/roll/roll-part-${this.code}.hbs` }
|
||||
|
||||
initialize(rollData) {
|
||||
if (rollData.refs[this.code] == undefined) {
|
||||
rollData.refs[this.code] = {}
|
||||
}
|
||||
if (rollData.current[this.code] == undefined) {
|
||||
rollData.current[this.code] = {}
|
||||
}
|
||||
if (rollData.selected[this.code] == undefined) {
|
||||
rollData.selected[this.code] = {}
|
||||
}
|
||||
}
|
||||
|
||||
/** le conteneur de données du RollPart */
|
||||
getRefs(rollData) {
|
||||
return rollData.refs[this.code]
|
||||
}
|
||||
|
||||
/** les informations de sélection du paramètre */
|
||||
getCurrent(rollData) {
|
||||
return rollData.current[this.code]
|
||||
}
|
||||
setCurrent(rollData, current) {
|
||||
rollData.current[this.code] = current
|
||||
}
|
||||
|
||||
/** les informations minimales représentant la sélection dans le rollData permettant de restaurer la fenêtre */
|
||||
getSaved(rollData) {
|
||||
return rollData.selected[this.code] ?? {}
|
||||
}
|
||||
setSaved(rollData, saved) {
|
||||
rollData.selected[this.code] = saved
|
||||
}
|
||||
|
||||
restore(rollData) { }
|
||||
store(rollData, targetData) { }
|
||||
|
||||
/**
|
||||
* le texte à ajouter dans la barre de titre
|
||||
* @returns une chaîne vide si rien ne doit être affiché
|
||||
*/
|
||||
title() { return '' }
|
||||
isRollMode(rollData, mode) { return rollData.mode.current == mode }
|
||||
|
||||
isActive(rollData) { return this.isValid(rollData) && this.visible(rollData) }
|
||||
isValid(rollData) { return true }
|
||||
visible(rollData) { return true }
|
||||
|
||||
onReady() { }
|
||||
loadRefs(rollData) { }
|
||||
|
||||
prepareContext(rollData) { }
|
||||
|
||||
/** ---- cross roll-part filtering ---- */
|
||||
setFilter(rollData, filter) { }
|
||||
getSpecialComp(rollData) { return [] }
|
||||
setSpecialComp(comps) { }
|
||||
|
||||
getExternalPartsFilter(partCode, rollData) { return undefined }
|
||||
setExternalFilter(visibleRollParts, rollData) {
|
||||
const predicate = Misc.and(
|
||||
visibleRollParts.map(p => p.getExternalPartsFilter(this.code, rollData)).filter(f => f != undefined)
|
||||
)
|
||||
this.setFilter(rollData, predicate);
|
||||
}
|
||||
|
||||
toTemplateData() {
|
||||
return { code: this.code, name: this.name, template: this.template, section: this.section }
|
||||
}
|
||||
|
||||
getAjustements(rollData) {
|
||||
return []
|
||||
}
|
||||
|
||||
async _onRender(rollDialog, context, options) { }
|
||||
|
||||
}
|
Reference in New Issue
Block a user