From 1a444fbb15a48382d265282cd0d4d329b9c8f5a1 Mon Sep 17 00:00:00 2001 From: moliloo Date: Tue, 12 Aug 2025 21:51:45 -0300 Subject: [PATCH] add setting to extend description from items and add molilo contacts in system.json --- lang/en.json | 7 ++- .../sheets/api/application-mixin.mjs | 62 +++++++++++++++++-- module/data/settings/Appearance.mjs | 16 +++-- system.json | 5 +- templates/settings/appearance-settings.hbs | 18 ++++-- 5 files changed, 93 insertions(+), 15 deletions(-) diff --git a/lang/en.json b/lang/en.json index 7f9d80e6..a6e1b9e0 100755 --- a/lang/en.json +++ b/lang/en.json @@ -2083,8 +2083,11 @@ "displayFear": { "label": "Fear Display" }, "dualityColorScheme": { "label": "Chat Style" }, "showGenericStatusEffects": { "label": "Show Foundry Status Effects" }, - "expandedCharacterDescriptions": { "label": "Auto-expand Descriptions from Characters" }, - "expandedAdversaryDescriptions": { "label": "Auto-expand Descriptions from Adversaries" } + "expandedTitle": "Auto-expand Descriptions", + "extendCharacterDescriptions": { "label": "Characters" }, + "extendAdversaryDescriptions": { "label": "Adversaries" }, + "extendEnvironmentDescriptions": { "label": "Environments" }, + "extendItemDescriptions": { "label": "Items" } }, "fearDisplay": { "token": "Tokens", diff --git a/module/applications/sheets/api/application-mixin.mjs b/module/applications/sheets/api/application-mixin.mjs index 5ad79a26..83dc1581 100644 --- a/module/applications/sheets/api/application-mixin.mjs +++ b/module/applications/sheets/api/application-mixin.mjs @@ -2,6 +2,23 @@ const { HandlebarsApplicationMixin } = foundry.applications.api; import { getDocFromElement, getDocFromElementSync, tagifyElement } from '../../../helpers/utils.mjs'; import { ItemBrowser } from '../../ui/itemBrowser.mjs'; +const typeSettingsMap = { + character: 'extendCharacterDescriptions', + adversary: 'extendAdversaryDescriptions', + environment: 'extendEnvironmentDescriptions', + ancestry: 'extendItemDescriptions', + community: 'extendItemDescriptions', + class: 'extendItemDescriptions', + subclass: 'extendItemDescriptions', + feature: 'extendItemDescriptions', + domainCard: 'extendItemDescriptions', + loot: 'extendItemDescriptions', + consumable: 'extendItemDescriptions', + weapon: 'extendItemDescriptions', + armor: 'extendItemDescriptions', + beastform: 'extendItemDescriptions' +}; + /** * @typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction */ @@ -137,6 +154,8 @@ export default function DHApplicationMixin(Base) { docs.filter(doc => doc).forEach(doc => (doc.apps[this.id] = this)); if (!!this.options.contextMenus.length) this._createContextMenus(); + + this.#autoExtendDescriptions(context); } /** @inheritDoc */ @@ -149,7 +168,7 @@ export default function DHApplicationMixin(Base) { async _onRender(context, options) { await super._onRender(context, options); this._createTagifyElements(this.options.tagifyConfigs); - await this.#prepareInventoryDescription(); + await this.#prepareInventoryDescription(context); } /* -------------------------------------------- */ @@ -391,8 +410,6 @@ export default function DHApplicationMixin(Base) { context.fields = this.document.schema.fields; context.systemFields = this.document.system.schema.fields; context.settings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance); - // settings.expandedCharacterDescriptions - // settings.expandedAdversaryDescriptions return context; } @@ -404,7 +421,7 @@ export default function DHApplicationMixin(Base) { * Prepares and enriches an inventory item or action description for display. * @returns {Promise} */ - async #prepareInventoryDescription() { + async #prepareInventoryDescription(context) { // Get all inventory item elements with a data-item-uuid attribute const inventoryItems = this.element.querySelectorAll('.inventory-item[data-item-uuid]'); for (const el of inventoryItems) { @@ -435,6 +452,38 @@ export default function DHApplicationMixin(Base) { } } + /* -------------------------------------------- */ + /* Extend Descriptions by Settings */ + /* -------------------------------------------- */ + + /** + * Extend inventory description when enabled in settings. + * @returns {Promise} + */ + async #autoExtendDescriptions(context) { + const inventoryItems = this.element.querySelectorAll('.inventory-item[data-item-uuid]'); + for (const el of inventoryItems) { + // Get the doc uuid from the element + const { itemUuid } = el?.dataset || {}; + if (!itemUuid) continue; + + //get doc by uuid + const doc = await fromUuid(itemUuid); + + //check the type of the document + const actorType = + doc?.type === 'adversary' && context.document?.type === 'environment' + ? typeSettingsMap[doc?.type] + : doc.actor?.type; + + // If the actor type is defined and the setting is enabled, extend the description + if (typeSettingsMap[actorType]) { + const settingKey = typeSettingsMap[actorType]; + if (context.settings[settingKey]) this.#activeExtended(el); + } + } + } + /* -------------------------------------------- */ /* Application Clicks Actions */ /* -------------------------------------------- */ @@ -609,6 +658,11 @@ export default function DHApplicationMixin(Base) { const extensible = container?.querySelector('.extensible'); extensible?.classList.toggle('extended'); } + + async #activeExtended(element) { + const extensible = element?.querySelector('.extensible'); + extensible?.classList.add('extended'); + } } return DHSheetV2; diff --git a/module/data/settings/Appearance.mjs b/module/data/settings/Appearance.mjs index a9673d40..ac980346 100644 --- a/module/data/settings/Appearance.mjs +++ b/module/data/settings/Appearance.mjs @@ -56,13 +56,21 @@ export default class DhAppearance extends foundry.abstract.DataModel { initial: true, label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.showGenericStatusEffects.label' }), - expandedCharacterDescriptions: new fields.BooleanField({ + extendCharacterDescriptions: new fields.BooleanField({ initial: false, - label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.expandedCharacterDescriptions.label' + label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.extendCharacterDescriptions.label' }), - expandedAdversaryDescriptions: new fields.BooleanField({ + extendAdversaryDescriptions: new fields.BooleanField({ initial: false, - label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.expandedAdversaryDescriptions.label' + label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.extendAdversaryDescriptions.label' + }), + extendEnvironmentDescriptions: new fields.BooleanField({ + initial: false, + label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.extendEnvironmentDescriptions.label' + }), + extendItemDescriptions: new fields.BooleanField({ + initial: false, + label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.extendItemDescriptions.label' }) }; } diff --git a/system.json b/system.json index a0c91923..93f860ce 100644 --- a/system.json +++ b/system.json @@ -28,7 +28,10 @@ "name": "jacobwojoski" }, { - "name": "moliloo" + "name": "moliloo", + "url": "https://github.com/moliloo", + "email": "molilofl@gmail.com", + "discord": "molilo" }, { "name": "Mysteryusy" diff --git a/templates/settings/appearance-settings.hbs b/templates/settings/appearance-settings.hbs index ef74ed45..d4d41d62 100644 --- a/templates/settings/appearance-settings.hbs +++ b/templates/settings/appearance-settings.hbs @@ -2,10 +2,20 @@

{{localize 'DAGGERHEART.SETTINGS.Menu.appearance.name'}}

- {{formGroup settingFields.schema.fields.displayFear value=settingFields._source.displayFear localize=true}} - {{formGroup settingFields.schema.fields.showGenericStatusEffects value=settingFields._source.showGenericStatusEffects localize=true}} - {{formGroup settingFields.schema.fields.expandedCharacterDescriptions value=settingFields._source.expandedCharacterDescriptions localize=true}} - {{formGroup settingFields.schema.fields.expandedAdversaryDescriptions value=settingFields._source.expandedAdversaryDescriptions localize=true}} + +
+ {{localize 'DAGGERHEART.GENERAL.fear'}} + {{formGroup settingFields.schema.fields.displayFear value=settingFields._source.displayFear localize=true}} + {{formGroup settingFields.schema.fields.showGenericStatusEffects value=settingFields._source.showGenericStatusEffects localize=true}} +
+ +
+ {{localize 'DAGGERHEART.SETTINGS.Appearance.FIELDS.expandedTitle'}} + {{formGroup settingFields.schema.fields.extendCharacterDescriptions value=settingFields._source.extendCharacterDescriptions localize=true}} + {{formGroup settingFields.schema.fields.extendAdversaryDescriptions value=settingFields._source.extendAdversaryDescriptions localize=true}} + {{formGroup settingFields.schema.fields.extendEnvironmentDescriptions value=settingFields._source.extendEnvironmentDescriptions localize=true}} + {{formGroup settingFields.schema.fields.extendItemDescriptions value=settingFields._source.extendItemDescriptions localize=true}} +
{{#if showDiceSoNice}}