// SPDX-FileCopyrightText: 2021 Johannes Loher // // SPDX-License-Identifier: MIT import { isCheck } from "../actor/actor-data-properties"; import { DS4Item } from "../item/item"; import { DS4ItemData } from "../item/item-data"; import { createRollCheckMacro } from "../macros/roll-check"; import { createRollItemMacro } from "../macros/roll-item"; import notifications from "../ui/notifications"; export default function registerForHotbarDropHook(): void { Hooks.on("hotbarDrop", async (hotbar: Hotbar, data: { type: string } & Record, slot: string) => { switch (data.type) { case "Item": { if (!("data" in data)) { return notifications.warn(game.i18n.localize("DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems")); } const itemData = data.data as DS4ItemData; if (!DS4Item.rollableItemTypes.includes(itemData.type)) { return notifications.warn( game.i18n.format("DS4.WarningItemIsNotRollable", { name: itemData.name, id: itemData._id, type: itemData.type, }), ); } return createRollItemMacro(itemData, slot); } case "Check": { if (!("data" in data) || typeof data.data !== "string" || !isCheck(data.data)) { return notifications.warn(game.i18n.localize("DS4.WarningInvalidCheckDropped")); } return createRollCheckMacro(data.data, slot); } } }); }