Préparer l'ouverture de conteneurs
Centraliser les méthodes pour retrouver un item, splitter, etc Les mêmes actions seront disponibles dans la fenêtre des conteneurs Préparer aussi le drop sur la fenêtre d'un conteneur
This commit is contained in:
parent
f1608170d1
commit
ef56b58d72
@ -14,6 +14,7 @@ import { RdDCarac } from "./rdd-carac.js";
|
||||
import { DialogSplitItem } from "./dialog-split-item.js";
|
||||
import { ReglesOptionelles } from "./regles-optionelles.js";
|
||||
import { DialogRepos } from "./dialog-repos.js";
|
||||
import { RdDSheetUtility } from "./rdd-sheet-utility.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class RdDActorSheet extends ActorSheet {
|
||||
@ -138,7 +139,7 @@ export class RdDActorSheet extends ActorSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _onDropItem(event, dragData) {
|
||||
const callSuper = await this.actor.processDropItem(event, dragData, this.objetVersConteneur);
|
||||
const callSuper = await this.actor.processDropItem(RdDSheetUtility.extractItemDropParameters(event, dragData, this.actor, this.objetVersConteneur));
|
||||
if (callSuper) {
|
||||
await super._onDropItem(event, dragData)
|
||||
}
|
||||
@ -165,43 +166,34 @@ export class RdDActorSheet extends ActorSheet {
|
||||
if (!this.options.editable) return;
|
||||
|
||||
html.find('.item-split').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const item = this.actor.items.get(li.data("item-id"));
|
||||
this.splitItem(item);
|
||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||
RdDSheetUtility.splitItem(item, this.actor);
|
||||
});
|
||||
html.find('.item-edit').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const item = this.actor.items.get(li.data("item-id"));
|
||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||
item.sheet.render(true);
|
||||
});
|
||||
html.find('.display-label a').click(async event => {
|
||||
let myID = event.currentTarget.attributes['data-item-id'].value;
|
||||
const item = this.actor.getEmbeddedDocument('Item', myID);
|
||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||
item.sheet.render(true);
|
||||
});
|
||||
html.find('.rencontre-delete').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const rencontreKey = li.data("item-id");
|
||||
this.actor.deleteTMRRencontre(rencontreKey);
|
||||
this.actor.deleteTMRRencontre(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.item-delete').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const li = RdDSheetUtility.getEventElement(event);
|
||||
RdDUtility.confirmerSuppression(this, li);
|
||||
});
|
||||
html.find('.item-vendre').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const itemId = li.data("item-id");
|
||||
const item = this.actor.getObjet(itemId);
|
||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||
item?.proposerVente();
|
||||
});
|
||||
html.find('.item-action').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const itemId = li.data("item-id");
|
||||
const item = this.actor.getObjet(itemId);
|
||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||
this.actor.actionItem(item);
|
||||
});
|
||||
html.find('.subacteur-delete').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const li = RdDSheetUtility.getEventElement(event);
|
||||
RdDUtility.confirmerSuppressionSubacteur(this, li);
|
||||
});
|
||||
|
||||
@ -254,8 +246,7 @@ export class RdDActorSheet extends ActorSheet {
|
||||
|
||||
// Equip Inventory Item
|
||||
html.find('.item-equip').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
this.actor.equiperObjet(li.data("item-id"));
|
||||
this.actor.equiperObjet(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
|
||||
// Roll Carac
|
||||
@ -278,34 +269,34 @@ export class RdDActorSheet extends ActorSheet {
|
||||
|
||||
// Roll Skill
|
||||
html.find('a.competence-label').click(async event => {
|
||||
this.actor.rollCompetence(this._getItemId(event));
|
||||
this.actor.rollCompetence(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.tache-label a').click(async event => {
|
||||
this.actor.rollTache(this._getItemId(event));
|
||||
this.actor.rollTache(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.meditation-label a').click(async event => {
|
||||
this.actor.rollMeditation(this._getItemId(event));
|
||||
this.actor.rollMeditation(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.chant-label a').click(async event => {
|
||||
this.actor.rollChant(this._getItemId(event));
|
||||
this.actor.rollChant(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.danse-label a').click(async event => {
|
||||
this.actor.rollDanse(this._getItemId(event));
|
||||
this.actor.rollDanse(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.musique-label a').click(async event => {
|
||||
this.actor.rollMusique(this._getItemId(event));
|
||||
this.actor.rollMusique(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.oeuvre-label a').click(async event => {
|
||||
this.actor.rollOeuvre(this._getItemId(event));
|
||||
this.actor.rollOeuvre(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.jeu-label a').click(async event => {
|
||||
this.actor.rollJeu(this._getItemId(event));
|
||||
this.actor.rollJeu(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.recettecuisine-label a').click(async event => {
|
||||
this.actor.rollRecetteCuisine(this._getItemId(event));
|
||||
this.actor.rollRecetteCuisine(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.subacteur-label a').click(async event => {
|
||||
let actorId = this._getEventItemData(event, 'actor-id');
|
||||
let actorId = RdDSheetUtility.getEventItemData(event, 'actor-id');
|
||||
let actor = game.actors.get(actorId);
|
||||
if (actor) {
|
||||
actor.sheet.render(true);
|
||||
@ -366,7 +357,7 @@ export class RdDActorSheet extends ActorSheet {
|
||||
this.actor.enleverTousLesEffets();
|
||||
});
|
||||
html.find('.conteneur-name a').click(async event => {
|
||||
RdDUtility.toggleAfficheContenu(this._getItemId(event));
|
||||
RdDUtility.toggleAfficheContenu(RdDSheetUtility.getItemId(event));
|
||||
this.render(true);
|
||||
});
|
||||
html.find('.carac-xp-augmenter').click(async event => {
|
||||
@ -374,10 +365,10 @@ export class RdDActorSheet extends ActorSheet {
|
||||
this.actor.updateCaracXPAuto(caracName);
|
||||
});
|
||||
html.find('.competence-xp-augmenter').click(async event => {
|
||||
this.actor.updateCompetenceXPAuto(this._getItemId(event));
|
||||
this.actor.updateCompetenceXPAuto(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
html.find('.competence-stress-augmenter').click(async event => {
|
||||
this.actor.updateCompetenceStress(this._getItemId(event));
|
||||
this.actor.updateCompetenceStress(RdDSheetUtility.getItemId(event));
|
||||
});
|
||||
|
||||
if (this.options.editCaracComp) {
|
||||
@ -482,12 +473,10 @@ export class RdDActorSheet extends ActorSheet {
|
||||
});
|
||||
|
||||
html.find('.monnaie-plus').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
this.actor.monnaieIncDec(li.data("item-id"), 1);
|
||||
this.actor.monnaieIncDec(RdDSheetUtility.getItemId(event), 1);
|
||||
});
|
||||
html.find('.monnaie-moins').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
this.actor.monnaieIncDec(li.data("item-id"), -1);
|
||||
this.actor.monnaieIncDec(RdDSheetUtility.getItemId(event), -1);
|
||||
});
|
||||
|
||||
html.find('.vie-plus').click(async event => {
|
||||
@ -516,15 +505,6 @@ export class RdDActorSheet extends ActorSheet {
|
||||
});
|
||||
}
|
||||
|
||||
_getItemId(event) {
|
||||
return this._getEventItemData(event, "item-id");
|
||||
}
|
||||
|
||||
_getEventItemData(event, property) {
|
||||
const li = $(event.currentTarget)?.parents(".item");
|
||||
return li?.data(property);
|
||||
}
|
||||
|
||||
_getEventArmeCombat(event) {
|
||||
const li = $(event.currentTarget)?.parents(".item");
|
||||
let armeName = li.data("arme-name");
|
||||
|
@ -6,6 +6,7 @@
|
||||
import { RdDUtility } from "./rdd-utility.js";
|
||||
import { HtmlUtility } from "./html-utility.js";
|
||||
import { Misc } from "./misc.js";
|
||||
import { RdDSheetUtility } from "./rdd-sheet-utility.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class RdDActorVehiculeSheet extends ActorSheet {
|
||||
@ -69,7 +70,7 @@ export class RdDActorVehiculeSheet extends ActorSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _onDropItem(event, dragData) {
|
||||
const callSuper = await this.actor.processDropItem(event, dragData, this.objetVersConteneur);
|
||||
const callSuper = await this.actor.processDropItem(RdDSheetUtility.extractItemDropParameters(event, dragData, this.actor, this.objetVersConteneur));
|
||||
if (callSuper) {
|
||||
await super._onDropItem(event, dragData)
|
||||
}
|
||||
@ -101,13 +102,12 @@ export class RdDActorVehiculeSheet extends ActorSheet {
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-edit').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
const item = this.actor.getEmbeddedDocument('Item', li.data("itemId"));
|
||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||
item.sheet.render(true);
|
||||
});
|
||||
// Delete Inventory Item
|
||||
html.find('.item-delete').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
const li = RdDSheetUtility.getEventElement(event);
|
||||
RdDUtility.confirmerSuppression(this, li);
|
||||
});
|
||||
|
||||
@ -119,18 +119,15 @@ export class RdDActorVehiculeSheet extends ActorSheet {
|
||||
});
|
||||
|
||||
html.find('.monnaie-plus').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
this.actor.monnaieIncDec(li.data("item-id"), 1);
|
||||
this.actor.monnaieIncDec(RdDSheetUtility.getItemId(event), 1);
|
||||
});
|
||||
html.find('.monnaie-moins').click(async event => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
this.actor.monnaieIncDec(li.data("item-id"), -1);
|
||||
this.actor.monnaieIncDec(RdDSheetUtility.getItemId(event), -1);
|
||||
});
|
||||
|
||||
// Display info about queue
|
||||
html.find('.conteneur-name a').click((event) => {
|
||||
let myID = event.currentTarget.attributes['data-item-id'].value;
|
||||
RdDUtility.toggleAfficheContenu(myID);
|
||||
RdDUtility.toggleAfficheContenu(RdDSheetUtility.getItemId(event));
|
||||
this.render(true);
|
||||
});
|
||||
|
||||
|
55
module/rdd-sheet-utility.js
Normal file
55
module/rdd-sheet-utility.js
Normal file
@ -0,0 +1,55 @@
|
||||
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 extractItemDropParameters(event, dragData, actor, objetVersConteneur) {
|
||||
console.log("extractItemDropParameters", actor.id, dragData);
|
||||
const itemId = dragData.id || dragData.data._id;
|
||||
const destItemId = $(event.target).parents(".item").attr("data-item-id");
|
||||
return {
|
||||
sourceActorId: dragData.actorId,
|
||||
targetActorId: actor.id,
|
||||
itemId: itemId,
|
||||
destId: destItemId,
|
||||
srcId: objetVersConteneur[itemId],
|
||||
onEnleverConteneur: () => { delete objetVersConteneur[itemId]; },
|
||||
onAjouterDansConteneur: (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 < Misc.data(item).data.quantite) {
|
||||
await item.diminuerQuantite(split);
|
||||
const itemData = duplicate(Misc.data(item));
|
||||
// todo: ajouter dans le même conteneur?
|
||||
itemData.data.quantite = split;
|
||||
await actor.createEmbeddedDocuments('Item', [itemData])
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user