daggerheart/module/applications/ui/hotbar.mjs
2025-07-15 22:06:34 +02:00

52 lines
1.5 KiB
JavaScript

export default class DhHotbar extends Hotbar {
constructor(options) {
super(options);
this.setupHooks();
}
static async useItem(uuid) {
const item = await fromUuid(uuid);
if (!item) {
return ui.notifications.warn('WARNING.ObjectDoesNotExist', {
format: {
name: game.i18n.localize('Document'),
identifier: uuid
}
});
}
await item.use({});
}
setupHooks() {
Hooks.on('hotbarDrop', (bar, data, slot) => {
if (['Item'].includes(data.type)) {
const item = foundry.utils.fromUuidSync(data.uuid);
if (typeof item === 'string') return true;
switch (item.type) {
case 'ancestry':
case 'community':
case 'class':
case 'subclass':
return true;
default:
this.createItemMacro(data, slot);
return false;
}
}
});
}
async createItemMacro(data, slot) {
const macro = await Macro.implementation.create({
name: `${game.i18n.localize('Display')} ${name}`,
type: CONST.MACRO_TYPES.SCRIPT,
img: 'icons/svg/book.svg',
command: `await game.system.api.applications.ui.DhHotbar.useItem("${data.uuid}");`
});
await game.user.assignHotbarMacro(macro, slot);
return false;
}
}