| 
					
				 | 
			
			
				@@ -335,24 +335,6 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             id: this.concernement.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Create parts of the body : entities 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (let i = 0; i < this.entites.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // parts.push(Matter.Bodies.circle(this.pos.x+this.entites[i].display.pos.x, this.pos.y+this.entites[i].display.pos.y, 15, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //   item_type: 'entite', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //   id: this.entites[i].id   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // })) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          this.body_parts.push(Matter.Bodies.circle(this.entites[i].display.pos.x, this.entites[i].display.pos.y, 0.8, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            item_type: 'entite', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            id: this.entites[i].entite.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            cid: this.concernement.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            agissante: this.entites[i].entite.agissante, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            isSensor: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          })) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Create parts of the body : besoins and responses 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.createBesoinsBodyParts(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // create the body 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.body = Matter.Body.create({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -397,49 +379,6 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         y: -delta + Math.random()*delta*2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    createBesoinsBodyParts(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let res_fields = ['qui','quoi','ou','avec']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let arc = (360 / 16);               // unit arc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let r = (this.ray * this.scale)/5;  // unit ray 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let br = r - r/3;                   // besoin ray 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      for (let i = 0; i < this.concernement.besoins.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let start_a = arc * i;              // angle depart (for reponses) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let center_a = start_a + arc/2;     // angle central 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let x = Math.cos(center_a*(Math.PI/180)) * br; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let y = Math.sin(center_a*(Math.PI/180)) * br; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.body_parts.push(Matter.Bodies.circle(x, y, 0.8, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          item_type: 'besoin', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          id: this.concernement.besoins[i].id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          cid: this.concernement.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          isSensor: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let res_arc = arc / (1 + this.concernement.besoins[i].reponses.length); // unit arc for responses depending responses number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (let j = 0; j < this.concernement.besoins[i].reponses.length; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          let res_a = start_a + res_arc * (j+1); // angle for response line 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          for (let f = 0; f < res_fields.length; f++) { // loop through all 4 fields, keep only the last one filled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if( this.concernement.besoins[i].reponses[j][res_fields[f]] // if field filled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              && (f === res_fields.length -1 || !this.concernement.besoins[i].reponses[j][res_fields[f+1]]) // and is last field or last field filled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              let rr = this.ray * this.scale - r*f - r/2; // reponse field ray 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              let rx = Math.cos(res_a*(Math.PI/180)) * rr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              let ry = Math.sin(res_a*(Math.PI/180)) * rr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-               
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              this.body_parts.push(Matter.Bodies.circle(rx, ry, 0.8, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                item_type: 'reponse', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // field: res_fields[f], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                id: this.concernement.besoins[i].reponses[j].id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                bid: this.concernement.besoins[i].id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                cid: this.concernement.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                isSensor: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // PAPER OBJECTS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     initPaperObjects(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.paper_objects = new paper.Group({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -449,6 +388,7 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.paper_objects.addChild(this.setPaperBoussoleBG()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.paper_objects.addChild(this.setPaperContour()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.paper_objects.addChild(this.setPaperEntites()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (this.concernement.has_puissancedagir) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.paper_objects.addChild(this.setPaperPuissanceagirBG()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.paper_objects.addChild(this.setPaperPuissanceagirICON()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -709,16 +649,36 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         pivot: new paper.Point(this.pos), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: 'entites' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      for (let i = 0; i < this.body.parts.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (this.body.parts[i].item_type === 'entite') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          let part = this.body.parts[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (let i = 0; i < this.entites.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        g.addChild(new paper.Path.Circle({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          pivot: new paper.Point(this.pos), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          center: [this.pos.x + this.entites[i].display.pos.x, this.pos.y + this.entites[i].display.pos.y], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          radius: 0.5, //0.3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          fillColor: '#000', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item_id: this.entites[i].entite.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item_type: 'entite' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return g; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setPaperAgissantes(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let g = new paper.Group({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pivot: new paper.Point(this.pos), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        name: 'agissantes' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (let i = 0; i < this.entites.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (this.entites[i].entite.agissante) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           g.addChild(new paper.Path.Circle({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            center: [part.position.x, part.position.y], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pivot: new paper.Point(this.pos), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            center: [this.pos.x + this.entites[i].display.pos.x, this.pos.y + this.entites[i].display.pos.y], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             radius: 0.5, //0.3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             fillColor: '#000', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            item_id: part.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            strokeColor: '#000', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            strokeWidth: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item_id: this.entites[i].entite.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item_type: 'entite' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           })) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return g; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -803,37 +763,53 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: 'puissanceagir_besoins' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      for (let i = 0; i < this.body.parts.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (this.body.parts[i].item_type === 'besoin' || this.body.parts[i].item_type === 'reponse') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          let part = this.body.parts[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          switch (part.item_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case 'besoin': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let res_fields = ['qui','quoi','ou','avec']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let arc = (360 / 16);               // unit arc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let r = (this.ray * this.scale)/5;  // unit ray 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let br = r - r/3;                   // besoin ray 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (let i = 0; i < this.concernement.besoins.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let start_a = arc * i;              // angle depart (for reponses) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let center_a = start_a + arc/2;     // angle central 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let x = Math.cos(center_a*(Math.PI/180)) * br; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let y = Math.sin(center_a*(Math.PI/180)) * br; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        g.addChild( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          new paper.Path({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pivot: new paper.Point(this.pos), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            segments: this.getDiamondSegments(this.pos.x + x, this.pos.y + y, 1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fillColor: '#000', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item_id: this.concernement.besoins[i].id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item_cid: this.concernement.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item_type: 'besoin' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let res_arc = arc / (1 + this.concernement.besoins[i].reponses.length); // unit arc for responses depending responses number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (let j = 0; j < this.concernement.besoins[i].reponses.length; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let res_a = start_a + res_arc * (j+1); // angle for response line 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          for (let f = 0; f < res_fields.length; f++) { // loop through all 4 fields, keep only the last one filled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if( this.concernement.besoins[i].reponses[j][res_fields[f]] // if field filled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              && (f === res_fields.length -1 || !this.concernement.besoins[i].reponses[j][res_fields[f+1]]) // and is last field or last field filled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              let rr = this.ray * this.scale - r*f - r/2; // reponse field ray 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              let rx = Math.cos(res_a*(Math.PI/180)) * rr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              let ry = Math.sin(res_a*(Math.PI/180)) * rr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               g.addChild( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new paper.Path({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  segments: this.getDiamondSegments(part.position.x, part.position.y, 1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  fillColor: '#000', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   pivot: new paper.Point(this.pos), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  item_id: part.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  item_type: 'besoin' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case 'reponse': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              g.addChild( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new paper.Path({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  segments: this.getDiamondSegments(part.position.x, part.position.y, 1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  segments: this.getDiamondSegments(this.pos.x + rx, this.pos.y + ry, 1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   fillColor: '#eee', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   strokeColor: "#000", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   strokeWidth: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  pivot: new paper.Point(this.pos), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  item_id: part.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  item_bid: part.bid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  item_cid: part.cid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  item_id: this.concernement.besoins[i].reponses[j].id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  item_bid: this.concernement.besoins[i].id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  item_cid: this.concernement.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   item_type: 'reponse' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -849,27 +825,6 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [x, y - r] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    setPaperAgissantes(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let g = new paper.Group({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pivot: new paper.Point(this.pos), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        name: 'agissantes' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      for (let i = 0; i < this.body.parts.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (this.body.parts[i].item_type === 'entite' && this.body.parts[i].agissante) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          let part = this.body.parts[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          g.addChild(new paper.Path.Circle({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            center: [part.position.x, part.position.y], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            radius: 0.3, //0.3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            fillColor: '#000', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            strokeColor: '#000', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            strokeWidth: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            item_id: part.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            item_type: 'entite' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          })) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return g; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     setPaperDoleanceBG(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       var r = this.ray * this.scale * 0.8;  // ray 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       var dr = r/2;                         // demi ray 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1803,7 +1758,7 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         : this.canvas.width - pseudo_center_x; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // max and min force 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       let minf = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let maxf = 10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let maxf = 6; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // scale factor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       let scale = (maxf-minf) / (maxp-minp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // get the inversed distance 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1840,7 +1795,7 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         : pseudo_center_x; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // max and min force 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       let minf = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let maxf = 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let maxf = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // scale factor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       let scale = (maxf-minf) / (maxp-minp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // get the inversed distance from the side 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1867,19 +1822,46 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     applyShuffleForces() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var dist, dir, x_velocity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      dir = this.pos.x > this.canvas.width/2 ? -1 : 1; // get the direction to the centre 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      dist = (dir < 0 ? this.pos.x - this.canvas.width/2 : this.canvas.width/2 - this.pos.x); // get the distance from the side 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      x_velocity = Math.pow(dist/650,10) * dir; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // var dist, dir, x_velocity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // dir = this.pos.x > this.canvas.width/2 ? -1 : 1; // get the direction to the centre 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // dist = (dir < 0 ? this.pos.x - this.canvas.width/2 : this.canvas.width/2 - this.pos.x); // get the distance from the side 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // x_velocity = Math.pow(dist/650,10) * dir; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let pseudo_center_x = (this.canvas.width - this.cartouch_width) / 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // get the direction to the centre 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let dir = this.pos.x > pseudo_center_x  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ? -1 // to left  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        : 1; // to right 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // max & min item position 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let minp = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let maxp = dir < 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ? this.canvas.width - pseudo_center_x 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        : pseudo_center_x; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // max and min force 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let minf = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let maxf = 10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // scale factor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let scale = (maxf-minf) / (maxp-minp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // get the inversed distance from the side 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let dist = dir < 0  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ? this.pos.x - pseudo_center_x  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        : pseudo_center_x - this.pos.x;  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let x_velocity = Math.exp(minf + scale*(dist-minp)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      Matter.Body.setVelocity(this.body, {x: x_velocity, y: 0}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let y_velocity = -10 + Math.random() * 10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // let ori_pos = dir < 0  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   ? {x:this.canvas.width, y:this.body.position.y}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   : {x:0, y:this.body.position.y}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // let x_force = Math.pow(dist/800,10) * dir; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Matter.Body.setVelocity(this.body, {x: x_velocity, y: y_velocity}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     onAfterEngineUpdate (event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // respawn element if outside screen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // if(this.pos.x < 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //   || this.pos.x > this.canvas.width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //   || this.pos.y < 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //   || this.pos.y > this.canvas.height){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // if(this.pos.x <= 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   || this.pos.x >= this.canvas.width 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   || this.pos.y <= 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   || this.pos.y >= this.canvas.height){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       //     this.pos = this.getRandomPos() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       //     Matter.Body.setPosition(this.body, {x:this.pos.x, y:this.pos.y}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       //     this.setInitBodyVelocity(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1956,34 +1938,8 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         && this.map_mode !== 'doleancer'  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         && this.map_mode !== 'action' ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           this.paper_objects.children.entites.visible = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // if (this.opened_entite_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //   // console.log('this.paper_objects.children.entites', this.paper_objects.children.entites); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //   this.paper_objects.children.entites.children.forEach((entite) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //     // console.log('entite', entite); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //     if (entite.item_id === this.opened_entite_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //       entite.style.fillColor = '#01ffe2'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //       entite.style.fillColor = '#000'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //   this.paper_objects.children.entites.children.forEach((entite) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //     entite.style.fillColor = '#000'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //   }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.paper_objects.children.entites.visible = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // if(this.map_mode === 'puissancedagir' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   || this.map_mode === 'doleancer'  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   || this.map_mode === 'action' ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //     this.paper_objects.children.entites.visible = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   this.paper_objects.children.entites.visible = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   // this.paper_objects.children.entites.children.forEach((entite) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   //     // entite.style.strokeWidth = 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   //     // entite.style.strokeColor = "#fff"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   //   }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |