mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-12 11:41:08 +01:00
Correction for prototypeToken
This commit is contained in:
parent
40dda1067f
commit
595fd48efe
3 changed files with 90 additions and 2 deletions
|
|
@ -1,4 +1,10 @@
|
|||
export default class DhPrototypeTokenConfig extends foundry.applications.sheets.PrototypeTokenConfig {
|
||||
/** @inheritDoc */
|
||||
static DEFAULT_OPTIONS = {
|
||||
...super.DEFAULT_OPTIONS,
|
||||
form: { handler: DhPrototypeTokenConfig.#onSubmit }
|
||||
};
|
||||
|
||||
/** @override */
|
||||
static PARTS = {
|
||||
tabs: super.PARTS.tabs,
|
||||
|
|
@ -34,8 +40,89 @@ export default class DhPrototypeTokenConfig extends foundry.applications.sheets.
|
|||
|
||||
async _prepareAppearanceTab() {
|
||||
const context = await super._prepareAppearanceTab();
|
||||
context.actorSizeUsed = this.token.actor ? Boolean(this.token.actor.system.size) : false;
|
||||
context.tokenSizes = CONFIG.DH.ACTOR.tokenSize;
|
||||
context.tokenSize = this.token.actor?.system?.size;
|
||||
context.usesActorSize = this.token.actor?.system?.metadata?.usesSize;
|
||||
context.actorSizeDisable = context.usesActorSize && this.token.actor.system.size !== 'custom';
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
_attachPartListeners(partId, htmlElement, options) {
|
||||
super._attachPartListeners(partId, htmlElement, options);
|
||||
|
||||
switch (partId) {
|
||||
case 'appearance':
|
||||
htmlElement
|
||||
.querySelector('#dhTokenSize')
|
||||
?.addEventListener('change', this.onTokenSizeChange.bind(this));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
_previewChanges(changes) {
|
||||
if (!changes || !this._preview) return;
|
||||
|
||||
const tokenSizeSelect = this.element?.querySelector('#dhTokenSize');
|
||||
if (this.token.actor && tokenSizeSelect && tokenSizeSelect.value !== 'custom') {
|
||||
const tokenSizes = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).tokenSizes;
|
||||
const tokenSize = tokenSizes[tokenSizeSelect.value];
|
||||
changes.width = tokenSize;
|
||||
changes.height = tokenSize;
|
||||
}
|
||||
|
||||
const deletions = { '-=actorId': null, '-=actorLink': null };
|
||||
const mergeOptions = { inplace: false, performDeletions: true };
|
||||
this._preview.updateSource(mergeObject(changes, deletions, mergeOptions));
|
||||
|
||||
if (this._preview?.object?.destroyed === false) {
|
||||
this._preview.object.initializeSources();
|
||||
this._preview.object.renderFlags.set({ refresh: true });
|
||||
}
|
||||
}
|
||||
|
||||
async onTokenSizeChange(event) {
|
||||
const value = event.target.value;
|
||||
const tokenSizeDimensions = this.element.querySelector('#tokenSizeDimensions');
|
||||
if (tokenSizeDimensions) {
|
||||
const disabled = value !== 'custom';
|
||||
|
||||
tokenSizeDimensions.dataset.tooltip = disabled
|
||||
? game.i18n.localize('DAGGERHEART.APPLICATIONS.TokenConfig.actorSizeUsed')
|
||||
: '';
|
||||
|
||||
const disabledIcon = tokenSizeDimensions.querySelector('i');
|
||||
if (disabledIcon) {
|
||||
disabledIcon.style.opacity = disabled ? '' : '0';
|
||||
}
|
||||
|
||||
const dimensionsInputs = tokenSizeDimensions.querySelectorAll('.form-fields input');
|
||||
for (const input of dimensionsInputs) {
|
||||
input.disabled = disabled;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process form submission for the sheet
|
||||
* @this {PrototypeTokenConfig}
|
||||
* @type {ApplicationFormSubmission}
|
||||
*/
|
||||
static async #onSubmit(event, form, formData) {
|
||||
const submitData = this._processFormData(event, form, formData);
|
||||
submitData.detectionModes ??= []; // Clear detection modes array
|
||||
this._processChanges(submitData);
|
||||
const changes = { prototypeToken: submitData };
|
||||
|
||||
const tokenSizeSelect = this.element.querySelector('#dhTokenSize');
|
||||
if (tokenSizeSelect && this.actor) {
|
||||
if (tokenSizeSelect.value !== this.actor.system.size) {
|
||||
changes.system = { size: tokenSizeSelect.value };
|
||||
}
|
||||
}
|
||||
|
||||
this.actor.validate({ changes, clean: true, fallback: false });
|
||||
await this.actor.update(changes);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ export default class DhTokenConfig extends foundry.applications.sheets.TokenConf
|
|||
async _prepareAppearanceTab() {
|
||||
const context = await super._prepareAppearanceTab();
|
||||
context.tokenSizes = CONFIG.DH.ACTOR.tokenSize;
|
||||
context.tokenSize = this.document.actor.system.size;
|
||||
context.usesActorSize = this.token.actor?.system?.metadata?.usesSize;
|
||||
context.actorSizeDisable = context.usesActorSize && this.token.actor.system.size !== 'custom';
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue