From d04393dd5afea27bb17bc6b35e3ac5dae343ef00 Mon Sep 17 00:00:00 2001 From: moliloo Date: Sun, 20 Jul 2025 21:45:48 -0300 Subject: [PATCH] enhance beastform application and fix action selection style --- lang/en.json | 2 +- .../applications/dialogs/beastformDialog.mjs | 19 +++++++++++++------ .../sheets/api/application-mixin.mjs | 8 ++++++-- module/data/action/beastformAction.mjs | 4 +++- styles/less/dialog/beastform/sheet.less | 4 ++++ templates/dialogs/beastform/header.hbs | 3 +++ templates/dialogs/beastform/tabs.hbs | 18 +++++++++++------- 7 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 templates/dialogs/beastform/header.hbs diff --git a/lang/en.json b/lang/en.json index 3e5bd2d5..59e22709 100755 --- a/lang/en.json +++ b/lang/en.json @@ -756,7 +756,7 @@ }, "SelectAction": { "selectType": "Select Action Type", - "selectAction": "Select Action" + "selectAction": "Action Selection" }, "Traits": { "agility": { diff --git a/module/applications/dialogs/beastformDialog.mjs b/module/applications/dialogs/beastformDialog.mjs index 1d6725ad..3c35b542 100644 --- a/module/applications/dialogs/beastformDialog.mjs +++ b/module/applications/dialogs/beastformDialog.mjs @@ -1,9 +1,11 @@ const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; export default class BeastformDialog extends HandlebarsApplicationMixin(ApplicationV2) { - constructor(configData) { + constructor(configData, item) { super(); + this.item = item; + this.configData = configData; this.selected = null; this.evolved = { form: null }; @@ -14,11 +16,14 @@ export default class BeastformDialog extends HandlebarsApplicationMixin(Applicat static DEFAULT_OPTIONS = { tag: 'form', - classes: ['daggerheart', 'views', 'dh-style', 'beastform-selection'], + classes: ['daggerheart', 'views', 'dialog', 'dh-style', 'beastform-selection'], position: { width: 600, height: 'auto' }, + window: { + icon: 'fa-solid fa-paw' + }, actions: { selectBeastform: this.selectBeastform, toggleHybridFeature: this.toggleHybridFeature, @@ -34,11 +39,12 @@ export default class BeastformDialog extends HandlebarsApplicationMixin(Applicat }; get title() { - return game.i18n.localize('DAGGERHEART.ITEMS.Beastform.dialogTitle'); + return this.item.name; } /** @override */ static PARTS = { + header: { template: 'systems/daggerheart/templates/dialogs/beastform/header.hbs' }, tabs: { template: 'systems/daggerheart/templates/dialogs/beastform/tabs.hbs' }, beastformTier: { template: 'systems/daggerheart/templates/dialogs/beastform/beastformTier.hbs' }, advanced: { template: 'systems/daggerheart/templates/dialogs/beastform/advanced.hbs' }, @@ -262,12 +268,13 @@ export default class BeastformDialog extends HandlebarsApplicationMixin(Applicat if (!options.submitted) this.selected = null; } - static async configure(configData) { + static async configure(configData, item) { return new Promise(resolve => { - const app = new this(configData); + const app = new this(configData, item); + const featureItem = item; app.addEventListener( 'close', - () => resolve({ selected: app.selected, evolved: app.evolved, hybrid: app.hybrid }), + () => resolve({ selected: app.selected, evolved: app.evolved, hybrid: app.hybrid, item: featureItem }), { once: true } ); app.render({ force: true }); diff --git a/module/applications/sheets/api/application-mixin.mjs b/module/applications/sheets/api/application-mixin.mjs index 65a43123..6597f130 100644 --- a/module/applications/sheets/api/application-mixin.mjs +++ b/module/applications/sheets/api/application-mixin.mjs @@ -441,9 +441,13 @@ export default function DHApplicationMixin(Base) { const { type: actionType } = (await foundry.applications.api.DialogV2.input({ window: { title: 'Select Action Type' }, + classes: ['daggerheart', 'dh-style'], content: await foundry.applications.handlebars.renderTemplate( 'systems/daggerheart/templates/actionTypes/actionType.hbs', - { types: CONFIG.DH.ACTIONS.actionTypes } + { + types: CONFIG.DH.ACTIONS.actionTypes, + itemName: game.i18n.localize('DAGGERHEART.CONFIG.SelectAction.selectAction') + } ), ok: { label: game.i18n.format('DOCUMENT.Create', { @@ -581,7 +585,7 @@ export default function DHApplicationMixin(Base) { const { actionId } = target.closest('[data-action-id]').dataset; const { actions, attack } = doc.system; const action = attack?.id === actionId ? attack : actions?.find(a => a.id === actionId); - await action.use(event); + await action.use(event, doc); } /** diff --git a/module/data/action/beastformAction.mjs b/module/data/action/beastformAction.mjs index 2116662c..bb926dac 100644 --- a/module/data/action/beastformAction.mjs +++ b/module/data/action/beastformAction.mjs @@ -10,7 +10,9 @@ export default class DhBeastformAction extends DHBaseAction { const abort = await this.handleActiveTransformations(); if (abort) return; - const { selected, evolved, hybrid } = await BeastformDialog.configure(beastformConfig); + const item = args[0]; + + const { selected, evolved, hybrid } = await BeastformDialog.configure(beastformConfig, item); if (!selected) return; await this.transform(selected, evolved, hybrid); diff --git a/styles/less/dialog/beastform/sheet.less b/styles/less/dialog/beastform/sheet.less index ce2e990d..26b6072a 100644 --- a/styles/less/dialog/beastform/sheet.less +++ b/styles/less/dialog/beastform/sheet.less @@ -1,5 +1,6 @@ @import '../../utils/colors.less'; @import '../../utils/mixin.less'; +@import '../../utils/fonts.less'; .theme-light .application.daggerheart.dh-style.views.beastform-selection .beastforms-outer-container { .beastform-title { @@ -209,6 +210,9 @@ button { flex: 1; + font-family: @font-body; + font-weight: bold; + height: 40px; } } } diff --git a/templates/dialogs/beastform/header.hbs b/templates/dialogs/beastform/header.hbs new file mode 100644 index 00000000..ac92d14c --- /dev/null +++ b/templates/dialogs/beastform/header.hbs @@ -0,0 +1,3 @@ +
+

{{localize 'DAGGERHEART.ITEMS.Beastform.dialogTitle'}}

+
\ No newline at end of file diff --git a/templates/dialogs/beastform/tabs.hbs b/templates/dialogs/beastform/tabs.hbs index 25bb2180..0a252dd6 100644 --- a/templates/dialogs/beastform/tabs.hbs +++ b/templates/dialogs/beastform/tabs.hbs @@ -1,11 +1,15 @@
\ No newline at end of file