From 68236af6abe6d36d0d8845916d79f11ec90979de Mon Sep 17 00:00:00 2001 From: Johannes Loher Date: Sun, 21 Aug 2022 23:29:26 +0200 Subject: [PATCH] fix: make the DDV Config work with the Default Token Config Closes #2 --- .eslintrc.js | 1 + src/darkness-dependent-vision-config.js | 20 +++++++++++++++++++- src/hooks/getTokenConfigHeaderButtons.js | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) 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); }, }); }