|  | @@ -544,6 +544,9 @@ export default {
 | 
	
		
			
				|  |  |            this.addNewPaperSymbolInstance('boussole_bg', true);
 | 
	
		
			
				|  |  |            this.paper_main_object.addChild(this.setPaperEntites());
 | 
	
		
			
				|  |  |            break;
 | 
	
		
			
				|  |  | +        case 'superposition':
 | 
	
		
			
				|  |  | +          this.addNewPaperSymbolInstance('boussole_bg', true);
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  |          case 'puissancedagir':
 | 
	
		
			
				|  |  |            this.addNewPaperSymbolInstance('puissanceagir_bg', true);
 | 
	
		
			
				|  |  |            this.paper_main_object.addChild(this.setPaperPuissanceagirBesoins());
 | 
	
	
		
			
				|  | @@ -1129,13 +1132,30 @@ export default {
 | 
	
		
			
				|  |  |            this.paper_main_object.children.agissantes_icons.visible = false;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    handlePaperVisibilityOnOpened(){
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +      // superposition
 | 
	
		
			
				|  |  | +      // scale down superposed entites on open
 | 
	
		
			
				|  |  | +      let entites_superposes = this.paper_main_object.children['entites_superposes'];
 | 
	
		
			
				|  |  | +      // console.log('entites_superposes.children', entites_superposes.children);
 | 
	
		
			
				|  |  | +      if(entites_superposes){
 | 
	
		
			
				|  |  | +        for(let paper_item of entites_superposes.children) {
 | 
	
		
			
				|  |  | +          // paper_item.definition = this.paper_symbol_definitions.entite_hover;
 | 
	
		
			
				|  |  | +          paper_item.scale(0.25)
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    handlePaperVisibilityOnOpened(){},
 | 
	
		
			
				|  |  |      handlePaperVisibilityOnBeforeClose(){
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | +      // superposition
 | 
	
		
			
				|  |  | +      // scale up superposed entites on open
 | 
	
		
			
				|  |  | +      let entites_superposes = this.paper_main_object.children['entites_superposes'];
 | 
	
		
			
				|  |  | +      // console.log('entites_superposes.children', entites_superposes.children);
 | 
	
		
			
				|  |  | +      if(entites_superposes){
 | 
	
		
			
				|  |  | +        for(let paper_item of entites_superposes.children) {
 | 
	
		
			
				|  |  | +          // paper_item.definition = this.paper_symbol_definitions.entite_hover;
 | 
	
		
			
				|  |  | +          paper_item.scale(4)
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      handlePaperVisibilityOnClosed(){
 | 
	
		
			
				|  |  |        // agissantes
 | 
	
	
		
			
				|  | @@ -1147,9 +1167,7 @@ export default {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    handlePaperVisibilityOnMapMode(){
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | +    handlePaperVisibilityOnMapMode(){},
 | 
	
		
			
				|  |  |      handlePaperVisibilityOnAfterEnginUpdate(){
 | 
	
		
			
				|  |  |        // contours focused
 | 
	
		
			
				|  |  |        if (!this.isFocused()){
 | 
	
	
		
			
				|  | @@ -1283,9 +1301,7 @@ export default {
 | 
	
		
			
				|  |  |          // console.log(`onmousemove ${this.id}`);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // prevent hover map item mouse event if cartouch is opened
 | 
	
		
			
				|  |  | -        if (this.cartouch_is_open) {
 | 
	
		
			
				|  |  | -          return;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        if (this.cartouch_is_open) return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (!this.is_open) {
 | 
	
		
			
				|  |  |            if (!this.opened_concernement && this.isFocused()) { // only if no concernement is opened and is this focused
 | 
	
	
		
			
				|  | @@ -1316,6 +1332,9 @@ export default {
 | 
	
		
			
				|  |  |              case "terraindevie":
 | 
	
		
			
				|  |  |                paper_group_tohit = this.paper_main_object.children['entites'];
 | 
	
		
			
				|  |  |                break;
 | 
	
		
			
				|  |  | +            case "superposition":
 | 
	
		
			
				|  |  | +              paper_group_tohit = this.paper_main_object.children['entites_superposes'];
 | 
	
		
			
				|  |  | +              break;
 | 
	
		
			
				|  |  |              case "action":
 | 
	
		
			
				|  |  |                paper_group_tohit = this.paper_main_object.children['agissantes'];
 | 
	
		
			
				|  |  |                break;
 | 
	
	
		
			
				|  | @@ -1363,11 +1382,12 @@ export default {
 | 
	
		
			
				|  |  |        
 | 
	
		
			
				|  |  |        this.paper_main_object.onClick = function(event){
 | 
	
		
			
				|  |  |          console.log('paper concernement onClick');
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |          // prevent hover map item mouse event if cartouch is opened
 | 
	
		
			
				|  |  |          if (this.cartouch_is_open) return;
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |          if (!this.is_open) { // si ce concernement n'est pas ouvet
 | 
	
		
			
				|  |  | +          console.log('mapitem is NOT opened');
 | 
	
		
			
				|  |  |            if (!this.opened_concernement) { // si aucun concernement n'est ouvert
 | 
	
		
			
				|  |  |              console.log(`Open me ${this.id}`);
 | 
	
		
			
				|  |  |              // open/close all concernements
 | 
	
	
		
			
				|  | @@ -1382,12 +1402,16 @@ export default {
 | 
	
		
			
				|  |  |              this.resetHoverElmt();
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          } else { // si ce concernement est ouvert
 | 
	
		
			
				|  |  | +          console.log('mapitem is opened');
 | 
	
		
			
				|  |  |            // lets define some options regarding the map_mode
 | 
	
		
			
				|  |  |            let group_to_hit = null;
 | 
	
		
			
				|  |  |            switch (this.map_mode) {
 | 
	
		
			
				|  |  |              case "terraindevie":
 | 
	
		
			
				|  |  |                group_to_hit = this.paper_main_object.children['entites'];
 | 
	
		
			
				|  |  |                break;
 | 
	
		
			
				|  |  | +            case "superposition":
 | 
	
		
			
				|  |  | +              group_to_hit = this.paper_main_object.children['entites_superposes'];
 | 
	
		
			
				|  |  | +              break;
 | 
	
		
			
				|  |  |              case "action":
 | 
	
		
			
				|  |  |                group_to_hit = this.paper_main_object.children['agissantes'];
 | 
	
		
			
				|  |  |                break;
 | 
	
	
		
			
				|  | @@ -1401,6 +1425,7 @@ export default {
 | 
	
		
			
				|  |  |              if (result) {
 | 
	
		
			
				|  |  |                switch (this.map_mode) {
 | 
	
		
			
				|  |  |                  case "terraindevie":
 | 
	
		
			
				|  |  | +                case "superposition":
 | 
	
		
			
				|  |  |                  case "action":
 | 
	
		
			
				|  |  |                    // we have clicked on an entite
 | 
	
		
			
				|  |  |                    this.$router.push({
 | 
	
	
		
			
				|  | @@ -1443,8 +1468,6 @@ export default {
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        if (open) {
 | 
	
		
			
				|  |  |          this.is_opening = true;
 | 
	
		
			
				|  |  | -        // paper bring to front
 | 
	
		
			
				|  |  | -        this.paper_main_object.bringToFront();
 | 
	
		
			
				|  |  |          // create the paper objects to display (like entite, besoin, etc)
 | 
	
		
			
				|  |  |          this.setPaperContents();
 | 
	
		
			
				|  |  |          this.handlePaperVisibilityOnBeforeOpen();
 | 
	
	
		
			
				|  | @@ -1454,8 +1477,7 @@ export default {
 | 
	
		
			
				|  |  |          // let s = this.canvas.height / (this.ray*2.8)
 | 
	
		
			
				|  |  |          let s = Math.min(this.canvas.height, this.canvas.width - this.cartouch_width) / (this.ray*2.8)
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // opening tweening
 | 
	
		
			
				|  |  | +        // create once the opening tweening
 | 
	
		
			
				|  |  |          this.tween = new Tween.Tween({s: this.scale, x: this.pos.x, y: this.pos.y, o: 0})
 | 
	
		
			
				|  |  |            .to({
 | 
	
		
			
				|  |  |              s: s,
 | 
	
	
		
			
				|  | @@ -1472,7 +1494,7 @@ export default {
 | 
	
		
			
				|  |  |              Matter.Body.scale(this.body, obj.s, obj.s)
 | 
	
		
			
				|  |  |              this.paper_main_object.scale(obj.s);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            // update superposition constraints points
 | 
	
		
			
				|  |  | +            // update superposition constraints points poisitions
 | 
	
		
			
				|  |  |              if (this.concernement.superposition_constraints_id 
 | 
	
		
			
				|  |  |                && this.concernement.superposition_constraints_id[this.id] 
 | 
	
		
			
				|  |  |                && this.concernement.superposition_constraints_id[this.id].length)
 | 
	
	
		
			
				|  | @@ -1531,7 +1553,8 @@ export default {
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |              Matter.Composite.add(this.matterEngine.world, [this.body, this.constraint]);
 | 
	
		
			
				|  |  |              
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | +            // paper bring to front
 | 
	
		
			
				|  |  | +            this.paper_main_object.bringToFront();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              this.is_opening = false;
 | 
	
		
			
				|  |  |            });
 | 
	
	
		
			
				|  | @@ -1552,6 +1575,7 @@ export default {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // this.setOpenedRecit(null);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        // create once the closing tween
 | 
	
		
			
				|  |  |          this.tween = new Tween.Tween({s: this.scale, o: 1})
 | 
	
		
			
				|  |  |            .to({s: 1, o: 0}, 500)
 | 
	
		
			
				|  |  |            .onUpdate((obj) => {
 | 
	
	
		
			
				|  | @@ -1563,7 +1587,7 @@ export default {
 | 
	
		
			
				|  |  |              Matter.Body.scale(this.body, obj.s, obj.s)
 | 
	
		
			
				|  |  |              this.paper_main_object.scale(obj.s);
 | 
	
		
			
				|  |  |              
 | 
	
		
			
				|  |  | -            // update superposition constraints points
 | 
	
		
			
				|  |  | +            // update superposition constraints points positions
 | 
	
		
			
				|  |  |              if (this.concernement.superposition_constraints_id 
 | 
	
		
			
				|  |  |                && this.concernement.superposition_constraints_id[this.id] 
 | 
	
		
			
				|  |  |                && this.concernement.superposition_constraints_id[this.id].length)
 | 
	
	
		
			
				|  | @@ -1623,7 +1647,8 @@ export default {
 | 
	
		
			
				|  |  |            // this.opened_concernement.id !== this.cid &&
 | 
	
		
			
				|  |  |            this.opened_concernement.opened_mapitem_id !== this.id 
 | 
	
		
			
				|  |  |            // && (!this.opened_concernement.all_superposed_concernements_id || this.opened_concernement.all_superposed_concernements_id.indexOf(this.id) < 0)
 | 
	
		
			
				|  |  | -          && (!this.opened_concernement.superposed_mapitem_id_by_mapitem_id[this.opened_concernement.opened_mapitem_id] // when we are not in superposition mode
 | 
	
		
			
				|  |  | +          && (!this.opened_concernement.superposed_mapitem_id_by_mapitem_id
 | 
	
		
			
				|  |  | +              || !this.opened_concernement.superposed_mapitem_id_by_mapitem_id[this.opened_concernement.opened_mapitem_id] // when we are not in superposition mode
 | 
	
		
			
				|  |  |                || this.opened_concernement.superposed_mapitem_id_by_mapitem_id[this.opened_concernement.opened_mapitem_id].indexOf(this.id) < 0) // this mapitem is not superposed to the opened mapitem
 | 
	
		
			
				|  |  |          ) {
 | 
	
		
			
				|  |  |            this.pushAside()
 | 
	
	
		
			
				|  | @@ -1952,7 +1977,8 @@ export default {
 | 
	
		
			
				|  |  |          || 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();
 | 
	
		
			
				|  |  | +          // this.setInitBodyVelocity();
 | 
	
		
			
				|  |  | +          Matter.Body.setVelocity(this.body, {x:0,y:0});
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        
 | 
	
		
			
				|  |  |      },
 |