ds4/src/module/hooks/hotbar-drop.ts

41 lines
1.7 KiB
TypeScript
Raw Normal View History

2021-06-26 22:02:00 +02:00
// SPDX-FileCopyrightText: 2021 Johannes Loher
//
// SPDX-License-Identifier: MIT
2021-06-30 02:17:54 +02:00
import { isCheck } from "../actor/actor-data-properties";
import { DS4Item } from "../item/item";
import { DS4ItemData } from "../item/item-data";
2021-04-15 20:00:37 +02:00
import { createRollCheckMacro } from "../macros/roll-check";
2021-03-16 08:25:56 +01:00
import { createRollItemMacro } from "../macros/roll-item";
import notifications from "../ui/notifications";
2021-03-16 07:42:00 +01:00
export default function registerForHotbarDropHook(): void {
Hooks.on("hotbarDrop", async (hotbar: Hotbar, data: { type: string } & Record<string, unknown>, 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,
}),
);
}
2021-04-15 20:00:37 +02:00
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);
}
}
});
}