509b7f97dc
Utilisation de system dans les data de formulaire pour tous les Item/Actor (à la base, ou les sous-éléments) Corrections sur les sorts en réserve (ce ne sont pas des Item) Petites améliorations: * `actor.itemTypes[type]` revient à faire (sans besoin de filtrer) `actor.items.filter(it => it.type == type)` * dans les ItemSheet, this.object et this.document remplacés par this.item * dans les ActorSheet, this.object et this.document remplacés par this.actor Quelques corrections en plus: * parade ne marchait pas * problèmes sur le commerce
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
import { DialogSplitItem } from "./dialog-split-item.js";
|
|
import { Misc } from "./misc.js";
|
|
|
|
export class RdDSheetUtility {
|
|
|
|
static getItem(event, actor) {
|
|
return actor.items.get(RdDSheetUtility.getItemId(event))
|
|
}
|
|
|
|
static getItemId(event) {
|
|
return RdDSheetUtility.getEventItemData(event, "item-id");
|
|
}
|
|
|
|
static getEventItemData(event, property) {
|
|
const node = RdDSheetUtility.getEventElement(event);
|
|
return node?.data(property);
|
|
}
|
|
|
|
static getEventElement(event) {
|
|
return $(event.currentTarget)?.parents(".item");
|
|
}
|
|
|
|
static prepareItemDropParameters(destItemId, actorId, dragData, objetVersConteneur) {
|
|
const item = fromUuidSync(dragData.uuid)
|
|
return {
|
|
destId: destItemId,
|
|
targetActorId: actorId,
|
|
itemId: item.id,
|
|
sourceActorId: item.actor.id,
|
|
srcId: objetVersConteneur[item.id],
|
|
onEnleverConteneur: () => { delete objetVersConteneur[item.id]; },
|
|
onAjouterDansConteneur: (itemId, conteneurId) => { objetVersConteneur[itemId] = conteneurId; }
|
|
}
|
|
}
|
|
|
|
static async splitItem(item, actor, onSplit = () => { }) {
|
|
const dialog = await DialogSplitItem.create(item, async (item, split) => {
|
|
await RdDSheetUtility._onSplitItem(item, split, actor);
|
|
onSplit();
|
|
});
|
|
dialog.render(true);
|
|
}
|
|
|
|
static async _onSplitItem(item, split, actor) {
|
|
if (split >= 1 && split < item.system.quantite) {
|
|
await item.diminuerQuantite(split);
|
|
const splitItem = duplicate(item);
|
|
// todo: ajouter dans le même conteneur?
|
|
splitItem.system.quantite = split;
|
|
await actor.createEmbeddedDocuments('Item', [splitItem])
|
|
}
|
|
}
|
|
} |