/* var menuSquareOne = { create: function(){}, ---------------------------- end of phaser functions loadMap: function(){} }; var mapSquareOne = { create: function(){}, update: function(){}, ---------------------------- end of phaser functions loadGame: function() }; var gameSquareOne = { create: function(){}, update: function(){}, ---------------------------- end of phaser functions updateCounter: function(){}, overSquare: function(){}, outSquare: function(){}, clickSquare: function(){}, //setPlace: function(){}, postScore: function(){}, viewHelp: function(){}, //checkOverlap: function(){} //getRndDivisor: function(){} }; var endSquareOne = { create: function(){}, update: function(){}, ---------------------------- end of phaser functions verPrincipal: function(){}, verMenu: function(){} }; */ // Tractor and Square states /****************************** MENU ****************************/ var stairsRight, stairsLeft; var menuSquareOne = { create: function() { // Creating sound variable var beepSound = game.add.audio('sound_beep'); // Menu options buttonSettings["addButtons"](1,1, 0,1,0, 1,0, 0,0); // Setting title var style = { font: '28px Arial', fill: '#00804d'}; var title = game.add.text(game.world.centerX, 40, lang.game_menu_title, style); title.anchor.setTo(0.5, 0.5); //Showing Games and Levels var maxHeight = 120; //Max height of a stair var stairHeight = 40; //height growth of a stair var stairWidth = 100; //Width of a stair var startStair = 320; var startSymbol = 150; var startSquare = (startSymbol/2)+startStair+stairWidth*3; //First stairs, plus, 3 levels, blue square var blueSquare = game.add.graphics(startSquare, 175); blueSquare.anchor.setTo(0.5,0.5); blueSquare.lineStyle(2, 0x31314e); blueSquare.beginFill(0xefeff5); blueSquare.drawRect(0, 0, 80, 40); blueSquare.endFill(); var bplus = game.add.sprite(startSymbol, 195, 'h_arrow'); bplus.frame = 0; bplus.scale.setTo(0.7); bplus.anchor.setTo(0.5,0.5); var stairsPlus = []; for(var i=1;i<=3;i++){ //stair var x1 = startStair+(stairWidth*(i-1)); var y1 = 135+maxHeight-i*stairHeight; var x2 = stairWidth;//x1 + 40; var y2 = stairHeight*i;//y1 + 24; stairsPlus[i] = game.add.graphics(0, 0); stairsPlus[i].lineStyle(1, 0xFFFFFF, 1); stairsPlus[i].beginFill(0x99b3ff); stairsPlus[i].drawRect(x1, y1, x2, y2); stairsPlus[i].endFill(); //event stairsPlus[i].inputEnabled = true; stairsPlus[i].input.useHandCursor = true; stairsPlus[i].events.onInputDown.add(this.loadMap, {beep: beepSound, difficulty: i, operator: 'Plus' }); stairsPlus[i].events.onInputOver.add(function (item) { item.alpha=0.5; }, this); stairsPlus[i].events.onInputOut.add(function (item) { item.alpha=1; }, this); //label var xl = x1+stairWidth/2; //x label var yl = y1+(stairHeight*i)/2; //y label var label = game.add.text(xl, yl, i, { font: '25px Arial', fill: '#ffffff', align: 'center' }); label.anchor.setTo(0.5, 0.4); } //Second stairs, minus, 5 levels, red Square var redSquare = game.add.graphics(startSquare, 330); redSquare.anchor.setTo(0.5,0.5); redSquare.lineStyle(2, 0xb30000); redSquare.beginFill(0xefeff5); redSquare.drawRect(0, 0, 80, 40); redSquare.endFill(); var rminus = game.add.sprite(startSymbol, 350, 'h_arrow'); rminus.frame = 5; rminus.scale.setTo(0.7); rminus.scale.x *= -1; rminus.anchor.setTo(0.5,0.5); var stairsMinus = []; for(var i=1;i<=3;i++){ //stair var x1 = startStair+(stairWidth*(i-1)); var y1 = 285+maxHeight-i*stairHeight; var x2 = stairWidth;//x1 + 40; var y2 = stairHeight*i;//y1 + 24; stairsMinus[i] = game.add.graphics(0, 0); stairsMinus[i].lineStyle(1, 0xFFFFFF, 1); stairsMinus[i].beginFill(0xff6666); stairsMinus[i].drawRect(x1, y1, x2, y2); stairsMinus[i].endFill(); //event stairsMinus[i].inputEnabled = true; stairsMinus[i].input.useHandCursor = true; stairsMinus[i].events.onInputDown.add(this.loadMap, {beep: beepSound, difficulty: i, operator: 'Minus' }); stairsMinus[i].events.onInputOver.add(function (item) { item.alpha=0.5; }, this); stairsMinus[i].events.onInputOut.add(function (item) { item.alpha=1; }, this); //label var xl = x1+stairWidth/2; //x label var yl = y1+(stairHeight*i)/2; //y label var label = game.add.text(xl, yl, i, { font: '25px Arial', fill: '#ffffff', align: 'center' }); label.anchor.setTo(0.5, 0.4); } }, //MapLoading function loadMap: function(){ if(audioStatus){ this.beep.play(); } onePosition = 0; //Map position oneMove = true; //Move no next point oneDifficulty = this.difficulty; //Number of difficulty (1 to 5) oneOperator = this.operator; //Operator of game if(onePosition<5){ game.state.start('mapSOne'); }else{ game.state.start('unofinal'); } } }; /****************************** MAP ****************************/ var mapSquareOne = { create: function() { // Creating sound variable beepSound = game.add.audio('sound_beep'); // Background game.add.image(0, 40, 'bgmap'); // Menu options buttonSettings["addButtons"](1,0, 1,1,0, 0,0, "menuSOne",0); // Styles for labels var stylePlace = { font: '26px Arial', fill: '#ffffff', align: 'center'}; var styleMenu = { font: '30px Arial', fill: '#000000', align: 'center'}; // Progress bar var percentText = onePosition*20; var percentBlocks = onePosition; for(var p=1;p<=percentBlocks;p++){ var block = game.add.image(680+(p-1)*30, 10, 'block'); block.scale.setTo(2, 1); //Scaling to double width } game.add.text(840, 10, percentText+'%', styleMenu); game.add.text(670, 10, lang.difficulty + ' ' + oneDifficulty, styleMenu).anchor.setTo(1,0); game.add.image(680, 10, 'pgbar'); //Road this.points = { 'x': [ 90, 204, 318, 432, 546, 660 ], 'y': [ 486, 422, 358, 294, 230, 166 ] }; //Garage var garage = game.add.image(this.points.x[0], this.points.y[0], 'garage'); garage.scale.setTo(0.4); garage.anchor.setTo(0.5, 1); //Farm var farm = game.add.image(this.points.x[5], this.points.y[5], 'farm'); farm.scale.setTo(0.6); farm.anchor.setTo(0.1, 0.7); //Trees and Rocks this.rocks = { 'x': [156, 275, 276, 441, 452, 590, 712], 'y': [309, 543, 259, 156, 419, 136, 316] } this.r_types = [1, 1, 2, 1, 2, 2, 2]; for(var i=0; i0 && p(startX+8*blockWidth))){ game.state.start('gameSOne'); }else if (oneOperator=='Minus' && (endPosition>(startX) || endPosition<(startX-(8*blockWidth)))){ game.state.start('gameSOne'); } //If game is type B, selectiong a random block floor place if(oneType=='B'){ var end = game.rnd.integerInRange(1, numBlocks); for(var i=0;i=arrowPlace){ floorCount = i+1; floorIndex = i-1; break; } } } var block = game.add.graphics(posX, 500); block.anchor.setTo(0.5, 0); block.lineStyle(0.2, 0xffffff); block.beginFill(0x000000); block.drawRect(0, 0, widFloor, blockHeight); block.endFill(); if(oneOperator=='Minus') block.scale.x *= -1; if(oneType=="A"){ block.alpha = 0.5; block.inputEnabled = true; block.input.useHandCursor = true; block.events.onInputDown.add(this.clickSquare, {indice: i}); block.events.onInputOver.add(this.overSquare, {indice: i}); block.events.onInputOut.add(this.outSquare, {indice: i}); } floorBlocks.add(block); } for(var i=0;i<=8;i++){ var posX = startX; if(oneOperator=='Minus')posX -= ((9-i)*blockWidth); else posX+=((i+1)*blockWidth); game.add.text(posX, 560, i , stylePlace).anchor.setTo(0.5, 0.5); } //ok and error images okImg = game.add.image(game.world.centerX, game.world.centerY, 'h_ok'); okImg.anchor.setTo(0.5); okImg.alpha = 0; errorImg = game.add.image(game.world.centerX, game.world.centerY, 'h_error'); errorImg.anchor.setTo(0.5); errorImg.alpha = 0; //Help arrow arrow = game.add.sprite(this.arrowPlace, 480, 'down'); arrow.anchor.setTo(0.5, 0.5); if(oneType=="B") arrow.alpha = 0; else if(oneType=="A") arrow.alpha = 0.5; }, update: function() { if(!clicked){ if(!move){ if(oneType=='A'){ //Follow mouse if (game.physics.arcade.distanceToPointer(arrow, game.input.activePointer) > 8){ var xPos = game.input.mousePointer.x; arrow.x = xPos; } } } } //Start animation if(animate){ if(blockDirection[curBlock]=='Right'){ tractor.x+=2; }else if(blockDirection[curBlock]=='Left'){ tractor.x-=2; } for(var i=0;i=nextEnd+extra){ blocks.children[curBlock].alpha = 0; blocks.y += 40; curBlock +=1; nextEnd += blockDistance[curBlock]; for(var i=0; i<=floorIndex; i++ ){ if(floorBlocks.children[i].x<(blocks.children[curBlock-1].x+blockDistance[curBlock-1])){ floorBlocks.children[i].alpha = 0.2; curFloor = i; } } } }else if(blockDirection[curBlock]=='Left'){ if(blocks.children[curBlock].x<=(nextEnd-extra)){ blocks.children[curBlock].alpha = 0; blocks.y += 40; curBlock+=1; nextEnd -= blockDistance[curBlock]; for(var i=0; i<=floorIndex; i++ ){ if(floorBlocks.children[i].x>(blocks.children[curBlock-1].x-blockDistance[curBlock-1])){ floorBlocks.children[i].alpha = 0.2; curFloor = i; } } } } if( curBlock>blockIndex || curFloor>=floorIndex){ //Final position animate= false; checkCollide = true; } } //Check if tractor has blocks left or floor holes if(checkCollide){ tractor.animations.stop(); timer.stop(); //Check left blocks var resultBlock = true; for(var i=0; i<=blockIndex; i++){ if(blocks.children[i].alpha==1) resultBlock = false; } //check floor Holes var resultFloor = true; for(var i=0; i<=floorIndex; i++){ if(floorBlocks.children[i].alpha==1) resultFloor = false; } if(resultBlock && resultFloor){ result = true; }else{ result = false; } this.postScore(); move = true; checkCollide = false; } //Continue moving animation if(move){ if(moveCounter==0){ if(result){ tractor.animations.play('right', 6, true); if(audioStatus){ okSound.play(); } okImg.alpha = 1; }else{ if(audioStatus){ errorSound.play(); } errorImg.alpha = 1; } } moveCounter += 1; if(result){ if(oneOperator=='Minus'){ tractor.x -=2; }else{ tractor.x +=2; } } if(moveCounter>=moveEnd){ if(result){ oneMove = true; }else{ oneMove = false; } game.state.start('mapSOne'); } } }, updateCounter: function() { totalTime++; }, overSquare: function(){ if(!clicked){ if(oneType=="A"){ for(var i=0;ifloorIndex){ floorBlocks.children[i].alpha = 0; } } }else{ for(var i=0; i< floorCount; i++){ if(i>floorIndex){ floorBlocks.children[i].alpha = 0; } } } blockIndex = numBlocks - 1; }else if(oneType=='B'){ //Delete unselected blocks var minusBlocks = 0; for(var i=0;i