Compare commits

...

2 commits

Author SHA1 Message Date
de7c3f5fff
refactor: prevent creating items in actors that cannot own them
All checks were successful
ci/woodpecker/pr/checks Pipeline was successful
ci/woodpecker/push/checks Pipeline was successful
ci/woodpecker/manual/checks Pipeline was successful
ci/woodpecker/manual/release Pipeline was successful
2023-07-27 01:07:52 +02:00
8a5fa072ce
fix: make drag & drop of items from actor sheet work again 2023-07-27 01:05:35 +02:00
5 changed files with 32 additions and 23 deletions

View file

@ -457,27 +457,6 @@ export class DS4ActorSheet extends ActorSheet {
this.actor.updateEmbeddedDocuments("Item", updates); 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);
}
} }
/** /**

View file

@ -4,12 +4,14 @@
import { registerForHotbarDropHook } from "./hotbar-drop"; import { registerForHotbarDropHook } from "./hotbar-drop";
import { registerForInitHook } from "./init"; import { registerForInitHook } from "./init";
import { registerForPreCreateItemHook } from "./pre-create-item";
import { registerForReadyHook } from "./ready"; import { registerForReadyHook } from "./ready";
import { registerForRenderHooks } from "./render"; import { registerForRenderHooks } from "./render";
import { registerForSetupHook } from "./setup"; import { registerForSetupHook } from "./setup";
export function registerForHooks(): void { export function registerForHooks(): void {
registerForHotbarDropHook(); registerForHotbarDropHook();
registerForPreCreateItemHook();
registerForInitHook(); registerForInitHook();
registerForReadyHook(); registerForReadyHook();
registerForRenderHooks(); registerForRenderHooks();

View file

@ -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;
}
}

View file

@ -9,7 +9,7 @@ SPDX-License-Identifier: MIT
!-- Render an effect list entry row. !-- Render an effect list entry row.
!-- @param effectData: The data of the item. !-- @param effectData: The data of the item.
--}} --}}
<li class="ds4-embedded-document-list__row effect" data-effect-uuid="{{effectData.uuid}}"> <li class="ds4-embedded-document-list__row effect" data-effect-uuid="{{effectData.uuid}}" data-effect-id="{{effectData.id}}">
{{!-- enabled --}} {{!-- enabled --}}
<input class="ds4-embedded-document-list__editable ds4-embedded-document-list__editable--checkbox change-effect" <input class="ds4-embedded-document-list__editable ds4-embedded-document-list__editable--checkbox change-effect"
type="checkbox" {{checked (ne effectData.disabled true)}} data-dtype="Boolean" data-property="disabled" type="checkbox" {{checked (ne effectData.disabled true)}} data-dtype="Boolean" data-property="disabled"

View file

@ -15,7 +15,7 @@ SPDX-License-Identifier: MIT
!-- @param hideDescription: A flag to disable the description column. !-- @param hideDescription: A flag to disable the description column.
!-- @param @partial-block: Custom column headers can be passed using the partial block. !-- @param @partial-block: Custom column headers can be passed using the partial block.
--}} --}}
<li class="ds4-embedded-document-list__row item" data-item-uuid="{{item.uuid}}"> <li class="ds4-embedded-document-list__row item" data-item-uuid="{{item.uuid}}" data-item-id="{{item.id}}">
{{!-- equipped --}} {{!-- equipped --}}
{{#if isEquipable}} {{#if isEquipable}}
<input class="ds4-embedded-document-list__editable ds4-embedded-document-list__editable--checkbox change-item" <input class="ds4-embedded-document-list__editable ds4-embedded-document-list__editable--checkbox change-item"