diff --git a/Code/assets/btnPlay.png b/Code/assets/btnPlay.png deleted file mode 100644 index 85ae7e5..0000000 Binary files a/Code/assets/btnPlay.png and /dev/null differ diff --git a/Code/assets/button_play.png b/Code/assets/button_play.png deleted file mode 100644 index b7da0ec..0000000 Binary files a/Code/assets/button_play.png and /dev/null differ diff --git a/Code/assets/background.png b/Code/assets/en/background.png similarity index 100% rename from Code/assets/background.png rename to Code/assets/en/background.png diff --git a/Code/assets/bullet.png b/Code/assets/en/bullet.png similarity index 100% rename from Code/assets/bullet.png rename to Code/assets/en/bullet.png diff --git a/Code/assets/buttons/add.png b/Code/assets/en/buttons/add.png similarity index 100% rename from Code/assets/buttons/add.png rename to Code/assets/en/buttons/add.png diff --git a/Code/assets/buttons/bin.png b/Code/assets/en/buttons/bin.png similarity index 100% rename from Code/assets/buttons/bin.png rename to Code/assets/en/buttons/bin.png diff --git a/Code/assets/buttons/cancel.png b/Code/assets/en/buttons/cancel.png similarity index 100% rename from Code/assets/buttons/cancel.png rename to Code/assets/en/buttons/cancel.png diff --git a/Code/assets/btnDuel.png b/Code/assets/en/buttons/duel.png similarity index 100% rename from Code/assets/btnDuel.png rename to Code/assets/en/buttons/duel.png diff --git a/Code/assets/buttons/enemyBot.png b/Code/assets/en/buttons/enemyBot.png similarity index 100% rename from Code/assets/buttons/enemyBot.png rename to Code/assets/en/buttons/enemyBot.png diff --git a/Code/assets/btnFlag.png b/Code/assets/en/buttons/flag.png similarity index 100% rename from Code/assets/btnFlag.png rename to Code/assets/en/buttons/flag.png diff --git a/Code/assets/buttons/fleeFrom.png b/Code/assets/en/buttons/fleeFrom.png similarity index 100% rename from Code/assets/buttons/fleeFrom.png rename to Code/assets/en/buttons/fleeFrom.png diff --git a/Code/assets/btnLast.png b/Code/assets/en/buttons/last.png similarity index 100% rename from Code/assets/btnLast.png rename to Code/assets/en/buttons/last.png diff --git a/Code/assets/buttons/longRange.png b/Code/assets/en/buttons/longRange.png similarity index 100% rename from Code/assets/buttons/longRange.png rename to Code/assets/en/buttons/longRange.png diff --git a/Code/assets/btnMap.png b/Code/assets/en/buttons/map.png similarity index 100% rename from Code/assets/btnMap.png rename to Code/assets/en/buttons/map.png diff --git a/Code/assets/buttons/mediumRange.png b/Code/assets/en/buttons/mediumRange.png similarity index 100% rename from Code/assets/buttons/mediumRange.png rename to Code/assets/en/buttons/mediumRange.png diff --git a/Code/assets/buttons/moveToward.png b/Code/assets/en/buttons/moveToward.png similarity index 100% rename from Code/assets/buttons/moveToward.png rename to Code/assets/en/buttons/moveToward.png diff --git a/Code/assets/buttons/myself.png b/Code/assets/en/buttons/myself.png similarity index 100% rename from Code/assets/buttons/myself.png rename to Code/assets/en/buttons/myself.png diff --git a/Code/assets/buttons/pencil.png b/Code/assets/en/buttons/pencil.png similarity index 100% rename from Code/assets/buttons/pencil.png rename to Code/assets/en/buttons/pencil.png diff --git a/Code/assets/play.png b/Code/assets/en/buttons/play.png similarity index 100% rename from Code/assets/play.png rename to Code/assets/en/buttons/play.png diff --git a/Code/assets/en/buttons/playLetter.png b/Code/assets/en/buttons/playLetter.png new file mode 100644 index 0000000..ac3437a Binary files /dev/null and b/Code/assets/en/buttons/playLetter.png differ diff --git a/Code/assets/buttons/plus.png b/Code/assets/en/buttons/plus.png similarity index 100% rename from Code/assets/buttons/plus.png rename to Code/assets/en/buttons/plus.png diff --git a/Code/assets/buttons/shield0.png b/Code/assets/en/buttons/shield0.png similarity index 100% rename from Code/assets/buttons/shield0.png rename to Code/assets/en/buttons/shield0.png diff --git a/Code/assets/buttons/shield100.png b/Code/assets/en/buttons/shield100.png similarity index 100% rename from Code/assets/buttons/shield100.png rename to Code/assets/en/buttons/shield100.png diff --git a/Code/assets/buttons/shield33.png b/Code/assets/en/buttons/shield33.png similarity index 100% rename from Code/assets/buttons/shield33.png rename to Code/assets/en/buttons/shield33.png diff --git a/Code/assets/buttons/shield66.png b/Code/assets/en/buttons/shield66.png similarity index 100% rename from Code/assets/buttons/shield66.png rename to Code/assets/en/buttons/shield66.png diff --git a/Code/assets/buttons/shortRange.png b/Code/assets/en/buttons/shortRange.png similarity index 100% rename from Code/assets/buttons/shortRange.png rename to Code/assets/en/buttons/shortRange.png diff --git a/Code/assets/btnTeam.png b/Code/assets/en/buttons/team.png similarity index 100% rename from Code/assets/btnTeam.png rename to Code/assets/en/buttons/team.png diff --git a/Code/assets/logoWaria.png b/Code/assets/en/logoWaria.png similarity index 100% rename from Code/assets/logoWaria.png rename to Code/assets/en/logoWaria.png diff --git a/Code/assets/nodes/attack.png b/Code/assets/en/nodes/attack.png similarity index 100% rename from Code/assets/nodes/attack.png rename to Code/assets/en/nodes/attack.png diff --git a/Code/assets/nodes/attackNode.png b/Code/assets/en/nodes/attackNode.png similarity index 100% rename from Code/assets/nodes/attackNode.png rename to Code/assets/en/nodes/attackNode.png diff --git a/Code/assets/nodes/condition.png b/Code/assets/en/nodes/condition.png similarity index 100% rename from Code/assets/nodes/condition.png rename to Code/assets/en/nodes/condition.png diff --git a/Code/assets/nodes/conditionNode.png b/Code/assets/en/nodes/conditionNode.png similarity index 100% rename from Code/assets/nodes/conditionNode.png rename to Code/assets/en/nodes/conditionNode.png diff --git a/Code/assets/nodes/move.png b/Code/assets/en/nodes/move.png similarity index 100% rename from Code/assets/nodes/move.png rename to Code/assets/en/nodes/move.png diff --git a/Code/assets/nodes/moveNode.png b/Code/assets/en/nodes/moveNode.png similarity index 100% rename from Code/assets/nodes/moveNode.png rename to Code/assets/en/nodes/moveNode.png diff --git a/Code/assets/fr/background.png b/Code/assets/fr/background.png new file mode 100644 index 0000000..842458a Binary files /dev/null and b/Code/assets/fr/background.png differ diff --git a/Code/assets/fr/bullet.png b/Code/assets/fr/bullet.png new file mode 100644 index 0000000..ab9b481 Binary files /dev/null and b/Code/assets/fr/bullet.png differ diff --git a/Code/assets/fr/buttons/add.png b/Code/assets/fr/buttons/add.png new file mode 100644 index 0000000..6c2d7bc Binary files /dev/null and b/Code/assets/fr/buttons/add.png differ diff --git a/Code/assets/fr/buttons/bin.png b/Code/assets/fr/buttons/bin.png new file mode 100644 index 0000000..04fbb4f Binary files /dev/null and b/Code/assets/fr/buttons/bin.png differ diff --git a/Code/assets/fr/buttons/cancel.png b/Code/assets/fr/buttons/cancel.png new file mode 100644 index 0000000..59cfcef Binary files /dev/null and b/Code/assets/fr/buttons/cancel.png differ diff --git a/Code/assets/fr/buttons/duel.png b/Code/assets/fr/buttons/duel.png new file mode 100644 index 0000000..ce8898b Binary files /dev/null and b/Code/assets/fr/buttons/duel.png differ diff --git a/Code/assets/fr/buttons/enemyBot.png b/Code/assets/fr/buttons/enemyBot.png new file mode 100644 index 0000000..881a73f Binary files /dev/null and b/Code/assets/fr/buttons/enemyBot.png differ diff --git a/Code/assets/fr/buttons/flag.png b/Code/assets/fr/buttons/flag.png new file mode 100644 index 0000000..d9e3416 Binary files /dev/null and b/Code/assets/fr/buttons/flag.png differ diff --git a/Code/assets/fr/buttons/fleeFrom.png b/Code/assets/fr/buttons/fleeFrom.png new file mode 100644 index 0000000..87777b0 Binary files /dev/null and b/Code/assets/fr/buttons/fleeFrom.png differ diff --git a/Code/assets/fr/buttons/last.png b/Code/assets/fr/buttons/last.png new file mode 100644 index 0000000..1fab8d1 Binary files /dev/null and b/Code/assets/fr/buttons/last.png differ diff --git a/Code/assets/fr/buttons/longRange.png b/Code/assets/fr/buttons/longRange.png new file mode 100644 index 0000000..51823bf Binary files /dev/null and b/Code/assets/fr/buttons/longRange.png differ diff --git a/Code/assets/fr/buttons/map.png b/Code/assets/fr/buttons/map.png new file mode 100644 index 0000000..b4e44a6 Binary files /dev/null and b/Code/assets/fr/buttons/map.png differ diff --git a/Code/assets/fr/buttons/mediumRange.png b/Code/assets/fr/buttons/mediumRange.png new file mode 100644 index 0000000..9143d1d Binary files /dev/null and b/Code/assets/fr/buttons/mediumRange.png differ diff --git a/Code/assets/fr/buttons/moveToward.png b/Code/assets/fr/buttons/moveToward.png new file mode 100644 index 0000000..bd55334 Binary files /dev/null and b/Code/assets/fr/buttons/moveToward.png differ diff --git a/Code/assets/fr/buttons/myself.png b/Code/assets/fr/buttons/myself.png new file mode 100644 index 0000000..054800b Binary files /dev/null and b/Code/assets/fr/buttons/myself.png differ diff --git a/Code/assets/fr/buttons/pencil.png b/Code/assets/fr/buttons/pencil.png new file mode 100644 index 0000000..dd071f0 Binary files /dev/null and b/Code/assets/fr/buttons/pencil.png differ diff --git a/Code/assets/fr/buttons/play.png b/Code/assets/fr/buttons/play.png new file mode 100644 index 0000000..7a3a706 Binary files /dev/null and b/Code/assets/fr/buttons/play.png differ diff --git a/Code/assets/fr/buttons/playLetter.png b/Code/assets/fr/buttons/playLetter.png new file mode 100644 index 0000000..2727f50 Binary files /dev/null and b/Code/assets/fr/buttons/playLetter.png differ diff --git a/Code/assets/fr/buttons/plus.png b/Code/assets/fr/buttons/plus.png new file mode 100644 index 0000000..c8d9500 Binary files /dev/null and b/Code/assets/fr/buttons/plus.png differ diff --git a/Code/assets/fr/buttons/shield0.png b/Code/assets/fr/buttons/shield0.png new file mode 100644 index 0000000..186d378 Binary files /dev/null and b/Code/assets/fr/buttons/shield0.png differ diff --git a/Code/assets/fr/buttons/shield100.png b/Code/assets/fr/buttons/shield100.png new file mode 100644 index 0000000..59e2fb7 Binary files /dev/null and b/Code/assets/fr/buttons/shield100.png differ diff --git a/Code/assets/fr/buttons/shield33.png b/Code/assets/fr/buttons/shield33.png new file mode 100644 index 0000000..11ae175 Binary files /dev/null and b/Code/assets/fr/buttons/shield33.png differ diff --git a/Code/assets/fr/buttons/shield66.png b/Code/assets/fr/buttons/shield66.png new file mode 100644 index 0000000..457fdc1 Binary files /dev/null and b/Code/assets/fr/buttons/shield66.png differ diff --git a/Code/assets/fr/buttons/shortRange.png b/Code/assets/fr/buttons/shortRange.png new file mode 100644 index 0000000..7e711fe Binary files /dev/null and b/Code/assets/fr/buttons/shortRange.png differ diff --git a/Code/assets/fr/buttons/team.png b/Code/assets/fr/buttons/team.png new file mode 100644 index 0000000..916f375 Binary files /dev/null and b/Code/assets/fr/buttons/team.png differ diff --git a/Code/assets/fr/logoWaria.png b/Code/assets/fr/logoWaria.png new file mode 100644 index 0000000..e36defc Binary files /dev/null and b/Code/assets/fr/logoWaria.png differ diff --git a/Code/assets/fr/nodes/attack.png b/Code/assets/fr/nodes/attack.png new file mode 100644 index 0000000..33db8bf Binary files /dev/null and b/Code/assets/fr/nodes/attack.png differ diff --git a/Code/assets/fr/nodes/attackNode.png b/Code/assets/fr/nodes/attackNode.png new file mode 100644 index 0000000..c17404a Binary files /dev/null and b/Code/assets/fr/nodes/attackNode.png differ diff --git a/Code/assets/fr/nodes/condition.png b/Code/assets/fr/nodes/condition.png new file mode 100644 index 0000000..e7313b2 Binary files /dev/null and b/Code/assets/fr/nodes/condition.png differ diff --git a/Code/assets/fr/nodes/conditionNode.png b/Code/assets/fr/nodes/conditionNode.png new file mode 100644 index 0000000..faa282a Binary files /dev/null and b/Code/assets/fr/nodes/conditionNode.png differ diff --git a/Code/assets/fr/nodes/move.png b/Code/assets/fr/nodes/move.png new file mode 100644 index 0000000..dc23640 Binary files /dev/null and b/Code/assets/fr/nodes/move.png differ diff --git a/Code/assets/fr/nodes/moveNode.png b/Code/assets/fr/nodes/moveNode.png new file mode 100644 index 0000000..c65720c Binary files /dev/null and b/Code/assets/fr/nodes/moveNode.png differ diff --git a/Code/public/js/app.min.js b/Code/public/js/app.min.js index 41588d3..ac2a412 100644 --- a/Code/public/js/app.min.js +++ b/Code/public/js/app.min.js @@ -1 +1 @@ -const 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_WINDOWt.setFrame(0)),t.on("pointerover",()=>t.setFrame(1)),t.on("pointerdown",()=>this.clickPlay(t))}clickPlay(t){t.setFrame(2),console.log("Play"),this.scene.start("Type")}}class Condition{constructor(t,e=!1,s=!1,i,h){this.shieldFilter=e,this.rangeFilter=s,this.shield=i,this.range=h,this.target=t,this.lNode=[]}addNode(t){this.lNode.push(t)}do(t){if(this.doCondition(t))for(let e=0;et.getX()-e.getX();this.tree.lRect.sort(t),this.tree.lRect.forEach(function(e){void 0!==e.lRect&&e.lRect.sort(t)}),this.gm.modifyNodes(this.tree.getNodes()),this.scene.resume("GamingBoard")}createButton(){let t=WIDTH_MAP+WIDTH_WINDOW/10,e=WIDTH_MAP+HEIGHT_WINDOW/10+5,s=HEIGHT_WINDOW/10,i=HEIGHT_WINDOW/15,h=this.add.sprite(t,e,"play").setOrigin(1,0).setInteractive();this.pencil=this.add.sprite(t-s,e,"pencil").setOrigin(1,0).setInteractive().setVisible(!1),this.bin=this.add.sprite(t-2*s,e,"bin").setOrigin(1,0).setInteractive().setVisible(!1),this.plus=this.add.sprite(t-3*s,e,"plus").setOrigin(1,0).setInteractive().setVisible(!1),this.line=0,h.displayHeight=h.displayWidth=i,this.pencil.displayHeight=this.pencil.displayWidth=i,this.bin.displayHeight=this.bin.displayWidth=i,this.plus.displayHeight=this.plus.displayWidth=i,this.creatBtnOutAndOver(h),this.creatBtnOutAndOver(this.pencil),this.creatBtnOutAndOver(this.bin),this.creatBtnOutAndOver(this.plus),h.on("pointerdown",()=>this.clickPlay(h)),this.pencil.on("pointerdown",()=>this.clickPencil()),this.bin.on("pointerdown",()=>this.clickBin()),this.plus.on("pointerdown",()=>this.clickPlus()),this.input.on("pointerdown",()=>this.OK()),this.input.on("drag",this.doDrag),this.input.on("dragstart",()=>this.pauseScene(h))}creatBtnOutAndOver(t){t.on("pointerout",()=>this.changeFrame(t,0)),t.on("pointerover",()=>this.changeFrame(t,1))}clickPlay(t){this.scene.isPaused("GamingBoard")?this.resume():this.pauseScene(t),this.changeFrame(t,1)}clickPencil(){console.log("PENCIL"),this.changeFrame(this.pencil,0)}clickBin(){console.log("BIN"),this.tree.delete(this.selected),this.changeFrame(this.bin,0)}clickPlus(){console.log("PLUS"),this.game.scene.add("PlusNode",new PlusNode(this.game,this.selected)),this.scene.launch("PlusNode"),this.changeFrame(this.plus,0),this.scene.pause("Game")}}class GamingBoard extends Phaser.Scene{constructor(){super("GamingBoard"),this.listRobot=[]}preload(){this.cameras.main.setViewport(WIDTH_WINDOW/10,HEIGHT_WINDOW/10,WIDTH_MAP,WIDTH_MAP)}create(){this.add.image(0,0,"background").alpha=.1;for(let t=0;tthis.resume()),this.time.addEvent({delay:2e3,callback:this.upShield,callbackScope:this})}update(t,e){super.update(t,e),this.listRobot.forEach(function(t){t.read()});for(let t=0;tthis.listRobot[0].addNode(t))}chooseTarget(t){let e=2*WIDTH_MAP,s=[];this.listRobot.forEach(function(i){if(i!==t&&i.isAlive()){let h=Math.hypot(i.x-t.x,i.y-t.y);e>=h&&(e>h&&(e=h,s=[]),s.push(i))}}),this.listRobot.length>1?t.setTarget(s[Math.floor(Math.random()*(s.length+1))]):t.setTarget(s[0])}upShield(){this.listRobot.forEach(t=>t.addShield(SHIELD_PER_SECOND)),this.time.addEvent({delay:1e3,callback:this.upShield,callbackScope:this})}}class HealthBar{constructor(t,e,s,i,h,a,r){this.bar=new Phaser.GameObjects.Graphics(t),this.width=e,this.height=s,this.valueMax=a,this.value=a,this.color=r,this.draw(),this.setX(i),this.setY(h),t.add.existing(this.bar)}decrease(t){this.value-=t;let e=0;return this.value<0&&(e=-this.value,this.value=0),this.draw(),e}increase(t){this.value+=t,this.value>this.valueMax&&(this.value=this.valueMax),this.draw()}setX(t){this.bar.setX(t-this.width/2)}setY(t){this.bar.setY(t)}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 t=this.value/this.valueMax;t<1/3?this.bar.fillStyle(16711680):this.bar.fillStyle(this.color);let e=Math.floor(t*(this.width-4));this.bar.fillRect(2,2,e,this.height-4)}destroy(){this.bar.destroy()}}class Missile extends Phaser.GameObjects.Image{constructor(t,e,s,i){super(t,0,0,e),this.visible=!1,this.setOrigin(.5,.5),this.setScale(.02)}}class Move{constructor(t){this.toward=t}do(t){return!!t.haveTarget()&&(!0===this.toward?this.moveToward(t):this.fleeFrom(t))}moveToward(t){return t.advanceToTarget()}fleeFrom(t){return t.fleeFromTarget()}}class PlusNode extends Phaser.Scene{constructor(t,e){super("PlusNode"),this.game=t,this.selected=e}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 t=WIDTH_WINDOW/2,e=HEIGHT_WINDOW/2,s=WIDTH_WINDOW/4,i=HEIGHT_WINDOW/10,h={font:i.toString()+"px stencil",fill:"#e2e2e2"};this.add.text(t-s,e-i,"ATTACK",h).setOrigin(.5,.5),this.add.text(t,e-i,"MOVE",h).setOrigin(.5,.5),this.add.text(t+s,e-i,"CONDITION",h).setOrigin(.5,.5),this.add.sprite(t-s,e+i,"attack").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("attack")),this.add.sprite(t,e+i,"move").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("move")),this.add.sprite(t+s,e+i,"condition").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("condition"))}click(t){switch(t.toString()){case"attack":this.game.scene.add("AddNode",new AddAttack(this.game,this.selected));break;case"move":this.game.scene.add("AddNode",new AddMove(this.game,this.selected));break;case"condition":this.game.scene.add("AddNode",new AddCondition(this.game,this.selected))}this.scene.launch("AddNode"),this.scene.stop("PlusNode"),this.game.scene.remove("PlusNode")}createButton(){let t=WIDTH_WINDOW/2,e=HEIGHT_WINDOW-100;this.cancelBtn=this.add.image(t,e,"cancel").setOrigin(.5,.5).setInteractive(),this.cancelBtn.on("pointerover",()=>this.cancelBtn.setFrame(1)),this.cancelBtn.on("pointerout",()=>this.cancelBtn.setFrame(0)),this.cancelBtn.on("pointerdown",()=>this.cancel())}cancel(){this.scene.resume("Game"),this.scene.stop("PlusNode"),this.game.scene.remove("PlusNode")}}class RectangleNode{constructor(t,e,s,i,...h){switch(i.toString().toLowerCase()){case"attack":this.rect=new Phaser.GameObjects.Image(s,t,e,"attackN"),this.node=new Attack,this.canAddNode=!1,this.line=s.add.graphics();break;case"move":this.rect=new Phaser.GameObjects.Image(s,t,e,"moveN"),this.node=new Move(h[0]),this.canAddNode=!1,this.line=s.add.graphics(),!0===h[0]?this.rect.setFrame(0):this.rect.setFrame(2);break;case"condition":let a;this.rect=new Phaser.GameObjects.Image(s,t,e,"conditionN"),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(),a="myself"===h[0].name.toString().toLowerCase()?0:1;let r=0;!0===h[1]&&(r=Math.floor(3*h[3])),h[2],this.rect.setFrame(4*a+r);break;case"waria":this.rect=new Phaser.GameObjects.Image(s,t,e,"logoWaria").setInteractive(),this.canAddNode=!0,this.lRect=[],this.scene=s,this.scene.add.existing(this.rect);break;default:return void console.log("Création d'un node echoué")}i.toString().toLowerCase(),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 t=0;tthis.addLine(t))}addLine(t){t.setLine(this.rect.x,this.rect.y+.9*this.rect.displayHeight)}getNodes(){if(void 0===this.node){let t=[];return this.lRect.forEach(function(e){void 0!==e.node&&(void 0!==e.lRect&&(e.node.clearNodes(),e.lRect.forEach(t=>e.node.addNode(t.node))),t.push(e.node))}),t}}destroy(){this.line.destroy(),this.rect.destroy(),void 0!==this.lRect&&this.lRect.forEach(t=>t.destroy())}delete(t){let e=this.lRect.indexOf(t);if(-1!==e)return this.lRect.splice(e,1),t.destroy(),!0;for(let e=0;e=0&&this.x>=this.target.x||this.velocityX<=0&&this.x<=this.target.x?this.setX(this.target.x):this.setX(this.x+this.velocityX),this.velocityY>=0&&this.y>=this.target.y||this.velocityY<=0&&this.y<=this.target.y?this.setY(this.target.y):this.setY(this.y+this.velocityY),!0)}fleeFromTarget(){return!!this.verifyTarget()&&(this.velocityX>=0&&this.x-this.width/2<=0?this.setX(this.width/2):this.velocityX<=0&&this.x+this.width/2>=WIDTH_MAP?this.setX(WIDTH_MAP-this.width/2):this.setX(this.x-this.velocityX),this.velocityY>=0&&this.y-this.width/2<=0?this.setY(this.height/2):this.velocityY<=0&&this.y+this.width/2>=WIDTH_MAP?this.setY(WIDTH_MAP-this.height/2):this.setY(this.y-this.velocityY),!0)}attackTarget(){return!!(this.verifyTarget()&&this.target.isAlive()&&this.isTargetInRange())&&(this.canAttack&&this.attack(this.target),!0)}verifyTarget(){return!!this.haveTarget()&&(!!this.target.isAlive()||(this.setTarget(null),!1))}attack(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.tweens.add({targets:this.missile,x:t.x,y:t.y,ease:"Linear",duration:200,onComplete:()=>this.finishAttack(t)}),this.scene.time.addEvent({delay:Phaser.Math.Between(1e3,3e3),callback:this.reload,callbackScope:this})}finishAttack(t){t.beAttack(this.damage)&&this.setTarget(null),this.missile.setVisible(!1)}reload(){this.canAttack=!0}beAttack(t){let e=this.shield.decrease(t);return e>0&&(console.log("Shield Broken"),this.life.decrease(e)),this.die()}isTargetInRange(){return!!this.verifyTarget()&&this.calcDistance(this.target)0}die(){return 0===this.life.value&&(this.circle.destroy(),this.shield.destroy(),this.life.destroy(),!0)}haveTarget(){return null!=this.target}read(){for(let t=0;tt.setFrame(0)),t.on("pointerover",()=>t.setFrame(1)),t.on("pointerdown",()=>this.clickPlay(t))}clickPlay(t){this.scene.start("Game")}} \ No newline at end of file +class AddAttack extends AddNode{constructor(t,e){super(t,e),this.game=t}create(){console.log("ATTACK"),super.create(),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.addButton(WIDTH_WINDOW/2,HEIGHT_WINDOW/3.2,null,HEIGHT_WINDOW/8,"enemyBot")}}class AddCondition extends AddNode{constructor(t,e){super(t,e),this.game=t,this.selected=e}create(){super.create(),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.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/3.2,null,HEIGHT_WINDOW/8,"enemyBot"),super.addButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/3.2,null,HEIGHT_WINDOW/8,"myself")}}class AddMove extends AddNode{constructor(t,e){super(t,e),this.game=t}create(){console.log("MOVE"),super.create(),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 ?")),super.addButton(WIDTH_WINDOW/6,HEIGHT_WINDOW/3.2,null,HEIGHT_WINDOW/8,"fleeFrom"),super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/3.2,null,HEIGHT_WINDOW/8,"moveToward"),super.addTitle(WIDTH_WINDOW/4*3,HEIGHT_WINDOW/(16/3),selectWord("WHO ?","QUI ?")),super.addButton(WIDTH_WINDOW/4*3,HEIGHT_WINDOW/3.2,null,HEIGHT_WINDOW/8,"enemyBot")}}class Attack{constructor(){}do(t){return!(!t.haveTarget()||!t.isTargetInRange())&&t.attackTarget()}}class Boot extends Phaser.Scene{constructor(){super("Boot")}preload(){let t=this.add.graphics(),e=this.add.graphics(),i=WIDTH_WINDOW/2-160,s=HEIGHT_WINDOW/2-25;e.fillStyle(2236962,.8),e.fillRect(i,s,320,50),this.load.on("progress",function(e){t.clear(),t.fillStyle(16777215,1),t.fillRect(i+10,s+10,300*e,30)}),this.load.on("complete",function(){t.destroy(),e.destroy()}),this.loadSprite("playLetter",550,150,"buttons/"),this.loadSprite("cancel",550,150,"buttons/"),this.loadSprite("add",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("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("moveToward",300,150,"buttons/"),this.loadSprite("fleeFrom",300,150,"buttons/"),this.loadSprite("attackNode",180,190,"nodes/"),this.loadSprite("moveNode",180,190,"nodes/"),this.loadSprite("conditionNode",180,190,"nodes/"),this.loadImage("background"),this.loadImage("bullet"),this.loadImage("logoWaria"),this.loadImage("attack","nodes/"),this.loadImage("move","nodes/"),this.loadImage("condition","nodes/")}create(){this.add.text(WIDTH_WINDOW/2,HEIGHT_WINDOW/3,"WARIA",{font:"200px stencil",fill:"#e2e2e2"}).setOrigin(.5,.5);let t=this.add.sprite(WIDTH_WINDOW/2,HEIGHT_WINDOW/3*2,"playLetter").setInteractive();t.on("pointerout",()=>t.setFrame(0)),t.on("pointerover",()=>t.setFrame(1)),t.on("pointerdown",()=>this.clickPlay(t))}clickPlay(t){t.setFrame(2),console.log("Play"),this.scene.start("Type")}loadSprite(t,e,i,s=""){this.load.spritesheet(t,"assets/"+LANG+"/"+s+t+".png",{frameWidth:e,frameHeight:i})}loadImage(t,e=""){this.load.image(t,"assets/"+LANG+"/"+e+t+".png")}}class Condition{constructor(t,e=!1,i=!1,s,h){this.shieldFilter=e,this.rangeFilter=i,this.shield=s,this.range=h,this.target=t,this.lNode=[]}addNode(t){this.lNode.push(t)}do(t){if(this.doCondition(t))for(let e=0;et.getX()-e.getX();this.tree.lRect.sort(t),this.tree.lRect.forEach(function(e){void 0!==e.lRect&&e.lRect.sort(t)}),this.gm.modifyNodes(this.tree.getNodes()),this.scene.resume("GamingBoard")}createButton(){let t=WIDTH_MAP+WIDTH_WINDOW/10,e=WIDTH_MAP+HEIGHT_WINDOW/10+5,i=HEIGHT_WINDOW/10,s=HEIGHT_WINDOW/15,h=this.add.sprite(t,e,"play").setOrigin(1,0).setInteractive();this.pencil=this.add.sprite(t-i,e,"pencil").setOrigin(1,0).setInteractive().setVisible(!1),this.bin=this.add.sprite(t-2*i,e,"bin").setOrigin(1,0).setInteractive().setVisible(!1),this.plus=this.add.sprite(t-3*i,e,"plus").setOrigin(1,0).setInteractive().setVisible(!1),this.line=0,h.displayHeight=h.displayWidth=s,this.pencil.displayHeight=this.pencil.displayWidth=s,this.bin.displayHeight=this.bin.displayWidth=s,this.plus.displayHeight=this.plus.displayWidth=s,this.creatBtnOutAndOver(h),this.creatBtnOutAndOver(this.pencil),this.creatBtnOutAndOver(this.bin),this.creatBtnOutAndOver(this.plus),h.on("pointerdown",()=>this.clickPlay(h)),this.pencil.on("pointerdown",()=>this.clickPencil()),this.bin.on("pointerdown",()=>this.clickBin()),this.plus.on("pointerdown",()=>this.clickPlus()),this.input.on("pointerdown",()=>this.OK()),this.input.on("drag",this.doDrag),this.input.on("dragstart",()=>this.pauseScene(h))}creatBtnOutAndOver(t){t.on("pointerout",()=>this.changeFrame(t,0)),t.on("pointerover",()=>this.changeFrame(t,1))}clickPlay(t){this.scene.isPaused("GamingBoard")?this.resume():this.pauseScene(t),this.changeFrame(t,1)}clickPencil(){console.log("PENCIL"),this.changeFrame(this.pencil,0)}clickBin(){console.log("BIN"),this.tree.delete(this.selected),this.changeFrame(this.bin,0)}clickPlus(){console.log("PLUS"),this.game.scene.add("PlusNode",new PlusNode(this.game,this.selected)),this.scene.launch("PlusNode"),this.changeFrame(this.plus,0),this.scene.pause("Game")}}class GamingBoard extends Phaser.Scene{constructor(){super("GamingBoard"),this.listRobot=[]}preload(){this.cameras.main.setViewport(WIDTH_WINDOW/10,HEIGHT_WINDOW/10,WIDTH_MAP,WIDTH_MAP)}create(){this.add.image(0,0,"background").alpha=.1;for(let t=0;tthis.resume()),this.time.addEvent({delay:2e3,callback:this.upShield,callbackScope:this})}update(t,e){super.update(t,e),this.listRobot.forEach(function(t){t.read()});for(let t=0;tthis.listRobot[0].addNode(t))}chooseTarget(t){let e=2*WIDTH_MAP,i=[];this.listRobot.forEach(function(s){if(s!==t&&s.isAlive()){let h=Math.hypot(s.x-t.x,s.y-t.y);e>=h&&(e>h&&(e=h,i=[]),i.push(s))}}),this.listRobot.length>1?t.setTarget(i[Math.floor(Math.random()*(i.length+1))]):t.setTarget(i[0])}upShield(){this.listRobot.forEach(t=>t.addShield(SHIELD_PER_SECOND)),this.time.addEvent({delay:1e3,callback:this.upShield,callbackScope:this})}}class HealthBar{constructor(t,e,i,s,h,a,r){this.bar=new Phaser.GameObjects.Graphics(t),this.width=e,this.height=i,this.valueMax=a,this.value=a,this.color=r,this.draw(),this.setX(s),this.setY(h),t.add.existing(this.bar)}decrease(t){this.value-=t;let e=0;return this.value<0&&(e=-this.value,this.value=0),this.draw(),e}increase(t){this.value+=t,this.value>this.valueMax&&(this.value=this.valueMax),this.draw()}setX(t){this.bar.setX(t-this.width/2)}setY(t){this.bar.setY(t)}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 t=this.value/this.valueMax;t<1/3?this.bar.fillStyle(16711680):this.bar.fillStyle(this.color);let e=Math.floor(t*(this.width-4));this.bar.fillRect(2,2,e,this.height-4)}destroy(){this.bar.destroy()}}class Missile extends Phaser.GameObjects.Image{constructor(t,e,i,s){super(t,0,0,e),this.visible=!1,this.setOrigin(.5,.5),this.setScale(.02)}}class Move{constructor(t){this.toward=t}do(t){return!!t.haveTarget()&&(!0===this.toward?this.moveToward(t):this.fleeFrom(t))}moveToward(t){return t.advanceToTarget()}fleeFrom(t){return t.fleeFromTarget()}}class PlusNode extends Phaser.Scene{constructor(t,e){super("PlusNode"),this.game=t,this.selected=e}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 t=WIDTH_WINDOW/2,e=HEIGHT_WINDOW/2,i=WIDTH_WINDOW/3,s=HEIGHT_WINDOW/10,h={font:s.toString()+"px stencil",fill:"#e2e2e2"};this.add.text(t-i,e-s,selectWord("ATTACK","ATTAQUE"),h).setOrigin(.5,.5),this.add.text(t,e-s,selectWord("MOVE","DEPLACEMENT"),h).setOrigin(.5,.5),this.add.text(t+i,e-s,selectWord("CONDITION","CONDITION"),h).setOrigin(.5,.5);let a=this.add.sprite(t-i,e+s,"attack").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("attack"));a.displayHeight=2*s,a.scaleX=a.scaleY,(a=this.add.sprite(t,e+s,"move").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("move"))).displayHeight=2*s,a.scaleX=a.scaleY,(a=this.add.sprite(t+i,e+s,"condition").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("condition"))).displayHeight=2*s,a.scaleX=a.scaleY}click(t){switch(t.toString()){case"attack":this.game.scene.add("AddNode",new AddAttack(this.game,this.selected));break;case"move":this.game.scene.add("AddNode",new AddMove(this.game,this.selected));break;case"condition":this.game.scene.add("AddNode",new AddCondition(this.game,this.selected))}this.scene.launch("AddNode"),this.scene.stop("PlusNode"),this.game.scene.remove("PlusNode")}createButton(){let t=WIDTH_WINDOW/2,e=HEIGHT_WINDOW-100,i=this.add.image(t,e,"cancel").setOrigin(.5,.5).setInteractive();i.on("pointerover",()=>i.setFrame(1)),i.on("pointerout",()=>i.setFrame(0)),i.on("pointerdown",()=>this.cancel()),i.displayHeight=HEIGHT_WINDOW/10,i.scaleX=i.scaleY}cancel(){this.scene.resume("Game"),this.scene.stop("PlusNode"),this.game.scene.remove("PlusNode")}}class RectangleNode{constructor(t,e,i,s,...h){switch(s.toString().toLowerCase()){case"attack":this.rect=new Phaser.GameObjects.Image(i,t,e,"attackNode"),this.node=new Attack,this.canAddNode=!1,this.line=i.add.graphics();break;case"move":this.rect=new Phaser.GameObjects.Image(i,t,e,"moveNode"),this.node=new Move(h[0]),this.canAddNode=!1,this.line=i.add.graphics(),!0===h[0]?this.rect.setFrame(0):this.rect.setFrame(2);break;case"condition":let a;this.rect=new Phaser.GameObjects.Image(i,t,e,"conditionNode"),this.node=new Condition(h[0],h[1],h[2],h[3],h[4]),this.canAddNode=!0,this.lRect=[],this.scene=i,this.line=i.add.graphics(),a="myself"===h[0].name.toString().toLowerCase()?0:1;let r=0;!0===h[1]&&(r=Math.floor(3*h[3])),h[2],this.rect.setFrame(4*a+r);break;case"waria":this.rect=new Phaser.GameObjects.Image(i,t,e,"logoWaria").setInteractive(),this.canAddNode=!0,this.lRect=[],this.scene=i,this.scene.add.existing(this.rect);break;default:return void console.log("Création d'un node echoué")}s.toString().toLowerCase(),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 t=0;tthis.addLine(t))}addLine(t){t.setLine(this.rect.x,this.rect.y+.9*this.rect.displayHeight)}getNodes(){if(void 0===this.node){let t=[];return this.lRect.forEach(function(e){void 0!==e.node&&(void 0!==e.lRect&&(e.node.clearNodes(),e.lRect.forEach(t=>e.node.addNode(t.node))),t.push(e.node))}),t}}destroy(){this.line.destroy(),this.rect.destroy(),void 0!==this.lRect&&this.lRect.forEach(t=>t.destroy())}delete(t){let e=this.lRect.indexOf(t);if(-1!==e)return this.lRect.splice(e,1),t.destroy(),!0;for(let e=0;e=0&&this.x>=this.target.x||this.velocityX<=0&&this.x<=this.target.x?this.setX(this.target.x):this.setX(this.x+this.velocityX),this.velocityY>=0&&this.y>=this.target.y||this.velocityY<=0&&this.y<=this.target.y?this.setY(this.target.y):this.setY(this.y+this.velocityY),!0)}fleeFromTarget(){return!!this.verifyTarget()&&(this.velocityX>=0&&this.x-this.width/2<=0?this.setX(this.width/2):this.velocityX<=0&&this.x+this.width/2>=WIDTH_MAP?this.setX(WIDTH_MAP-this.width/2):this.setX(this.x-this.velocityX),this.velocityY>=0&&this.y-this.width/2<=0?this.setY(this.height/2):this.velocityY<=0&&this.y+this.width/2>=WIDTH_MAP?this.setY(WIDTH_MAP-this.height/2):this.setY(this.y-this.velocityY),!0)}attackTarget(){return!!(this.verifyTarget()&&this.target.isAlive()&&this.isTargetInRange())&&(this.canAttack&&this.attack(this.target),!0)}verifyTarget(){return!!this.haveTarget()&&(!!this.target.isAlive()||(this.setTarget(null),!1))}attack(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.tweens.add({targets:this.missile,x:t.x,y:t.y,ease:"Linear",duration:200,onComplete:()=>this.finishAttack(t)}),this.scene.time.addEvent({delay:Phaser.Math.Between(1e3,3e3),callback:this.reload,callbackScope:this})}finishAttack(t){t.beAttack(this.damage)&&this.setTarget(null),this.missile.setVisible(!1)}reload(){this.canAttack=!0}beAttack(t){let e=this.shield.decrease(t);return e>0&&(console.log("Shield Broken"),this.life.decrease(e)),this.die()}isTargetInRange(){return!!this.verifyTarget()&&this.calcDistance(this.target)0}die(){return 0===this.life.value&&(this.circle.destroy(),this.shield.destroy(),this.life.destroy(),!0)}haveTarget(){return null!=this.target}read(){for(let t=0;tt.setFrame(0)),t.on("pointerover",()=>t.setFrame(1)),t.on("pointerdown",()=>this.clickPlay(t))}clickPlay(t){this.scene.start("Game")}} \ No newline at end of file diff --git a/Code/src/js/Init.js b/Code/src/js/Init.js index 0218759..6ad4c8f 100644 --- a/Code/src/js/Init.js +++ b/Code/src/js/Init.js @@ -1,9 +1,13 @@ -/*var EnemyBots = new Array(5); -//var myself = new Robot(5, 5); -EnemyBots.push(new Robot(1, 1)); -console.log(myself.height); -*/ +function selectWord(en, fr) { + switch (LANG) { + case 'fr': + return fr; + default: + return en; + } +} +const LANG = navigator.language.substr(0, 2).toLowerCase(); const SHIELD_PER_SECOND = 5; const COLOR_ATTACK = 0xff0000; const COLOR_MOVE = 0x0000ff; diff --git a/Code/src/js/classes/AddAttack.js b/Code/src/js/classes/AddAttack.js index ee7c31f..c1aee3d 100644 --- a/Code/src/js/classes/AddAttack.js +++ b/Code/src/js/classes/AddAttack.js @@ -7,8 +7,8 @@ class AddAttack extends AddNode { create() { console.log("ATTACK"); super.create(); - super.addTitle(WIDTH_WINDOW / 2, HEIGHT_WINDOW / 16, "ADD NODE : ATTACK"); - super.addTitle(WIDTH_WINDOW / 2, HEIGHT_WINDOW / (16 / 3), "WHO ?"); + 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.addButton(WIDTH_WINDOW / 2, HEIGHT_WINDOW / (16 / 5), null, HEIGHT_WINDOW / 8, 'enemyBot'); } diff --git a/Code/src/js/classes/AddCondition.js b/Code/src/js/classes/AddCondition.js index 48e8e36..d22e9a3 100644 --- a/Code/src/js/classes/AddCondition.js +++ b/Code/src/js/classes/AddCondition.js @@ -8,8 +8,8 @@ class AddCondition extends AddNode { create() { super.create(); console.log("CONDITION"); - super.addTitle(WIDTH_WINDOW / 2, HEIGHT_WINDOW / 16, "ADD NODE : CONDITION"); - super.addTitle(WIDTH_WINDOW / 2, HEIGHT_WINDOW / (16 / 3), "WHO ?"); + 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.addButton(WIDTH_WINDOW / 3, HEIGHT_WINDOW / (16 / 5), null, HEIGHT_WINDOW / 8, 'enemyBot'); super.addButton(WIDTH_WINDOW / 1.5, HEIGHT_WINDOW / (16 / 5), null, HEIGHT_WINDOW / 8, 'myself'); } diff --git a/Code/src/js/classes/AddMove.js b/Code/src/js/classes/AddMove.js index e388848..1f98bad 100644 --- a/Code/src/js/classes/AddMove.js +++ b/Code/src/js/classes/AddMove.js @@ -7,13 +7,11 @@ class AddMove extends AddNode { create() { console.log("MOVE"); super.create(); - super.addTitle(WIDTH_WINDOW / 2, HEIGHT_WINDOW / 16, "ADD NODE : MOVE"); - - super.addTitle(WIDTH_WINDOW / 4, HEIGHT_WINDOW / (16 / 3), "FLEE OR MOVE ?"); + 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 ?")); super.addButton(WIDTH_WINDOW / 6, HEIGHT_WINDOW / (16 / 5), null, HEIGHT_WINDOW / 8, 'fleeFrom'); super.addButton(WIDTH_WINDOW / 3, HEIGHT_WINDOW / (16 / 5), null, HEIGHT_WINDOW / 8, 'moveToward'); - - super.addTitle(WIDTH_WINDOW / 4 * 3, HEIGHT_WINDOW / (16 / 3), "WHO ?"); + super.addTitle(WIDTH_WINDOW / 4 * 3, HEIGHT_WINDOW / (16 / 3), selectWord("WHO ?", "QUI ?")); super.addButton(WIDTH_WINDOW / 4 * 3, HEIGHT_WINDOW / (16 / 5), null, HEIGHT_WINDOW / 8, 'enemyBot'); } diff --git a/Code/src/js/classes/Boot.js b/Code/src/js/classes/Boot.js index b3b5957..65b23e1 100644 --- a/Code/src/js/classes/Boot.js +++ b/Code/src/js/classes/Boot.js @@ -23,50 +23,53 @@ class Boot extends Phaser.Scene { progressBox.destroy(); }); + this.loadSprite('playLetter', 550, 150, 'buttons/'); + this.loadSprite('cancel', 550, 150, 'buttons/'); + this.loadSprite('add', 550, 150, 'buttons/'); - this.load.spritesheet('btn_play', 'assets/btnPlay.png', {frameWidth: 650, frameHeight: 170}); - this.load.spritesheet('btn_duel', 'assets/btnDuel.png', {frameWidth: 269, frameHeight: 262}); - this.load.spritesheet('btn_last', 'assets/btnLast.png', {frameWidth: 269, frameHeight: 262}); - this.load.spritesheet('btn_team', 'assets/btnTeam.png', {frameWidth: 269, frameHeight: 262}); - this.load.spritesheet('btn_flag', 'assets/btnFlag.png', {frameWidth: 269, frameHeight: 262}); - this.load.spritesheet('btn_map', 'assets/btnMap.png', {frameWidth: 269, frameHeight: 262}); - this.load.spritesheet('play', 'assets/play.png', {frameWidth: 100, frameHeight: 100}); - this.load.image('background', 'assets/background.png'); - this.load.image('bullet', 'assets/bullet.png'); - this.load.image('logoWaria', 'assets/logoWaria.png'); - this.load.spritesheet('attackN', 'assets/nodes/attackNode.png', {frameWidth: 180, frameHeight: 190}); - this.load.spritesheet('moveN', 'assets/nodes/moveNode.png', {frameWidth: 180, frameHeight: 190}); - this.load.spritesheet('conditionN', 'assets/nodes/conditionNode.png', {frameWidth: 180, frameHeight: 190}); - this.load.image('attack', 'assets/nodes/attack.png'); - this.load.image('move', 'assets/nodes/move.png'); - this.load.image('condition', 'assets/nodes/condition.png'); + 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.load.spritesheet('bin', 'assets/buttons/bin.png', {frameWidth: 100, frameHeight: 100}); - this.load.spritesheet('plus', 'assets/buttons/plus.png', {frameWidth: 100, frameHeight: 100}); - this.load.spritesheet('pencil', 'assets/buttons/pencil.png', {frameWidth: 100, frameHeight: 100}); - this.load.spritesheet('cancel', 'assets/buttons/cancel.png', {frameWidth: 550, frameHeight: 150}); - this.load.spritesheet('add', 'assets/buttons/add.png', {frameWidth: 550, frameHeight: 150}); + this.loadSprite('shortRange', 300, 150, 'buttons/'); + this.loadSprite('mediumRange', 300, 150, 'buttons/'); + this.loadSprite('longRange', 300, 150, 'buttons/'); - this.load.spritesheet('shortRange', 'assets/buttons/shortRange.png', {frameWidth: 300, frameHeight: 150}); - this.load.spritesheet('mediumRange', 'assets/buttons/mediumRange.png', {frameWidth: 300, frameHeight: 150}); - this.load.spritesheet('longRange', 'assets/buttons/longRange.png', {frameWidth: 300, frameHeight: 150}); + 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.load.spritesheet('shield0', 'assets/buttons/shield0.png', {frameWidth: 300, frameHeight: 150}); - this.load.spritesheet('shield33', 'assets/buttons/shield33.png', {frameWidth: 300, frameHeight: 150}); - this.load.spritesheet('shield66', 'assets/buttons/shield66.png', {frameWidth: 300, frameHeight: 150}); - this.load.spritesheet('shield100', 'assets/buttons/shield100.png', {frameWidth: 300, frameHeight: 150}); + this.loadSprite('myself', 300, 150, 'buttons/'); + this.loadSprite('enemyBot', 300, 150, 'buttons/'); - this.load.spritesheet('myself', 'assets/buttons/myself.png', {frameWidth: 300, frameHeight: 150}); - this.load.spritesheet('enemyBot', 'assets/buttons/enemyBot.png', {frameWidth: 300, frameHeight: 150}); + this.loadSprite('moveToward', 300, 150, 'buttons/'); + this.loadSprite('fleeFrom', 300, 150, 'buttons/'); - this.load.spritesheet('moveToward', 'assets/buttons/moveToward.png', {frameWidth: 300, frameHeight: 150}); - this.load.spritesheet('fleeFrom', 'assets/buttons/fleeFrom.png', {frameWidth: 300, frameHeight: 150}); + this.loadSprite('attackNode', 180, 190, 'nodes/'); + this.loadSprite('moveNode', 180, 190, 'nodes/'); + this.loadSprite('conditionNode', 180, 190, 'nodes/'); + + + this.loadImage('background'); + this.loadImage('bullet'); + this.loadImage('logoWaria'); + this.loadImage('attack', 'nodes/'); + this.loadImage('move', 'nodes/'); + this.loadImage('condition', 'nodes/'); } create() { let style = {font: '200px stencil', fill: "#e2e2e2"}; this.add.text(WIDTH_WINDOW / 2, HEIGHT_WINDOW / 3, "WARIA", style).setOrigin(0.5, 0.5); - let btn = this.add.sprite(WIDTH_WINDOW / 2, (HEIGHT_WINDOW / 3) * 2, 'btn_play').setInteractive(); + let btn = this.add.sprite(WIDTH_WINDOW / 2, (HEIGHT_WINDOW / 3) * 2, 'playLetter').setInteractive(); //btn.setFrame(0); btn.on('pointerout', () => btn.setFrame(0)); btn.on('pointerover', () => btn.setFrame(1)); @@ -78,4 +81,15 @@ class Boot extends Phaser.Scene { console.log("Play"); this.scene.start('Type'); } + + loadSprite(name, width, height, folder = '') { + this.load.spritesheet(name, 'assets/' + LANG + '/' + folder + name + '.png', { + frameWidth: width, + frameHeight: height + }); + } + + loadImage(name, folder = '') { + this.load.image(name, 'assets/' + LANG + '/' + folder + name + '.png'); + } } \ No newline at end of file diff --git a/Code/src/js/classes/PlusNode.js b/Code/src/js/classes/PlusNode.js index 7390b53..e9a9c69 100644 --- a/Code/src/js/classes/PlusNode.js +++ b/Code/src/js/classes/PlusNode.js @@ -15,22 +15,30 @@ class PlusNode extends Phaser.Scene { createNode() { let x = WIDTH_WINDOW / 2; let y = HEIGHT_WINDOW / 2; - let diffX = WIDTH_WINDOW / 4; + let diffX = WIDTH_WINDOW / 3; let diffY = HEIGHT_WINDOW / 10; let sizeText = diffY; let style = {font: sizeText.toString() + 'px stencil', fill: "#e2e2e2"}; - this.add.text(x - diffX, y - diffY, "ATTACK", style).setOrigin(0.5, 0.5); - this.add.text(x, y - diffY, "MOVE", style).setOrigin(0.5, 0.5); - this.add.text(x + diffX, y - diffY, "CONDITION", style).setOrigin(0.5, 0.5); + this.add.text(x - diffX, y - diffY, selectWord("ATTACK", "ATTAQUE"), style).setOrigin(0.5, 0.5); + this.add.text(x, y - diffY, selectWord("MOVE", "DEPLACEMENT"), style).setOrigin(0.5, 0.5); + this.add.text(x + diffX, y - diffY, selectWord("CONDITION", "CONDITION"), style).setOrigin(0.5, 0.5); - this.add.sprite(x - diffX, y + diffY, 'attack').setOrigin(0.5, 0.5).setInteractive() + let btn = this.add.sprite(x - diffX, y + diffY, 'attack').setOrigin(0.5, 0.5).setInteractive() .on('pointerdown', () => this.click('attack')); - this.add.sprite(x, y + diffY, 'move').setOrigin(0.5, 0.5).setInteractive() + btn.displayHeight = diffY * 2; + btn.scaleX = btn.scaleY; + + btn = this.add.sprite(x, y + diffY, 'move').setOrigin(0.5, 0.5).setInteractive() .on('pointerdown', () => this.click('move')); - this.add.sprite(x + diffX, y + diffY, 'condition').setOrigin(0.5, 0.5).setInteractive() + btn.displayHeight = diffY * 2; + btn.scaleX = btn.scaleY; + + btn = this.add.sprite(x + diffX, y + diffY, 'condition').setOrigin(0.5, 0.5).setInteractive() .on('pointerdown', () => this.click('condition')); + btn.displayHeight = diffY * 2; + btn.scaleX = btn.scaleY; } @@ -55,10 +63,12 @@ class PlusNode extends Phaser.Scene { createButton() { let x = WIDTH_WINDOW / 2; let y = HEIGHT_WINDOW - 100; - this.cancelBtn = this.add.image(x, y, 'cancel').setOrigin(0.5, 0.5).setInteractive(); - this.cancelBtn.on('pointerover', () => this.cancelBtn.setFrame(1)); - this.cancelBtn.on('pointerout', () => this.cancelBtn.setFrame(0)); - this.cancelBtn.on('pointerdown', () => this.cancel()); + let cancelBtn = this.add.image(x, y, 'cancel').setOrigin(0.5, 0.5).setInteractive(); + cancelBtn.on('pointerover', () => cancelBtn.setFrame(1)); + cancelBtn.on('pointerout', () => cancelBtn.setFrame(0)); + cancelBtn.on('pointerdown', () => this.cancel()); + cancelBtn.displayHeight = HEIGHT_WINDOW / 10; + cancelBtn.scaleX = cancelBtn.scaleY; } cancel() { diff --git a/Code/src/js/classes/RectangleNode.js b/Code/src/js/classes/RectangleNode.js index 51de1da..e123295 100644 --- a/Code/src/js/classes/RectangleNode.js +++ b/Code/src/js/classes/RectangleNode.js @@ -2,13 +2,13 @@ class RectangleNode { constructor(x, y, scene, type, ...option) { switch (type.toString().toLowerCase()) { case 'attack': - this.rect = new Phaser.GameObjects.Image(scene, x, y, 'attackN'); + this.rect = new Phaser.GameObjects.Image(scene, x, y, 'attackNode'); this.node = new Attack(); this.canAddNode = false; this.line = scene.add.graphics(); break; case 'move' : - this.rect = new Phaser.GameObjects.Image(scene, x, y, 'moveN'); + this.rect = new Phaser.GameObjects.Image(scene, x, y, 'moveNode'); this.node = new Move(option[0]); this.canAddNode = false; this.line = scene.add.graphics(); @@ -19,7 +19,7 @@ class RectangleNode { } break; case 'condition': - this.rect = new Phaser.GameObjects.Image(scene, x, y, 'conditionN'); + this.rect = new Phaser.GameObjects.Image(scene, x, y, 'conditionNode'); this.node = new Condition(option[0], option[1], option[2], option[3], option[4]); this.canAddNode = true; this.lRect = []; diff --git a/Code/src/js/classes/Type.js b/Code/src/js/classes/Type.js index d4baf0f..79c8fed 100644 --- a/Code/src/js/classes/Type.js +++ b/Code/src/js/classes/Type.js @@ -10,19 +10,19 @@ class Type extends Phaser.Scene { let style = {font: '200px stencil', fill: "#e2e2e2"}; this.add.text(WIDTH_WINDOW / 2, HEIGHT_WINDOW / 4, "WARIA", style).setOrigin(0.5, 1); - let btnDuel = this.add.sprite((WIDTH_WINDOW / 8) * 3, (HEIGHT_WINDOW / 4) * 2, 'btn_duel').setInteractive(); + let btnDuel = this.add.sprite((WIDTH_WINDOW / 8) * 3, (HEIGHT_WINDOW / 4) * 2, 'duel').setInteractive(); this.createbutton(btnDuel); - let btnLast = this.add.sprite((WIDTH_WINDOW / 8) * 5, (HEIGHT_WINDOW / 4) * 2, 'btn_last').setInteractive(); + let btnLast = this.add.sprite((WIDTH_WINDOW / 8) * 5, (HEIGHT_WINDOW / 4) * 2, 'last').setInteractive(); this.createbutton(btnLast); - let btnTeam = this.add.sprite((WIDTH_WINDOW / 8) * 2, (HEIGHT_WINDOW / 4) * 3, 'btn_team').setInteractive(); + let btnTeam = this.add.sprite((WIDTH_WINDOW / 8) * 2, (HEIGHT_WINDOW / 4) * 3, 'team').setInteractive(); this.createbutton(btnTeam); - let btnFlag = this.add.sprite((WIDTH_WINDOW / 8) * 4, (HEIGHT_WINDOW / 4) * 3, 'btn_flag').setInteractive(); + let btnFlag = this.add.sprite((WIDTH_WINDOW / 8) * 4, (HEIGHT_WINDOW / 4) * 3, 'flag').setInteractive(); this.createbutton(btnFlag); - let btnMap = this.add.sprite((WIDTH_WINDOW / 8) * 6, (HEIGHT_WINDOW / 4) * 3, 'btn_map').setInteractive(); + let btnMap = this.add.sprite((WIDTH_WINDOW / 8) * 6, (HEIGHT_WINDOW / 4) * 3, 'map').setInteractive(); this.createbutton(btnMap); }