diff --git a/.eslintrc.js b/.eslintrc.js index 6775348..816a922 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -19,6 +19,7 @@ module.exports = { plugins: [], globals: { + DefaultTokenConfig: false, PrototypeTokenDocument: false, }, diff --git a/src/darkness-dependent-vision-config.js b/src/darkness-dependent-vision-config.js index 6f2f0f7..3e02e61 100644 --- a/src/darkness-dependent-vision-config.js +++ b/src/darkness-dependent-vision-config.js @@ -52,6 +52,10 @@ export class DarknessDependentVisionConfig extends FormApplication { return `${name}: ${game.i18n.localize('DarknessDependentVision.Title')}`; } + get isDefault() { + return this.options.tokenConfig instanceof DefaultTokenConfig; + } + async getData() { const data = this.isPrototype ? this.actor.data.token : this.token.data; return { @@ -69,9 +73,23 @@ export class DarknessDependentVisionConfig extends FormApplication { } async _updateObject(event, formData) { + // Configure the Default Token Configuration + if (this.isDefault) { + const current = game.settings.get('core', DefaultTokenConfig.SETTING); + const update = foundry.utils.mergeObject(current, formData, { inplace: false }); + const result = await game.settings.set('core', DefaultTokenConfig.SETTING, update); + const tokenConfig = this.options.tokenConfig; + tokenConfig.data = new foundry.data.TokenData(result); + tokenConfig.object = new TokenDocument(tokenConfig.data, { actor: null }); + tokenConfig.token = tokenConfig.object; + tokenConfig.render(); + return result; + } + // Configure the Prototype Token data of an Actor if (this.isPrototype) return this.actor.update({ token: formData }); + // Update an embedded Token document - else return this.token.update(formData); + return this.token.update(formData); } } diff --git a/src/hooks/getTokenConfigHeaderButtons.js b/src/hooks/getTokenConfigHeaderButtons.js index 2e4546c..96d231e 100644 --- a/src/hooks/getTokenConfigHeaderButtons.js +++ b/src/hooks/getTokenConfigHeaderButtons.js @@ -22,7 +22,7 @@ function onGetTokenConfigHeaderButtons(tokenConfig, buttons) { class: 'configure-darkness-dependent-vision', icon: 'fas fa-eye', onclick: async () => { - return new DarknessDependentVisionConfig(tokenConfig.object).render(true); + return new DarknessDependentVisionConfig(tokenConfig.object, { tokenConfig }).render(true); }, }); }