From 8a5fa072cef4026b10ef1f6efd72b9ff5dafaca2 Mon Sep 17 00:00:00 2001 From: Johannes Loher Date: Thu, 27 Jul 2023 01:05:35 +0200 Subject: [PATCH 1/2] fix: make drag & drop of items from actor sheet work again --- templates/sheets/actor/components/effect-list-entry.hbs | 2 +- templates/sheets/actor/components/item-list-entry.hbs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/sheets/actor/components/effect-list-entry.hbs b/templates/sheets/actor/components/effect-list-entry.hbs index d741b770..42f67f26 100644 --- a/templates/sheets/actor/components/effect-list-entry.hbs +++ b/templates/sheets/actor/components/effect-list-entry.hbs @@ -9,7 +9,7 @@ SPDX-License-Identifier: MIT !-- Render an effect list entry row. !-- @param effectData: The data of the item. --}} -
  • +
  • {{!-- enabled --}} +
  • {{!-- equipped --}} {{#if isEquipable}} Date: Thu, 27 Jul 2023 01:06:24 +0200 Subject: [PATCH 2/2] refactor: prevent creating items in actors that cannot own them --- src/apps/actor/base-sheet.js | 21 --------------------- src/hooks/hooks.ts | 2 ++ src/hooks/pre-create-item.js | 28 ++++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 21 deletions(-) create mode 100644 src/hooks/pre-create-item.js diff --git a/src/apps/actor/base-sheet.js b/src/apps/actor/base-sheet.js index 27441036..75a74b11 100644 --- a/src/apps/actor/base-sheet.js +++ b/src/apps/actor/base-sheet.js @@ -457,27 +457,6 @@ export class DS4ActorSheet extends ActorSheet { this.actor.updateEmbeddedDocuments("Item", updates); } - - /** - * @param {DragEvent} event - * @param {object} data - * @override - */ - async _onDropItem(event, data) { - const item = await Item.implementation.fromDropData(data); - if (item && !this.actor.canOwnItemType(item.type)) { - notifications.warn( - getGame().i18n.format("DS4.WarningActorCannotOwnItem", { - actorName: this.actor.name, - actorType: this.actor.type, - itemName: item.name, - itemType: item.type, - }), - ); - return false; - } - return super._onDropItem(event, data); - } } /** diff --git a/src/hooks/hooks.ts b/src/hooks/hooks.ts index e9b4d91a..b69fbb1f 100644 --- a/src/hooks/hooks.ts +++ b/src/hooks/hooks.ts @@ -4,12 +4,14 @@ import { registerForHotbarDropHook } from "./hotbar-drop"; import { registerForInitHook } from "./init"; +import { registerForPreCreateItemHook } from "./pre-create-item"; import { registerForReadyHook } from "./ready"; import { registerForRenderHooks } from "./render"; import { registerForSetupHook } from "./setup"; export function registerForHooks(): void { registerForHotbarDropHook(); + registerForPreCreateItemHook(); registerForInitHook(); registerForReadyHook(); registerForRenderHooks(); diff --git a/src/hooks/pre-create-item.js b/src/hooks/pre-create-item.js new file mode 100644 index 00000000..545bd540 --- /dev/null +++ b/src/hooks/pre-create-item.js @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2023 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { notifications } from "../ui/notifications.js"; +import { getGame } from "../utils/utils.js"; + +export function registerForPreCreateItemHook() { + Hooks.on("preCreateItem", preCreateItem); +} + +/** + * @param {import('../documents/item/item.js').DS4Item} item + * @returns {void | false} + */ +function preCreateItem(item) { + if (item.parent instanceof Actor && !item.parent.canOwnItemType(item.type)) { + notifications.warn( + getGame().i18n.format("DS4.WarningActorCannotOwnItem", { + actorName: item.actor.name, + actorType: item.actor.type, + itemName: item.name, + itemType: item.type, + }), + ); + return false; + } +} -- 2.45.2