From af01f8f1b288fe60223194dd1367f099d5f97949 Mon Sep 17 00:00:00 2001 From: Dapoolp Date: Sat, 26 Jul 2025 13:00:45 +0200 Subject: [PATCH] Create files --- daggerheart.mjs | 3 +- module/applications/dialogs/_module.mjs | 1 + .../dialogs/damageReductionDialog.mjs | 6 +- .../dialogs/reactionRollDialog.mjs | 68 +++++++++++++++++++ module/documents/actor.mjs | 5 -- module/systemRegistration/socket.mjs | 8 +++ 6 files changed, 79 insertions(+), 12 deletions(-) create mode 100644 module/applications/dialogs/reactionRollDialog.mjs diff --git a/daggerheart.mjs b/daggerheart.mjs index 387c1a74..c3de5883 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -19,7 +19,6 @@ import { } from './module/systemRegistration/_module.mjs'; import { placeables } from './module/canvas/_module.mjs'; import { registerRollDiceHooks } from './module/dice/dhRoll.mjs'; -import { registerDHActorHooks } from './module/documents/actor.mjs'; import './node_modules/@yaireo/tagify/dist/tagify.css'; Hooks.once('init', () => { @@ -169,7 +168,7 @@ Hooks.on('ready', () => { registerCountdownHooks(); socketRegistration.registerSocketHooks(); registerRollDiceHooks(); - registerDHActorHooks(); + socketRegistration.registerUserQueries(); }); Hooks.once('dicesoniceready', () => {}); diff --git a/module/applications/dialogs/_module.mjs b/module/applications/dialogs/_module.mjs index f9b40f3f..29a3c876 100644 --- a/module/applications/dialogs/_module.mjs +++ b/module/applications/dialogs/_module.mjs @@ -8,3 +8,4 @@ export { default as Downtime } from './downtime.mjs'; export { default as OwnershipSelection } from './ownershipSelection.mjs'; export { default as ResourceDiceDialog } from './resourceDiceDialog.mjs'; export { default as ActionSelectionDialog } from './actionSelectionDialog.mjs'; +export { default as ReactionRollDialog } from './reactionRollDialog.mjs'; diff --git a/module/applications/dialogs/damageReductionDialog.mjs b/module/applications/dialogs/damageReductionDialog.mjs index 3e3bde44..9049522d 100644 --- a/module/applications/dialogs/damageReductionDialog.mjs +++ b/module/applications/dialogs/damageReductionDialog.mjs @@ -1,6 +1,6 @@ import { damageKeyToNumber, getDamageLabel } from '../../helpers/utils.mjs'; -const { DialogV2, ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; +const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; export default class DamageReductionDialog extends HandlebarsApplicationMixin(ApplicationV2) { constructor(resolve, reject, actor, damage, damageType) { @@ -53,10 +53,6 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap ); } - get title() { - return game.i18n.localize('DAGGERHEART.APPLICATIONS.DamageReduction.title'); - } - static DEFAULT_OPTIONS = { tag: 'form', classes: ['daggerheart', 'views', 'damage-reduction'], diff --git a/module/applications/dialogs/reactionRollDialog.mjs b/module/applications/dialogs/reactionRollDialog.mjs new file mode 100644 index 00000000..215cc85e --- /dev/null +++ b/module/applications/dialogs/reactionRollDialog.mjs @@ -0,0 +1,68 @@ + +const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; + +export default class ReactionRollDialog extends HandlebarsApplicationMixin(ApplicationV2) { + constructor(resolve, reject, actor, trait) { + super({}); + + this.resolve = resolve; + this.reject = reject; + this.actor = actor; + this.trait = trait; + } + + static DEFAULT_OPTIONS = { + tag: 'form', + classes: ['daggerheart', 'views', 'damage-reduction'], + position: { + width: 240, + height: 'auto' + }, + actions: { + // setMarks: this.setMarks, + // useStressReduction: this.useStressReduction, + // takeDamage: this.takeDamage + }, + form: { + handler: this.updateData, + submitOnChange: true, + closeOnSubmit: false + } + }; + + /** @override */ + static PARTS = { + damageSelection: { + id: 'damageReduction', + template: 'systems/daggerheart/templates/dialogs/damageReduction.hbs' + } + }; + + /* -------------------------------------------- */ + + /** @inheritDoc */ + get title() { + return game.i18n.localize('DAGGERHEART.APPLICATIONS.DamageReduction.title'); + } + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + + + return context; + } + + static updateData(event, _, formData) { + const form = foundry.utils.expandObject(formData.object); + this.render(true); + } + + static async reactionRollQuery({ actorId, trait }) { + return new Promise(async (resolve, reject) => { + const actor = await fromUuid(actorId); + if (!actor || !actor?.isOwner) reject(); + new ReactionRollDialog(resolve, reject, actor, trait).render({ force: true }); + }); + } + +} \ No newline at end of file diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 67a5e0b3..caee8d23 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -1,5 +1,4 @@ import { emitAsGM, GMUpdateEvent } from '../systemRegistration/socket.mjs'; -import DamageReductionDialog from '../applications/dialogs/damageReductionDialog.mjs'; import { LevelOptionType } from '../data/levelTier.mjs'; import DHFeature from '../data/item/feature.mjs'; import { damageKeyToNumber } from '../helpers/utils.mjs'; @@ -584,7 +583,3 @@ export default class DhpActor extends Actor { }); } } - -export const registerDHActorHooks = () => { - CONFIG.queries.armorStack = DamageReductionDialog.armorStackQuery; -}; diff --git a/module/systemRegistration/socket.mjs b/module/systemRegistration/socket.mjs index 0037d99d..d23ff8a7 100644 --- a/module/systemRegistration/socket.mjs +++ b/module/systemRegistration/socket.mjs @@ -1,3 +1,6 @@ +import DamageReductionDialog from '../applications/dialogs/damageReductionDialog.mjs'; +import ReactionRollDialog from '../applications/dialogs/reactionRollDialog.mjs'; + export function handleSocketEvent({ action = null, data = {} } = {}) { switch (action) { case socketEvent.GMUpdate: @@ -69,6 +72,11 @@ export const registerSocketHooks = () => { }); }; +export const registerUserQueries = () => { + CONFIG.queries.armorStack = DamageReductionDialog.armorStackQuery; + CONFIG.queries.reactionRoll = ReactionRollDialog.reactionRollQuery; +} + export const emitAsGM = async (eventName, callback, update, uuid = null) => { if (!game.user.isGM) { return await game.socket.emit(`system.${CONFIG.DH.id}`, {