Fix conteneur/objet
This commit is contained in:
		| @@ -768,17 +768,17 @@ export class RdDActor extends Actor { | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   validateConteneur(itemId, conteneurId) { | ||||
|     let conteneurDest = this.items.find(conteneur => conteneurId == conteneur._id);  // recup conteneur | ||||
|     let conteneurSrc = this.items.find(conteneur => itemId == conteneur._id && conteneur.type == 'conteneur'); | ||||
|     let conteneurDest = this.items.find(conteneur => conteneurId == conteneur.id);  // recup 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 | ||||
|       for (let id of conteneurSrc.data.data.contenu) { | ||||
|         let subObjet = this.items.find(subobj => id == subobj._id); | ||||
|         if (subObjet && subObjet._id == conteneurDest._id) { | ||||
|         let subObjet = this.items.find(subobj => id == subobj.id); | ||||
|         if (subObjet && subObjet.id == conteneurDest.id) { | ||||
|           ui.notifications.warn("Impossible de déplacer un conteneur parent dans son fils !"); | ||||
|           return false; // Loop detected ! | ||||
|         } | ||||
|         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; | ||||
|     if (objet.type == 'conteneur') { | ||||
|       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 && subobjet.type == 'conteneur') { | ||||
|             sumEnc += this.getRecursiveEnc(subobjet); | ||||
| @@ -812,12 +812,12 @@ export class RdDActor extends Actor { | ||||
|    */ | ||||
|   testConteneurCapacite(itemId, conteneurId) { | ||||
|     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); | ||||
|     if (conteneur && conteneur.type == "conteneur") { | ||||
|       // Calculer le total actuel des contenus | ||||
|       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 | ||||
|       //console.log( currentEnc, newEnc, conteneur.data.data.capacite, conteneur.name); | ||||
|       if (nouvelObjet && ((encContenu + newEnc) > Number(conteneur.data.data.capacite))) { | ||||
| @@ -859,7 +859,7 @@ export class RdDActor extends Actor { | ||||
|    * de leurs ID */ | ||||
|   async enleverDeConteneur(itemId, conteneurId) { | ||||
|     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 | ||||
|       let data2use = duplicate(conteneur.data); | ||||
|       //console.log("Suppression du conteneur1", conteneurId, itemId,  conteneur.data.data.contenu); | ||||
| @@ -878,8 +878,8 @@ export class RdDActor extends Actor { | ||||
|    * de leurs ID */ | ||||
|   async ajouterAConteneur(itemId, conteneurId) { | ||||
|     if (!conteneurId) return; // pas de conteneur (porté sur soi) | ||||
|     let conteneur = this.items.find(conteneur => conteneurId == conteneur._id); | ||||
|     if (conteneur && conteneur.type == 'conteneur') { | ||||
|     let conteneur = this.items.find(conteneur => conteneurId == conteneur.id); | ||||
|     if (conteneur && conteneur.data.type == 'conteneur') { | ||||
|       let data2use = duplicate(conteneur.data); | ||||
|       data2use.data.contenu.push(itemId); | ||||
|       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 | ||||
|       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) { | ||||
|     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 objetId = dragData.id || dragData.data._id; | ||||
|     console.log("DRAG", dragData); | ||||
|     if (dragData.type == 'Item') { | ||||
|       if (dropID) { // Dropped over an item !!! | ||||
|         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"); | ||||
|         actorSheet.actor.moveItemsBetweenActors(objetId, dragData.actorId); | ||||
|         return false; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user