Dialog created. Tokens not dragged(tbd).

This commit is contained in:
Nikhil Nagarajan 2026-01-07 15:53:25 -05:00
parent f5e00dedb2
commit 506a17bd03
6 changed files with 66 additions and 77 deletions

View file

@ -5,44 +5,46 @@ export default class DHSummonDialog extends HandlebarsApplicationMixin(Applicati
super(summonData);
// Initialize summons and index
this.summons = summonData.summons || [];
this.index = 0;
}
get_title() {
return game.i18n.localize("DAGGERHEART.DIALOGS.SUMMON.title");
}
static PARTS = {
main: { template: 'systems/daggerheart/templates/dialogs/summon/summonDialog.hbs' }
};
static DEFAULT_OPTIONS= {
...super.DEFAULT_OPTIONS,
template: 'systems/daggerheart/module/applications/dialogs/summon/summonDialog.hbs',
width: 400,
height: 'auto',
tag: 'form',
window: {
title: "DAGGERHEART.APPLICATIONS.Summon.title",
resizable: false
},
position: {
width: 400,
height: 'auto'
},
classes: ['daggerheart', 'dialog', 'summon-dialog'],
dragDrop: [{ dragSelector: '.summon-token', dropSelector: null, handler:'onDrop'}]
dragDrop: [{dragSelector: '.summon-token'}],
};
async _prepareContext() {
const context = await super._prepareContext();
context.summons=this.summons;
context.index=this.index;
context.summons=await Promise.all(this.summons.map(async(entry)=>{
const actor = await fromUuid(entry.actorUUID);
return {
...entry,
name: actor?.name || game.i18n.localize("DAGGERHEART.GENERAL.Unknown"),
img: actor?.img || 'icons/svg/mystery-man.svg',
};
}));
return context;
}
getData(options={}) {
const data = super.getData(options);
data.summons=this.summons;
data.index=this.index;
return data;
}
async prepareContext() {
const context = await super.prepareContext();
return context;
_onDragStart(event) {
const uuid = event.currentTarget.dataset.uuid;
if(!uuid) return;
const dragData = { type: 'Actor', uuid: uuid };
event.dataTransfer.effectAllowed = 'all';
event.dataTransfer.setData('text/plain', JSON.stringify(dragData));
}
async onDrop(event) {//add to canvas
event.preventDefault();
const tokenData = JSON.parse(event.dataTransfer.getData('text/plain'));
const position = { x: event.clientX, y: event.clientY };
await canvas.scene.createEmbeddedDocuments("Token", [tokenData], { temporary: false, x: position.x, y: position.y });
}
}

View file

@ -2,40 +2,4 @@ import DHBaseAction from './baseAction.mjs';
export default class DHSummonAction extends DHBaseAction {
static extraSchemas = [...super.extraSchemas, 'summon'];
// get defaultValues() {
// return {
// summon: []
// };
// }
// async trigger(event, ...args) {
// if (!this.canSummon || !canvas.scene){
// ui.notifications.warn(game.i18n.localize("DAGGERHEART.ACTIONS.TYPES.summon.error"));
// return;
// }
// await this._performAction();
// }
// get canSummon() {
// return game.user.can('TOKEN_CREATE');
// }
// async _performAction(event, ...args) {
// const validSummons = this.summon.filter(entry => entry.actorUUID);
// if (validSummons.length === 0) {
// ui.notifications.warn("No actors configured for this Summon action.");
// return;
// }
// // FOR NOW: Just log the data to prove the schema working or not
// console.group("Summon Action Triggered");
// for (const entry of validSummons) {
// const actor = await fromUuid(entry.actorUUID);
// console.log(`- Ready to summon ${entry.count}x [${actor?.name || "Unknown Actor"}]`);
// }
// console.groupEnd();
// //Todo: Open Summon Dialog
// }
}

View file

@ -1,4 +1,5 @@
const fields = foundry.data.fields;
import DHSummonDialog from '../../../applications/dialogs/summonDialog.mjs';
export default class DHSummonField extends fields.ArrayField {
/**
@ -22,7 +23,27 @@ export default class DHSummonField extends fields.ArrayField {
super(summonFields, options, context);
}
static async execute(config) {
console.log('something');
static async execute() {
if(!canvas.scene){
ui.notifications.warn(game.i18n.localize("DAGGERHEART.ACTIONS.TYPES.summon.error"));
return;
}
const validSummons = this.summon.filter(entry => entry.actorUUID);
if (validSummons.length === 0) {
console.log("No actors configured for this Summon action.");
return;
}
// FOR NOW: Just log the data to prove the schema working or not
console.group("Summon Action Triggered");
for (const entry of validSummons) {
const actor = await fromUuid(entry.actorUUID);
console.log(`- Ready to summon ${entry.count}x [${actor?.name || "Unknown Actor"}]`);
}
console.groupEnd();
//Open Summon Dialog
const summonData = { summons: validSummons };
console.log(summonData);
const dialog = new DHSummonDialog(summonData);
dialog.render(true);
}
}