Fix conteneur/objet
This commit is contained in:
parent
5b53d4c2c9
commit
5de4dd016f
@ -768,17 +768,17 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
validateConteneur(itemId, conteneurId) {
|
validateConteneur(itemId, conteneurId) {
|
||||||
let conteneurDest = this.items.find(conteneur => conteneurId == conteneur._id); // recup conteneur
|
let conteneurDest = this.items.find(conteneur => conteneurId == conteneur.id); // recup conteneur
|
||||||
let conteneurSrc = this.items.find(conteneur => itemId == conteneur._id && conteneur.type == 'conteneur');
|
let conteneurSrc = this.items.find(conteneur => itemId == conteneur.id && conteneur.type == 'conteneur');
|
||||||
if (conteneurSrc) { // Si c'est un conteneur, il faut vérifier qu'on ne le déplace pas vers un sous-conteneur lui appartenant
|
if (conteneurSrc) { // Si c'est un conteneur, il faut vérifier qu'on ne le déplace pas vers un sous-conteneur lui appartenant
|
||||||
for (let id of conteneurSrc.data.data.contenu) {
|
for (let id of conteneurSrc.data.data.contenu) {
|
||||||
let subObjet = this.items.find(subobj => id == subobj._id);
|
let subObjet = this.items.find(subobj => id == subobj.id);
|
||||||
if (subObjet && subObjet._id == conteneurDest._id) {
|
if (subObjet && subObjet.id == conteneurDest.id) {
|
||||||
ui.notifications.warn("Impossible de déplacer un conteneur parent dans son fils !");
|
ui.notifications.warn("Impossible de déplacer un conteneur parent dans son fils !");
|
||||||
return false; // Loop detected !
|
return false; // Loop detected !
|
||||||
}
|
}
|
||||||
if (subObjet && subObjet.type == 'conteneur') {
|
if (subObjet && subObjet.type == 'conteneur') {
|
||||||
return this.validateConteneur(subObjet._id, conteneurId);
|
return this.validateConteneur(subObjet.id, conteneurId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -790,7 +790,7 @@ export class RdDActor extends Actor {
|
|||||||
let sumEnc = 0;
|
let sumEnc = 0;
|
||||||
if (objet.type == 'conteneur') {
|
if (objet.type == 'conteneur') {
|
||||||
for (let id of objet.data.data.contenu) {
|
for (let id of objet.data.data.contenu) {
|
||||||
let subobjet = this.items.find(objet => (id == objet._id));
|
let subobjet = this.items.find(objet => (id == objet.id));
|
||||||
if (subobjet) {
|
if (subobjet) {
|
||||||
if (subobjet && subobjet.type == 'conteneur') {
|
if (subobjet && subobjet.type == 'conteneur') {
|
||||||
sumEnc += this.getRecursiveEnc(subobjet);
|
sumEnc += this.getRecursiveEnc(subobjet);
|
||||||
@ -812,12 +812,12 @@ export class RdDActor extends Actor {
|
|||||||
*/
|
*/
|
||||||
testConteneurCapacite(itemId, conteneurId) {
|
testConteneurCapacite(itemId, conteneurId) {
|
||||||
if (!conteneurId) return true; // pas de conteneur (porté sur soi), donc toujours OK.
|
if (!conteneurId) return true; // pas de conteneur (porté sur soi), donc toujours OK.
|
||||||
let conteneur = this.items.find(conteneur => conteneurId == conteneur._id); // recup conteneur
|
let conteneur = this.items.find(conteneur => conteneurId == conteneur.id); // recup conteneur
|
||||||
//console.log("Conteneur trouvé : ", conteneur);
|
//console.log("Conteneur trouvé : ", conteneur);
|
||||||
if (conteneur && conteneur.type == "conteneur") {
|
if (conteneur && conteneur.type == "conteneur") {
|
||||||
// Calculer le total actuel des contenus
|
// Calculer le total actuel des contenus
|
||||||
let encContenu = this.getRecursiveEnc(conteneur) - Number(conteneur.data.data.encombrement);
|
let encContenu = this.getRecursiveEnc(conteneur) - Number(conteneur.data.data.encombrement);
|
||||||
let nouvelObjet = this.items.find(objet => (itemId == objet._id)); // On chope l'objet
|
let nouvelObjet = this.items.find(objet => (itemId == objet.id)); // On chope l'objet
|
||||||
let newEnc = (nouvelObjet) ? this.getRecursiveEnc(nouvelObjet) : 0; // Calculer le total actuel du nouvel objet
|
let newEnc = (nouvelObjet) ? this.getRecursiveEnc(nouvelObjet) : 0; // Calculer le total actuel du nouvel objet
|
||||||
//console.log( currentEnc, newEnc, conteneur.data.data.capacite, conteneur.name);
|
//console.log( currentEnc, newEnc, conteneur.data.data.capacite, conteneur.name);
|
||||||
if (nouvelObjet && ((encContenu + newEnc) > Number(conteneur.data.data.capacite))) {
|
if (nouvelObjet && ((encContenu + newEnc) > Number(conteneur.data.data.capacite))) {
|
||||||
@ -859,7 +859,7 @@ export class RdDActor extends Actor {
|
|||||||
* de leurs ID */
|
* de leurs ID */
|
||||||
async enleverDeConteneur(itemId, conteneurId) {
|
async enleverDeConteneur(itemId, conteneurId) {
|
||||||
if (!conteneurId) return; // pas de conteneur (porté sur soi)
|
if (!conteneurId) return; // pas de conteneur (porté sur soi)
|
||||||
let conteneur = this.items.find(conteneur => conteneurId == conteneur._id); // recup conteneur
|
let conteneur = this.items.find(conteneur => conteneurId == conteneur.id); // recup conteneur
|
||||||
if (conteneur) { // Si présent
|
if (conteneur) { // Si présent
|
||||||
let data2use = duplicate(conteneur.data);
|
let data2use = duplicate(conteneur.data);
|
||||||
//console.log("Suppression du conteneur1", conteneurId, itemId, conteneur.data.data.contenu);
|
//console.log("Suppression du conteneur1", conteneurId, itemId, conteneur.data.data.contenu);
|
||||||
@ -878,8 +878,8 @@ export class RdDActor extends Actor {
|
|||||||
* de leurs ID */
|
* de leurs ID */
|
||||||
async ajouterAConteneur(itemId, conteneurId) {
|
async ajouterAConteneur(itemId, conteneurId) {
|
||||||
if (!conteneurId) return; // pas de conteneur (porté sur soi)
|
if (!conteneurId) return; // pas de conteneur (porté sur soi)
|
||||||
let conteneur = this.items.find(conteneur => conteneurId == conteneur._id);
|
let conteneur = this.items.find(conteneur => conteneurId == conteneur.id);
|
||||||
if (conteneur && conteneur.type == 'conteneur') {
|
if (conteneur && conteneur.data.type == 'conteneur') {
|
||||||
let data2use = duplicate(conteneur.data);
|
let data2use = duplicate(conteneur.data);
|
||||||
data2use.data.contenu.push(itemId);
|
data2use.data.contenu.push(itemId);
|
||||||
await this.updateEmbeddedEntity("OwnedItem", data2use);
|
await this.updateEmbeddedEntity("OwnedItem", data2use);
|
||||||
@ -3131,7 +3131,7 @@ export class RdDActor extends Actor {
|
|||||||
if (data && data['data.defaut_carac'] && data['data.xp']) { // C'est une compétence
|
if (data && data['data.defaut_carac'] && data['data.xp']) { // C'est une compétence
|
||||||
this.checkCompetenceXP(data['name'], data['data.xp']);
|
this.checkCompetenceXP(data['name'], data['data.xp']);
|
||||||
}
|
}
|
||||||
return super.updateEmbeddedEntity(embeddedName, data, options);
|
return super.updateEmbeddedDocuments("Item", [data], options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -262,9 +262,10 @@ export class RdDUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async processItemDropEvent(actorSheet, event) {
|
static async processItemDropEvent(actorSheet, event) {
|
||||||
let dragData = JSON.parse(event.dataTransfer.getData("text/plain"));
|
let dragData = JSON.parse(event.dataTransfer.getData("text/plain"));
|
||||||
console.log(dragData, actorSheet.actor._id);
|
console.log(dragData, actorSheet.actor.id);
|
||||||
let dropID = $(event.target).parents(".item").attr("data-item-id"); // Only relevant if container drop
|
let dropID = $(event.target).parents(".item").attr("data-item-id"); // Only relevant if container drop
|
||||||
let objetId = dragData.id || dragData.data._id;
|
let objetId = dragData.id || dragData.data._id;
|
||||||
|
console.log("DRAG", dragData);
|
||||||
if (dragData.type == 'Item') {
|
if (dragData.type == 'Item') {
|
||||||
if (dropID) { // Dropped over an item !!!
|
if (dropID) { // Dropped over an item !!!
|
||||||
if (actorSheet.objetVersConteneur[objetId] != dropID && objetId != dropID) {
|
if (actorSheet.objetVersConteneur[objetId] != dropID && objetId != dropID) {
|
||||||
@ -274,7 +275,7 @@ export class RdDUtility {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dragData.actorId && dragData.actorId != actorSheet.actor._id) { // Un acteur est à l'origine de l'item -> deplacement
|
if (dragData.actorId && dragData.actorId != actorSheet.actor.id) { // Un acteur est à l'origine de l'item -> deplacement
|
||||||
console.log("Moving objects");
|
console.log("Moving objects");
|
||||||
actorSheet.actor.moveItemsBetweenActors(objetId, dragData.actorId);
|
actorSheet.actor.moveItemsBetweenActors(objetId, dragData.actorId);
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user