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 {
|
export default class DhPrototypeTokenConfig extends foundry.applications.sheets.PrototypeTokenConfig {
|
||||||
|
/** @inheritDoc */
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
...super.DEFAULT_OPTIONS,
|
||||||
|
form: { handler: DhPrototypeTokenConfig.#onSubmit }
|
||||||
|
};
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static PARTS = {
|
static PARTS = {
|
||||||
tabs: super.PARTS.tabs,
|
tabs: super.PARTS.tabs,
|
||||||
|
|
@ -34,8 +40,89 @@ export default class DhPrototypeTokenConfig extends foundry.applications.sheets.
|
||||||
|
|
||||||
async _prepareAppearanceTab() {
|
async _prepareAppearanceTab() {
|
||||||
const context = await super._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;
|
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() {
|
async _prepareAppearanceTab() {
|
||||||
const context = await super._prepareAppearanceTab();
|
const context = await super._prepareAppearanceTab();
|
||||||
context.tokenSizes = CONFIG.DH.ACTOR.tokenSize;
|
context.tokenSizes = CONFIG.DH.ACTOR.tokenSize;
|
||||||
|
context.tokenSize = this.document.actor.system.size;
|
||||||
context.usesActorSize = this.token.actor?.system?.metadata?.usesSize;
|
context.usesActorSize = this.token.actor?.system?.metadata?.usesSize;
|
||||||
context.actorSizeDisable = context.usesActorSize && this.token.actor.system.size !== 'custom';
|
context.actorSizeDisable = context.usesActorSize && this.token.actor.system.size !== 'custom';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
<label>{{localize "Size Category"}}</label>
|
<label>{{localize "Size Category"}}</label>
|
||||||
|
|
||||||
<select id="dhTokenSize">
|
<select id="dhTokenSize">
|
||||||
{{selectOptions tokenSizes selected=document.actor.system.size valueAttr="id" labelAttr="label" localize=true}}
|
{{selectOptions tokenSizes selected=tokenSize valueAttr="id" labelAttr="label" localize=true}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue