From b08d2c8df907c4a1c96387ac6c46c74c6b9b5807 Mon Sep 17 00:00:00 2001 From: clmaisonha Date: Wed, 1 Jul 2020 22:50:44 +0200 Subject: [PATCH] =?UTF-8?q?R=C3=A9solution=20du=20probl=C3=A8me=20de=20l'a?= =?UTF-8?q?ffichage=20du=20son=20d=C3=A9sactiv=C3=A9=20-=20Lorsque=20le=20?= =?UTF-8?q?robot=20recule=20contre=20un=20mur,=20il=20ne=20perd=20normalem?= =?UTF-8?q?ent=20plus=20de=20vitesse,=20la=20vitesse=20qu'il=20ne=20peut?= =?UTF-8?q?=20pas=20utiliser=20est=20restransmise=20pour=20longer=20le=20m?= =?UTF-8?q?ur=20-=20Modification=20de=20la=20touche=20pour=20supprim=C3=A9?= =?UTF-8?q?=20de=20ECHAP=20vers=20SUPPR=20-=20la=20fonction=20getNode=20es?= =?UTF-8?q?t=20faite=20de=20mani=C3=A8re=20plus=20r=C3=A9cursive=20dans=20?= =?UTF-8?q?le=20but=20de=20r=C3=A9duire=20la=20taille=20du=20code=20mais?= =?UTF-8?q?=20aussi=20l'ex=C3=A9cution=20-=20Suppression=20du=20temps=20al?= =?UTF-8?q?=C3=A9atoire=20de=20rechargement=20(il=20sera=20possible=20par?= =?UTF-8?q?=20la=20suite=20de=20modifier=20ce=20temps=20de=20rechargement?= =?UTF-8?q?=20en=20cours=20ou=20avant=20le=20jeu)=20-=20Modification=20du?= =?UTF-8?q?=20cercle=20rouge=20par=20l'image=20du=20robot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Code/assets/en/robots/enemy.png | Bin 0 -> 51077 bytes Code/assets/fr/robots/enemy.png | Bin 0 -> 51077 bytes Code/public/js/level1.min.js | 2 +- Code/public/js/level2.min.js | 2 +- Code/src/js/level1/Init.js | 1 + Code/src/js/level2/Game.js | 14 ++++++++---- Code/src/js/level2/HealthBar.js | 4 ++-- Code/src/js/level2/LoadFile.js | 2 ++ Code/src/js/level2/RectangleNode.js | 22 +++++-------------- Code/src/js/level2/Robot.js | 33 +++++++++++++++++++++++----- 10 files changed, 49 insertions(+), 31 deletions(-) create mode 100644 Code/assets/en/robots/enemy.png create mode 100644 Code/assets/fr/robots/enemy.png diff --git a/Code/assets/en/robots/enemy.png b/Code/assets/en/robots/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..46b5b0092ea7f306139304806d15433c1cf6e9ef GIT binary patch literal 51077 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 RMqX3lqo-x8SxL5w`akH~6}A8X literal 0 HcmV?d00001 diff --git a/Code/assets/fr/robots/enemy.png b/Code/assets/fr/robots/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..46b5b0092ea7f306139304806d15433c1cf6e9ef GIT binary patch literal 51077 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 RMqX3lqo-x8SxL5w`akH~6}A8X literal 0 HcmV?d00001 diff --git a/Code/public/js/level1.min.js b/Code/public/js/level1.min.js index a0dc247..4174dee 100644 --- a/Code/public/js/level1.min.js +++ b/Code/public/js/level1.min.js @@ -1 +1 @@ -function selectWord(e,t){switch(LANG){case"fr":return t;default:return e}}function newGame(e){-1!==e.scene.getIndex("Game")&&e.scene.remove("Game"),e.scene.add("Game",new Game(e))}function chooseTarget(e,t){let a=2*WIDTH_MAP,n=[];return t.forEach(function(t){if(t!==e){let o=Math.hypot(t.x-e.x,t.y-e.y);a>=o&&(a>o&&(a=o,n=[]),n.push(t))}}),n.length>1?n[Math.floor(Math.random()*(n.length+1))]:n[0]}var listBonus=[],LANG=navigator.language.substr(0,2).toLowerCase(),SPEED_GAME=1;const MYSELF="myself",SHIELD_PER_SECOND=5,COLOR_ATTACK=16711680,COLOR_MOVE=255,COLOR_CONDITION=921102,WIDTH_WINDOW=$(document).width()-20,HEIGHT_WINDOW=$(document).height()-20,WIDTH_MAP=WIDTH_WINDOW=o&&(a>o&&(a=o,n=[]),n.push(t))}}),n.length>1?n[Math.floor(Math.random()*(n.length+1))]:n[0]}var listBonus=[],LANG=navigator.language.substr(0,2).toLowerCase(),SPEED_GAME=1;const MYSELF="myself",SHIELD_PER_SECOND=5,COLOR_ATTACK=16711680,COLOR_MOVE=255,COLOR_CONDITION=921102,WIDTH_WINDOW=$(document).width()-20,HEIGHT_WINDOW=$(document).height()-20,WIDTH_MAP=WIDTH_WINDOW1/3?e>2/3?(e=1,this.percentBonus=1):(e=2/3,this.percentBonus=1.5):(e=1/3,this.percentBonus=2),this.percentRange=e}do(e){return!(!e.haveTarget()||!e.isTargetInRange(this.percentRange))&&e.attackTarget(this.percentBonus)}getFrame(){return 3*this.percentRange-1}}class BonusAttack extends Bonus{constructor(e,t,s,i,h){super(e,t,s,i,"bonusAttack",h)}useOn(e){let t=e.speed;e.setSpeed(t+this.value),this.scene.time.addEvent({delay:this.time,callback:e.setSpeed(t)}),this.destroy()}}class BonusShield extends Bonus{constructor(e,t,s,i,h){super(e,t,s,i,"bonusShield",h)}useOn(e){e.shield.valueMax=e.shield.valueMax+this.value,e.shield.value=e.shield.value+this.val,this.destroy()}}class BonusSpeed extends Bonus{constructor(e,t,s,i,h,a){let n;switch(h){case 1:n="bonusSpeed0";break;case 2:n="bonusSpeed1";break;case 3:default:n="bonusSpeed2"}super(e,t,s,i,n,h),this.time=a}useOn(e){e.increaseSpeed(this.value),this.scene.time.addEvent({delay:this.time,callback:()=>e.decreaseSpeed(this.value)}),this.destroy()}}class Boot extends ManageLang{constructor(e){super("Boot",e)}create(){super.create();this.add.text(WIDTH_WINDOW/2,HEIGHT_WINDOW/3,"WARIA",{font:"200px stencil",fill:"#e2e2e2"}).setOrigin(.5,.5);let e=this.add.sprite(WIDTH_WINDOW/2,HEIGHT_WINDOW/3*2,"playLetter").setInteractive();e.on("pointerout",()=>e.setFrame(0)),e.on("pointerover",()=>e.setFrame(1)),e.on("pointerdown",()=>this.clickPlay(e))}clickPlay(e){console.log("Play"),this.father.scene.add("Type",new Type(this.father)),this.scene.start("Type")}}class Category{constructor(e="undefined",t=!0,s=!0){this.name=e,this.single=t,this.lBtn=[],this.lValue=[],this.obligatory=s}add(e,t){0!==this.lBtn.length&&this.single&&(this.lBtn[0].clearTint(),this.lValue=[],this.lBtn=[]),this.lValue.push(t),this.lBtn.push(e),e.tint=15718407}getValue(){return this.single?this.lValue[0]:this.lValue}validate(){return!(0===this.lBtn.length&&this.obligatory)}remove(e){let t=this.lBtn.indexOf(e);-1!==t&&(this.lBtn.splice(t,1),this.lValue.splice(t,1)),e.clearTint()}}class Condition{constructor(e,t=!1,s=!1,i,h){this.shieldFilter=t,this.rangeFilter=s,this.shield=i,this.range=h,this.myself=e,this.lNode=[]}addNode(e){this.lNode.push(e)}do(e){if(this.doCondition(e))for(let t=0;t{this.clickBin()})}update(e,t){super.update(e,t),this.doLine&&this.tree.updateLine()}finish(){let e;console.log("FINISH"),e=this.gm.winner()?new Winner(this.father):new Looser(this.father),this.father.scene.add("Finish",e),this.scene.pause("Game"),this.scene.launch("Finish")}clickNode(){this.tryClick(),this.selected=this.tree.getSelected(),null!==this.selected&&(this.selected!==this.tree&&(this.pencil.setVisible(!0),this.bin.setVisible(!0)),this.selected.canAddNode&&this.plus.setVisible(!0))}doDrag(e,t,s,i){t.setX(s),t.setY(i)}dragStart(e){console.log("START DRAG"),this.doLine=!0,this.pauseScene(e)}dragEnd(){console.log("END DRAG"),this.doLine=!1}pauseScene(e){this.linePlay=0,this.changeFrame(e,0),this.gm.pause()}resume(){this.linePlay=1;this.tree.sort((e,t)=>e.getX()-t.getX()),this.gm.modifyNodes(this.tree.getNodes()),this.gm.resume()}changeFrame(e,t=0,s=0){e.setFrame(t+2*s)}createButton(){let e=WIDTH_MAP+WIDTH_WINDOW/10,t=WIDTH_MAP+HEIGHT_WINDOW/10+5,s=HEIGHT_WINDOW/10,i=HEIGHT_WINDOW/15,h=this.add.sprite(10,10,"back").setOrigin(0,0).setInteractive(),a=this.add.sprite(e,t,"play").setOrigin(1,0).setInteractive(),n=this.add.sprite(e-s,t,"speed").setOrigin(1,0).setInteractive();this.pencil=this.add.sprite(e-2*s,t,"pencil").setOrigin(1,0).setInteractive().setVisible(!1),this.bin=this.add.sprite(e-3*s,t,"bin").setOrigin(1,0).setInteractive().setVisible(!1),this.plus=this.add.sprite(e-4*s,t,"plus").setOrigin(1,0).setInteractive().setVisible(!1);let r=this.add.sprite(e-5*s,t,"mute").setOrigin(1,0).setInteractive();this.linePlay=0,this.lineSpeed=0,this.father.sound.mute?this.lineMute=1:this.lineMute=0,h.displayHeight=h.displayWidth=i,a.displayHeight=a.displayWidth=i,n.displayHeight=n.displayWidth=i,r.displayHeight=r.displayWidth=i,this.pencil.displayHeight=this.pencil.displayWidth=i,this.bin.displayHeight=this.bin.displayWidth=i,this.plus.displayHeight=this.plus.displayWidth=i,a.on("pointerout",()=>this.changeFrame(a,0,this.linePlay)),a.on("pointerover",()=>this.changeFrame(a,1,this.linePlay)),n.on("pointerout",()=>this.changeFrame(n,0,this.lineSpeed)),n.on("pointerover",()=>this.changeFrame(n,1,this.lineSpeed)),r.on("pointerout",()=>this.changeFrame(r,0,this.lineMute)),r.on("pointerover",()=>this.changeFrame(r,1,this.lineMute)),this.creatBtnOutAndOver(h),this.creatBtnOutAndOver(this.pencil),this.creatBtnOutAndOver(this.bin),this.creatBtnOutAndOver(this.plus),a.on("pointerdown",()=>this.clickPlay(a)),n.on("pointerdown",()=>this.clickSpeed(n)),h.on("pointerdown",()=>this.clickBack()),r.on("pointerdown",()=>this.clickMute(r)),this.pencil.on("pointerdown",()=>this.clickPencil()),this.bin.on("pointerdown",()=>this.clickBin()),this.plus.on("pointerdown",()=>this.clickPlus()),this.input.on("pointerdown",()=>this.clickNode()),this.input.on("drag",this.doDrag),this.input.on("dragstart",()=>this.dragStart(a)),this.input.on("dragend",()=>this.dragEnd())}creatBtnOutAndOver(e){e.on("pointerout",()=>this.changeFrame(e,0)),e.on("pointerover",()=>this.changeFrame(e,1))}clickPlay(e){this.scene.isPaused("GamingBoard")?this.resume():this.pauseScene(e),this.changeFrame(e,1,this.linePlay)}clickSpeed(e){1===SPEED_GAME?(SPEED_GAME=2,this.lineSpeed=1):(SPEED_GAME=1,this.lineSpeed=0),this.changeFrame(e,1,this.lineSpeed)}clickPencil(){console.log("PENCIL"),this.changeFrame(this.pencil,0)}clickBin(){null!==this.selected&&(console.log("BIN"),this.tree.delete(this.selected),this.changeFrame(this.bin,0),this.tryClick())}clickPlus(){console.log("PLUS"),this.father.scene.add("PlusNode",new PlusNode(this.father,this,this.selected)),this.scene.launch("PlusNode"),this.changeFrame(this.plus,0),this.scene.pause("Game")}clickBack(){console.log("BACK"),this.father.scene.stop("GamingBoard"),this.father.scene.remove("GamingBoard"),this.father.scene.stop("Game"),this.father.scene.start("Type")}clickMute(e){console.log("MUTE"),this.father.sound.mute?(this.father.sound.mute=!1,this.lineMute=0):(this.father.sound.mute=!0,this.lineMute=1),this.changeFrame(e,1,this.lineMute)}tryClick(){this.pencil.setVisible(!1),this.bin.setVisible(!1),this.plus.setVisible(!1),null!=this.selected&&(this.selected.deselect(),this.selected=null)}}class GamingBoard extends Phaser.Scene{constructor(e){super("GamingBoard"),this.listRobot=[],listBonus=[],this.father=e,this.end=!1}preload(){this.cameras.main.setViewport(WIDTH_WINDOW/10,HEIGHT_WINDOW/10,WIDTH_MAP,WIDTH_MAP),this.sound.add("shot"),this.sound.add("hit")}create(){listBonus.push(new BonusSpeed("Balle Argent",this,WIDTH_MAP/2,WIDTH_MAP/2,3,2e3)),this.add.image(0,0,"background").alpha=.1;for(let e=0;ethis.listRobot[0].addNode(e)),!0;return!1}upShield(){this.listRobot.forEach(e=>e.addShield(SHIELD_PER_SECOND)),this.time.addEvent({delay:1e3/SPEED_GAME,callback:this.upShield,callbackScope:this})}}class HealthBar{constructor(e,t,s,i,h,a,n){this.bar=new Phaser.GameObjects.Graphics(e),this.width=t,this.height=s,this.valueMax=a,this.value=a,this.color=n,this.draw(),this.setX(i),this.setY(h),e.add.existing(this.bar)}decrease(e){this.value-=e;let t=0;return this.value<0&&(t=-this.value,this.value=0),this.draw(),t}increase(e){this.value+=e,this.value>this.valueMax&&(this.value=this.valueMax),this.draw()}setX(e){this.bar.setX(e-this.width/2)}setY(e){this.bar.setY(e)}draw(){this.bar.clear(),this.bar.fillStyle(0),this.bar.fillRect(0,0,this.width,this.height),this.bar.fillStyle(16777215),this.bar.fillRect(2,2,this.width-4,this.height-4);let e=this.value/this.valueMax;e<1/3?this.bar.fillStyle(16711680):this.bar.fillStyle(this.color);let t=Math.floor(e*(this.width-4));this.bar.fillRect(2,2,t,this.height-4)}destroy(){this.bar.destroy()}}class LoadFile extends Phaser.Scene{constructor(e,t,s){super("LoadFile"),this.father=e,this.son=s,this.nameSon=t,this.father.scene.pause(this.nameSon),this.father.scene.stop(this.nameSon),this.father.scene.remove("LoadFile")}preload(){let e=this.add.graphics(),t=this.add.graphics(),s=WIDTH_WINDOW/2-160,i=HEIGHT_WINDOW/2-25;t.fillStyle(2236962,.8),t.fillRect(s,i,320,50),this.load.on("progress",function(t){e.clear(),e.fillStyle(16777215,1),e.fillRect(s+10,i+10,300*t,30)}),this.load.on("complete",()=>{e.destroy(),t.destroy(),-1===this.father.scene.getIndex(this.nameSon)&&this.father.scene.add(this.nameSon,this.son),this.father.scene.start(this.nameSon)}),this.load.audio("shot","assets/sounds/shot.ogg"),this.load.audio("hit","assets/sounds/hit.ogg"),this.loadImage("en","flags/",!0),this.loadImage("fr","flags/",!0),this.loadImage("bonusSpeed0","bonus/",!0),this.loadImage("bonusSpeed1","bonus/",!0),this.loadImage("bonusSpeed2","bonus/",!0),this.loadSprite("playLetter",550,150,"buttons/"),this.loadSprite("cancel",550,150,"buttons/"),this.loadSprite("add",550,150,"buttons/"),this.loadSprite("home",550,150,"buttons/"),this.loadSprite("next",550,150,"buttons/"),this.loadSprite("retry",550,150,"buttons/"),this.loadSprite("duel",269,262,"buttons/"),this.loadSprite("last",269,262,"buttons/"),this.loadSprite("team",269,262,"buttons/"),this.loadSprite("flag",269,262,"buttons/"),this.loadSprite("map",269,262,"buttons/"),this.loadSprite("play",100,100,"buttons/"),this.loadSprite("bin",100,100,"buttons/"),this.loadSprite("plus",100,100,"buttons/"),this.loadSprite("pencil",100,100,"buttons/"),this.loadSprite("speed",100,100,"buttons/"),this.loadSprite("mute",100,100,"buttons/"),this.loadSprite("back",200,200,"buttons/"),this.loadSprite("shortRange",300,150,"buttons/"),this.loadSprite("mediumRange",300,150,"buttons/"),this.loadSprite("longRange",300,150,"buttons/"),this.loadSprite("shield0",300,150,"buttons/"),this.loadSprite("shield33",300,150,"buttons/"),this.loadSprite("shield66",300,150,"buttons/"),this.loadSprite("shield100",300,150,"buttons/"),this.loadSprite("myself",300,150,"buttons/"),this.loadSprite("enemyBot",300,150,"buttons/"),this.loadSprite("bonus",300,150,"buttons/"),this.loadSprite("moveToward",300,150,"buttons/"),this.loadSprite("fleeFrom",300,150,"buttons/"),this.loadSprite("attackNode",180,190,"nodes/",!0),this.loadSprite("moveNode",180,190,"nodes/",!0),this.loadSprite("conditionNode",180,190,"nodes/",!0),this.loadImage("background"),this.loadImage("bullet"),this.loadImage("logoWaria"),this.loadImage("attack","nodes/",!0),this.loadImage("move","nodes/",!0),this.loadImage("condition","nodes/",!0)}loadSprite(e,t,s,i="",h=!1){this.deleteLoad(e),h?this.load.spritesheet(e,"assets/"+i+e+".png",{frameWidth:t,frameHeight:s}):this.load.spritesheet(e,"assets/"+LANG+"/"+i+e+".png",{frameWidth:t,frameHeight:s})}loadImage(e,t="",s=!1){this.deleteLoad(e),s?this.load.image(e,"assets/"+t+e+".png"):this.load.image(e,"assets/"+LANG+"/"+t+e+".png")}deleteLoad(e){this.textures.exists(e)&&this.textures.remove(e)}}class Looser extends Finish{constructor(e){super(e)}create(){super.create(),super.addTitle(selectWord("GAME OVER","PARTIE PERDUE")),super.btnRetry(super.createButton(WIDTH_WINDOW/3,"retry")),super.btnHome(super.createButton(WIDTH_WINDOW/1.5,"home"))}}class Missile extends Phaser.GameObjects.Image{constructor(e,t,s,i){super(e,0,0,t),this.visible=!1,this.setOrigin(.5,.5),this.setScale(.02)}}class Move{constructor(e,t=!0){this.toward=e,this.enemyBot=t}do(e){if(this.enemyBot){if(e.verifyTarget())return!0===this.toward?this.moveToward(e):this.fleeFrom(e)}else{let t=chooseTarget(e,listBonus);if(void 0!==t){let s;return(s=!0===this.toward?this.moveToward(e,t):this.fleeFrom(e,t))||(t.useOn(e),listBonus.splice(listBonus.indexOf(t),1)),!0}}return!1}moveToward(e,t=e.target){return e.advanceTo(t)}fleeFrom(e,t=e.target){return e.fleeFrom(t)}getFrame(){let e;return e=this.toward?0:2,this.enemyBot||(e+=1),e}}class PlusNode extends Phaser.Scene{constructor(e,t,s){super("PlusNode"),this.father=e,this.gameR=t,this.selected=s}create(){this.add.rectangle(0,0,WIDTH_WINDOW,HEIGHT_WINDOW,0).setOrigin(0,0).setAlpha(.5),this.add.rectangle(0,HEIGHT_WINDOW/2,WIDTH_WINDOW,HEIGHT_WINDOW/2,3487290).setOrigin(0,.5),this.createNode(),this.createButton()}createNode(){let e=WIDTH_WINDOW/2,t=HEIGHT_WINDOW/2,s=WIDTH_WINDOW/3,i=HEIGHT_WINDOW/10,h={font:(i/1.5).toString()+"px stencil",fill:"#e2e2e2"};this.add.text(e-s,t-i,selectWord("ATTACK","ATTAQUE"),h).setOrigin(.5,.5),this.add.text(e,t-i,selectWord("MOVE","DEPLACEMENT"),h).setOrigin(.5,.5),this.add.text(e+s,t-i,selectWord("CONDITION","CONDITION"),h).setOrigin(.5,.5);let a=this.add.sprite(e-s,t+i,"attack").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("attack"));a.displayHeight=2*i,a.scaleX=a.scaleY,(a=this.add.sprite(e,t+i,"move").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("move"))).displayHeight=2*i,a.scaleX=a.scaleY,(a=this.add.sprite(e+s,t+i,"condition").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("condition"))).displayHeight=2*i,a.scaleX=a.scaleY}click(e){switch(e.toString()){case"attack":this.father.scene.add("AddNode",new AddAttack(this.father,this.gameR,this.selected));break;case"move":this.father.scene.add("AddNode",new AddMove(this.father,this.gameR,this.selected));break;case"condition":this.father.scene.add("AddNode",new AddCondition(this.father,this.gameR,this.selected))}this.scene.launch("AddNode"),this.scene.stop("PlusNode"),this.father.scene.remove("PlusNode")}createButton(){let e=WIDTH_WINDOW/2,t=HEIGHT_WINDOW-100,s=this.add.image(e,t,"cancel").setOrigin(.5,.5).setInteractive();s.on("pointerover",()=>s.setFrame(1)),s.on("pointerout",()=>s.setFrame(0)),s.on("pointerdown",()=>this.cancel()),s.displayHeight=HEIGHT_WINDOW/10,s.scaleX=s.scaleY}cancel(){this.scene.resume("Game"),this.scene.stop("PlusNode"),this.father.scene.remove("PlusNode")}}class RectangleNode{constructor(e,t,s,i,...h){switch(i.toString().toLowerCase()){case"attack":this.rect=new Phaser.GameObjects.Image(s,e,t,"attackNode"),this.node=new Attack(h[0]),this.canAddNode=!1,this.line=s.add.graphics();break;case"move":this.rect=new Phaser.GameObjects.Image(s,e,t,"moveNode"),this.node=new Move(h[0],h[1]),this.canAddNode=!1,this.line=s.add.graphics();break;case"condition":this.rect=new Phaser.GameObjects.Image(s,e,t,"conditionNode"),this.node=new Condition(h[0],h[1],h[2],h[3],h[4]),this.canAddNode=!0,this.lRect=[],this.scene=s,this.line=s.add.graphics();break;case"waria":this.rect=new Phaser.GameObjects.Image(s,e,t,"logoWaria").setInteractive(),this.canAddNode=!0,this.lRect=[],this.scene=s,this.scene.add.existing(this.rect),this.scene.input.setDraggable(this.rect);break;default:return void console.log("Création d'un node echoué")}"waria"!==i.toString().toLowerCase()&&this.rect.setFrame(this.node.getFrame()),this.rect.on("pointerdown",()=>this.click()),this.rect.setOrigin(.5,0),this.rect.displayHeight=HEIGHT_WINDOW/6,this.rect.scaleX=this.rect.scaleY}getSelected(){if(this.rect.isTinted)return this;if(this.canAddNode)for(let e=0;ethis.addLine(e))}addLine(e){e.setLine(this.rect.x,this.rect.y+.9*this.rect.displayHeight)}getNode(){return this.canAddNode&&(this.node.clearNodes(),this.lRect.forEach(e=>this.node.addNode(e.node)),console.log(this)),this.node}getNodes(){if(void 0===this.node){let e=[];return this.lRect.forEach(function(t){void 0!==t.node&&(t.canAddNode&&(t.node.clearNodes(),t.lRect.forEach(e=>t.node.addNode(e.getNode()))),e.push(t.node))}),e}}sort(e){this.canAddNode&&(this.lRect.sort(e),this.lRect.forEach(function(t){t.canAddNode&&t.sort(e)}))}destroy(){this.line.destroy(),this.rect.destroy(),void 0!==this.lRect&&this.lRect.forEach(e=>e.destroy())}delete(e){let t=this.lRect.indexOf(e);if(-1!==t)return this.lRect.splice(t,1),e.destroy(),!0;for(let t=0;tthis.click())}click(){null===this.circleRange?this.drawRange():this.eraseRange()}addShield(e){this.shield.increase(e)}setX(e){this.x=e,this.circle.setX(this.x),this.life.setX(this.x),this.shield.setX(this.x),this.drawCircleRange()}setY(e){this.y=e,this.life.setY(this.y-this.width),this.shield.setY(this.y-1.5*this.width),this.circle.setY(this.y),this.drawCircleRange()}setTarget(e){this.target=e}updateTarget(){this.verifyTarget()&&this.setTargetPos(this.target.x,this.target.y)}setTargetPos(e,t){}setSpeed(e){this.speed=e}increaseSpeed(e){this.speed+=e}decreaseSpeed(e){this.speed-=e}advanceToTarget(){return this.verifyTarget()&&this.advanceTo(this.target),!1}advanceTo(e){if(e.x!==this.x||e.y!==this.y){let t=!1,s=!1,i=this.getVelocity(e),h=i[0]+this.x,a=i[1]+this.y;return i[0]>=0&&h>=e.x||i[0]<=0&&h<=e.x?(this.setX(e.x),t=!0):this.setX(this.x+i[0]),i[1]>=0&&a>=e.y||i[1]<=0&&a<=e.y?(this.setY(e.y),s=!0):this.setY(this.y+i[1]),!(t&&s)}return!1}fleeFromTarget(){return!!this.verifyTarget()&&this.fleeFrom(this.target)}fleeFrom(e){if(this.target.x!==this.x||this.target.y!==this.y){let t=this.getVelocity(e);return t[0]>=0&&this.x-this.width/2<=0?this.setX(this.width/2):t[0]<=0&&this.x+this.width/2>=WIDTH_MAP?this.setX(WIDTH_MAP-this.width/2):this.setX(this.x-t[0]),t[1]>=0&&this.y-this.width/2<=0?this.setY(this.height/2):t[1]<=0&&this.y+this.width/2>=WIDTH_MAP?this.setY(WIDTH_MAP-this.height/2):this.setY(this.y-t[1]),!0}return!1}getVelocity(e){let t=[],s=e.x-this.x,i=e.y-this.y,h=Math.hypot(s,i);return t[0]=s/h*WIDTH_MAP/1e3*SPEED*this.speed*SPEED_GAME,t[1]=i/h*WIDTH_MAP/1e3*SPEED*this.speed*SPEED_GAME,t}attackTarget(e=0){return!!this.verifyTarget()&&(this.canAttack&&this.attack(this.target,e),!0)}verifyTarget(){return!!this.haveTarget()&&(!!this.target.isAlive()||(this.setTarget(null),!1))}attack(e,t){this.canAttack=!1,this.missile.setPosition(this.x,this.y).setVisible(!0),this.missile.setRotation(Math.atan2(this.y-this.target.y,this.x-this.target.x)-1.57),this.scene.sound.play("shot");let s=this.calcDistance(this.target)*WIDTH_MAP/1e3/SPEED_GAME;this.scene.tweens.add({targets:this.missile,x:e.x,y:e.y,ease:"Linear",duration:s,onComplete:()=>this.finishAttack(e,t)}),this.scene.time.addEvent({delay:Phaser.Math.Between(1e3/SPEED_GAME,3e3/SPEED_GAME),callback:this.reload,callbackScope:this})}finishAttack(e,t){e.beAttack(this.damage*t)&&this.setTarget(null),this.missile.setVisible(!1)}reload(){this.canAttack=!0}beAttack(e){let t=this.shield.decrease(e),s={font:HEIGHT_DAMAGE.toString()+"px stencil",fill:"#ffff00"},i=this.scene.add.text(this.x,this.y,e.toString(),s).setOrigin(0,1);return this.scene.tweens.add({targets:i,x:this.x+30,y:this.y-50,alpha:0,duration:DURATION_DAMAGE,ease:"Sine.easeOut",onComplete:()=>i.destroy()}),this.scene.sound.play("hit"),console.log("HIT"),t>0&&(console.log("Shield Broken"),this.life.decrease(t)),this.die()}isTargetInRange(e=1){return!!this.haveTarget()&&this.calcDistance(this.target)0}die(){return 0===this.life.value&&(null!==this.circleRange&&this.circleRange.destroy(),this.circle.destroy(),this.shield.destroy(),this.life.destroy(),!0)}haveTarget(){return null!=this.target}read(){for(let e=0;ee.setFrame(0)),e.on("pointerover",()=>e.setFrame(1)),e.on("pointerdown",()=>this.clickPlay(e))}clickPlay(e){newGame(this.father),this.scene.start("Game")}}class Winner extends Finish{constructor(e){super(e)}create(){super.create(),super.addTitle(selectWord("YOU WIN","PARTIE GAGNÉE")),super.btnRetry(super.createButton(WIDTH_WINDOW/4,"retry")),super.btnHome(super.createButton(WIDTH_WINDOW/2,"home")),super.btnNext(super.createButton(WIDTH_WINDOW/4*3,"next"))}} \ No newline at end of file +class AddAttack extends AddNode{constructor(e,t,s){super(e,t,s)}create(){console.log("ATTACK"),super.create(this),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/16,selectWord("ADD NODE : ATTACK","AJOUTER ACTION : ATTAQUE")),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/(16/3),selectWord("WHO ?","QUI ?")),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/(16/7),selectWord("TARGET FILTERS (OPTIONAL)","FILTRES CIBLES (FACULTATIF)")),super.addButton(WIDTH_WINDOW/2,HEIGHT_WINDOW/3.2,"enemyBot",super.newCategory("target",!0,!0),!1);let e=super.newCategory("range",!0,!0);super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/(16/9),"shortRange",e,1/3),super.addButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/(16/9),"mediumRange",e,2/3),super.addButton(WIDTH_WINDOW/2,HEIGHT_WINDOW/(16/12),"longRange",e,1)}addNode(){super.verifyCategory()&&(this.selected.addRect(new RectangleNode(this.selected.getX(),this.selected.getY()+200,this.gameR,"attack",this.lCategory[1].getValue())),super.cancel())}}class AddCondition extends AddNode{constructor(e,t,s){super(e,t,s)}create(){super.create(this),console.log("CONDITION"),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/16,selectWord("ADD NODE : CONDITION","AJOUTER ACTION : CONDITION")),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/(16/3),selectWord("WHO ?","QUI ?")),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/(16/7),selectWord("TARGET FILTERS (OPTIONAL)","FILTRES CIBLES (FACULTATIF)"));let e=super.newCategory("target",!0,!0);super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/3.2,"enemyBot",e,!1),super.addButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/3.2,"myself",e,!0);let t=super.newCategory("shield",!0,!0);super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/(16/9),"shield0",t,0),super.addButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/(16/9),"shield33",t,1/3),super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/(16/12),"shield66",t,2/3),super.addButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/(16/12),"shield100",t,1)}addNode(){super.verifyCategory()&&(this.selected.addRect(new RectangleNode(this.selected.getX(),this.selected.getY()+200,this.gameR,"condition",this.lCategory[0].getValue(),!0,!1,this.lCategory[1].getValue(),0)),super.cancel())}}class AddMove extends AddNode{constructor(e,t,s){super(e,t,s)}create(){console.log("MOVE"),super.create(this),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/16,selectWord("ADD NODE : MOVE","AJOUTER ACTION : DEPLACEMENT")),super.addTitle(WIDTH_WINDOW/4,HEIGHT_WINDOW/(16/3),selectWord("FLEE OR MOVE ?","RECULER OU AVANCER ?"));let e=super.newCategory("direction",!0,!0);super.addButton(WIDTH_WINDOW/6,HEIGHT_WINDOW/3.2,"fleeFrom",e,!1),super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/3.2,"moveToward",e,!0),super.addTitle(WIDTH_WINDOW/4*3,HEIGHT_WINDOW/(16/3),selectWord("WHO ?","QUI ?"));let t=super.newCategory("target",!0,!0);super.addButton(WIDTH_WINDOW/6*4,HEIGHT_WINDOW/3.2,"enemyBot",t,!0),super.addButton(WIDTH_WINDOW/6*5,HEIGHT_WINDOW/3.2,"bonus",t,!1)}addNode(){super.verifyCategory()&&(this.selected.addRect(new RectangleNode(this.selected.getX(),this.selected.getY()+200,this.gameR,"move",this.lCategory[0].getValue(),this.lCategory[1].getValue())),super.cancel())}}class Attack{constructor(e=1){e>1/3?e>2/3?(e=1,this.percentBonus=1):(e=2/3,this.percentBonus=1.5):(e=1/3,this.percentBonus=2),this.percentRange=e}do(e){return!(!e.haveTarget()||!e.isTargetInRange(this.percentRange))&&e.attackTarget(this.percentBonus)}getFrame(){return 3*this.percentRange-1}}class BonusAttack extends Bonus{constructor(e,t,s,i,h){super(e,t,s,i,"bonusAttack",h)}useOn(e){let t=e.speed;e.setSpeed(t+this.value),this.scene.time.addEvent({delay:this.time,callback:e.setSpeed(t)}),this.destroy()}}class BonusShield extends Bonus{constructor(e,t,s,i,h){super(e,t,s,i,"bonusShield",h)}useOn(e){e.shield.valueMax=e.shield.valueMax+this.value,e.shield.value=e.shield.value+this.val,this.destroy()}}class BonusSpeed extends Bonus{constructor(e,t,s,i,h,a){let n;switch(h){case 1:n="bonusSpeed0";break;case 2:n="bonusSpeed1";break;case 3:default:n="bonusSpeed2"}super(e,t,s,i,n,h),this.time=a}useOn(e){e.increaseSpeed(this.value),this.scene.time.addEvent({delay:this.time,callback:()=>e.decreaseSpeed(this.value)}),this.destroy()}}class Boot extends ManageLang{constructor(e){super("Boot",e)}create(){super.create();this.add.text(WIDTH_WINDOW/2,HEIGHT_WINDOW/3,"WARIA",{font:"200px stencil",fill:"#e2e2e2"}).setOrigin(.5,.5);let e=this.add.sprite(WIDTH_WINDOW/2,HEIGHT_WINDOW/3*2,"playLetter").setInteractive();e.on("pointerout",()=>e.setFrame(0)),e.on("pointerover",()=>e.setFrame(1)),e.on("pointerdown",()=>this.clickPlay(e))}clickPlay(e){console.log("Play"),this.father.scene.add("Type",new Type(this.father)),this.scene.start("Type")}}class Category{constructor(e="undefined",t=!0,s=!0){this.name=e,this.single=t,this.lBtn=[],this.lValue=[],this.obligatory=s}add(e,t){0!==this.lBtn.length&&this.single&&(this.lBtn[0].clearTint(),this.lValue=[],this.lBtn=[]),this.lValue.push(t),this.lBtn.push(e),e.tint=15718407}getValue(){return this.single?this.lValue[0]:this.lValue}validate(){return!(0===this.lBtn.length&&this.obligatory)}remove(e){let t=this.lBtn.indexOf(e);-1!==t&&(this.lBtn.splice(t,1),this.lValue.splice(t,1)),e.clearTint()}}class Condition{constructor(e,t=!1,s=!1,i,h){this.shieldFilter=t,this.rangeFilter=s,this.shield=i,this.range=h,this.myself=e,this.lNode=[]}addNode(e){this.lNode.push(e)}do(e){if(this.doCondition(e))for(let t=0;t{this.clickBin()})}update(e,t){super.update(e,t),this.doLine&&this.tree.updateLine()}finish(){let e;console.log("FINISH"),e=this.gm.winner()?new Winner(this.father):new Looser(this.father),this.father.scene.add("Finish",e),this.scene.pause("Game"),this.scene.launch("Finish")}clickNode(){this.tryClick(),this.selected=this.tree.getSelected(),null!==this.selected&&(this.selected!==this.tree&&(this.pencil.setVisible(!0),this.bin.setVisible(!0)),this.selected.canAddNode&&this.plus.setVisible(!0))}doDrag(e,t,s,i){t.setX(s),t.setY(i)}dragStart(e){console.log("START DRAG"),this.doLine=!0,this.pauseScene(e)}dragEnd(){console.log("END DRAG"),this.doLine=!1}pauseScene(e){this.linePlay=0,this.changeFrame(e,0),this.gm.pause()}resume(){this.linePlay=1;this.tree.sort((e,t)=>e.getX()-t.getX()),this.gm.modifyNodes(this.tree.getNode()),this.gm.resume()}changeFrame(e,t=0,s=0){e.setFrame(t+2*s)}createButton(){let e=WIDTH_MAP+WIDTH_WINDOW/10,t=WIDTH_MAP+HEIGHT_WINDOW/10+5,s=HEIGHT_WINDOW/10,i=HEIGHT_WINDOW/15,h=this.add.sprite(10,10,"back").setOrigin(0,0).setInteractive(),a=this.add.sprite(e,t,"play").setOrigin(1,0).setInteractive(),n=this.add.sprite(e-s,t,"speed").setOrigin(1,0).setInteractive();this.pencil=this.add.sprite(e-2*s,t,"pencil").setOrigin(1,0).setInteractive().setVisible(!1),this.bin=this.add.sprite(e-3*s,t,"bin").setOrigin(1,0).setInteractive().setVisible(!1),this.plus=this.add.sprite(e-4*s,t,"plus").setOrigin(1,0).setInteractive().setVisible(!1);let r=this.add.sprite(e-5*s,t,"mute").setOrigin(1,0).setInteractive();this.linePlay=0,1===SPEED_GAME?this.lineSpeed=0:this.lineSpeed=1,this.changeFrame(n,0,this.lineSpeed),this.father.sound.mute?this.lineMute=1:this.lineMute=0,this.changeFrame(r,0,this.lineMute),h.displayHeight=h.displayWidth=i,a.displayHeight=a.displayWidth=i,n.displayHeight=n.displayWidth=i,r.displayHeight=r.displayWidth=i,this.pencil.displayHeight=this.pencil.displayWidth=i,this.bin.displayHeight=this.bin.displayWidth=i,this.plus.displayHeight=this.plus.displayWidth=i,a.on("pointerout",()=>this.changeFrame(a,0,this.linePlay)),a.on("pointerover",()=>this.changeFrame(a,1,this.linePlay)),n.on("pointerout",()=>this.changeFrame(n,0,this.lineSpeed)),n.on("pointerover",()=>this.changeFrame(n,1,this.lineSpeed)),r.on("pointerout",()=>this.changeFrame(r,0,this.lineMute)),r.on("pointerover",()=>this.changeFrame(r,1,this.lineMute)),this.creatBtnOutAndOver(h),this.creatBtnOutAndOver(this.pencil),this.creatBtnOutAndOver(this.bin),this.creatBtnOutAndOver(this.plus),a.on("pointerdown",()=>this.clickPlay(a)),n.on("pointerdown",()=>this.clickSpeed(n)),h.on("pointerdown",()=>this.clickBack()),r.on("pointerdown",()=>this.clickMute(r)),this.pencil.on("pointerdown",()=>this.clickPencil()),this.bin.on("pointerdown",()=>this.clickBin()),this.plus.on("pointerdown",()=>this.clickPlus()),this.input.on("pointerdown",()=>this.clickNode()),this.input.on("drag",this.doDrag),this.input.on("dragstart",()=>this.dragStart(a)),this.input.on("dragend",()=>this.dragEnd())}creatBtnOutAndOver(e){e.on("pointerout",()=>this.changeFrame(e,0)),e.on("pointerover",()=>this.changeFrame(e,1))}clickPlay(e){this.scene.isPaused("GamingBoard")?this.resume():this.pauseScene(e),this.changeFrame(e,1,this.linePlay)}clickSpeed(e){1===SPEED_GAME?(SPEED_GAME=2,this.lineSpeed=1):(SPEED_GAME=1,this.lineSpeed=0),this.changeFrame(e,1,this.lineSpeed)}clickPencil(){console.log("PENCIL"),this.changeFrame(this.pencil,0)}clickBin(){null!==this.selected&&(console.log("BIN"),this.tree.delete(this.selected),this.changeFrame(this.bin,0),this.tryClick())}clickPlus(){console.log("PLUS"),this.father.scene.add("PlusNode",new PlusNode(this.father,this,this.selected)),this.scene.launch("PlusNode"),this.changeFrame(this.plus,0),this.scene.pause("Game")}clickBack(){console.log("BACK"),this.father.scene.stop("GamingBoard"),this.father.scene.remove("GamingBoard"),this.father.scene.stop("Game"),this.father.scene.start("Type")}clickMute(e){console.log("MUTE"),this.father.sound.mute?(this.father.sound.mute=!1,this.lineMute=0):(this.father.sound.mute=!0,this.lineMute=1),this.changeFrame(e,1,this.lineMute)}tryClick(){this.pencil.setVisible(!1),this.bin.setVisible(!1),this.plus.setVisible(!1),null!=this.selected&&(this.selected.deselect(),this.selected=null)}}class GamingBoard extends Phaser.Scene{constructor(e){super("GamingBoard"),this.listRobot=[],listBonus=[],this.father=e,this.end=!1}preload(){this.cameras.main.setViewport(WIDTH_WINDOW/10,HEIGHT_WINDOW/10,WIDTH_MAP,WIDTH_MAP),this.sound.add("shot"),this.sound.add("hit")}create(){listBonus.push(new BonusSpeed("Balle Argent",this,WIDTH_MAP/2,WIDTH_MAP/2,3,2e3)),this.add.image(0,0,"background").alpha=.1;for(let e=0;ethis.listRobot[0].addNode(e)),!0;return!1}upShield(){this.listRobot.forEach(e=>e.addShield(SHIELD_PER_SECOND)),this.time.addEvent({delay:1e3/SPEED_GAME,callback:this.upShield,callbackScope:this})}}class HealthBar{constructor(e,t,s,i,h,a,n){this.bar=new Phaser.GameObjects.Graphics(e),this.width=Math.floor(t),this.height=Math.floor(s),this.valueMax=a,this.value=a,this.color=n,this.draw(),this.setX(i),this.setY(h),e.add.existing(this.bar)}decrease(e){this.value-=e;let t=0;return this.value<0&&(t=-this.value,this.value=0),this.draw(),t}increase(e){this.value+=e,this.value>this.valueMax&&(this.value=this.valueMax),this.draw()}setX(e){this.bar.setX(e-this.width/2)}setY(e){this.bar.setY(e)}draw(){this.bar.clear(),this.bar.fillStyle(0),this.bar.fillRect(0,0,this.width,this.height),this.bar.fillStyle(16777215),this.bar.fillRect(2,2,this.width-4,this.height-4);let e=this.value/this.valueMax;e<1/3?this.bar.fillStyle(16711680):this.bar.fillStyle(this.color);let t=Math.floor(e*(this.width-4));this.bar.fillRect(2,2,t,this.height-4)}destroy(){this.bar.destroy()}}class LoadFile extends Phaser.Scene{constructor(e,t,s){super("LoadFile"),this.father=e,this.son=s,this.nameSon=t,this.father.scene.pause(this.nameSon),this.father.scene.stop(this.nameSon),this.father.scene.remove("LoadFile")}preload(){let e=this.add.graphics(),t=this.add.graphics(),s=WIDTH_WINDOW/2-160,i=HEIGHT_WINDOW/2-25;t.fillStyle(2236962,.8),t.fillRect(s,i,320,50),this.load.on("progress",function(t){e.clear(),e.fillStyle(16777215,1),e.fillRect(s+10,i+10,300*t,30)}),this.load.on("complete",()=>{e.destroy(),t.destroy(),-1===this.father.scene.getIndex(this.nameSon)&&this.father.scene.add(this.nameSon,this.son),this.father.scene.start(this.nameSon)}),this.load.audio("shot","assets/sounds/shot.ogg"),this.load.audio("hit","assets/sounds/hit.ogg"),this.loadImage("en","flags/",!0),this.loadImage("fr","flags/",!0),this.loadImage("bonusSpeed0","bonus/",!0),this.loadImage("bonusSpeed1","bonus/",!0),this.loadImage("bonusSpeed2","bonus/",!0),this.loadImage("enemy","robots/"),this.loadSprite("playLetter",550,150,"buttons/"),this.loadSprite("cancel",550,150,"buttons/"),this.loadSprite("add",550,150,"buttons/"),this.loadSprite("home",550,150,"buttons/"),this.loadSprite("next",550,150,"buttons/"),this.loadSprite("retry",550,150,"buttons/"),this.loadSprite("duel",269,262,"buttons/"),this.loadSprite("last",269,262,"buttons/"),this.loadSprite("team",269,262,"buttons/"),this.loadSprite("flag",269,262,"buttons/"),this.loadSprite("map",269,262,"buttons/"),this.loadSprite("play",100,100,"buttons/"),this.loadSprite("bin",100,100,"buttons/"),this.loadSprite("plus",100,100,"buttons/"),this.loadSprite("pencil",100,100,"buttons/"),this.loadSprite("speed",100,100,"buttons/"),this.loadSprite("mute",100,100,"buttons/"),this.loadSprite("back",200,200,"buttons/"),this.loadSprite("shortRange",300,150,"buttons/"),this.loadSprite("mediumRange",300,150,"buttons/"),this.loadSprite("longRange",300,150,"buttons/"),this.loadSprite("shield0",300,150,"buttons/"),this.loadSprite("shield33",300,150,"buttons/"),this.loadSprite("shield66",300,150,"buttons/"),this.loadSprite("shield100",300,150,"buttons/"),this.loadSprite("myself",300,150,"buttons/"),this.loadSprite("enemyBot",300,150,"buttons/"),this.loadSprite("bonus",300,150,"buttons/"),this.loadSprite("moveToward",300,150,"buttons/"),this.loadSprite("fleeFrom",300,150,"buttons/"),this.loadSprite("attackNode",180,190,"nodes/",!0),this.loadSprite("moveNode",180,190,"nodes/",!0),this.loadSprite("conditionNode",180,190,"nodes/",!0),this.loadImage("background"),this.loadImage("bullet"),this.loadImage("logoWaria"),this.loadImage("attack","nodes/",!0),this.loadImage("move","nodes/",!0),this.loadImage("condition","nodes/",!0)}loadSprite(e,t,s,i="",h=!1){this.deleteLoad(e),h?this.load.spritesheet(e,"assets/"+i+e+".png",{frameWidth:t,frameHeight:s}):this.load.spritesheet(e,"assets/"+LANG+"/"+i+e+".png",{frameWidth:t,frameHeight:s})}loadImage(e,t="",s=!1){this.deleteLoad(e),s?this.load.image(e,"assets/"+t+e+".png"):this.load.image(e,"assets/"+LANG+"/"+t+e+".png")}deleteLoad(e){this.textures.exists(e)&&this.textures.remove(e)}}class Looser extends Finish{constructor(e){super(e)}create(){super.create(),super.addTitle(selectWord("GAME OVER","PARTIE PERDUE")),super.btnRetry(super.createButton(WIDTH_WINDOW/3,"retry")),super.btnHome(super.createButton(WIDTH_WINDOW/1.5,"home"))}}class Missile extends Phaser.GameObjects.Image{constructor(e,t,s,i){super(e,0,0,t),this.visible=!1,this.setOrigin(.5,.5),this.setScale(.02)}}class Move{constructor(e,t=!0){this.toward=e,this.enemyBot=t}do(e){if(this.enemyBot){if(e.verifyTarget())return!0===this.toward?this.moveToward(e):this.fleeFrom(e)}else{let t=chooseTarget(e,listBonus);if(void 0!==t){let s;return(s=!0===this.toward?this.moveToward(e,t):this.fleeFrom(e,t))||(t.useOn(e),listBonus.splice(listBonus.indexOf(t),1)),!0}}return!1}moveToward(e,t=e.target){return e.advanceTo(t)}fleeFrom(e,t=e.target){return e.fleeFrom(t)}getFrame(){let e;return e=this.toward?0:2,this.enemyBot||(e+=1),e}}class PlusNode extends Phaser.Scene{constructor(e,t,s){super("PlusNode"),this.father=e,this.gameR=t,this.selected=s}create(){this.add.rectangle(0,0,WIDTH_WINDOW,HEIGHT_WINDOW,0).setOrigin(0,0).setAlpha(.5),this.add.rectangle(0,HEIGHT_WINDOW/2,WIDTH_WINDOW,HEIGHT_WINDOW/2,3487290).setOrigin(0,.5),this.createNode(),this.createButton()}createNode(){let e=WIDTH_WINDOW/2,t=HEIGHT_WINDOW/2,s=WIDTH_WINDOW/3,i=HEIGHT_WINDOW/10,h={font:(i/1.5).toString()+"px stencil",fill:"#e2e2e2"};this.add.text(e-s,t-i,selectWord("ATTACK","ATTAQUE"),h).setOrigin(.5,.5),this.add.text(e,t-i,selectWord("MOVE","DEPLACEMENT"),h).setOrigin(.5,.5),this.add.text(e+s,t-i,selectWord("CONDITION","CONDITION"),h).setOrigin(.5,.5);let a=this.add.sprite(e-s,t+i,"attack").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("attack"));a.displayHeight=2*i,a.scaleX=a.scaleY,(a=this.add.sprite(e,t+i,"move").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("move"))).displayHeight=2*i,a.scaleX=a.scaleY,(a=this.add.sprite(e+s,t+i,"condition").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("condition"))).displayHeight=2*i,a.scaleX=a.scaleY}click(e){switch(e.toString()){case"attack":this.father.scene.add("AddNode",new AddAttack(this.father,this.gameR,this.selected));break;case"move":this.father.scene.add("AddNode",new AddMove(this.father,this.gameR,this.selected));break;case"condition":this.father.scene.add("AddNode",new AddCondition(this.father,this.gameR,this.selected))}this.scene.launch("AddNode"),this.scene.stop("PlusNode"),this.father.scene.remove("PlusNode")}createButton(){let e=WIDTH_WINDOW/2,t=HEIGHT_WINDOW-100,s=this.add.image(e,t,"cancel").setOrigin(.5,.5).setInteractive();s.on("pointerover",()=>s.setFrame(1)),s.on("pointerout",()=>s.setFrame(0)),s.on("pointerdown",()=>this.cancel()),s.displayHeight=HEIGHT_WINDOW/10,s.scaleX=s.scaleY}cancel(){this.scene.resume("Game"),this.scene.stop("PlusNode"),this.father.scene.remove("PlusNode")}}class RectangleNode{constructor(e,t,s,i,...h){switch(i.toString().toLowerCase()){case"attack":this.rect=new Phaser.GameObjects.Image(s,e,t,"attackNode"),this.node=new Attack(h[0]),this.canAddNode=!1,this.line=s.add.graphics();break;case"move":this.rect=new Phaser.GameObjects.Image(s,e,t,"moveNode"),this.node=new Move(h[0],h[1]),this.canAddNode=!1,this.line=s.add.graphics();break;case"condition":this.rect=new Phaser.GameObjects.Image(s,e,t,"conditionNode"),this.node=new Condition(h[0],h[1],h[2],h[3],h[4]),this.canAddNode=!0,this.lRect=[],this.scene=s,this.line=s.add.graphics();break;case"waria":this.rect=new Phaser.GameObjects.Image(s,e,t,"logoWaria").setInteractive(),this.canAddNode=!0,this.lRect=[],this.scene=s,this.scene.add.existing(this.rect),this.scene.input.setDraggable(this.rect);break;default:return void console.log("Création d'un node echoué")}"waria"!==i.toString().toLowerCase()&&this.rect.setFrame(this.node.getFrame()),this.rect.on("pointerdown",()=>this.click()),this.rect.setOrigin(.5,0),this.rect.displayHeight=HEIGHT_WINDOW/6,this.rect.scaleX=this.rect.scaleY}getSelected(){if(this.rect.isTinted)return this;if(this.canAddNode)for(let e=0;ethis.addLine(e))}addLine(e){e.setLine(this.rect.x,this.rect.y+.9*this.rect.displayHeight)}getNode(){if(void 0===this.node){let e=[];return this.lRect.forEach(function(t){e.push(t.getNode())}),e}return this.canAddNode&&(this.node.clearNodes(),this.lRect.forEach(e=>this.node.addNode(e.getNode()))),this.node}sort(e){this.canAddNode&&(this.lRect.sort(e),this.lRect.forEach(function(t){t.canAddNode&&t.sort(e)}))}destroy(){this.line.destroy(),this.rect.destroy(),void 0!==this.lRect&&this.lRect.forEach(e=>e.destroy())}delete(e){let t=this.lRect.indexOf(e);if(-1!==t)return this.lRect.splice(t,1),e.destroy(),!0;for(let t=0;tthis.click())}click(){null===this.circleRange?this.drawRange():this.eraseRange()}addShield(e){this.shield.increase(e)}setX(e){this.x=e,this.circle.setX(this.x),this.life.setX(this.x),this.shield.setX(this.x),this.drawCircleRange()}setY(e){this.y=e,this.life.setY(this.y-this.width),this.shield.setY(this.y-1.5*this.width),this.circle.setY(this.y),this.drawCircleRange()}setTarget(e){this.target=e}updateTarget(){this.verifyTarget()&&this.setTargetPos(this.target.x,this.target.y)}setTargetPos(e,t){}setSpeed(e){this.speed=e}increaseSpeed(e){this.speed+=e}decreaseSpeed(e){this.speed-=e}advanceToTarget(){return this.verifyTarget()&&this.advanceTo(this.target),!1}advanceTo(e){if(e.x!==this.x||e.y!==this.y){let t=!1,s=!1,i=this.getVelocity(e),h=i[0]+this.x,a=i[1]+this.y;return i[0]>=0&&h>=e.x||i[0]<=0&&h<=e.x?(this.setX(e.x),t=!0):this.setX(this.x+i[0]),i[1]>=0&&a>=e.y||i[1]<=0&&a<=e.y?(this.setY(e.y),s=!0):this.setY(this.y+i[1]),!(t&&s)}return!1}fleeFromTarget(){return!!this.verifyTarget()&&this.fleeFrom(this.target)}fleeFrom(e){if(this.target.x!==this.x||this.target.y!==this.y){let t=this.getVelocity(e,!0);return t[0]>=0&&this.x-this.width/2<=0?this.setX(this.width/2):t[0]<=0&&this.x+this.width/2>=WIDTH_MAP?this.setX(WIDTH_MAP-this.width/2):this.setX(this.x-t[0]),t[1]>=0&&this.y-this.width/2<=0?this.setY(this.height/2):t[1]<=0&&this.y+this.width/2>=WIDTH_MAP?this.setY(WIDTH_MAP-this.height/2):this.setY(this.y-t[1]),!0}return!1}getVelocity(e,t=!1){let s=[],i=e.x-this.x,h=e.y-this.y,a=Math.hypot(i,h);return s[0]=i/a*WIDTH_MAP/1e3*SPEED*this.speed*SPEED_GAME,s[1]=h/a*WIDTH_MAP/1e3*SPEED*this.speed*SPEED_GAME,t&&(this.x+this.width/2+s[0]>WIDTH_MAP||this.x-this.width/2+s[0]<0?(console.log(s),s[1]+=s[0]*Math.sign(s[1]),s[0]=0,console.log(s)):(this.y+this.width/2+s[1]>WIDTH_MAP||this.y-this.width/2+s[1]<0)&&(console.log(s),s[0]+=s[1]*Math.sign(s[0]),s[1]=0)),s}attackTarget(e=0){return!!this.verifyTarget()&&(this.canAttack&&this.attack(this.target,e),!0)}verifyTarget(){return!!this.haveTarget()&&(!!this.target.isAlive()||(this.setTarget(null),!1))}attack(e,t){this.canAttack=!1,this.missile.setPosition(this.x,this.y).setVisible(!0),this.missile.setRotation(Math.atan2(this.y-this.target.y,this.x-this.target.x)-1.57),this.scene.sound.play("shot");let s=this.calcDistance(this.target)*WIDTH_MAP/1e3/SPEED_GAME;this.scene.tweens.add({targets:this.missile,x:e.x,y:e.y,ease:"Linear",duration:s,onComplete:()=>this.finishAttack(e,t)}),this.scene.time.addEvent({delay:this.timeReload/SPEED_GAME,callback:this.reload,callbackScope:this})}finishAttack(e,t){e.beAttack(this.damage*t)&&this.setTarget(null),this.missile.setVisible(!1)}reload(){this.canAttack=!0}beAttack(e){let t=this.shield.decrease(e),s={font:HEIGHT_DAMAGE.toString()+"px stencil",fill:"#ffff00"},i=this.scene.add.text(this.x,this.y,e.toString(),s).setOrigin(0,1);return this.scene.tweens.add({targets:i,x:this.x+30,y:this.y-50,alpha:0,duration:DURATION_DAMAGE,ease:"Sine.easeOut",onComplete:()=>i.destroy()}),this.scene.sound.play("hit"),console.log("HIT"),t>0&&(console.log("Shield Broken"),this.life.decrease(t)),this.die()}isTargetInRange(e=1){return!!this.haveTarget()&&this.calcDistance(this.target)0}die(){return 0===this.life.value&&(null!==this.circleRange&&this.circleRange.destroy(),this.circle.destroy(),this.shield.destroy(),this.life.destroy(),!0)}haveTarget(){return null!=this.target}read(){for(let e=0;ee.setFrame(0)),e.on("pointerover",()=>e.setFrame(1)),e.on("pointerdown",()=>this.clickPlay(e))}clickPlay(e){newGame(this.father),this.scene.start("Game")}}class Winner extends Finish{constructor(e){super(e)}create(){super.create(),super.addTitle(selectWord("YOU WIN","PARTIE GAGNÉE")),super.btnRetry(super.createButton(WIDTH_WINDOW/4,"retry")),super.btnHome(super.createButton(WIDTH_WINDOW/2,"home")),super.btnNext(super.createButton(WIDTH_WINDOW/4*3,"next"))}} \ No newline at end of file diff --git a/Code/src/js/level1/Init.js b/Code/src/js/level1/Init.js index 7c0e40a..dae8f49 100644 --- a/Code/src/js/level1/Init.js +++ b/Code/src/js/level1/Init.js @@ -56,6 +56,7 @@ const RANGE = WIDTH_MAP / 2; const HEIGHT_BONUS = WIDTH_MAP / 10; const HEIGHT_DAMAGE = WIDTH_MAP / 20; const DURATION_DAMAGE = 700; +const TIME_RELOAD = 1000; var config = { diff --git a/Code/src/js/level2/Game.js b/Code/src/js/level2/Game.js index c0314a7..f4159b7 100644 --- a/Code/src/js/level2/Game.js +++ b/Code/src/js/level2/Game.js @@ -2,12 +2,12 @@ class Game extends ManageLang { constructor(father) { super('Game', father); super.addOtherScenes('GamingBoard'); + SPEED_GAME = 1; } create() { super.create(); this.doLine = false; - SPEED_GAME = 1; this.gm = new GamingBoard(this); if (this.father.scene.getIndex('GamingBoard') !== -1) { this.father.scene.remove('GamingBoard'); @@ -38,7 +38,7 @@ class Game extends ManageLang { this.gm.addRobot(new Robot(WIDTH_MAP * 0.1, WIDTH_MAP * 0.1, WIDTH_MAP * 0.1, WIDTH_MAP * 0.9, 0xff0000, this.gm)); - this.input.keyboard.on('keydown-ESC', () => { + this.input.keyboard.on('keydown-DELETE', () => { this.clickBin(); }); } @@ -112,7 +112,7 @@ class Game extends ManageLang { let sortDesc = (a, b) => a.getX() - b.getX(); this.tree.sort(sortDesc); - this.gm.modifyNodes(this.tree.getNodes()); + this.gm.modifyNodes(this.tree.getNode()); this.gm.resume(); } @@ -140,12 +140,18 @@ class Game extends ManageLang { let mute = this.add.sprite(x - diffX * 5, y, 'mute').setOrigin(1, 0).setInteractive(); this.linePlay = 0; - this.lineSpeed = 0; + if (SPEED_GAME === 1) { + this.lineSpeed = 0; + } else { + this.lineSpeed = 1; + } + this.changeFrame(speed, 0, this.lineSpeed); if (this.father.sound.mute) { this.lineMute = 1; } else { this.lineMute = 0; } + this.changeFrame(mute, 0, this.lineMute); back.displayHeight = back.displayWidth = width; diff --git a/Code/src/js/level2/HealthBar.js b/Code/src/js/level2/HealthBar.js index 7fda8ce..266274f 100644 --- a/Code/src/js/level2/HealthBar.js +++ b/Code/src/js/level2/HealthBar.js @@ -2,8 +2,8 @@ class HealthBar { constructor(scene, width, height, x, y, valueMax, color) { this.bar = new Phaser.GameObjects.Graphics(scene); - this.width = width; - this.height = height; + this.width = Math.floor(width); + this.height = Math.floor(height); this.valueMax = valueMax; this.value = valueMax; this.color = color; diff --git a/Code/src/js/level2/LoadFile.js b/Code/src/js/level2/LoadFile.js index c6df436..c748f87 100644 --- a/Code/src/js/level2/LoadFile.js +++ b/Code/src/js/level2/LoadFile.js @@ -45,6 +45,8 @@ class LoadFile extends Phaser.Scene { this.loadImage('bonusSpeed1', 'bonus/', true); this.loadImage('bonusSpeed2', 'bonus/', true); + this.loadImage('enemy', 'robots/'); + this.loadSprite('playLetter', 550, 150, 'buttons/'); this.loadSprite('cancel', 550, 150, 'buttons/'); this.loadSprite('add', 550, 150, 'buttons/'); diff --git a/Code/src/js/level2/RectangleNode.js b/Code/src/js/level2/RectangleNode.js index 12c4b61..fd99bde 100644 --- a/Code/src/js/level2/RectangleNode.js +++ b/Code/src/js/level2/RectangleNode.js @@ -118,29 +118,17 @@ class RectangleNode { } getNode() { - if (this.canAddNode) { - this.node.clearNodes(); - this.lRect.forEach(rect => this.node.addNode(rect.node)); - console.log(this); - } - return this.node; - } - - getNodes() { if (this.node === undefined) { let lNodes = []; this.lRect.forEach(function (element) { - if (element.node !== undefined) { - if (element.canAddNode) { - element.node.clearNodes(); - element.lRect.forEach(rect => element.node.addNode(rect.getNode())); - } - lNodes.push(element.node); - } + lNodes.push(element.getNode()); }); return lNodes; + } else if (this.canAddNode) { + this.node.clearNodes(); + this.lRect.forEach(rect => this.node.addNode(rect.getNode())); } - + return this.node; } sort(sortDesc) { diff --git a/Code/src/js/level2/Robot.js b/Code/src/js/level2/Robot.js index 26dd715..de3b941 100644 --- a/Code/src/js/level2/Robot.js +++ b/Code/src/js/level2/Robot.js @@ -1,6 +1,7 @@ class Robot { constructor(height, width, posX, posY, color, scene, name = 'enemy', speed = 1) { this.speed = speed; + this.timeReload = TIME_RELOAD; this.name = name; this.height = height; this.width = width; @@ -30,7 +31,12 @@ class Robot { addScene(scene) { this.scene = scene; - this.circle = this.scene.add.circle(this.x, this.y, this.width / 2, this.color).setInteractive(); + if (this.name === 'enemy') { + this.circle = this.scene.add.image(this.x, this.y, 'enemy').setOrigin(0.5, 0.5).setInteractive(); + this.circle.displayWidth = this.circle.displayHeight = this.width; + } else { + this.circle = this.scene.add.circle(this.x, this.y, this.width / 2, this.color).setInteractive(); + } this.circle.on('pointerdown', () => this.click()); } @@ -125,10 +131,10 @@ class Robot { fleeFrom(target) { if (this.target.x !== this.x || this.target.y !== this.y) { - let velocity = this.getVelocity(target); - if (velocity[0] >= 0 && this.x - this.width / 2 <= 0) + let velocity = this.getVelocity(target, true); + if (velocity[0] >= 0 && this.x - this.width / 2 <= 0) { this.setX(this.width / 2); - else if (velocity[0] <= 0 && this.x + this.width / 2 >= WIDTH_MAP) + } else if (velocity[0] <= 0 && this.x + this.width / 2 >= WIDTH_MAP) this.setX(WIDTH_MAP - this.width / 2); else this.setX(this.x - velocity[0]); @@ -144,13 +150,28 @@ class Robot { return false; } - getVelocity(target) { + getVelocity(target, calcul = false) { let velocity = []; let diffX = target.x - this.x; let diffY = target.y - this.y; let hypot = Math.hypot(diffX, diffY); velocity[0] = diffX / hypot * WIDTH_MAP / 1000 * SPEED * this.speed * SPEED_GAME; velocity[1] = diffY / hypot * WIDTH_MAP / 1000 * SPEED * this.speed * SPEED_GAME; + if (calcul) { + if (this.x + this.width / 2 + velocity[0] > WIDTH_MAP || this.x - this.width / 2 + velocity[0] < 0) { + console.log(velocity); + velocity[1] += velocity[0] * Math.sign(velocity[1]); + velocity[0] = 0; + console.log(velocity); + } else { + if (this.y + this.width / 2 + velocity[1] > WIDTH_MAP || this.y - this.width / 2 + velocity[1] < 0) { + console.log(velocity); + velocity[0] += velocity[1] * Math.sign(velocity[0]); + velocity[1] = 0; + } + } + } + return velocity; } @@ -196,7 +217,7 @@ class Robot { }); this.scene.time.addEvent({ - delay: Phaser.Math.Between(1000 / SPEED_GAME, 3000 / SPEED_GAME), + delay: this.timeReload / SPEED_GAME, callback: this.reload, callbackScope: this });