diff --git a/build/custom/ninja.min.js b/build/custom/ninja.min.js index 5639b88a11..719ea885cb 100644 --- a/build/custom/ninja.min.js +++ b/build/custom/ninja.min.js @@ -1,3 +1,3 @@ -/* Ninja Physics for Phaser v2.0.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ +/* Ninja Physics for Phaser v2.0.4 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ Phaser.Physics.Ninja=function(a){this.game=a,this.time=this.game.time,this.gravity=.2,this.bounds=new Phaser.Rectangle(0,0,a.world.width,a.world.height),this.maxObjects=10,this.maxLevels=4,this.quadTree=new Phaser.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels)},Phaser.Physics.Ninja.prototype.constructor=Phaser.Physics.Ninja,Phaser.Physics.Ninja.prototype={enableAABB:function(a,b){this.enable(a,1,0,0,b)},enableCircle:function(a,b,c){this.enable(a,2,0,b,c)},enableTile:function(a,b,c){this.enable(a,3,b,0,c)},enable:function(a,b,c,d,e){if("undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=!0),Array.isArray(a))for(var f=a.length;f--;)a[f]instanceof Phaser.Group?this.enable(a[f].children,b,c,d,e):(this.enableBody(a[f],b,c,d),e&&a[f].hasOwnProperty("children")&&a[f].children.length>0&&this.enable(a[f],b,c,d,!0));else a instanceof Phaser.Group?this.enable(a.children,b,c,d,e):(this.enableBody(a,b,c,d),e&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,c,d,!0))},enableBody:function(a,b,c,d){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Physics.Ninja.Body(this,a,b,c,d),a.anchor.set(.5))},setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=[]},convertTilemap:function(a,b,c){b=a.getLayer(b),this.clearTilemapLayerBodies(a,b);for(var d=0,e=a.layers[b].height;e>d;d++)for(var f=0,g=a.layers[b].width;g>f;f++){var h=a.layers[b].data[d][f];if(h&&c.hasOwnProperty(h.index)){var i=new Phaser.Physics.Ninja.Body(this,null,3,c[h.index],0,h.worldX+h.centerX,h.worldY+h.centerY,h.width,h.height);a.layers[b].bodies.push(i)}}return a.layers[b].bodies},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return"undefined"!=typeof b||a.type!==Phaser.GROUP&&a.type!==Phaser.EMITTER?void(a&&b&&a.exists&&b.exists&&(a.type==Phaser.SPRITE||a.type==Phaser.TILESPRITE?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideSpriteVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,c,d,e):a.type==Phaser.GROUP?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideGroupVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,c,d,e):a.type==Phaser.TILEMAPLAYER?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsTilemapLayer(b,a,c,d,e):(b.type==Phaser.GROUP||b.type==Phaser.EMITTER)&&this.collideGroupVsTilemapLayer(b,a,c,d,e):a.type==Phaser.EMITTER&&(b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideGroupVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,c,d,e)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++)},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length)for(var g=0,h=b.children.length;h>g;g++)b.children[g].exists&&b.children[g].body&&this.separate(a.body,b.children[g].body,d,e,f)&&(c&&c.call(e,a,b.children[g]),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b){return a.type!==Phaser.Physics.NINJA||b.type!==Phaser.Physics.NINJA?!1:a.aabb&&b.aabb?a.aabb.collideAABBVsAABB(b.aabb):a.aabb&&b.tile?a.aabb.collideAABBVsTile(b.tile):a.tile&&b.aabb?b.aabb.collideAABBVsTile(a.tile):a.circle&&b.tile?a.circle.collideCircleVsTile(b.tile):a.tile&&b.circle?b.circle.collideCircleVsTile(a.tile):void 0}},Phaser.Physics.Ninja.Body=function(a,b,c,d,e,f,g,h,i){b=b||null,"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=16),this.sprite=b,this.game=a.game,this.type=Phaser.Physics.NINJA,this.system=a,this.aabb=null,this.tile=null,this.circle=null,this.shape=null,this.drag=1,this.friction=.05,this.gravityScale=1,this.bounce=.3,this.velocity=new Phaser.Point,this.facing=Phaser.NONE,this.immovable=!1,this.collideWorldBounds=!0,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.maxSpeed=8,b&&(f=b.x,g=b.y,h=b.width,i=b.height,0===b.anchor.x&&(f+=.5*b.width),0===b.anchor.y&&(g+=.5*b.height)),1===c?(this.aabb=new Phaser.Physics.Ninja.AABB(this,f,g,h,i),this.shape=this.aabb):2===c?(this.circle=new Phaser.Physics.Ninja.Circle(this,f,g,e),this.shape=this.circle):3===c&&(this.tile=new Phaser.Physics.Ninja.Tile(this,f,g,h,i,d),this.shape=this.tile)},Phaser.Physics.Ninja.Body.prototype={preUpdate:function(){this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.shape.integrate(),this.collideWorldBounds&&this.shape.collideWorldBounds()},postUpdate:function(){this.sprite&&(this.sprite.type===Phaser.TILESPRITE?(this.sprite.x=this.shape.pos.x-this.shape.xw,this.sprite.y=this.shape.pos.y-this.shape.yw):(this.sprite.x=this.shape.pos.x,this.sprite.y=this.shape.pos.y)),this.velocity.x<0?this.facing=Phaser.LEFT:this.velocity.x>0&&(this.facing=Phaser.RIGHT),this.velocity.y<0?this.facing=Phaser.UP:this.velocity.y>0&&(this.facing=Phaser.DOWN)},setZeroVelocity:function(){this.shape.oldpos.x=this.shape.pos.x,this.shape.oldpos.y=this.shape.pos.y},moveTo:function(a,b){var c=a*this.game.time.physicsElapsed,b=this.game.math.degToRad(b);this.shape.pos.x=this.shape.oldpos.x+c*Math.cos(b),this.shape.pos.y=this.shape.oldpos.y+c*Math.sin(b)},moveFrom:function(a,b){var c=-a*this.game.time.physicsElapsed,b=this.game.math.degToRad(b);this.shape.pos.x=this.shape.oldpos.x+c*Math.cos(b),this.shape.pos.y=this.shape.oldpos.y+c*Math.sin(b)},moveLeft:function(a){var b=-a*this.game.time.physicsElapsed;this.shape.pos.x=this.shape.oldpos.x+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.x-this.shape.oldpos.x+b))},moveRight:function(a){var b=a*this.game.time.physicsElapsed;this.shape.pos.x=this.shape.oldpos.x+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.x-this.shape.oldpos.x+b))},moveUp:function(a){var b=-a*this.game.time.physicsElapsed;this.shape.pos.y=this.shape.oldpos.y+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.y-this.shape.oldpos.y+b))},moveDown:function(a){var b=a*this.game.time.physicsElapsed;this.shape.pos.y=this.shape.oldpos.y+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.y-this.shape.oldpos.y+b))},reset:function(){this.velocity.set(0),this.shape.pos.x=this.sprite.x,this.shape.pos.y=this.sprite.y,this.shape.oldpos.copyFrom(this.shape.pos)},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.shape.pos.x-this.shape.oldpos.x},deltaY:function(){return this.shape.pos.y-this.shape.oldpos.y},destroy:function(){this.sprite=null,this.system=null,this.aabb=null,this.tile=null,this.circle=null,this.shape.destroy(),this.shape=null}},Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"x",{get:function(){return this.shape.pos.x},set:function(a){this.shape.pos.x=a}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"y",{get:function(){return this.shape.pos.y},set:function(a){this.shape.pos.y=a}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"width",{get:function(){return this.shape.width}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"height",{get:function(){return this.shape.height}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"bottom",{get:function(){return this.shape.pos.y+this.shape.yw}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"right",{get:function(){return this.shape.pos.x+this.shape.xw}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"speed",{get:function(){return Math.sqrt(this.shape.velocity.x*this.shape.velocity.x+this.shape.velocity.y*this.shape.velocity.y)}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"angle",{get:function(){return Math.atan2(this.shape.velocity.y,this.shape.velocity.x)}}),Phaser.Physics.Ninja.AABB=function(a,b,c,d,e){this.body=a,this.system=a.system,this.pos=new Phaser.Point(b,c),this.oldpos=new Phaser.Point(b,c),this.xw=Math.abs(d/2),this.yw=Math.abs(e/2),this.width=d,this.height=e,this.oH=0,this.oV=0,this.velocity=new Phaser.Point,this.aabbTileProjections={},this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_FULL]=this.projAABB_Full,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_45DEG]=this.projAABB_45Deg,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_CONCAVE]=this.projAABB_Concave,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_CONVEX]=this.projAABB_Convex,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_22DEGs]=this.projAABB_22DegS,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_22DEGb]=this.projAABB_22DegB,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_67DEGs]=this.projAABB_67DegS,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_67DEGb]=this.projAABB_67DegB,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_HALF]=this.projAABB_Half},Phaser.Physics.Ninja.AABB.prototype.constructor=Phaser.Physics.Ninja.AABB,Phaser.Physics.Ninja.AABB.COL_NONE=0,Phaser.Physics.Ninja.AABB.COL_AXIS=1,Phaser.Physics.Ninja.AABB.COL_OTHER=2,Phaser.Physics.Ninja.AABB.prototype={integrate:function(){var a=this.pos.x,b=this.pos.y;this.pos.x+=this.body.drag*this.pos.x-this.body.drag*this.oldpos.x,this.pos.y+=this.body.drag*this.pos.y-this.body.drag*this.oldpos.y+this.system.gravity*this.body.gravityScale,this.velocity.set(this.pos.x-a,this.pos.y-b),this.oldpos.set(a,b)},reportCollisionVsWorld:function(a,b,c,d){var e,f,g,h,i,j=this.pos,k=this.oldpos,l=j.x-k.x,m=j.y-k.y,n=l*c+m*d,o=n*c,p=n*d,q=l-o,r=m-p;0>n?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},reverse:function(){var a=this.pos.x-this.oldpos.x,b=this.pos.y-this.oldpos.y;this.oldpos.xthis.pos.x&&(this.oldpos.x=this.pos.x-a),this.oldpos.ythis.pos.y&&(this.oldpos.y=this.pos.y-b)},reportCollisionVsBody:function(a,b,c,d,e){var f=this.pos.x-this.oldpos.x,g=this.pos.y-this.oldpos.y,h=f*c+g*d;return this.body.immovable&&e.body.immovable?(a*=.5,b*=.5,this.pos.add(a,b),this.oldpos.set(this.pos.x,this.pos.y),e.pos.subtract(a,b),void e.oldpos.set(e.pos.x,e.pos.y)):void(this.body.immovable||e.body.immovable?this.body.immovable?e.body.immovable||(e.pos.subtract(a,b),0>h&&e.reverse()):(this.pos.subtract(a,b),0>h&&this.reverse()):(a*=.5,b*=.5,this.pos.add(a,b),e.pos.subtract(a,b),0>h&&(this.reverse(),e.reverse())))},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.xw);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.xw-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.yw);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.yw-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},collideAABBVsAABB:function(a){var b=this.pos,c=a,d=c.pos.x,e=c.pos.y,f=c.xw,g=c.yw,h=b.x-d,i=f+this.xw-Math.abs(h);if(i>0){var j=b.y-e,k=g+this.yw-Math.abs(j);if(k>0){k>i?0>h?(i*=-1,k=0):k=0:0>j?(i=0,k*=-1):i=0;var l=Math.sqrt(i*i+k*k);return this.reportCollisionVsBody(i,k,i/l,k/l,c),Phaser.Physics.Ninja.AABB.COL_AXIS}}return!1},collideAABBVsTile:function(a){var b=this.pos.x-a.pos.x,c=a.xw+this.xw-Math.abs(b);if(c>0){var d=this.pos.y-a.pos.y,e=a.yw+this.yw-Math.abs(d);if(e>0)return e>c?0>b?(c*=-1,e=0):e=0:0>d?(c=0,e*=-1):c=0,this.resolveTile(c,e,this,a)}return!1},resolveTile:function(a,b,c,d){return 0i){e*=-i,f*=-i;var j=Math.sqrt(e*e+f*f),k=Math.sqrt(a*a+b*b);return j>k?(c.reportCollisionVsWorld(a,b,a/k,b/k,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(e,f,d.signx,d.signy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_45Deg:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-d.pos.x,h=c.pos.y-f*c.yw-d.pos.y,i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_22DegS:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.y-f*c.yw,h=d.pos.y-g;if(h*f>0){var i=c.pos.x-e*c.xw-(d.pos.x+e*d.xw),j=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),k=d.sx,l=d.sy,m=i*k+j*l;if(0>m){k*=-m,l*=-m;var n=Math.sqrt(k*k+l*l),o=Math.sqrt(a*a+b*b),p=Math.abs(h);return n>o?o>p?(c.reportCollisionVsWorld(0,h,0,h/p,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(a,b,a/o,b/o,d),Phaser.Physics.Ninja.AABB.COL_AXIS):n>p?(c.reportCollisionVsWorld(0,h,0,h/p,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(k,l,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_22DegB:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y+f*d.yw),i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_67DegS:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw,h=d.pos.x-g;if(h*e>0){var i=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),j=c.pos.y-f*c.yw-(d.pos.y+f*d.yw),k=d.sx,l=d.sy,m=i*k+j*l;if(0>m){k*=-m,l*=-m;var n=Math.sqrt(k*k+l*l),o=Math.sqrt(a*a+b*b),p=Math.abs(h);return n>o?o>p?(c.reportCollisionVsWorld(h,0,h/p,0,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(a,b,a/o,b/o,d),Phaser.Physics.Ninja.AABB.COL_AXIS):n>p?(c.reportCollisionVsWorld(h,0,h/p,0,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(k,l,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_67DegB:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x+e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_Convex:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),i=Math.sqrt(g*g+h*h),j=2*d.xw,k=Math.sqrt(j*j+0),l=k-i;if(0>e*g||0>f*h){var m=Math.sqrt(a*a+b*b);return c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS}return l>0?(g/=i,h/=i,c.reportCollisionVsWorld(g*l,h*l,g,h,d),Phaser.Physics.Ninja.AABB.COL_OTHER):Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_Concave:function(a,b,c,d){var e=d.signx,f=d.signy,g=d.pos.x+e*d.xw-(c.pos.x-e*c.xw),h=d.pos.y+f*d.yw-(c.pos.y-f*c.yw),i=2*d.xw,j=Math.sqrt(i*i+0),k=Math.sqrt(g*g+h*h),l=k-j;if(l>0){var m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(g/=k,h/=k,c.reportCollisionVsWorld(g*l,h*l,g,h,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},destroy:function(){this.body=null,this.system=null}},Phaser.Physics.Ninja.Tile=function(a,b,c,d,e,f){"undefined"==typeof f&&(f=Phaser.Physics.Ninja.Tile.EMPTY),this.body=a,this.system=a.system,this.id=f,this.type=Phaser.Physics.Ninja.Tile.TYPE_EMPTY,this.pos=new Phaser.Point(b,c),this.oldpos=new Phaser.Point(b,c),this.id>1&&this.id<30&&(e=d),this.xw=Math.abs(d/2),this.yw=Math.abs(e/2),this.width=d,this.height=e,this.velocity=new Phaser.Point,this.signx=0,this.signy=0,this.sx=0,this.sy=0,this.body.gravityScale=0,this.body.collideWorldBounds=!1,this.id>0&&this.setType(this.id)},Phaser.Physics.Ninja.Tile.prototype.constructor=Phaser.Physics.Ninja.Tile,Phaser.Physics.Ninja.Tile.prototype={integrate:function(){var a=this.pos.x,b=this.pos.y;this.pos.x+=this.body.drag*this.pos.x-this.body.drag*this.oldpos.x,this.pos.y+=this.body.drag*this.pos.y-this.body.drag*this.oldpos.y+this.system.gravity*this.body.gravityScale,this.velocity.set(this.pos.x-a,this.pos.y-b),this.oldpos.set(a,b)},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.xw);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.xw-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.yw);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.yw-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},reportCollisionVsWorld:function(a,b,c,d){var e,f,g,h,i,j=this.pos,k=this.oldpos,l=j.x-k.x,m=j.y-k.y,n=l*c+m*d,o=n*c,p=n*d,q=l-o,r=m-p;0>n?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},setType:function(a){return a===Phaser.Physics.Ninja.Tile.EMPTY?this.clear():(this.id=a,this.updateType()),this},clear:function(){this.id=Phaser.Physics.Ninja.Tile.EMPTY,this.updateType()},destroy:function(){this.body=null,this.system=null},updateType:function(){if(0===this.id)return this.type=Phaser.Physics.Ninja.Tile.TYPE_EMPTY,this.signx=0,this.signy=0,this.sx=0,this.sy=0,!0;if(this.idn?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.radius);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.radius-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.radius);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.radius-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},collideCircleVsTile:function(a){var b=this.pos,c=this.radius,d=a,e=d.pos.x,f=d.pos.y,g=d.xw,h=d.yw,i=b.x-e,j=g+c-Math.abs(i);if(j>0){var k=b.y-f,l=h+c-Math.abs(k);if(l>0)return this.oH=0,this.oV=0,-g>i?this.oH=-1:i>g&&(this.oH=1),-h>k?this.oV=-1:k>h&&(this.oV=1),this.resolveCircleTile(j,l,this.oH,this.oV,this,d)}},resolveCircleTile:function(a,b,c,d,e,f){return 0a){var g=e.pos.x-f.pos.x;return 0>g?(e.reportCollisionVsWorld(-a,0,-1,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(a,0,1,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS)}var h=e.pos.y-f.pos.y;return 0>h?(e.reportCollisionVsWorld(0,-b,0,-1,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(0,b,0,1,f),Phaser.Physics.Ninja.Circle.COL_AXIS)}return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS}if(0===d)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var i=f.pos.x+c*f.xw,j=f.pos.y+d*f.yw,g=e.pos.x-i,h=e.pos.y-j,k=Math.sqrt(g*g+h*h),l=e.radius-k;return l>0?(0===k?(g=c/Math.SQRT2,h=d/Math.SQRT2):(g/=k,h/=k),e.reportCollisionVsWorld(g*l,h*l,g,h,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_45Deg:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=f.sx,k=f.sy,l=e.pos.x-j*e.radius-f.pos.x,m=e.pos.y-k*e.radius-f.pos.y,n=l*j+m*k;if(0>n){j*=-n,k*=-n,b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1));var o=Math.sqrt(j*j+k*k);return o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.pos.x-(f.pos.x-h*f.xw),m=e.pos.y-(f.pos.y+d*f.yw),p=l*-k+m*j;if(p*h*i>0){var q=Math.sqrt(l*l+m*m),r=e.radius-q;if(r>0)return l/=q,m/=q,e.reportCollisionVsWorld(l*r,m*r,l,m,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var n=l*j+m*k,r=e.radius-Math.abs(n);if(r>0)return e.reportCollisionVsWorld(j*r,k*r,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.pos.x-(f.pos.x+c*f.xw),m=e.pos.y-(f.pos.y-i*f.yw),p=l*-k+m*j; if(0>p*h*i){var q=Math.sqrt(l*l+m*m),r=e.radius-q;if(r>0)return l/=q,m/=q,e.reportCollisionVsWorld(l*r,m*r,l,m,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var n=l*j+m*k,r=e.radius-Math.abs(n);if(r>0)return e.reportCollisionVsWorld(j*r,k*r,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(h*c+i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;var s=f.pos.x+c*f.xw,t=f.pos.y+d*f.yw,u=e.pos.x-s,v=e.pos.y-t,q=Math.sqrt(u*u+v*v),r=e.radius-q;if(r>0)return 0===q?(u=c/Math.SQRT2,v=d/Math.SQRT2):(u/=q,v/=q),e.reportCollisionVsWorld(u*r,v*r,u,v,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Concave:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c){if(0===d){var j=f.pos.x+h*f.xw-e.pos.x,k=f.pos.y+i*f.yw-e.pos.y,l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=n+e.radius-m;return o>0?(b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER)):Phaser.Physics.Ninja.Circle.COL_NONE}if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=f.pos.x-h*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=0,s=d):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=f.pos.x+c*f.xw,q=f.pos.y-i*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c,s=0):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{if(h*c+i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;var p=f.pos.x+c*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Convex:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(h*c+i*d>0){var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var p=f.pos.x+c*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Half:function(a,b,c,d,e,f){var g=f.signx,h=f.signy,i=c*g+d*h;if(i>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c)if(0===d){var j=e.radius,k=e.pos.x-g*j-f.pos.x,l=e.pos.y-h*j-f.pos.y,m=g,n=h,o=k*m+l*n;if(0>o){m*=-o,n*=-o;var p=Math.sqrt(m*m+n*n),q=Math.sqrt(a*a+b*b);return p>q?(e.reportCollisionVsWorld(a,b,a/q,b/q,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(m,n,f.signx,f.signy),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0!==i)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var r=e.pos.x-f.pos.x;if(0>r*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var s=e.pos.y-(f.pos.y+d*f.yw),t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=g/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0!==i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var s=e.pos.y-f.pos.y;if(0>s*h)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var r=e.pos.x-(f.pos.x+c*f.xw),t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=g/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var v=f.pos.x+c*f.xw,w=f.pos.y+d*f.yw,r=e.pos.x-v,s=e.pos.y-w,t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_22DegS:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c){if(0!==d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-(f.pos.x-h*f.xw),n=e.pos.y-f.pos.y,o=m*-k+n*j;if(o*h*i>0){var p=Math.sqrt(m*m+n*n),q=l-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{m-=l*j,n-=l*k;var r=m*j+n*k;if(0>r){j*=-r,k*=-r;var s=Math.sqrt(j*j+k*k);return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),s>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}}else if(0===d)if(0>h*c){var t=f.pos.x-h*f.xw,u=f.pos.y,v=e.pos.x-t,w=e.pos.y-u;if(0>w*i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x+c*f.xw),n=e.pos.y-(f.pos.y-i*f.yw),o=m*-k+n*j;if(0>o*h*i){var p=Math.sqrt(m*m+n*n),q=e.radius-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var r=m*j+n*k,q=e.radius-Math.abs(r);if(q>0)return e.reportCollisionVsWorld(j*q,k*q,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{var t=f.pos.x+c*f.xw,u=f.pos.y+d*f.yw,v=e.pos.x-t,w=e.pos.y-u,p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_22DegB:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x-h*f.xw),n=e.pos.y-k*l-(f.pos.y+i*f.yw),o=m*j+n*k;if(0>o){j*=-o,k*=-o;var p=Math.sqrt(j*j+k*k);return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),p>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x-h*f.xw),n=e.pos.y-(f.pos.y+i*f.yw),q=m*-k+n*j;if(q*h*i>0){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var m=e.pos.x-(f.pos.x+h*f.xw),n=e.pos.y-f.pos.y;if(0>n*i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,q=m*-k+n*j;if(0>q*h*i){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(h*c+i*d>0){var t=Math.sqrt(5),j=1*h/t,k=2*i/t,l=e.radius,m=e.pos.x-j*l-(f.pos.x-h*f.xw),n=e.pos.y-k*l-(f.pos.y+i*f.yw),o=m*j+n*k;return 0>o?(e.reportCollisionVsWorld(-j*o,-k*o,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE}var u=f.pos.x+c*f.xw,v=f.pos.y+d*f.yw,w=e.pos.x-u,x=e.pos.y-v,r=Math.sqrt(w*w+x*x),s=e.radius-r;if(s>0)return 0===r?(w=c/Math.SQRT2,x=d/Math.SQRT2):(w/=r,x/=r),e.reportCollisionVsWorld(w*s,x*s,w,x,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_67DegS:function(a,b,c,d,e,f){var g=f.signx,h=f.signy;if(g*c>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c)if(0===d){var i,j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-f.pos.x,n=e.pos.y-(f.pos.y-h*f.yw),o=m*-k+n*j;if(0>o*g*h){var p=Math.sqrt(m*m+n*n),q=l-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{m-=l*j,n-=l*k;var r=m*j+n*k;if(0>r){j*=-r,k*=-r;var s=Math.sqrt(j*j+k*k);return b>a?(i=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(i=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),s>i?(e.reportCollisionVsWorld(a,b,a/i,b/i,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}}else if(0>h*d){var t=f.pos.x,u=f.pos.y-h*f.yw,v=e.pos.x-t,w=e.pos.y-u;if(0>v*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x-g*f.xw),n=e.pos.y-(f.pos.y+d*f.yw),o=m*-k+n*j;if(o*g*h>0){var p=Math.sqrt(m*m+n*n),q=e.radius-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var r=m*j+n*k,q=e.radius-Math.abs(r);if(q>0)return e.reportCollisionVsWorld(j*q,k*q,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(0===d)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var t=f.pos.x+c*f.xw,u=f.pos.y+d*f.yw,v=e.pos.x-t,w=e.pos.y-u,p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_67DegB:function(a,b,c,d,e,f){var g=f.signx,h=f.signy;if(0===c)if(0===d){var i,j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x+g*f.xw),n=e.pos.y-k*l-(f.pos.y-h*f.yw),o=m*j+n*k;if(0>o){j*=-o,k*=-o;var p=Math.sqrt(j*j+k*k);return b>a?(i=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(i=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),p>i?(e.reportCollisionVsWorld(a,b,a/i,b/i,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>h*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var m=e.pos.x-f.pos.x,n=e.pos.y-(f.pos.y+h*f.yw);if(0>m*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,q=m*-k+n*j;if(q*g*h>0){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>g*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var t=Math.sqrt(5),j=2*g/t,k=1*h/t,m=e.pos.x-(f.pos.x+g*f.xw),n=e.pos.y-(f.pos.y-h*f.yw),q=m*-k+n*j;if(0>q*g*h){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(g*c+h*d>0){var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x+g*f.xw),n=e.pos.y-k*l-(f.pos.y-h*f.yw),o=m*j+n*k;return 0>o?(e.reportCollisionVsWorld(-j*o,-k*o,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE}var u=f.pos.x+c*f.xw,v=f.pos.y+d*f.yw,w=e.pos.x-u,x=e.pos.y-v,r=Math.sqrt(w*w+x*x),s=e.radius-r;if(s>0)return 0===r?(w=c/Math.SQRT2,x=d/Math.SQRT2):(w/=r,x/=r),e.reportCollisionVsWorld(w*s,x*s,w,x,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},destroy:function(){this.body=null,this.system=null}}; \ No newline at end of file diff --git a/build/custom/p2.js b/build/custom/p2.js index 36f89657dd..e4f1ce612c 100644 --- a/build/custom/p2.js +++ b/build/custom/p2.js @@ -12579,7 +12579,7 @@ Phaser.Physics.P2.prototype = { { var tile = map.layers[layer].data[y][x]; - if (tile) + if (tile && tile.collides) { if (optimize) { diff --git a/build/custom/p2.min.js b/build/custom/p2.min.js index c104964844..4266f0ae51 100644 --- a/build/custom/p2.min.js +++ b/build/custom/p2.min.js @@ -1,6 +1,6 @@ -/* p2.js custom build for Phaser v2.0.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ +/* p2.js custom build for Phaser v2.0.4 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ !function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define("p2",function(){return this.p2=a()}()):"undefined"!=typeof window?window.p2=a():"undefined"!=typeof global?self.p2=a():"undefined"!=typeof self&&(self.p2=a())}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},g.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},g.cross=function(a,b,c){var d=b[0]*c[1]-b[1]*c[0];return a[0]=a[1]=0,a[2]=d,a},g.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},g.transformMat2=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[2]*e,a[1]=c[1]*d+c[3]*e,a},g.transformMat2d=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[2]*e+c[4],a[1]=c[1]*d+c[3]*e+c[5],a},g.transformMat3=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[3]*e+c[6],a[1]=c[1]*d+c[4]*e+c[7],a},g.transformMat4=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[4]*e+c[12],a[1]=c[1]*d+c[5]*e+c[13],a},g.forEach=function(){var a=g.create();return function(b,c,d,e,f,g){var h,i;for(c||(c=2),d||(d=0),i=e?Math.min(e*c+d,b.length):b.length,h=d;i>h;h+=c)a[0]=b[h],a[1]=b[h+1],f(a,a,g),b[h]=a[0],b[h+1]=a[1];return b}}(),g.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},"undefined"!=typeof c&&(c.vec2=g)},{}],2:[function(a,b){function c(){}var d=a("./Scalar");b.exports=c,c.lineInt=function(a,b,c){c=c||0;var e,f,g,h,i,j,k,l=[0,0];return e=a[1][1]-a[0][1],f=a[0][0]-a[1][0],g=e*a[0][0]+f*a[0][1],h=b[1][1]-b[0][1],i=b[0][0]-b[1][0],j=h*b[0][0]+i*b[0][1],k=e*i-h*f,d.eq(k,0,c)||(l[0]=(i*g-f*j)/k,l[1]=(e*j-h*g)/k),l},c.segmentsIntersect=function(a,b,c,d){var e=b[0]-a[0],f=b[1]-a[1],g=d[0]-c[0],h=d[1]-c[1];if(g*f-h*e==0)return!1;var i=(e*(c[1]-a[1])+f*(a[0]-c[0]))/(g*f-h*e),j=(g*(a[1]-c[1])+h*(c[0]-a[0]))/(h*e-g*f);return i>=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":5}],3:[function(a,b){function c(){}b.exports=c,c.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},c.left=function(a,b,d){return c.area(a,b,d)>0},c.leftOn=function(a,b,d){return c.area(a,b,d)>=0},c.right=function(a,b,d){return c.area(a,b,d)<0},c.rightOn=function(a,b,d){return c.area(a,b,d)<=0};var d=[],e=[];c.collinear=function(a,b,f,g){if(g){var h=d,i=e;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=f[0]-b[0],i[1]=f[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==c.area(a,b,f)},c.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],4:[function(a,b){function c(){this.vertices=[]}function d(a,b,c,d,e){e=e||0;var f=b[1]-a[1],h=a[0]-b[0],i=f*a[0]+h*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*h;return g.eq(m,0,e)?[0,0]:[(k*i-h*l)/m,(f*l-j*i)/m]}var e=a("./Line"),f=a("./Point"),g=a("./Scalar");b.exports=c,c.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},c.prototype.first=function(){return this.vertices[0]},c.prototype.last=function(){return this.vertices[this.vertices.length-1]},c.prototype.clear=function(){this.vertices.length=0},c.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},c.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);f.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},c.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},c.prototype.isReflex=function(a){return f.right(this.at(a-1),this.at(a),this.at(a+1))};var h=[],i=[];c.prototype.canSee=function(a,b){var c,d,g=h,j=i;if(f.leftOn(this.at(a+1),this.at(a),this.at(b))&&f.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=f.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&f.leftOn(this.at(a),this.at(b),this.at(k+1))&&f.rightOn(this.at(a),this.at(b),this.at(k))&&(g[0]=this.at(a),g[1]=this.at(b),j[0]=this.at(k),j[1]=this.at(k+1),c=e.lineInt(g,j),f.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},c.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(e.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),f.left(v.at(x+1),v.at(x),v.at(y+1))&&f.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=d(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),f.left(v.at(x-1),v.at(x),l)&&(o=f.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,e.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)f.leftOn(v.at(x-1),v.at(x),v.at(y))&&f.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=f.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)f.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":2,"./Point":3,"./Scalar":5}],5:[function(a,b){function c(){}b.exports=c,c.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"~0.4.0","grunt-contrib-jshint":"~0.9.2","grunt-contrib-nodeunit":"~0.1.2","grunt-contrib-uglify":"~0.4.0","grunt-browserify":"~2.0.1","z-schema":"~2.4.6"},dependencies:{"poly-decomp":"git://github.com/schteppe/poly-decomp.js","gl-matrix":"2.1.0"}}},{}],8:[function(a,b){function c(a){this.lowerBound=d.create(),a&&a.lowerBound&&d.copy(this.lowerBound,a.lowerBound),this.upperBound=d.create(),a&&a.upperBound&&d.copy(this.upperBound,a.upperBound)}{var d=a("../math/vec2");a("../utils/Utils")}b.exports=c;var e=d.create();c.prototype.setFromPoints=function(a,b,c){var f=this.lowerBound,g=this.upperBound;d.set(f,Number.MAX_VALUE,Number.MAX_VALUE),d.set(g,-Number.MAX_VALUE,-Number.MAX_VALUE);for(var h=0;hj;j++)i[j]>g[j]&&(g[j]=i[j]),i[j]b;b++)a.lowerBound[b]this.upperBound[b]&&(this.upperBound[b]=a.upperBound[b])},c.prototype.overlaps=function(a){var b=this.lowerBound,c=this.upperBound,d=a.lowerBound,e=a.upperBound;return(d[0]<=c[0]&&c[0]<=e[0]||b[0]<=e[0]&&e[0]<=c[0])&&(d[1]<=c[1]&&c[1]<=e[1]||b[1]<=e[1]&&e[1]<=c[1])}},{"../math/vec2":30,"../utils/Utils":45}],9:[function(a,b){function c(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=c.AABB}var d=a("../math/vec2"),e=a("../objects/Body");b.exports=c,c.AABB=1,c.BOUNDING_CIRCLE=2,c.prototype.setWorld=function(a){this.world=a},c.prototype.getCollisionPairs=function(){throw new Error("getCollisionPairs must be implemented in a subclass!")};var f=d.create();c.boundingRadiusCheck=function(a,b){d.sub(f,a.position,b.position);var c=d.squaredLength(f),e=a.boundingRadius+b.boundingRadius;return e*e>=c},c.aabbCheck=function(a,b){return a.aabbNeedsUpdate&&a.updateAABB(),b.aabbNeedsUpdate&&b.updateAABB(),a.aabb.overlaps(b.aabb)},c.prototype.boundingVolumeCheck=function(a,b){var d;switch(this.boundingVolumeType){case c.BOUNDING_CIRCLE:d=c.boundingRadiusCheck(a,b);break;case c.AABB:d=c.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return d},c.canCollide=function(a,b){return a.motionState===e.STATIC&&b.motionState===e.STATIC?!1:a.motionState===e.KINEMATIC&&b.motionState===e.STATIC||a.motionState===e.STATIC&&b.motionState===e.KINEMATIC?!1:a.motionState===e.KINEMATIC&&b.motionState===e.KINEMATIC?!1:a.sleepState===e.SLEEPING&&b.sleepState===e.SLEEPING?!1:a.sleepState===e.SLEEPING&&b.motionState===e.STATIC||b.sleepState===e.SLEEPING&&a.motionState===e.STATIC?!1:!0},c.NAIVE=1,c.SAP=2},{"../math/vec2":30,"../objects/Body":31}],10:[function(a,b){function c(a){a=a||{},d.apply(this),e.extend(a,{xmin:-100,xmax:100,ymin:-100,ymax:100,nx:10,ny:10}),this.xmin=a.xmin,this.ymin=a.ymin,this.xmax=a.xmax,this.ymax=a.ymax,this.nx=a.nx,this.ny=a.ny,this.binsizeX=(this.xmax-this.xmin)/this.nx,this.binsizeY=(this.ymax-this.ymin)/this.ny}var d=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Particle"),a("../collision/Broadphase")),e=(a("../math/vec2"),a("../utils/Utils"));b.exports=c,c.prototype=new d,c.prototype.getCollisionPairs=function(a){for(var b=[],c=a.bodies,e=c.length,f=(this.binsizeX,this.binsizeY,this.nx),g=this.ny,h=this.xmin,i=this.ymin,j=this.xmax,k=this.ymax,l=[],m=f*g,n=0;m>n;n++)l.push([]);for(var o=f/(j-h),p=g/(k-i),n=0;n!==e;n++)for(var q=c[n],r=q.aabb,s=Math.max(r.lowerBound[0],h),t=Math.max(r.lowerBound[1],i),u=Math.min(r.upperBound[0],j),v=Math.min(r.upperBound[1],k),w=Math.floor(o*(s-h)),x=Math.floor(p*(t-i)),y=Math.floor(o*(u-h)),z=Math.floor(p*(v-i)),A=w;y>=A;A++)for(var B=x;z>=B;B++){var C=A,D=B,E=C*(g-1)+D;E>=0&&m>E&&l[E].push(q)}for(var n=0;n!==m;n++)for(var F=l[n],A=0,G=F.length;A!==G;A++)for(var q=F[A],B=0;B!==A;B++){var H=F[B];d.canCollide(q,H)&&this.boundingVolumeCheck(q,H)&&b.push(q,H)}return b}},{"../collision/Broadphase":9,"../math/vec2":30,"../shapes/Circle":35,"../shapes/Particle":39,"../shapes/Plane":40,"../utils/Utils":45}],11:[function(a,b){function c(){d.call(this,d.NAIVE)}{var d=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var e=0,f=b.length;e!==f;e++)for(var g=b[e],h=0;e>h;h++){var i=b[h];d.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c}},{"../collision/Broadphase":9,"../math/vec2":30,"../shapes/Circle":35,"../shapes/Particle":39,"../shapes/Plane":40,"../shapes/Shape":42}],12:[function(a,b){function c(){this.contactEquations=[],this.frictionEquations=[],this.enableFriction=!0,this.slipForce=10,this.frictionCoefficient=.3,this.surfaceVelocity=0,this.reuseObjects=!0,this.reusableContactEquations=[],this.reusableFrictionEquations=[],this.restitution=0,this.stiffness=1e7,this.relaxation=3,this.frictionStiffness=1e7,this.frictionRelaxation=3,this.collidingBodiesLastStep={keys:[]}}function d(a){for(var b=0,c=a.keys.length;c>b;b++)delete a[a.keys[b]];a.keys.length=0}function e(a,b){g.set(a.vertices[0],.5*-b.length,-b.radius),g.set(a.vertices[1],.5*b.length,-b.radius),g.set(a.vertices[2],.5*b.length,b.radius),g.set(a.vertices[3],.5*-b.length,b.radius)}function f(a,b,c,d){for(var e=P,f=Q,j=R,k=S,l=a,m=b.vertices,n=null,o=0;o!==m.length+1;o++){var p=m[o%m.length],q=m[(o+1)%m.length];g.rotate(e,p,d),g.rotate(f,q,d),i(e,e,c),i(f,f,c),h(j,e,l),h(k,f,l);var r=g.crossLength(j,k);if(null===n&&(n=r),0>=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=a("../utils/Utils"),l=a("../equations/ContactEquation"),m=a("../equations/FrictionEquation"),n=a("../shapes/Circle"),o=a("../shapes/Shape"),p=(a("../objects/Body"),a("../shapes/Rectangle"));b.exports=c;var q=g.fromValues(0,1),r=g.fromValues(0,0),s=g.fromValues(0,0),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=[];c.prototype.collidedLastStep=function(a,b){var c=a.id,d=b.id;if(c>d){var e=c;c=d,d=e}return!!this.collidingBodiesLastStep[c+" "+d]},c.prototype.reset=function(){d(this.collidingBodiesLastStep);for(var a=0;a!==this.contactEquations.length;a++){var b=this.contactEquations[a],c=b.bodyA.id,e=b.bodyB.id;if(c>e){var f=c;c=e,e=f}var g=c+" "+e;this.collidingBodiesLastStep[g]||(this.collidingBodiesLastStep[g]=!0,this.collidingBodiesLastStep.keys.push(g))}if(this.reuseObjects){var h=this.contactEquations,i=this.frictionEquations,j=this.reusableFrictionEquations,l=this.reusableContactEquations;k.appendArray(l,h),k.appendArray(j,i)}this.contactEquations.length=this.frictionEquations.length=0},c.prototype.createContactEquation=function(a,b,c,d){var e=this.reusableContactEquations.length?this.reusableContactEquations.pop():new l(a,b);return e.bodyA=a,e.bodyB=b,e.shapeA=c,e.shapeB=d,e.restitution=this.restitution,e.firstImpact=!this.collidedLastStep(a,b),e.stiffness=this.stiffness,e.relaxation=this.relaxation,e.needsUpdate=!0,e.enabled=!0,e},c.prototype.createFrictionEquation=function(a,b,c,d){var e=this.reusableFrictionEquations.length?this.reusableFrictionEquations.pop():new m(a,b);return e.bodyA=a,e.bodyB=b,e.shapeA=c,e.shapeB=d,e.setSlipForce(this.slipForce),e.frictionCoefficient=this.frictionCoefficient,e.relativeVelocity=this.surfaceVelocity,e.enabled=!0,e.needsUpdate=!0,e.stiffness=this.frictionStiffness,e.relaxation=this.frictionRelaxation,e},c.prototype.createFrictionFromContact=function(a){var b=this.createFrictionEquation(a.bodyA,a.bodyB,a.shapeA,a.shapeB);return g.copy(b.contactPointA,a.contactPointA),g.copy(b.contactPointB,a.contactPointB),g.rotate(b.t,a.normalA,-Math.PI/2),b.contactEquation=a,b},c.prototype[o.LINE|o.CONVEX]=c.prototype.convexLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},c.prototype[o.LINE|o.RECTANGLE]=c.prototype.lineRectangle=function(a,b,c,d,e,f,g,h,i){return i?!1:0};var K=new p(1,1),L=g.create();c.prototype[o.CAPSULE|o.CONVEX]=c.prototype[o.CAPSULE|o.RECTANGLE]=c.prototype.convexCapsule=function(a,b,c,d,f,h,i,j,k){var l=L;g.set(l,h.length/2,0),g.rotate(l,l,j),g.add(l,l,i);var m=this.circleConvex(f,h,l,j,a,b,c,d,k,h.radius);g.set(l,-h.length/2,0),g.rotate(l,l,j),g.add(l,l,i);var n=this.circleConvex(f,h,l,j,a,b,c,d,k,h.radius);if(k&&(m||n))return!0;var o=K;e(o,h);var p=this.convexConvex(a,b,c,d,f,o,i,j,k);return p+m+n},c.prototype[o.CAPSULE|o.LINE]=c.prototype.lineCapsule=function(a,b,c,d,e,f,g,h,i){return i?!1:0};var M=g.create(),N=g.create(),O=new p(1,1);c.prototype[o.CAPSULE|o.CAPSULE]=c.prototype.capsuleCapsule=function(a,b,c,d,f,h,i,j,k){for(var l=M,m=N,n=0,o=0;2>o;o++){g.set(l,(0==o?-1:1)*b.length/2,0),g.rotate(l,l,d),g.add(l,l,c);for(var p=0;2>p;p++){g.set(m,(0==p?-1:1)*h.length/2,0),g.rotate(m,m,j),g.add(m,m,i);var q=this.circleCircle(a,b,l,d,f,h,m,j,k,b.radius,h.radius);if(k&&q)return!0;n+=q}}var r=O;e(r,b);var s=this.convexCapsule(a,r,c,d,f,h,i,j,k);if(k&&s)return!0;n+=s,e(r,h);var t=this.convexCapsule(f,r,i,j,a,b,c,d,k);return k&&t?!0:n+=t},c.prototype[o.LINE|o.LINE]=c.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},c.prototype[o.PLANE|o.LINE]=c.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=r,o=s,p=t,A=u,B=v,C=w,D=x,E=y,F=z,G=J;numContacts=0,g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(A,o,l),i(p,p,k),i(A,A,k),g.copy(n,p),g.copy(o,A),h(B,o,n),g.normalize(C,B),g.rotate(F,C,-Math.PI/2),g.rotate(E,q,d),G[0]=n,G[1]=o;for(var H=0;HK){if(m)return!0;var L=this.createContactEquation(a,e,b,f);numContacts++,g.copy(L.normalA,E),g.normalize(L.normalA,L.normalA),g.scale(D,E,K),h(L.contactPointA,I,D),h(L.contactPointA,L.contactPointA,a.position),h(L.contactPointB,I,k),i(L.contactPointB,L.contactPointB,k),h(L.contactPointB,L.contactPointB,e.position),this.contactEquations.push(L),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(L))}}return numContacts},c.prototype[o.PARTICLE|o.CAPSULE]=c.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},c.prototype[o.CIRCLE|o.LINE]=c.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var p=f,q=l,F=e,G=k,H=c,I=a,K=b,n=n||0,o="undefined"!=typeof o?o:K.radius,L=r,M=s,N=t,O=u,P=v,Q=w,R=x,S=y,T=z,U=A,V=B,W=C,X=D,Y=E,Z=J;g.set(S,-p.length/2,0),g.set(T,p.length/2,0),g.rotate(U,S,q),g.rotate(V,T,q),i(U,U,G),i(V,V,G),g.copy(S,U),g.copy(T,V),h(Q,T,S),g.normalize(R,Q),g.rotate(P,R,-Math.PI/2),h(W,H,S);var $=j(W,P);if(h(O,S,G),h(X,H,G),Math.abs($)ab&&bb>_){if(m)return!0;var cb=this.createContactEquation(I,F,b,f);return g.scale(cb.normalA,L,-1),g.normalize(cb.normalA,cb.normalA),g.scale(cb.contactPointA,cb.normalA,o),i(cb.contactPointA,cb.contactPointA,H),h(cb.contactPointA,cb.contactPointA,I.position),h(cb.contactPointB,N,G),i(cb.contactPointB,cb.contactPointB,G),h(cb.contactPointB,cb.contactPointB,F.position),this.contactEquations.push(cb),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(cb)),1}}Z[0]=S,Z[1]=T;for(var db=0;dbW&&(g.copy(Q,O),S=W,g.scale(N,K,W),g.add(N,N,O),R=!0)}}if(R){if(m)return!0;var X=this.createContactEquation(y,q,b,j);return g.sub(X.normalA,Q,x),g.normalize(X.normalA,X.normalA),g.scale(X.contactPointA,X.normalA,n),i(X.contactPointA,X.contactPointA,x),h(X.contactPointA,X.contactPointA,y.position),h(X.contactPointB,N,w),i(X.contactPointB,X.contactPointB,w),h(X.contactPointB,X.contactPointB,q.position),this.contactEquations.push(X),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(X)),1}if(n>0)for(var T=0;TW&&(Q=W,g.scale(N,J,W),g.add(N,N,z),g.copy(P,J),R=!0)}if(R){var X=this.createContactEquation(B,q,b,k);return g.scale(X.normalA,P,-1),g.normalize(X.normalA,X.normalA),g.set(X.contactPointA,0,0),i(X.contactPointA,X.contactPointA,z),h(X.contactPointA,X.contactPointA,B.position),h(X.contactPointB,N,y),i(X.contactPointB,X.contactPointB,y),h(X.contactPointB,X.contactPointB,q.position),this.contactEquations.push(X),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(X)),1}return 0},c.prototype[o.CIRCLE]=c.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=a,p=b,q=c,s=e,t=f,u=j,v=r,m=m||p.radius,n=n||t.radius;h(v,c,j);var w=m+n;if(g.squaredLength(v)>w*w)return 0;if(l)return!0;var x=this.createContactEquation(o,s,b,f);return h(x.normalA,u,q),g.normalize(x.normalA,x.normalA),g.scale(x.contactPointA,x.normalA,m),g.scale(x.contactPointB,x.normalA,-n),i(x.contactPointA,x.contactPointA,q),h(x.contactPointA,x.contactPointA,o.position),i(x.contactPointB,x.contactPointB,u),h(x.contactPointB,x.contactPointB,s.position),this.contactEquations.push(x),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x)),1},c.prototype[o.PLANE|o.CONVEX]=c.prototype[o.PLANE|o.RECTANGLE]=c.prototype.planeConvex=function(a,b,d,e,f,k,l,m,n){var o=f,p=l,u=k,v=m,w=a,x=b,y=d,z=e,A=r,B=s,C=t,D=0;g.rotate(B,q,z);for(var E=0;E0)return 0;if(l)return!0;var x=this.createContactEquation(o,m,f,b);return g.copy(x.normalA,v),g.scale(u,x.normalA,w),h(x.contactPointA,n,u),h(x.contactPointA,x.contactPointA,o.position),h(x.contactPointB,n,m.position),this.contactEquations.push(x),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x)),1},c.prototype[o.CIRCLE|o.PARTICLE]=c.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=a,n=b,o=c,p=e,q=j,s=r;if(h(s,q,o),g.squaredLength(s)>n.radius*n.radius)return 0;if(l)return!0;var t=this.createContactEquation(m,p,b,f);return g.copy(t.normalA,s),g.normalize(t.normalA,t.normalA),g.scale(t.contactPointA,t.normalA,n.radius),i(t.contactPointA,t.contactPointA,o),h(t.contactPointA,t.contactPointA,m.position),h(t.contactPointB,q,p.position),this.contactEquations.push(t),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(t)),1};{var T=new n(1),U=g.create(),V=g.create();g.create()}c.prototype[o.PLANE|o.CAPSULE]=c.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=U,m=V,n=T;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o=this.circlePlane(e,n,l,0,a,b,c,d,k),p=this.circlePlane(e,n,m,0,a,b,c,d,k);return k?o||p:o+p},c.prototype.capsulePlane=function(a,b,c,d,e,f,g,h,i){return console.warn("Narrowphase.prototype.capsulePlane() is deprecated. Use .planeCapsule() instead!"),this.planeCapsule(e,f,g,h,a,b,c,d,i)},c.prototype[o.CIRCLE|o.PLANE]=c.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,u=e,v=k,w=l;w=w||0;var x=r,y=s,z=t;h(x,p,v),g.rotate(y,q,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(u,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,v),h(B.contactPointA,B.contactPointA,u.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},c.convexPrecision=1e-7,c.prototype[o.CONVEX]=c.prototype[o.CONVEX|o.RECTANGLE]=c.prototype[o.RECTANGLE]=c.prototype.convexConvex=function(a,b,d,e,f,k,l,m,n,o){var p=r,q=s,w=t,A=u,B=v,C=x,D=y,E=z,F=0,o=o||c.convexPrecision,G=c.findSeparatingAxis(b,d,e,k,l,m,p);if(!G)return 0;h(D,l,d),j(p,D)>0&&g.scale(p,p,-1);var H=c.getClosestEdge(b,e,p,!0),I=c.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=d,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(w,Z,Q),g.rotate(A,$,Q),i(w,w,O),i(A,A,O),h(B,A,w),g.rotate(E,B,-Math.PI/2),g.normalize(E,E),h(D,q,w);var _=j(E,D);o>=_&&X++}if(X>=3){if(n)return!0;var ab=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(w,Z,Q),g.rotate(A,$,Q),i(w,w,O),i(A,A,O),h(B,A,w),g.rotate(ab.normalA,B,-Math.PI/2),g.normalize(ab.normalA,ab.normalA),h(D,q,w);var _=j(ab.normalA,D);g.scale(C,ab.normalA,_),h(ab.contactPointA,q,O),h(ab.contactPointA,ab.contactPointA,C),i(ab.contactPointA,ab.contactPointA,O),h(ab.contactPointA,ab.contactPointA,S.position),h(ab.contactPointB,q,P),i(ab.contactPointB,ab.contactPointB,P),h(ab.contactPointB,ab.contactPointB,T.position),this.contactEquations.push(ab),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(ab))}}}return F};var W=g.fromValues(0,0);c.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=W;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var X=g.fromValues(0,0),Y=g.fromValues(0,0),Z=g.fromValues(0,0),$=g.fromValues(0,0),_=g.fromValues(0,0),ab=g.fromValues(0,0);c.findSeparatingAxis=function(a,b,d,e,f,i,j){for(var k=null,l=!1,m=!1,n=X,o=Y,p=Z,q=$,r=_,s=ab,t=0;2!==t;t++){var u=a,v=d;1===t&&(u=e,v=i);for(var w=0;w!==u.vertices.length;w++){g.rotate(o,u.vertices[w],v),g.rotate(p,u.vertices[(w+1)%u.vertices.length],v),h(n,p,o),g.rotate(q,n,-Math.PI/2),g.normalize(q,q),c.projectConvexOntoAxis(a,b,d,q,r),c.projectConvexOntoAxis(e,f,i,q,s);var x=r,y=s,z=!1;r[0]>s[0]&&(y=r,x=s,z=!0);var A=y[0]-x[1];l=A<=c.convexPrecision,(null===k||A>k)&&(g.copy(j,q),k=A,m=l)}}return m};var bb=g.fromValues(0,0),cb=g.fromValues(0,0),db=g.fromValues(0,0);c.getClosestEdge=function(a,b,c,d){var e=bb,f=cb,i=db;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=Math.PI/2,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate(i,f,-m),g.normalize(i,i);var o=j(i,e);(-1==k||o>maxDot)&&(k=n%l,maxDot=o) }return k};var eb=g.create(),fb=g.create(),gb=g.create(),hb=g.create(),ib=g.create(),jb=g.create(),kb=g.create();c.prototype[o.CIRCLE|o.HEIGHTFIELD]=c.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.data,m=m||b.radius,o=f.elementWidth,p=fb,q=eb,r=ib,s=kb,t=jb,u=gb,v=hb,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;c[1]+mA;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var D=g.dot(p,t);if(q[0]>=u[0]&&q[0]=D&&(C===!1||Math.abs(D)0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)b;b++){for(var d=a[b],e=b-1;e>=0&&!(a[e].aabb.lowerBound[0]<=d.aabb.lowerBound[0]);e--)a[e+1]=a[e];a[e+1]=d}return a},c.sortAxisListY=function(a){for(var b=1,c=a.length;c>b;b++){for(var d=a[b],e=b-1;e>=0&&!(a[e].aabb.lowerBound[1]<=d.aabb.lowerBound[1]);e--)a[e+1]=a[e];a[e+1]=d}return a};var f={keys:[]};c.prototype.getCollisionPairs=function(){{var a=this.axisListX,b=this.axisListY,d=this.result;this.axisIndex}d.length=0;for(var g=0;g!==a.length;g++){var h=a[g];h.aabbNeedsUpdate&&h.updateAABB()}c.sortAxisListX(a),c.sortAxisListY(b);for(var g=0,i=a.length;g!==i;g++)for(var j=a[g],k=g+1;i>k;k++){var l=a[k];if(!c.checkBounds(j,l,0))break;if(e.canCollide(j,l)){var m=j.idk;k++){var l=b[k];if(!c.checkBounds(j,l,1))break;if(e.canCollide(j,l)){var m=j.idc)g.scale(e.normalA,i,-1),g.sub(e.contactPointA,j,h.position),g.sub(e.contactPointB,k,o.position),g.scale(n,i,c),g.add(e.contactPointA,e.contactPointA,n),-1==a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!=u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)g.scale(f.normalA,i,1),g.sub(f.contactPointA,j,h.position),g.sub(f.contactPointB,k,o.position),g.scale(n,i,d),g.sub(f.contactPointB,f.contactPointB,n),-1==a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!=u&&a.splice(u,1)}},c.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},c.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b){function c(a,b,c,n,o){o=o||{},d.call(this,a,c,d.REVOLUTE,o);var p=this.maxForce="undefined"!=typeof o.maxForce?o.maxForce:Number.MAX_VALUE;this.pivotA=b,this.pivotB=n;var q=this.equations=[new e(a,c,-p,p),new e(a,c,-p,p)],r=q[0],s=q[1],t=this;r.computeGq=function(){return h.rotate(i,t.pivotA,a.angle),h.rotate(j,t.pivotB,c.angle),h.add(m,c.position,j),h.sub(m,m,a.position),h.sub(m,m,i),h.dot(m,k)},s.computeGq=function(){return h.rotate(i,t.pivotA,a.angle),h.rotate(j,t.pivotB,c.angle),h.add(m,c.position,j),h.sub(m,m,a.position),h.sub(m,m,i),h.dot(m,l)},s.minForce=r.minForce=-p,s.maxForce=r.maxForce=p,this.motorEquation=new f(a,c),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new g(a,c),this.lowerLimitEquation=new g(a,c),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var d=a("./Constraint"),e=a("../equations/Equation"),f=a("../equations/RotationalVelocityEquation"),g=a("../equations/RotationalLockEquation"),h=a("../math/vec2");b.exports=c;var i=h.create(),j=h.create(),k=h.fromValues(1,0),l=h.fromValues(0,1),m=h.create();c.prototype=new d,c.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],m=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>m)o.angle=m,-1==e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!=r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1==e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!=r&&e.splice(r,1)}h.rotate(i,c,a.angle),h.rotate(j,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-h.crossLength(i,k),f.G[3]=1,f.G[4]=0,f.G[5]=h.crossLength(j,k),g.G[0]=0,g.G[1]=-1,g.G[2]=-h.crossLength(i,l),g.G[3]=0,g.G[4]=1,g.G[5]=h.crossLength(j,l)},c.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},c.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},c.prototype.motorIsEnabled=function(){return!!this.motorEnabled},c.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},c.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}{var d=a("./Equation");a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},c.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},c.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b){function c(a,b){d.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=e.create(),this.penetrationVec=e.create(),this.contactPointB=e.create(),this.normalA=e.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var d=a("./Equation"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeB=function(a,b,c){var d=this.bodyA,f=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=f.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=e.crossLength(g,l),o=e.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,e.add(k,j,h),e.sub(k,k,i),e.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=e.dot(l,k),p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b){function c(a,b,d,e){this.minForce="undefined"==typeof d?-Number.MAX_VALUE:d,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=c.DEFAULT_STIFFNESS,this.relaxation=c.DEFAULT_RELAXATION,this.G=new h.ARRAY_TYPE(6);for(var f=0;6>f;f++)this.G[f]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}function d(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e}function e(a){return a.sleepState===i.SLEEPING?0:a.invMass}function f(a){return a.sleepState===i.SLEEPING?0:a.invInertia}b.exports=c;var g=a("../math/vec2"),h=a("../utils/Utils"),i=a("../objects/Body");c.prototype.constructor=c,c.DEFAULT_STIFFNESS=1e6,c.DEFAULT_RELAXATION=4,c.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},c.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var j=g.create(),k=g.create();c.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,e=(b.position,c.position,b.angle),f=c.angle;return d(a,j,e,k,f)+this.offset};g.create(),g.create();c.prototype.transformedGmult=function(a,b,c,e,f){return d(a,b,c,e,f)},c.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.transformedGmult(a,d,f,e,g)+this.relativeVelocity},c.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,e=b.vlambda,f=c.vlambda,g=b.wlambda,h=c.wlambda;return d(a,e,g,f,h)};var l=g.create(),m=g.create();c.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,h=b.force,i=b.angularForce,j=e(a),k=e(b),n=f(a),o=f(b),p=this.G;return g.scale(l,c,j),g.scale(m,h,k),this.transformedGmult(p,l,d*n,m,i*o)},c.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=e(a),d=e(b),g=f(a),h=f(b),i=this.G;return i[0]*i[0]*c+i[1]*i[1]*c+i[2]*i[2]*g+i[3]*i[3]*d+i[4]*i[4]*d+i[5]*i[5]*h};{var n=g.create(),o=g.create(),p=g.create();g.create(),g.create(),g.create()}c.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=n,h=o,i=p,j=e(b),k=e(c),l=f(b),m=f(c),q=this.G;h[0]=q[0],h[1]=q[1],i[0]=q[3],i[1]=q[4],g.scale(d,h,j*a),g.add(b.vlambda,b.vlambda,d),b.wlambda+=l*q[2]*a,g.scale(d,i,k*a),g.add(c.vlambda,c.vlambda,d),c.wlambda+=m*q[5]*a},c.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":45}],23:[function(a,b){function c(a,b,c){e.call(this,a,b,-c,c),this.contactPointA=d.create(),this.contactPointB=d.create(),this.t=d.create(),this.contactEquation=null,this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}{var d=a("../math/vec2"),e=a("./Equation");a("../utils/Utils")}b.exports=c,c.prototype=new e,c.prototype.constructor=c,c.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},c.prototype.getSlipForce=function(){return this.maxForce},c.prototype.computeB=function(a,b,c){var e=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-d.crossLength(e,g),h[3]=g[0],h[4]=g[1],h[5]=d.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":45,"./Equation":22}],24:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var e=this.G;e[2]=1,e[5]=-1}var d=a("./Equation"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c;var f=e.create(),g=e.create(),h=e.fromValues(1,0),i=e.fromValues(0,1);c.prototype.computeGq=function(){return e.rotate(f,h,this.bodyA.angle+this.angle),e.rotate(g,i,this.bodyB.angle),e.dot(f,g)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b){function c(a,b){d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}{var d=a("./Equation");a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b){var c=function(){};b.exports=c,c.prototype={constructor:c,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;return void 0!==c[a]&&-1!==c[a].indexOf(b)?!0:!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b){function c(a,b,f){if(f=f||{},!(a instanceof d&&b instanceof d))throw new Error("First two arguments must be Material instances.");this.id=c.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof f.friction?Number(f.friction):.3,this.restitution="undefined"!=typeof f.restitution?Number(f.restitution):0,this.stiffness="undefined"!=typeof f.stiffness?Number(f.stiffness):e.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof f.relaxation?Number(f.relaxation):e.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof f.frictionStiffness?Number(f.frictionStiffness):e.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof f.frictionRelaxation?Number(f.frictionRelaxation):e.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof f.surfaceVelocity?Number(f.surfaceVelocity):0}var d=a("./Material"),e=a("../equations/Equation");b.exports=c,c.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b){function c(){this.id=c.idCounter++}b.exports=c,c.idCounter=0},{}],29:[function(a,b){var c={};c.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},c.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var d=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(c._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&c._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return d.push(e[0],e[1],e[2]),d},c._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},c._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=c},{}],30:[function(a,b){var c=a("../../build/vec2").vec2;c.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},c.crossVZ=function(a,b,d){return c.rotate(a,b,-Math.PI/2),c.scale(a,a,d),a},c.crossZV=function(a,b,d){return c.rotate(a,d,Math.PI/2),c.scale(a,a,b),a},c.rotate=function(a,b,c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g},c.toLocalFrame=function(a,b,d,e){c.copy(a,b),c.sub(a,a,d),c.rotate(a,a,-e)},c.toGlobalFrame=function(a,b,d,e){c.copy(a,b),c.rotate(a,a,e),c.add(a,a,d)},c.centroid=function(a,b,d,e){return c.add(a,b,d),c.add(a,a,e),c.scale(a,a,1/3),a},b.exports=c},{"../../build/vec2":1}],31:[function(a,b){function c(a){a=a||{},h.call(this),this.id=++c._idCounter,this.world=null,this.shapes=[],this.shapeOffsets=[],this.shapeAngles=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.fixedRotation=!!a.fixedRotation||!1,this.position=d.fromValues(0,0),a.position&&d.copy(this.position,a.position),this.interpolatedPosition=d.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=d.fromValues(0,0),this.previousAngle=0,this.velocity=d.fromValues(0,0),a.velocity&&d.copy(this.velocity,a.velocity),this.vlambda=d.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=d.create(),a.force&&d.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.motionState=0===this.mass?c.STATIC:c.DYNAMIC,this.boundingRadius=0,this.aabb=new g,this.aabbNeedsUpdate=!0,this.allowSleep=!0,this.wantsToSleep=!1,this.sleepState=c.AWAKE,this.sleepSpeedLimit=.2,this.sleepTimeLimit=1,this.gravityScale=1,this.timeLastSleepy=0,this.concavePath=null,this.lastDampingScale=1,this.lastAngularDampingScale=1,this.lastDampingTimeStep=-1,this.updateMassProperties()}var d=a("../math/vec2"),e=a("poly-decomp"),f=a("../shapes/Convex"),g=a("../collision/AABB"),h=a("../events/EventEmitter");b.exports=c,c.prototype=new h,c._idCounter=0,c.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},c.prototype.getArea=function(){for(var a=0,b=0;be&&(e=h+i)}this.boundingRadius=e},c.prototype.addShape=function(a,b,c){c=c||0,b=b?d.fromValues(b[0],b[1]):d.fromValues(0,0),this.shapes.push(a),this.shapeOffsets.push(b),this.shapeAngles.push(c),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},c.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.shapeOffsets.splice(b,1),this.shapeAngles.splice(b,1),this.aabbNeedsUpdate=!0,!0):!1},c.prototype.updateMassProperties=function(){if(this.motionState===c.STATIC||this.motionState===c.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,e=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=d.squaredLength(this.shapeOffsets[g]),j=h.computeMomentOfInertia(e);f+=j+e*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass}};var k=d.create();c.prototype.applyForce=function(a,b){var c=k;d.sub(c,b,this.position),d.add(this.force,this.force,a);var e=d.crossLength(c,a);this.angularForce+=e},c.prototype.toLocalFrame=function(a,b){d.toLocalFrame(a,b,this.position,this.angle)},c.prototype.toWorldFrame=function(a,b){d.toGlobalFrame(a,b,this.position,this.angle)},c.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var g=new e.Polygon;if(g.vertices=a,g.makeCCW(),"number"==typeof b.removeCollinearPoints&&g.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!g.isSimple())return!1;this.concavePath=g.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=c.AWAKE):(this.idleTime+=e,this.sleepState=c.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},c.prototype.getVelocityFromPosition=function(a,b){return a=a||d.create(),d.sub(a,this.position,this.previousPosition),d.scale(a,a,1/b),a},c.prototype.getAngularVelocityFromPosition=function(a){return(this.angle-this.previousAngle)/a},c.sleepyEvent={type:"sleepy"},c.sleepEvent={type:"sleep"},c.wakeUpEvent={type:"wakeup"},c.DYNAMIC=1,c.STATIC=2,c.KINEMATIC=4,c.AWAKE=0,c.SLEEPY=1,c.SLEEPING=2},{"../collision/AABB":8,"../events/EventEmitter":26,"../math/vec2":30,"../shapes/Convex":36,"poly-decomp":6}],32:[function(a,b){function c(a,b,c){c=c||{},this.restLength="number"==typeof c.restLength?c.restLength:1,this.stiffness=c.stiffness||100,this.damping=c.damping||1,this.bodyA=a,this.bodyB=b,this.localAnchorA=d.fromValues(0,0),this.localAnchorB=d.fromValues(0,0),c.localAnchorA&&d.copy(this.localAnchorA,c.localAnchorA),c.localAnchorB&&d.copy(this.localAnchorB,c.localAnchorB),c.worldAnchorA&&this.setWorldAnchorA(c.worldAnchorA),c.worldAnchorB&&this.setWorldAnchorB(c.worldAnchorB)}var d=a("../math/vec2");b.exports=c,c.prototype.setWorldAnchorA=function(a){this.bodyA.toLocalFrame(this.localAnchorA,a)},c.prototype.setWorldAnchorB=function(a){this.bodyB.toLocalFrame(this.localAnchorB,a)},c.prototype.getWorldAnchorA=function(a){this.bodyA.toWorldFrame(a,this.localAnchorA)},c.prototype.getWorldAnchorB=function(a){this.bodyB.toWorldFrame(a,this.localAnchorB)};var e=d.create(),f=d.create(),g=d.create(),h=d.create(),i=d.create(),j=d.create(),k=d.create(),l=d.create(),m=d.create();c.prototype.applyForce=function(){var a=this.stiffness,b=this.damping,c=this.restLength,n=this.bodyA,o=this.bodyB,p=e,q=f,r=g,s=h,t=m,u=i,v=j,w=k,x=l;this.getWorldAnchorA(u),this.getWorldAnchorB(v),d.sub(w,u,n.position),d.sub(x,v,o.position),d.sub(p,v,u);var y=d.len(p);d.normalize(q,p),d.sub(r,o.velocity,n.velocity),d.crossZV(t,o.angularVelocity,x),d.add(r,r,t),d.crossZV(t,n.angularVelocity,w),d.sub(r,r,t),d.scale(s,q,-a*(y-c)-b*d.dot(r,q)),d.sub(n.force,n.force,s),d.add(o.force,o.force,s);var z=d.crossLength(w,s),A=d.crossLength(x,s);n.angularForce-=z,o.angularForce+=A}},{"../math/vec2":30}],33:[function(a,b){b.exports={AABB:a("./collision/AABB"),AngleLockEquation:a("./equations/AngleLockEquation"),Body:a("./objects/Body"),Broadphase:a("./collision/Broadphase"),Capsule:a("./shapes/Capsule"),Circle:a("./shapes/Circle"),Constraint:a("./constraints/Constraint"),ContactEquation:a("./equations/ContactEquation"),ContactMaterial:a("./material/ContactMaterial"),Convex:a("./shapes/Convex"),DistanceConstraint:a("./constraints/DistanceConstraint"),Equation:a("./equations/Equation"),EventEmitter:a("./events/EventEmitter"),FrictionEquation:a("./equations/FrictionEquation"),GearConstraint:a("./constraints/GearConstraint"),GridBroadphase:a("./collision/GridBroadphase"),GSSolver:a("./solver/GSSolver"),Heightfield:a("./shapes/Heightfield"),Line:a("./shapes/Line"),LockConstraint:a("./constraints/LockConstraint"),Material:a("./material/Material"),Narrowphase:a("./collision/Narrowphase"),NaiveBroadphase:a("./collision/NaiveBroadphase"),Particle:a("./shapes/Particle"),Plane:a("./shapes/Plane"),RevoluteConstraint:a("./constraints/RevoluteConstraint"),PrismaticConstraint:a("./constraints/PrismaticConstraint"),Rectangle:a("./shapes/Rectangle"),RotationalVelocityEquation:a("./equations/RotationalVelocityEquation"),SAPBroadphase:a("./collision/SAPBroadphase"),Shape:a("./shapes/Shape"),Solver:a("./solver/Solver"),Spring:a("./objects/Spring"),Utils:a("./utils/Utils"),World:a("./world/World"),vec2:a("./math/vec2"),version:a("../package.json").version} },{"../package.json":7,"./collision/AABB":8,"./collision/Broadphase":9,"./collision/GridBroadphase":10,"./collision/NaiveBroadphase":11,"./collision/Narrowphase":12,"./collision/SAPBroadphase":13,"./constraints/Constraint":14,"./constraints/DistanceConstraint":15,"./constraints/GearConstraint":16,"./constraints/LockConstraint":17,"./constraints/PrismaticConstraint":18,"./constraints/RevoluteConstraint":19,"./equations/AngleLockEquation":20,"./equations/ContactEquation":21,"./equations/Equation":22,"./equations/FrictionEquation":23,"./equations/RotationalVelocityEquation":25,"./events/EventEmitter":26,"./material/ContactMaterial":27,"./material/Material":28,"./math/vec2":30,"./objects/Body":31,"./objects/Spring":32,"./shapes/Capsule":34,"./shapes/Circle":35,"./shapes/Convex":36,"./shapes/Heightfield":37,"./shapes/Line":38,"./shapes/Particle":39,"./shapes/Plane":40,"./shapes/Rectangle":41,"./shapes/Shape":42,"./solver/GSSolver":43,"./solver/Solver":44,"./utils/Utils":45,"./world/World":49}],34:[function(a,b){function c(a,b){this.length=a||1,this.radius=b||1,d.call(this,d.CAPSULE)}var d=a("./Shape"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.computeMomentOfInertia=function(a){var b=this.radius,c=this.length+b,d=2*b;return a*(d*d+c*c)/12},c.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius+this.length/2},c.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius+2*this.radius*this.length};var f=e.create();c.prototype.computeAABB=function(a,b,c){var d=this.radius;e.set(f,this.length,0),e.rotate(f,f,c),e.set(a.upperBound,Math.max(f[0]+d,-f[0]+d),Math.max(f[1]+d,-f[1]+d)),e.set(a.lowerBound,Math.min(f[0]-d,-f[0]-d),Math.min(f[1]-d,-f[1]-d)),e.add(a.lowerBound,a.lowerBound,b),e.add(a.upperBound,a.upperBound,b)}},{"../math/vec2":30,"./Shape":42}],35:[function(a,b){function c(a){this.radius=a||1,d.call(this,d.CIRCLE)}var d=a("./Shape"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},c.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},c.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},c.prototype.computeAABB=function(a,b){var c=this.radius;e.set(a.upperBound,c,c),e.set(a.lowerBound,-c,-c),b&&(e.add(a.lowerBound,a.lowerBound,b),e.add(a.upperBound,a.upperBound,b))}},{"../math/vec2":30,"./Shape":42}],36:[function(a,b){function c(a){this.vertices=[];for(var b=0;bg;f=g,g++){var h=this.vertices[f],i=this.vertices[g],j=Math.abs(e.crossLength(h,i)),k=e.dot(i,i)+e.dot(i,h)+e.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},c.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=e.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},c.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},c.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,d=0;d!==a.length;d++){var e=a[d],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=c.triangleArea(f,g,h);this.area+=i}},c.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c)}},{"../math/polyk":29,"../math/vec2":30,"./Shape":42,"poly-decomp":6}],37:[function(a,b){function c(a,b,c){this.data=a,this.maxValue=b,this.elementWidth=c,d.call(this,d.HEIGHTFIELD)}{var d=a("./Shape");a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.computeMomentOfInertia=function(){return Number.MAX_VALUE},c.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},c.prototype.updateArea=function(){for(var a=this.data,b=0,c=0;c=v*v)break}for(w=0;w!==l;w++){var y=k[w];if(y instanceof h){var z=y.contactEquation.multiplier*y.frictionCoefficient;y.maxForce=z,y.minForce=-z}}}for(f=0;f!==i;f++){for(v=0,w=0;w!==l;w++){u=k[w];var x=c.iterateEquation(w,u,u.epsilon,s,r,q,p,a,f);v+=Math.abs(x)}if(this.usedIterations++,m>=v*v)break}for(t=0;t!==o;t++)n[t].addConstraintVelocity()}},c.iterateEquation=function(a,b,c,d,e,f,g,h){var i=d[a],j=e[a],k=f[a],l=b.computeGWlambda(),m=b.maxForce,n=b.minForce;g&&(i=0);var o=j*(i-l-c*k),p=k+o;return n*h>p?o=n*h-k:p>m*h&&(o=m*h-k),f[a]+=o,b.multiplier=f[a]/h,b.addToWlambda(o),o}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":45,"./Solver":44}],44:[function(a,b){function c(a,b){a=a||{},d.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var d=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=c,c.prototype=new d,c.prototype.solve=function(){throw new Error("Solver.solve should be implemented by subclasses!")};var e={bodies:[]};c.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),e.bodies.length=0,b.getBodies(e.bodies),e.bodies.length&&this.solve(a,e))},c.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},c.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},c.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},c.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},c.prototype.removeAllEquations=function(){this.equations.length=0},c.GS=1,c.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":45}],45:[function(a,b){function c(){}b.exports=c,c.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},c.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},c.ARRAY_TYPE=Float32Array||Array,c.extend=function(a,b){for(var c in b)a[c]=b[c]}},{}],46:[function(a,b){function c(){this.equations=[],this.bodies=[]}var d=a("../objects/Body");b.exports=c,c.prototype.reset=function(){this.equations.length=this.bodies.length=0};var e=[];c.prototype.getBodies=function(a){var b=a||[],c=this.equations;e.length=0;for(var d=0;d!==c.length;d++){var f=c[d];-1===e.indexOf(f.bodyA.id)&&(b.push(f.bodyA),e.push(f.bodyA.id)),-1===e.indexOf(f.bodyB.id)&&(b.push(f.bodyB),e.push(f.bodyB.id))}return b},c.prototype.wantsToSleep=function(){for(var a=0;ae;e++)this.internalStep(a);this.time+=b;for(var f=this.time%a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];h.motionState!==s.STATIC&&h.sleepState!==s.SLEEPING?(j.sub(N,h.position,h.previousPosition),j.scale(N,N,f/a),j.add(h.interpolatedPosition,h.position,N),h.interpolatedAngle=h.angle+(h.angle-h.previousAngle)*f/a):(j.copy(h.interpolatedPosition,h.position),h.interpolatedAngle=h.angle)}}},c.prototype.internalStep=function(a){this.stepping=!0;var b,d,e=this,f=this.doProfiling,g=this.springs.length,h=this.springs,i=this.bodies,k=this.gravity,l=this.solver,m=this.bodies.length,n=this.broadphase,o=this.narrowphase,p=this.constraints,q=K,r=(j.scale,j.add),t=(j.rotate,this.islandManager);if(this.lastTimeStep=a,f&&(b=performance.now()),this.useWorldGravityAsFrictionGravity){var u=j.length(this.gravity);0===u&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=u)}if(this.applyGravity)for(var v=0;v!==m;v++){var w=i[v],x=w.force;w.motionState===s.DYNAMIC&&w.sleepState!==s.SLEEPING&&(j.scale(q,k,w.mass*w.gravityScale),r(x,x,q))}if(this.applySpringForces)for(var v=0;v!==g;v++){var y=h[v];y.applyForce()}if(this.applyDamping)for(var v=0;v!==m;v++){var w=i[v];w.motionState===s.DYNAMIC&&w.applyDamping(a)}for(var z=n.getCollisionPairs(this),A=this.disabledBodyCollisionPairs,v=A.length-2;v>=0;v-=2)for(var B=z.length-2;B>=0;B-=2)(A[v]===z[B]&&A[v+1]===z[B+1]||A[v+1]===z[B]&&A[v]===z[B+1])&&z.splice(B,2);var C=p.length;for(v=0;v!==C;v++){var D=p[v];if(!D.collideConnected)for(var B=z.length-2;B>=0;B-=2)(D.bodyA===z[B]&&D.bodyB===z[B+1]||D.bodyB===z[B]&&D.bodyA===z[B+1])&&z.splice(B,2)}this.postBroadphaseEvent.pairs=z,this.emit(this.postBroadphaseEvent),o.reset(this);for(var v=0,E=z.length;v!==E;v+=2)for(var F=z[v],G=z[v+1],I=0,J=F.shapes.length;I!==J;I++)for(var L=F.shapes[I],M=F.shapeOffsets[I],N=F.shapeAngles[I],O=0,P=G.shapes.length;O!==P;O++){var Q=G.shapes[O],R=G.shapeOffsets[O],S=G.shapeAngles[O],T=this.defaultContactMaterial;if(L.material&&Q.material){var U=this.getContactMaterial(L.material,Q.material);U&&(T=U)}this.runNarrowphase(o,F,L,M,N,G,Q,R,S,T,this.frictionGravity)}for(var V=this.overlappingShapesLastState,v=0;v!==V.keys.length;v++){var W=V.keys[v];if(V[W]===!0&&!this.overlappingShapesCurrentState[W]){var X=this.endContactEvent;X.shapeA=V[W+"_shapeA"],X.shapeB=V[W+"_shapeB"],X.bodyA=V[W+"_bodyA"],X.bodyB=V[W+"_bodyB"],this.emit(X)}}for(var v=0;v!==V.keys.length;v++)delete V[V.keys[v]];V.keys.length=0;for(var Y=this.overlappingShapesCurrentState,v=0;v!==Y.keys.length;v++)V[Y.keys[v]]=Y[Y.keys[v]],V.keys.push(Y.keys[v]);for(var v=0;v!==Y.keys.length;v++)delete Y[Y.keys[v]];Y.keys.length=0;var Z=this.preSolveEvent;Z.contactEquations=o.contactEquations,Z.frictionEquations=o.frictionEquations,this.emit(Z);var C=p.length;for(v=0;v!==C;v++)p[v].update();if(o.contactEquations.length||o.frictionEquations.length||p.length)if(this.islandSplit){for(t.equations.length=0,H.appendArray(t.equations,o.contactEquations),H.appendArray(t.equations,o.frictionEquations),v=0;v!==C;v++)H.appendArray(t.equations,p[v].equations);t.split(this);for(var v=0;v!==t.islands.length;v++){var $=t.islands[v];$.equations.length&&l.solveIsland(a,$)}}else{for(l.addEquations(o.contactEquations),l.addEquations(o.frictionEquations),v=0;v!==C;v++)l.addEquations(p[v].equations);this.solveConstraints&&l.solve(a,this),l.removeAllEquations()}for(var v=0;v!==m;v++){var _=i[v];_.sleepState!==s.SLEEPING&&_.motionState!==s.STATIC&&c.integrateBody(_,a)}for(var v=0;v!==m;v++)i[v].setZeroForce();if(f&&(d=performance.now(),e.lastStepTime=d-b),this.emitImpactEvent)for(var ab=this.impactEvent,v=0;v!==o.contactEquations.length;v++){var bb=o.contactEquations[v];bb.firstImpact&&(ab.bodyA=bb.bodyA,ab.bodyB=bb.bodyB,ab.shapeA=bb.shapeA,ab.shapeB=bb.shapeB,ab.contactEquation=bb,this.emit(ab))}if(this.enableBodySleeping)for(v=0;v!==m;v++)i[v].sleepTick(this.time,!1,a);else if(this.enableIslandSleeping&&this.islandSplit){for(v=0;v!==m;v++)i[v].sleepTick(this.time,!0,a);for(var v=0;v0,a.frictionCoefficient=k.friction;var o;o=b.motionState===s.STATIC||b.motionState===s.KINEMATIC?f.mass:f.motionState===s.STATIC||f.motionState===s.KINEMATIC?b.mass:b.mass*f.mass/(b.mass+f.mass),a.slipForce=k.friction*l*o,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation;var p=a[c.type|g.type],q=0;if(p){var r=c.sensor||g.sensor,t=a.frictionEquations.length;q=c.type=2*A&&(v=!0),f.allowSleep&&f.motionState===s.DYNAMIC&&f.sleepState===s.SLEEPING&&b.sleepState===s.AWAKE&&b.motionState!==s.STATIC&&x>=2*y&&(w=!0),v&&b.wakeUp(),w&&f.wakeUp();var B=c.id1)for(var D=a.frictionEquations.length-u;D=0;b--)this.removeConstraint(a[b]);for(var d=this.bodies,b=d.length-1;b>=0;b--)this.removeBody(d[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);c.apply(this)},c.prototype.clone=function(){var a=new c;return a.fromJSON(this.toJSON()),a};var Q=j.create(),R=j.fromValues(0,0),S=j.fromValues(0,0);c.prototype.hitTest=function(a,b,c){c=c||0;var d=new s({position:a}),e=new q,f=a,g=0,h=Q,i=R,l=S;d.addShape(e);for(var n=this.narrowphase,r=[],t=0,u=b.length;t!==u;t++)for(var v=b[t],w=0,x=v.shapes.length;w!==x;w++){var y=v.shapes[w],z=v.shapeOffsets[w]||i,A=v.shapeAngles[w]||0;j.rotate(h,z,v.angle),j.add(h,h,v.position);var B=A+v.angle;(y instanceof k&&n.circleParticle(v,y,h,B,d,e,f,g,!0)||y instanceof m&&n.particleConvex(d,e,f,g,v,y,h,B,!0)||y instanceof o&&n.particlePlane(d,e,f,g,v,y,h,B,!0)||y instanceof p&&n.particleCapsule(d,e,f,g,v,y,h,B,!0)||y instanceof q&&j.squaredLength(j.sub(l,h,a))0&&this.enable(a[d],b,!0));else a instanceof Phaser.Group?this.enable(a.children,b,c):(this.enableBody(a,b),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback)for(var b=a.pairs.length;b-=2;)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA,a.contactEquations)},endContactHandler:function(a){this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA)},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){var b=this.everythingCollisionGroup.mask;"undefined"==typeof a&&(b=this.boundsCollisionGroup.mask),this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b)},setBounds:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof e&&(e=!0),"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=!0),"undefined"==typeof h&&(h=!0),"undefined"==typeof i&&(i=!0),this.walls.left&&this.world.removeBody(this.walls.left),this.walls.right&&this.world.removeBody(this.walls.right),this.walls.top&&this.world.removeBody(this.walls.top),this.walls.bottom&&this.world.removeBody(this.walls.bottom),e&&(this.walls.left=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:1.5707963267948966}),this.walls.left.addShape(new p2.Plane),i&&(this.walls.left.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.left)),f&&(this.walls.right=new p2.Body({mass:0,position:[this.pxmi(a+c),this.pxmi(b)],angle:-1.5707963267948966}),this.walls.right.addShape(new p2.Plane),i&&(this.walls.right.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.right)),g&&(this.walls.top=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:-3.141592653589793}),this.walls.top.addShape(new p2.Plane),i&&(this.walls.top.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.top)),h&&(this.walls.bottom=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(d)]}),this.walls.bottom.addShape(new p2.Plane),i&&(this.walls.bottom.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.bottom))},update:function(){this.world.step(this.useElapsedTime?this.game.time.physicsElapsed:this.frameRate)},clear:function(){this.world.clear(),this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this._collisionGroupID=2,this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,c,d){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.DistanceConstraint(this,a,b,c,d)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,c,d){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.GearConstraint(this,a,b,c,d)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,c,d,e){return a=this.getBody(a),c=this.getBody(c),a&&c?this.addConstraint(new Phaser.Physics.P2.RevoluteConstraint(this,a,b,c,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,c,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.LockConstraint(this,a,b,c,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,c,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.PrismaticConstraint(this,a,b,c,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b.setMaterial(a)},createMaterial:function(a,b){a=a||"";var c=new Phaser.Physics.P2.Material(a);return this.materials.push(c),"undefined"!=typeof b&&b.setMaterial(c),c},createContactMaterial:function(a,b,c){"undefined"==typeof a&&(a=this.createMaterial()),"undefined"==typeof b&&(b=this.createMaterial());var d=new Phaser.Physics.P2.ContactMaterial(a,b,c);return this.addContactMaterial(d)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof Phaser.Physics.P2.Body?a.data:a.body&&a.body.type===Phaser.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b].parent);return a},hitTest:function(a,b,c,d){"undefined"==typeof b&&(b=this.world.bodies),"undefined"==typeof c&&(c=5),"undefined"==typeof d&&(d=!1);for(var e=[this.pxmi(a.x),this.pxmi(a.y)],f=[],g=b.length;g--;)b[g]instanceof Phaser.Physics.P2.Body&&(!d||b[g].data.motionState!==p2.Body.STATIC)?f.push(b[g].data):b[g]instanceof p2.Body&&b[g].parent&&(!d||b[g].motionState!==p2.Body.STATIC)?f.push(b[g]):b[g]instanceof Phaser.Sprite&&b[g].hasOwnProperty("body")&&(!d||b[g].body.data.motionState!==p2.Body.STATIC)&&f.push(b[g].body.data);return this.world.hitTest(e,f,c)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var c=new Phaser.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(c),a&&this.setCollisionGroup(a,c),c},setCollisionGroup:function(a,b){if(a instanceof Phaser.Group)for(var c=0;ce;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=[]},convertTilemap:function(a,b,c,d){b=a.getLayer(b),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(Phaser.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"defaultFriction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"defaultRestitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(Phaser.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"enableBodySleeping",{get:function(){return this.world.enableBodySleeping},set:function(a){this.world.enableBodySleeping=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),Phaser.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},Phaser.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},Phaser.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.PointProxy.prototype.constructor=Phaser.Physics.P2.PointProxy,Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=this.world.pxm(a)}}),Phaser.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.InversePointProxy.prototype.constructor=Phaser.Physics.P2.InversePointProxy,Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=this.world.pxm(-a)}}),Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=this.world.pxm(-a)}}),Phaser.Physics.P2.Body=function(a,b,c,d,e){b=b||null,c=c||0,d=d||0,"undefined"==typeof e&&(e=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=Phaser.Physics.P2JS,this.offset=new Phaser.Point,this.data=new p2.Body({position:[this.world.pxmi(c),this.world.pxmi(d)],mass:e}),this.data.parent=this,this.velocity=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new Phaser.Point,this.onBeginContact=new Phaser.Signal,this.onEndContact=new Phaser.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},Phaser.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbacksContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if("undefined"==typeof b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if("undefined"==typeof c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass()},applyDamping:function(a){this.data.applyDamping(a)},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxm(b),this.world.pxm(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0]),this.sprite.y=this.world.mpxi(this.data.position[1]),this.fixedRotation||(this.sprite.rotation=this.data.angle)},reset:function(a,b,c,d){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){this.data.world!==this.game.physics.p2.world&&this.game.physics.p2.addBody(this)},removeFromWorld:function(){this.data.world===this.game.physics.p2.world&&this.game.physics.p2.removeBodyNextStep(this)},destroy:function(){this.removeFromWorld(),this.clearShapes(),this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this.debugBody&&this.debugBody.destroy(),this.debugBody=null,this.sprite=null},clearShapes:function(){for(var a=this.data.shapes.length;a--;)this.data.removeShape(this.data.shapes[a]);this.shapeChanged()},addShape:function(a,b,c,d){return"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),"undefined"==typeof d&&(d=0),this.data.addShape(a,[this.world.pxmi(b),this.world.pxmi(c)],d),this.shapeChanged(),a},addCircle:function(a,b,c,d){var e=new p2.Circle(this.world.pxm(a));return this.addShape(e,b,c,d)},addRectangle:function(a,b,c,d,e){var f=new p2.Rectangle(this.world.pxm(a),this.world.pxm(b));return this.addShape(f,c,d,e)},addPlane:function(a,b,c){var d=new p2.Plane;return this.addShape(d,a,b,c)},addParticle:function(a,b,c){var d=new p2.Particle;return this.addShape(d,a,b,c)},addLine:function(a,b,c,d){var e=new p2.Line(this.world.pxm(a));return this.addShape(e,b,c,d)},addCapsule:function(a,b,c,d,e){var f=new p2.Capsule(this.world.pxm(a),b);return this.addShape(f,c,d,e)},addPolygon:function(a,b){a=a||{},b=Array.prototype.slice.call(arguments,1);var c=[];if(1===b.length&&Array.isArray(b[0]))c=b[0].slice(0);else if(Array.isArray(b[0]))c=b[0].slice(0);else if("number"==typeof b[0])for(var d=0,e=b.length;e>d;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0;b--)this.removeConstraint(a[b]);for(var d=this.bodies,b=d.length-1;b>=0;b--)this.removeBody(d[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);c.apply(this)},c.prototype.clone=function(){var a=new c;return a.fromJSON(this.toJSON()),a};var Q=j.create(),R=j.fromValues(0,0),S=j.fromValues(0,0);c.prototype.hitTest=function(a,b,c){c=c||0;var d=new s({position:a}),e=new q,f=a,g=0,h=Q,i=R,l=S;d.addShape(e);for(var n=this.narrowphase,r=[],t=0,u=b.length;t!==u;t++)for(var v=b[t],w=0,x=v.shapes.length;w!==x;w++){var y=v.shapes[w],z=v.shapeOffsets[w]||i,A=v.shapeAngles[w]||0;j.rotate(h,z,v.angle),j.add(h,h,v.position);var B=A+v.angle;(y instanceof k&&n.circleParticle(v,y,h,B,d,e,f,g,!0)||y instanceof m&&n.particleConvex(d,e,f,g,v,y,h,B,!0)||y instanceof o&&n.particlePlane(d,e,f,g,v,y,h,B,!0)||y instanceof p&&n.particleCapsule(d,e,f,g,v,y,h,B,!0)||y instanceof q&&j.squaredLength(j.sub(l,h,a))0&&this.enable(a[d],b,!0));else a instanceof Phaser.Group?this.enable(a.children,b,c):(this.enableBody(a,b),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback)for(var b=a.pairs.length;b-=2;)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA,a.contactEquations)},endContactHandler:function(a){this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA)},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){var b=this.everythingCollisionGroup.mask;"undefined"==typeof a&&(b=this.boundsCollisionGroup.mask),this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b)},setBounds:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof e&&(e=!0),"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=!0),"undefined"==typeof h&&(h=!0),"undefined"==typeof i&&(i=!0),this.walls.left&&this.world.removeBody(this.walls.left),this.walls.right&&this.world.removeBody(this.walls.right),this.walls.top&&this.world.removeBody(this.walls.top),this.walls.bottom&&this.world.removeBody(this.walls.bottom),e&&(this.walls.left=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:1.5707963267948966}),this.walls.left.addShape(new p2.Plane),i&&(this.walls.left.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.left)),f&&(this.walls.right=new p2.Body({mass:0,position:[this.pxmi(a+c),this.pxmi(b)],angle:-1.5707963267948966}),this.walls.right.addShape(new p2.Plane),i&&(this.walls.right.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.right)),g&&(this.walls.top=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:-3.141592653589793}),this.walls.top.addShape(new p2.Plane),i&&(this.walls.top.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.top)),h&&(this.walls.bottom=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(d)]}),this.walls.bottom.addShape(new p2.Plane),i&&(this.walls.bottom.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.bottom))},update:function(){this.world.step(this.useElapsedTime?this.game.time.physicsElapsed:this.frameRate)},clear:function(){this.world.clear(),this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this._collisionGroupID=2,this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,c,d){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.DistanceConstraint(this,a,b,c,d)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,c,d){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.GearConstraint(this,a,b,c,d)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,c,d,e){return a=this.getBody(a),c=this.getBody(c),a&&c?this.addConstraint(new Phaser.Physics.P2.RevoluteConstraint(this,a,b,c,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,c,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.LockConstraint(this,a,b,c,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,c,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.PrismaticConstraint(this,a,b,c,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b.setMaterial(a)},createMaterial:function(a,b){a=a||"";var c=new Phaser.Physics.P2.Material(a);return this.materials.push(c),"undefined"!=typeof b&&b.setMaterial(c),c},createContactMaterial:function(a,b,c){"undefined"==typeof a&&(a=this.createMaterial()),"undefined"==typeof b&&(b=this.createMaterial());var d=new Phaser.Physics.P2.ContactMaterial(a,b,c);return this.addContactMaterial(d)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof Phaser.Physics.P2.Body?a.data:a.body&&a.body.type===Phaser.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b].parent);return a},hitTest:function(a,b,c,d){"undefined"==typeof b&&(b=this.world.bodies),"undefined"==typeof c&&(c=5),"undefined"==typeof d&&(d=!1);for(var e=[this.pxmi(a.x),this.pxmi(a.y)],f=[],g=b.length;g--;)b[g]instanceof Phaser.Physics.P2.Body&&(!d||b[g].data.motionState!==p2.Body.STATIC)?f.push(b[g].data):b[g]instanceof p2.Body&&b[g].parent&&(!d||b[g].motionState!==p2.Body.STATIC)?f.push(b[g]):b[g]instanceof Phaser.Sprite&&b[g].hasOwnProperty("body")&&(!d||b[g].body.data.motionState!==p2.Body.STATIC)&&f.push(b[g].body.data);return this.world.hitTest(e,f,c)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var c=new Phaser.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(c),a&&this.setCollisionGroup(a,c),c},setCollisionGroup:function(a,b){if(a instanceof Phaser.Group)for(var c=0;ce;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=[]},convertTilemap:function(a,b,c,d){b=a.getLayer(b),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(Phaser.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"defaultFriction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"defaultRestitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(Phaser.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"enableBodySleeping",{get:function(){return this.world.enableBodySleeping},set:function(a){this.world.enableBodySleeping=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),Phaser.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},Phaser.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},Phaser.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.PointProxy.prototype.constructor=Phaser.Physics.P2.PointProxy,Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=this.world.pxm(a)}}),Phaser.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.InversePointProxy.prototype.constructor=Phaser.Physics.P2.InversePointProxy,Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=this.world.pxm(-a)}}),Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=this.world.pxm(-a)}}),Phaser.Physics.P2.Body=function(a,b,c,d,e){b=b||null,c=c||0,d=d||0,"undefined"==typeof e&&(e=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=Phaser.Physics.P2JS,this.offset=new Phaser.Point,this.data=new p2.Body({position:[this.world.pxmi(c),this.world.pxmi(d)],mass:e}),this.data.parent=this,this.velocity=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new Phaser.Point,this.onBeginContact=new Phaser.Signal,this.onEndContact=new Phaser.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},Phaser.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbacksContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if("undefined"==typeof b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if("undefined"==typeof c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass()},applyDamping:function(a){this.data.applyDamping(a)},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxm(b),this.world.pxm(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0]),this.sprite.y=this.world.mpxi(this.data.position[1]),this.fixedRotation||(this.sprite.rotation=this.data.angle)},reset:function(a,b,c,d){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){this.data.world!==this.game.physics.p2.world&&this.game.physics.p2.addBody(this)},removeFromWorld:function(){this.data.world===this.game.physics.p2.world&&this.game.physics.p2.removeBodyNextStep(this)},destroy:function(){this.removeFromWorld(),this.clearShapes(),this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this.debugBody&&this.debugBody.destroy(),this.debugBody=null,this.sprite=null},clearShapes:function(){for(var a=this.data.shapes.length;a--;)this.data.removeShape(this.data.shapes[a]);this.shapeChanged()},addShape:function(a,b,c,d){return"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),"undefined"==typeof d&&(d=0),this.data.addShape(a,[this.world.pxmi(b),this.world.pxmi(c)],d),this.shapeChanged(),a},addCircle:function(a,b,c,d){var e=new p2.Circle(this.world.pxm(a));return this.addShape(e,b,c,d)},addRectangle:function(a,b,c,d,e){var f=new p2.Rectangle(this.world.pxm(a),this.world.pxm(b));return this.addShape(f,c,d,e)},addPlane:function(a,b,c){var d=new p2.Plane;return this.addShape(d,a,b,c)},addParticle:function(a,b,c){var d=new p2.Particle;return this.addShape(d,a,b,c)},addLine:function(a,b,c,d){var e=new p2.Line(this.world.pxm(a));return this.addShape(e,b,c,d)},addCapsule:function(a,b,c,d,e){var f=new p2.Capsule(this.world.pxm(a),b);return this.addShape(f,c,d,e)},addPolygon:function(a,b){a=a||{},b=Array.prototype.slice.call(arguments,1);var c=[];if(1===b.length&&Array.isArray(b[0]))c=b[0].slice(0);else if(Array.isArray(b[0]))c=b[0].slice(0);else if("number"==typeof b[0])for(var d=0,e=b.length;e>d;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;eg;g+=2)e.push([f.shape[g],f.shape[g+1]]);return this.addPolygon(c,e)}for(var i=p2.vec2.create(),g=0;g=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}else b instanceof p2.Plane?this.drawPlane(j,i[0]*this.ppu,-i[1]*this.ppu,c,f,5*g,10*g,10*g,100*this.ppu,a):b instanceof p2.Line?this.drawLine(j,b.length*this.ppu,f,g):b instanceof p2.Rectangle&&this.drawRectangle(j,i[0]*this.ppu,-i[1]*this.ppu,a,b.width*this.ppu,b.height*this.ppu,f,c,g);d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof i&&(i=1),"undefined"==typeof g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){"undefined"==typeof g&&(g=1),"undefined"==typeof f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){"undefined"==typeof d&&(d=1),"undefined"==typeof c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if("undefined"==typeof f&&(f=1),"undefined"==typeof d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for("undefined"==typeof e&&(e=1),"undefined"==typeof c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;"undefined"==typeof f&&(f=1),"undefined"==typeof d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.len?b:b+"0"}}),Phaser.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=100),"undefined"==typeof f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),p2.Spring.call(this,b,c,k)},Phaser.Physics.P2.Spring.prototype=Object.create(p2.Spring.prototype),Phaser.Physics.P2.Spring.prototype.constructor=Phaser.Physics.P2.Spring,Phaser.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},Phaser.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),Phaser.Physics.P2.Material.prototype.constructor=Phaser.Physics.P2.Material,Phaser.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},Phaser.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),Phaser.Physics.P2.ContactMaterial.prototype.constructor=Phaser.Physics.P2.ContactMaterial,Phaser.Physics.P2.CollisionGroup=function(a){this.mask=a},Phaser.Physics.P2.DistanceConstraint=function(a,b,c,d,e){"undefined"==typeof d&&(d=100),this.game=a.game,this.world=a,d=a.pxm(d),p2.DistanceConstraint.call(this,b,c,d,e)},Phaser.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),Phaser.Physics.P2.DistanceConstraint.prototype.constructor=Phaser.Physics.P2.DistanceConstraint,Phaser.Physics.P2.GearConstraint=function(a,b,c,d,e){"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},Phaser.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),Phaser.Physics.P2.GearConstraint.prototype.constructor=Phaser.Physics.P2.GearConstraint,Phaser.Physics.P2.LockConstraint=function(a,b,c,d,e,f){"undefined"==typeof d&&(d=[0,0]),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},Phaser.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),Phaser.Physics.P2.LockConstraint.prototype.constructor=Phaser.Physics.P2.LockConstraint,Phaser.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=[0,0]),"undefined"==typeof f&&(f=[0,0]),"undefined"==typeof g&&(g=[0,0]),"undefined"==typeof h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},Phaser.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),Phaser.Physics.P2.PrismaticConstraint.prototype.constructor=Phaser.Physics.P2.PrismaticConstraint,Phaser.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f){"undefined"==typeof f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],p2.RevoluteConstraint.call(this,b,c,d,e,f)},Phaser.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),Phaser.Physics.P2.RevoluteConstraint.prototype.constructor=Phaser.Physics.P2.RevoluteConstraint; \ No newline at end of file diff --git a/build/custom/phaser-arcade-physics.js b/build/custom/phaser-arcade-physics.js index 506240810e..2a1fb8df85 100644 --- a/build/custom/phaser-arcade-physics.js +++ b/build/custom/phaser-arcade-physics.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.0.3 "Allorallen" - Built: Fri Apr 11 2014 13:08:30 +* v2.0.4 "Mos Shirare" - Built: Tue Apr 15 2014 15:38:35 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -9702,7 +9702,7 @@ PIXI.RenderTexture.tempMatrix = new PIXI.Matrix(); * * Phaser - http://phaser.io * -* v2.0.3 "Allorallen" - Built: Fri Apr 11 2014 13:08:30 +* v2.0.4 "Mos Shirare" - Built: Tue Apr 15 2014 15:38:35 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -9746,7 +9746,7 @@ PIXI.RenderTexture.tempMatrix = new PIXI.Matrix(); var Phaser = Phaser || { VERSION: '<%= version %>', - DEV_VERSION: '2.0.3', + DEV_VERSION: '2.0.4', GAMES: [], AUTO: 0, @@ -12158,7 +12158,7 @@ Object.defineProperty(Phaser.Line.prototype, "length", { Object.defineProperty(Phaser.Line.prototype, "angle", { get: function () { - return Math.atan2(this.end.x - this.start.x, this.end.y - this.start.y); + return Math.atan2(this.end.y - this.start.y, this.end.x - this.start.x); } }); @@ -13671,9 +13671,9 @@ Phaser.StateManager.prototype = { this._clearWorld = clearWorld; this._clearCache = clearCache; - if (arguments.length > 3) + if (arguments.length > 2) { - this._args = Array.prototype.splice.call(arguments, 3); + this._args = Array.prototype.splice.call(arguments, 2); } }, @@ -17022,7 +17022,7 @@ Phaser.Group.prototype.remove = function (child, destroy) { child.events.onRemovedFromGroup.dispatch(child, this); } - this.removeChild(child); + var removed = this.removeChild(child); this.updateZ(); @@ -17031,9 +17031,9 @@ Phaser.Group.prototype.remove = function (child, destroy) { this.next(); } - if (destroy) + if (destroy && removed) { - child.destroy(); + removed.destroy(); } return true; @@ -17063,11 +17063,11 @@ Phaser.Group.prototype.removeAll = function (destroy) { this.children[0].events.onRemovedFromGroup.dispatch(this.children[0], this); } - this.removeChild(this.children[0]); + var removed = this.removeChild(this.children[0]); - if (destroy) + if (destroy && removed) { - this.children[0].destroy(); + removed.destroy(); } } while (this.children.length > 0); @@ -17108,11 +17108,11 @@ Phaser.Group.prototype.removeBetween = function (startIndex, endIndex, destroy) this.children[i].events.onRemovedFromGroup.dispatch(this.children[i], this); } - this.removeChild(this.children[i]); + var removed = this.removeChild(this.children[i]); - if (destroy) + if (destroy && removed) { - this.children[i].destroy(); + removed.destroy(); } if (this.cursor === this.children[i]) @@ -17141,24 +17141,7 @@ Phaser.Group.prototype.destroy = function (destroyChildren, soft) { if (typeof destroyChildren === 'undefined') { destroyChildren = true; } if (typeof soft === 'undefined') { soft = false; } - if (destroyChildren) - { - if (this.children.length > 0) - { - do - { - if (this.children[0].parent) - { - this.children[0].destroy(destroyChildren); - } - } - while (this.children.length > 0); - } - } - else - { - this.removeAll(); - } + this.removeAll(destroyChildren); this.cursor = null; @@ -19349,6 +19332,12 @@ Phaser.Input = function (game) { */ // this.gestures = null; + /** + * @property {boolean} resetLocked - If the Input Manager has been reset locked then all calls made to InputManager.reset, such as from a State change, are ignored. + * @default + */ + this.resetLocked = false; + /** * @property {Phaser.Signal} onDown - A Signal that is dispatched each time a pointer is pressed down. */ @@ -19578,20 +19567,23 @@ Phaser.Input.prototype = { }, /** - * Reset all of the Pointers and Input states + * Reset all of the Pointers and Input states. The optional `hard` parameter will reset any events or callbacks that may be bound. + * Input.reset is called automatically during a State change or if a game loses focus / visibility. If you wish to control the reset + * directly yourself then set InputManager.resetLocked to `true`. + * * @method Phaser.Input#reset - * @param {boolean} hard - A soft reset (hard = false) won't reset any Signals that might be bound. A hard reset will. + * @param {boolean} [hard=false] - A soft reset won't reset any events or callbacks that are bound. A hard reset will. */ reset: function (hard) { - if (this.game.isBooted === false) + if (!this.game.isBooted || this.resetLocked) { return; } - if (typeof hard == 'undefined') { hard = false; } + if (typeof hard === 'undefined') { hard = false; } - this.keyboard.reset(); + this.keyboard.reset(hard); this.mousePointer.reset(); this.gamepad.reset(); @@ -19610,7 +19602,7 @@ Phaser.Input.prototype = { this.game.canvas.style.cursor = 'inherit'; } - if (hard === true) + if (hard) { this.onDown.dispose(); this.onUp.dispose(); @@ -20208,8 +20200,11 @@ Phaser.Key.prototype = { * associated with the onDown and onUp events and nulls the onHoldCallback if set. * * @method Phaser.Key#reset + * @param {boolean} [hard=true] - A soft reset won't reset any events or callbacks that are bound to this Key. A hard reset will. */ - reset: function () { + reset: function (hard) { + + if (typeof hard === 'undefined') { hard = true; } this.isDown = false; this.isUp = true; @@ -20217,10 +20212,13 @@ Phaser.Key.prototype = { this.duration = this.game.time.now - this.timeDown; this.enabled = true; - this.onDown.removeAll(); - this.onUp.removeAll(); - this.onHoldCallback = null; - this.onHoldContext = null; + if (hard) + { + this.onDown.removeAll(); + this.onUp.removeAll(); + this.onHoldCallback = null; + this.onHoldContext = null; + } }, @@ -20616,8 +20614,11 @@ Phaser.Keyboard.prototype = { * Resets all Keys. * * @method Phaser.Keyboard#reset + * @param {boolean} [hard=true] - A soft reset won't reset any events or callbacks that are bound to the Keys. A hard reset will. */ - reset: function () { + reset: function (hard) { + + if (typeof hard === 'undefined') { hard = true; } this.event = null; @@ -20627,7 +20628,7 @@ Phaser.Keyboard.prototype = { { if (this._keys[i]) { - this._keys[i].reset(); + this._keys[i].reset(hard); } } @@ -32339,11 +32340,17 @@ Phaser.Device = function (game) { this.cocoonJS = false; /** - * @property {boolean} ejecta - Is the game running under Ejecta? - * @default - */ + * @property {boolean} ejecta - Is the game running under Ejecta? + * @default + */ this.ejecta = false; + /** + * @property {boolean} crosswalk - Is the game running under the Intel Crosswalk XDK? + * @default + */ + this.crosswalk = false; + /** * @property {boolean} android - Is running on android? * @default @@ -32902,6 +32909,11 @@ Phaser.Device.prototype = { this.ejecta = true; } + if (/Crosswalk/.test(ua)) + { + this.crosswalk = true; + } + }, /** @@ -33594,7 +33606,7 @@ Phaser.Math = { * @return {number} */ angleBetween: function (x1, y1, x2, y2) { - return Math.atan2(x2 - x1, y2 - y1); + return Math.atan2(y2 - y1, x2 - x1); }, /** @@ -33605,7 +33617,7 @@ Phaser.Math = { * @return {number} */ angleBetweenPoints: function (point1, point2) { - return Math.atan2(point2.x - point1.x, point2.y - point1.y); + return Math.atan2(point2.y - point1.y, point2.x - point1.x); }, /** @@ -37387,6 +37399,18 @@ Phaser.Timer = function (game, autoDestroy) { */ this._i = 0; + /** + * @property {number} _diff - Internal cache var. + * @private + */ + this._diff = 0; + + /** + * @property {number} _newTick - Internal cache var. + * @private + */ + this._newTick = 0; + }; /** @@ -37456,6 +37480,7 @@ Phaser.Timer.prototype = { * Adds a new Event to this Timer. The event will fire after the given amount of 'delay' in milliseconds has passed, once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#add * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. * @param {function} callback - The callback that will be called when the Timer event occurs. @@ -37474,9 +37499,10 @@ Phaser.Timer.prototype = { * The event will fire after the given amount of 'delay' milliseconds has passed once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#repeat * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. - * @param {number} repeatCount - The number of times the event will repeat. + * @param {number} repeatCount - The number of times the event will repeat once is has finished playback. A repeatCount of 1 means it will repeat itself once, playing the event twice in total. * @param {function} callback - The callback that will be called when the Timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - The values to be sent to your callback function when it is called. @@ -37493,6 +37519,7 @@ Phaser.Timer.prototype = { * The event will fire after the given amount of 'delay' milliseconds has passed once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#loop * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. * @param {function} callback - The callback that will be called when the Timer event occurs. @@ -37603,6 +37630,28 @@ Phaser.Timer.prototype = { }, + /** + * Clears any events from the Timer which have pendingDelete set to true and then resets the private _len and _i values. + * + * @method Phaser.Timer#clearPendingEvents + */ + clearPendingEvents: function () { + + this._i = this.events.length; + + while (this._i--) + { + if (this.events[this._i].pendingDelete) + { + this.events.splice(this._i, 1); + } + } + + this._len = this.events.length; + this._i = 0; + + }, + /** * The main Timer update event, called automatically by the Game clock. * @method Phaser.Timer#update @@ -37619,55 +37668,38 @@ Phaser.Timer.prototype = { this._now = time; - this._len = this.events.length; - - this._i = 0; - - while (this._i < this._len) - { - if (this.events[this._i].pendingDelete) - { - this.events.splice(this._i, 1); - this._len--; - } - - this._i++; - } - - this._len = this.events.length; + // Clears events marked for deletion and resets _len and _i to 0. + this.clearPendingEvents(); if (this.running && this._now >= this.nextTick && this._len > 0) { - this._i = 0; - while (this._i < this._len && this.running) { if (this._now >= this.events[this._i].tick) { - var diff = this._now - this.events[this._i].tick; - var newTick = (this._now + this.events[this._i].delay) - diff; + // (now + delay) - (time difference from last tick to now) + this._newTick = (this._now + this.events[this._i].delay) - (this._now - this.events[this._i].tick); - if (newTick < 0) + if (this._newTick < 0) { - newTick = this._now + this.events[this._i].delay; + this._newTick = this._now + this.events[this._i].delay; } if (this.events[this._i].loop === true) { - this.events[this._i].tick = newTick; + this.events[this._i].tick = this._newTick; this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); } else if (this.events[this._i].repeatCount > 0) { this.events[this._i].repeatCount--; - this.events[this._i].tick = newTick; + this.events[this._i].tick = this._newTick; this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); } else { this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); - this.events.splice(this._i, 1); - this._len--; + this.events[this._i].pendingDelete = true; } this._i++; @@ -38156,7 +38188,7 @@ Phaser.AnimationManager.prototype = { if (this._anims[name]) { - if (this.currentAnim == this._anims[name]) + if (this.currentAnim === this._anims[name]) { if (this.currentAnim.isPlaying === false) { @@ -38166,6 +38198,11 @@ Phaser.AnimationManager.prototype = { } else { + if (this.currentAnim && this.currentAnim.isPlaying) + { + this.currentAnim.stop(); + } + this.currentAnim = this._anims[name]; this.currentAnim.paused = false; return this.currentAnim.play(frameRate, loop, killOnComplete); @@ -38267,12 +38304,23 @@ Phaser.AnimationManager.prototype = { }, /** - * Destroys all references this AnimationManager contains. Sets the _anims to a new object and nulls the current animation. + * Destroys all references this AnimationManager contains. + * Iterates through the list of animations stored in this manager and calls destroy on each of them. * * @method Phaser.AnimationManager#destroy */ destroy: function () { + var anim = null; + + for (var anim in this._anims) + { + if (this._anims.hasOwnProperty(anim)) + { + this._anims[anim].destroy(); + } + } + this._anims = {}; this._frameData = null; this._frameIndex = 0; @@ -38568,7 +38616,6 @@ Phaser.Animation.prototype = { * Plays this animation. * * @method Phaser.Animation#play - * @memberof Phaser.Animation * @param {number} [frameRate=null] - The framerate to play the animation at. The speed is given in frames per second. If not provided the previously set frameRate of the Animation is used. * @param {boolean} [loop=false] - Should the animation be looped after playback. If not provided the previously set loop value of the Animation is used. * @param {boolean} [killOnComplete=false] - If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. @@ -38625,7 +38672,6 @@ Phaser.Animation.prototype = { * Sets this animation back to the first frame and restarts the animation. * * @method Phaser.Animation#restart - * @memberof Phaser.Animation */ restart: function () { @@ -38650,7 +38696,6 @@ Phaser.Animation.prototype = { * If `dispatchComplete` is true it will dispatch the complete events, otherwise they'll be ignored. * * @method Phaser.Animation#stop - * @memberof Phaser.Animation * @param {boolean} [resetFrame=false] - If true after the animation stops the currentFrame value will be set to the first frame in this animation. * @param {boolean} [dispatchComplete=false] - Dispatch the Animation.onComplete and parent.onAnimationComplete events? */ @@ -38680,7 +38725,6 @@ Phaser.Animation.prototype = { * Called when the Game enters a paused state. * * @method Phaser.Animation#onPause - * @memberof Phaser.Animation */ onPause: function () { @@ -38695,7 +38739,6 @@ Phaser.Animation.prototype = { * Called when the Game resumes from a paused state. * * @method Phaser.Animation#onResume - * @memberof Phaser.Animation */ onResume: function () { @@ -38710,7 +38753,6 @@ Phaser.Animation.prototype = { * Updates this animation. Called automatically by the AnimationManager. * * @method Phaser.Animation#update - * @memberof Phaser.Animation */ update: function () { @@ -38795,7 +38837,6 @@ Phaser.Animation.prototype = { * Cleans up this animation ready for deletion. Nulls all values and references. * * @method Phaser.Animation#destroy - * @memberof Phaser.Animation */ destroy: function () { @@ -38806,9 +38847,9 @@ Phaser.Animation.prototype = { this.currentFrame = null; this.isPlaying = false; - this.onStart.destroy(); - this.onLoop.destroy(); - this.onComplete.destroy(); + this.onStart.dispose(); + this.onLoop.dispose(); + this.onComplete.dispose(); this.game.onPause.remove(this.onPause, this); this.game.onResume.remove(this.onResume, this); @@ -38820,7 +38861,6 @@ Phaser.Animation.prototype = { * Sets the isPlaying and isFinished states and dispatches the onAnimationComplete event if it exists on the parent and local onComplete event. * * @method Phaser.Animation#complete - * @memberof Phaser.Animation */ complete: function () { @@ -41054,22 +41094,27 @@ Phaser.Loader = function (game) { this.baseURL = ''; /** - * @property {Phaser.Signal} onFileComplete - Event signal. + * @property {Phaser.Signal} onLoadStart - This event is dispatched when the loading process starts, before the first file has been requested. */ - this.onFileComplete = new Phaser.Signal(); + this.onLoadStart = new Phaser.Signal(); /** - * @property {Phaser.Signal} onFileError - Event signal. + * @property {Phaser.Signal} onFileStart - This event is dispatched immediately before a file starts loading. It's possible the file may still error (404, etc) after this event is sent. */ - this.onFileError = new Phaser.Signal(); + this.onFileStart = new Phaser.Signal(); /** - * @property {Phaser.Signal} onLoadStart - Event signal. + * @property {Phaser.Signal} onFileComplete - This event is dispatched when a file completes loading successfully. */ - this.onLoadStart = new Phaser.Signal(); + this.onFileComplete = new Phaser.Signal(); /** - * @property {Phaser.Signal} onLoadComplete - Event signal. + * @property {Phaser.Signal} onFileError - This event is dispatched when a file errors as a result of the load request. + */ + this.onFileError = new Phaser.Signal(); + + /** + * @property {Phaser.Signal} onLoadComplete - This event is dispatched when the final file in the load queue has either loaded or failed. */ this.onLoadComplete = new Phaser.Signal(); @@ -41838,10 +41883,12 @@ Phaser.Loader.prototype = { console.warn('Phaser.Loader loadFile invalid index ' + this._fileIndex); return; } - + var file = this._fileList[this._fileIndex]; var _this = this; + this.onFileStart.dispatch(this.progress, file.key); + // Image or Data? switch (file.type) { @@ -47269,7 +47316,7 @@ Phaser.Physics.Arcade.Body = function (sprite) { this.tilePadding = new Phaser.Point(); /** - * @property {number} phaser - Is this Body in a preUpdate or postUpdate state? + * @property {number} phaser - Is this Body in a preUpdate (1) or postUpdate (2) state? */ this.phase = 0; @@ -47416,6 +47463,12 @@ Phaser.Physics.Arcade.Body.prototype = { */ postUpdate: function () { + // Only allow postUpdate to be called once per frame + if (this.phase === 2) + { + return; + } + this.phase = 2; if (this.deltaX() < 0) @@ -48965,8 +49018,8 @@ Phaser.Tile.prototype = { Phaser.Tile.prototype.constructor = Phaser.Tile; /** -* @name Phaser.Tile#canCollide -* @property {boolean} canCollide - True if this tile can collide or has a collision callback. +* @name Phaser.Tile#collides +* @property {boolean} collides - True if this tile can collide on any of its faces. * @readonly */ Object.defineProperty(Phaser.Tile.prototype, "collides", { @@ -48979,7 +49032,7 @@ Object.defineProperty(Phaser.Tile.prototype, "collides", { /** * @name Phaser.Tile#canCollide -* @property {boolean} canCollide - True if this tile can collide or has a collision callback. +* @property {boolean} canCollide - True if this tile can collide on any of its faces or has a collision callback set. * @readonly */ Object.defineProperty(Phaser.Tile.prototype, "canCollide", { diff --git a/build/custom/phaser-arcade-physics.min.js b/build/custom/phaser-arcade-physics.min.js index d5bfe8a367..c059cdab94 100644 --- a/build/custom/phaser-arcade-physics.min.js +++ b/build/custom/phaser-arcade-physics.min.js @@ -1,15 +1,15 @@ -/* Phaser (AP) v2.0.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ +/* Phaser (AP) v2.0.4 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ (function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v1.5.2",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.Point=function(a,b){this.x=a||0,this.y=b||0},b.Point.prototype.clone=function(){return new b.Point(this.x,this.y)},b.Point.prototype.constructor=b.Point,b.Point.prototype.set=function(a,b){this.x=a||0,this.y=b||(0!==b?this.x:0)},b.Rectangle=function(a,b,c,d){this.x=a||0,this.y=b||0,this.width=c||0,this.height=d||0},b.Rectangle.prototype.clone=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},b.Rectangle.prototype.contains=function(a,b){if(this.width<=0||this.height<=0)return!1;var c=this.x;if(a>=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1},b.Rectangle.prototype.constructor=b.Rectangle,b.EmptyRectangle=new b.Rectangle(0,0,0,0),b.Polygon=function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this.points=a},b.Polygon.prototype.clone=function(){for(var a=[],c=0;cb!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!c)}return c},b.Polygon.prototype.constructor=b.Polygon,b.Circle=function(a,b,c){this.x=a||0,this.y=b||0,this.radius=c||0},b.Circle.prototype.clone=function(){return new b.Circle(this.x,this.y,this.radius)},b.Circle.prototype.contains=function(a,b){if(this.radius<=0)return!1;var c=this.x-a,d=this.y-b,e=this.radius*this.radius;return c*=c,d*=d,e>=c+d},b.Circle.prototype.constructor=b.Circle,b.Ellipse=function(a,b,c,d){this.x=a||0,this.y=b||0,this.width=c||0,this.height=d||0},b.Ellipse.prototype.clone=function(){return new b.Ellipse(this.x,this.y,this.width,this.height)},b.Ellipse.prototype.contains=function(a,b){if(this.width<=0||this.height<=0)return!1;var c=(a-this.x)/this.width,d=(b-this.y)/this.height;return c*=c,d*=d,1>=c+d},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},b.Ellipse.prototype.constructor=b.Ellipse,b.determineMatrixArrayType=function(){return"undefined"!=typeof Float32Array?Float32Array:Array},b.Matrix2=b.determineMatrixArrayType(),b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new Float32Array(9));var b=this.array;return a?(this.array[0]=this.a,this.array[1]=this.c,this.array[2]=0,this.array[3]=this.b,this.array[4]=this.d,this.array[5]=0,this.array[6]=this.tx,this.array[7]=this.ty,this.array[8]=1):(this.array[0]=this.a,this.array[1]=this.b,this.array[2]=this.tx,this.array[3]=this.c,this.array[4]=this.d,this.array[5]=this.ty,this.array[6]=0,this.array[7]=0,this.array[8]=1),b},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this.color=[],this.dynamic=!0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.setInteractive=function(a){this.interactive=a},Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length))throw new Error(a+" The index "+b+" supplied is out of bounds "+this.children.length);a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.children.indexOf(a),d=this.children.indexOf(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(a>=0&&a0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(a){if(0===this.children.length)return b.EmptyRectangle;if(a){var c=this.worldTransform;this.worldTransform=a,this.updateTransform(),this.worldTransform=c}for(var d,e,f,g=1/0,h=1/0,i=-1/0,j=-1/0,k=!1,l=0,m=this.children.length;m>l;l++){var n=this.children[l];n.visible&&(k=!0,d=this.children[l].getBounds(a),g=ge?i:e,j=j>f?j:f)}if(!k)return b.EmptyRectangle;var o=this._bounds;return o.x=g,o.y=h,o.width=i-g,o.height=j-h,o},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a.context);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a.context)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture.baseTexture!==a.baseTexture?(this.textureChange=!0,this.texture=a):this.texture=a,this.cachedTint=16777215,this.updateFrame=!0},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=this.texture.frame,d=a.context,e=this.texture;if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,d.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a.context),c&&c.width&&c.height&&e.baseTexture.source){d.globalAlpha=this.worldAlpha;var f=this.worldTransform;if(a.roundPixels?d.setTransform(f.a,f.c,f.b,f.d,0|f.tx,0|f.ty):d.setTransform(f.a,f.c,f.b,f.d,f.tx,f.ty),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,d[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR),16777215!==this.tint){if(this.cachedTint!==this.tint){if(!e.baseTexture.hasLoaded)return;this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)}d.drawImage(this.tintedTexture,0,0,c.width,c.height,this.anchor.x*-c.width,this.anchor.y*-c.height,c.width,c.height)}else if(e.trim){var g=e.trim;d.drawImage(this.texture.baseTexture.source,c.x,c.y,c.width,c.height,g.x-this.anchor.x*g.width,g.y-this.anchor.y*g.height,c.width,c.height)}else d.drawImage(this.texture.baseTexture.source,c.x,c.y,c.width,c.height,this.anchor.x*-c.width,this.anchor.y*-c.height,c.width,c.height)}for(var h=0,i=this.children.length;i>h;h++){var j=this.children[h];j._renderCanvas(a)}this._mask&&a.maskManager.popMask(a.context)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.activateShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.shaderManager.activateShader(a.shaderManager.defaultShader),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fe?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global};for(var c=0,d=["ms","moz","webkit","o"],e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget=function(){var a={};this.addEventListener=this.on=function(b,c){void 0===a[b]&&(a[b]=[]),-1===a[b].indexOf(c)&&a[b].push(c)},this.dispatchEvent=this.emit=function(b){if(a[b.type]&&a[b.type].length)for(var c=0,d=a[b.type].length;d>c;c++)a[b.type][c](b)},this.removeEventListener=this.off=function(b,c){var d=a[b].indexOf(c);-1!==d&&a[b].splice(d,1)},this.removeAllEventListeners=function(b){var c=a[b];c&&(c.length=0)}},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c);return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.attributes=[],this.init()},b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]||b.createWebGLTexture(a.value.baseTexture,c)),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec2 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init() },b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(){this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));"," gl_FragColor = gl_FragColor * alpha;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","varying vec2 vTextureCoord;","uniform vec2 offsetVector;","varying float vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition, 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"]},b.StripShader.prototype.init=function(){var a=b.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader=function(a){this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d=c.gl,e=c.projection,f=c.offset,g=c.shaderManager.primitiveShader;a._webGL[d.id]||(a._webGL[d.id]={points:[],indices:[],lastIndex:0,buffer:d.createBuffer(),indexBuffer:d.createBuffer()});var h=a._webGL[d.id];a.dirty&&(a.dirty=!1,a.clearDirty&&(a.clearDirty=!1,h.lastIndex=0,h.points=[],h.indices=[]),b.WebGLGraphics.updateGraphics(a,d)),c.shaderManager.activatePrimitiveShader(),d.blendFunc(d.ONE,d.ONE_MINUS_SRC_ALPHA),d.uniformMatrix3fv(g.translationMatrix,!1,a.worldTransform.toArray(!0)),d.uniform2f(g.projectionVector,e.x,-e.y),d.uniform2f(g.offsetVector,-f.x,-f.y),d.uniform3fv(g.tintColor,b.hex2rgb(a.tint)),d.uniform1f(g.alpha,a.worldAlpha),d.bindBuffer(d.ARRAY_BUFFER,h.buffer),d.vertexAttribPointer(g.aVertexPosition,2,d.FLOAT,!1,24,0),d.vertexAttribPointer(g.colorAttribute,4,d.FLOAT,!1,24,8),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,h.indexBuffer),d.drawElements(d.TRIANGLE_STRIP,h.indices.length,d.UNSIGNED_SHORT,0),c.shaderManager.deactivatePrimitiveShader()},b.WebGLGraphics.updateGraphics=function(a,c){for(var d=a._webGL[c.id],e=d.lastIndex;e3&&b.WebGLGraphics.buildPoly(f,d),f.lineWidth>0&&b.WebGLGraphics.buildLine(f,d)):f.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(f,d):(f.type===b.Graphics.CIRC||f.type===b.Graphics.ELIP)&&b.WebGLGraphics.buildCircle(f,d)}d.lastIndex=a.graphicsData.length,d.glPoints=new Float32Array(d.points),c.bindBuffer(c.ARRAY_BUFFER,d.buffer),c.bufferData(c.ARRAY_BUFFER,d.glPoints,c.STATIC_DRAW),d.glIndicies=new Uint16Array(d.indices),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,d.indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,d.glIndicies,c.STATIC_DRAW)},b.WebGLGraphics.buildRectangle=function(a,c){var d=a.points,e=d[0],f=d[1],g=d[2],h=d[3];if(a.fill){var i=b.hex2rgb(a.fillColor),j=a.fillAlpha,k=i[0]*j,l=i[1]*j,m=i[2]*j,n=c.points,o=c.indices,p=n.length/6;n.push(e,f),n.push(k,l,m,j),n.push(e+g,f),n.push(k,l,m,j),n.push(e,f+h),n.push(k,l,m,j),n.push(e+g,f+h),n.push(k,l,m,j),o.push(p,p,p+1,p+2,p+3,p+3)}if(a.lineWidth){var q=a.points;a.points=[e,f,e+g,f,e+g,f+h,e,f+h,e,f],b.WebGLGraphics.buildLine(a,c),a.points=q}},b.WebGLGraphics.buildCircle=function(a,c){var d=a.points,e=d[0],f=d[1],g=d[2],h=d[3],i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(e,f,n,o,p,m),q.push(e+Math.sin(j*k)*g,f+Math.cos(j*k)*h,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(e+Math.sin(j*k)*g,f+Math.cos(j*k)*h);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.glContexts=[],b.WebGLRenderer=function(a,c,d,e,f){b.defaultRenderer||(b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.transparent=!!e,this.width=a||800,this.height=c||600,this.view=d||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.contextLost=this.handleContextLost.bind(this),this.contextRestoredLost=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLost,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredLost,!1),this.options={alpha:this.transparent,antialias:!!f,premultipliedAlpha:!!e,stencil:!0};try{this.gl=this.view.getContext("experimental-webgl",this.options)}catch(g){try{this.gl=this.view.getContext("webgl",this.options)}catch(h){throw new Error(" This browser does not support webGL. Try using the canvas renderer"+this)}}var i=this.gl;this.glContextId=i.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=i,b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[i.SRC_ALPHA,i.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[i.DST_COLOR,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[i.SRC_ALPHA,i.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[i.ONE,i.ONE_MINUS_SRC_ALPHA]),this.projection=new b.Point,this.projection.x=this.width/2,this.projection.y=-this.height/2,this.offset=new b.Point(0,0),this.resize(this.width,this.height),this.contextLost=!1,this.shaderManager=new b.WebGLShaderManager(i),this.spriteBatch=new b.WebGLSpriteBatch(i),this.maskManager=new b.WebGLMaskManager(i),this.filterManager=new b.WebGLFilterManager(i,this.transparent),this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.renderer=this,i.useProgram(this.shaderManager.defaultShader.program),i.disable(i.DEPTH_TEST),i.disable(i.CULL_FACE),i.enable(i.BLEND),i.colorMask(!0,!0,!0,this.transparent)},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),b.WebGLRenderer.updateTextures(),a.updateTransform(),a._interactive&&(a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)));var c=this.gl;c.viewport(0,0,this.width,this.height),c.bindFramebuffer(c.FRAMEBUFFER,null),this.transparent?c.clearColor(0,0,0,0):c.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),c.clear(c.COLOR_BUFFER_BIT),this.renderDisplayObject(a,this.projection),a.interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this))}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,b,c){this.renderSession.drawCount=0,this.renderSession.currentBlendMode=9999,this.renderSession.projection=b,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,c),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.updateTextures=function(){var a=0;for(a=0;a=0;c--){var d=a._glTextures[c],e=b.glContexts[c];e&&d&&e.deleteTexture(d)}a._glTextures.length=0},b.WebGLRenderer.updateTextureFrame=function(a){a.updateFrame=!1,a._updateWebGLuvs()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.view.width=a,this.view.height=b,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2,this.projection.y=-this.height/2},b.createWebGLTexture=function(a,c){return a.hasLoaded&&(a._glTextures[c.id]=c.createTexture(),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),c.bindTexture(c.TEXTURE_2D,null)),a._glTextures[c.id]},b.updateWebGLTexture=function(a,c){a._glTextures[c.id]&&(c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),c.bindTexture(c.TEXTURE_2D,null))},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){try{this.gl=this.view.getContext("experimental-webgl",this.options)}catch(a){try{this.gl=this.view.getContext("webgl",this.options)}catch(c){throw new Error(" This browser does not support webGL. Try using the canvas renderer"+this)}}var d=this.gl;d.id=b.WebGLRenderer.glContextId++,this.shaderManager.setContext(d),this.spriteBatch.setContext(d),this.maskManager.setContext(d),this.filterManager.setContext(d),this.renderSession.gl=this.gl,d.disable(d.DEPTH_TEST),d.disable(d.CULL_FACE),d.enable(d.BLEND),d.colorMask(!0,!0,!0,this.transparent),this.gl.viewport(0,0,this.width,this.height);for(var e in b.TextureCache){var f=b.TextureCache[e].baseTexture;f._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.removeEventListener("webglcontextlost",this.contextLost),this.view.removeEventListener("webglcontextrestored",this.contextRestoredLost),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.glContextId=0,b.WebGLMaskManager=function(a){this.maskStack=[],this.maskPosition=0,this.setContext(a)},b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=this.gl;0===this.maskStack.length&&(d.enable(d.STENCIL_TEST),d.stencilFunc(d.ALWAYS,1,1)),this.maskStack.push(a),d.colorMask(!1,!1,!1,!0),d.stencilOp(d.KEEP,d.KEEP,d.INCR),b.WebGLGraphics.renderGraphics(a,c),d.colorMask(!0,!0,!0,!0),d.stencilFunc(d.NOTEQUAL,0,this.maskStack.length),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)},b.WebGLMaskManager.prototype.popMask=function(a){var c=this.gl,d=this.maskStack.pop();d&&(c.colorMask(!1,!1,!1,!1),c.stencilOp(c.KEEP,c.KEEP,c.DECR),b.WebGLGraphics.renderGraphics(d,a),c.colorMask(!0,!0,!0,!0),c.stencilFunc(c.NOTEQUAL,0,this.maskStack.length),c.stencilOp(c.KEEP,c.KEEP,c.KEEP)),0===this.maskStack.length&&c.disable(c.STENCIL_TEST)},b.WebGLMaskManager.prototype.destroy=function(){this.maskStack=null,this.gl=null},b.WebGLShaderManager=function(a){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var b=0;bd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.setContext(a)},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;(b.baseTexture!==this.currentBaseTexture||this.currentBatchSize>=this.size)&&(this.flush(),this.currentBaseTexture=b.baseTexture),a.blendMode!==this.currentBlendMode&&this.setBlendMode(a.blendMode);var c=a._uvs||a.texture._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(a.texture.trim){var m=a.texture.trim;e=m.x-k*m.width,d=e+b.frame.width,g=m.y-l*m.height,f=g+b.frame.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=a.worldTransform,p=o.a,q=o.c,r=o.b,s=o.d,t=o.tx,u=o.ty;j[n++]=p*e+r*g+t,j[n++]=s*g+q*e+u,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=p*d+r*g+t,j[n++]=s*g+q*d+u,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=p*d+r*f+t,j[n++]=s*f+q*d+u,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=p*e+r*f+t,j[n++]=s*f+q*e+u,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.currentBatchSize++}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;(c.baseTexture!==this.currentBaseTexture||this.currentBatchSize>=this.size)&&(this.flush(),this.currentBaseTexture=c.baseTexture),a.blendMode!==this.currentBlendMode&&this.setBlendMode(a.blendMode),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=a.worldTransform,v=u.a,w=u.c,x=u.b,y=u.d,z=u.tx,A=u.ty;k[t++]=v*q+x*s+z,k[t++]=y*s+w*q+A,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=v*p+x*s+z,k[t++]=y*s+w*p+A,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=v*p+x*r+z,k[t++]=y*r+w*p+A,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=v*q+x*r+z,k[t++]=y*r+w*q+A,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.currentBatchSize++},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a)),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var c=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,c.x,c.y);var d=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,d,0),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,d,8),a.vertexAttribPointer(this.shader.colorAttribute,2,a.FLOAT,!1,d,16),this.currentBlendMode!==b.blendModes.NORMAL&&this.setBlendMode(b.blendModes.NORMAL)},b.WebGLSpriteBatch.prototype.setBlendMode=function(a){this.flush(),this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];this.gl.blendFunc(c[0],c[1])},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var b=4*this.size*this.vertSize,c=6*this.maxSize;this.vertices=new Float32Array(b),this.indices=new Uint16Array(c),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var d=0,e=0;c>d;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.currentBlendMode&&this.setBlendMode(c.blendMode);for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.frame.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.frame.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var c=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,c.x,c.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var d=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,d,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,d,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,d,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,d,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,d,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,d,36),this.currentBlendMode!==b.blendModes.NORMAL&&this.setBlendMode(b.blendModes.NORMAL)},b.WebGLFastSpriteBatch.prototype.setBlendMode=function(a){this.flush(),this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];this.gl.blendFunc(c[0],c[1])},b.WebGLFilterManager=function(a,b){this.transparent=b,this.filterStack=[],this.offsetX=0,this.offsetY=0,this.setContext(a)},b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.uniform2f(this.defaultShader.projectionVector,h.width/2,-h.height/2),c.uniform2f(this.defaultShader.offsetVector,-h.x,-h.y),c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0&&(b.Texture.frameUpdates.length=0)},b.CanvasRenderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.view.width=a,this.view.height=b},b.CanvasRenderer.prototype.renderDisplayObject=function(a,b){this.renderSession.context=b||this.context,a._renderCanvas(this.renderSession)},b.CanvasRenderer.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.CanvasRenderer.prototype.renderStrip=function(a){var b=this.context,c=a.verticies,d=a.uvs,e=c.length/2;this.count++;for(var f=1;e-2>f;f++){var g=2*f,h=c[g],i=c[g+2],j=c[g+4],k=c[g+1],l=c[g+3],m=c[g+5],n=d[g]*a.texture.width,o=d[g+2]*a.texture.width,p=d[g+4]*a.texture.width,q=d[g+1]*a.texture.height,r=d[g+3]*a.texture.height,s=d[g+5]*a.texture.height;b.save(),b.beginPath(),b.moveTo(h,k),b.lineTo(i,l),b.lineTo(j,m),b.closePath(),b.clip();var t=n*r+q*p+o*s-r*p-q*o-n*s,u=h*r+q*j+i*s-r*j-q*i-h*s,v=n*i+h*p+o*j-i*p-h*o-n*j,w=n*r*j+q*i*p+h*o*s-h*r*p-q*o*j-n*i*s,x=k*r+q*m+l*s-r*m-q*l-k*s,y=n*l+k*p+o*m-l*p-k*o-n*m,z=n*r*m+q*l*p+k*o*s-k*r*p-q*o*m-n*l*s;b.transform(u/t,x/t,v/t,y/t,w/t,z/t),b.drawImage(a.texture.baseTexture.source,0,0),b.restore()}},b.CanvasBuffer=function(a,b){this.width=a,this.height=b,this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=a,this.canvas.height=b},b.CanvasBuffer.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)},b.CanvasBuffer.prototype.resize=function(a,b){this.width=this.canvas.width=a,this.height=this.canvas.height=b},b.CanvasGraphics=function(){},b.CanvasGraphics.renderGraphics=function(a,c){for(var d=a.worldAlpha,e="",f=0;f1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.points;if(f.type===b.Graphics.POLY){c.beginPath(),c.moveTo(g[0],g[1]);for(var h=1;hd;d++)this.children[d]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),a.drawCount++,a.spriteBatch.start()}},b.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){var c=a.context,d=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),c.setTransform(d.a,d.c,d.b,d.d,d.tx,d.ty),b.CanvasGraphics.renderGraphics(this,c);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a)}},b.Graphics.prototype.getBounds=function(a){this.bounds||this.updateBounds();var b=this.bounds.x,c=this.bounds.width+this.bounds.x,d=this.bounds.y,e=this.bounds.height+this.bounds.y,f=a||this.worldTransform,g=f.a,h=f.c,i=f.b,j=f.d,k=f.tx,l=f.ty,m=g*c+i*e+k,n=j*e+h*c+l,o=g*b+i*e+k,p=j*e+h*b+l,q=g*b+i*d+k,r=j*d+h*b+l,s=g*c+i*d+k,t=j*d+h*c+l,u=-1/0,v=-1/0,w=1/0,x=1/0;w=w>m?m:w,w=w>o?o:w,w=w>q?q:w,w=w>s?s:w,x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,u=m>u?m:u,u=o>u?o:u,u=q>u?q:u,u=s>u?s:u,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v;var y=this._bounds;return y.x=w,y.width=u-w,y.y=x,y.height=v-x,y},b.Graphics.prototype.updateBounds=function(){for(var a,c,d,e,f,g=1/0,h=-1/0,i=1/0,j=-1/0,k=0;kc?c:g,h=c+e>h?c+e:h,i=i>d?c:i,j=d+f>j?d+f:j;else if(m===b.Graphics.CIRC||m===b.Graphics.ELIP)c=a[0],d=a[1],e=a[2]+n/2,f=a[3]+n/2,g=g>c-e?c-e:g,h=c+e>h?c+e:h,i=i>d-f?d-f:i,j=d+f>j?d+f:j;else for(var o=0;oc-n?c-n:g,h=c+n>h?c+n:h,i=i>d-n?d-n:i,j=d+n>j?d+n:j}var p=this.boundsPadding;this.bounds=new b.Rectangle(g-p,i-p,h-g+2*p,j-i+2*p)},b.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var c=new b.CanvasBuffer(a.width,a.height),d=b.Texture.fromCanvas(c.canvas);this._cachedSprite=new b.Sprite(d),this._cachedSprite.buffer=c,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),b.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},b.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},b.Graphics.POLY=0,b.Graphics.RECT=1,b.Graphics.CIRC=2,b.Graphics.ELIP=3,b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this.width=c||100,this.height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this.mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this.filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this.filters&&a.filterManager.popFilter(),this.mask&&a.maskManager.popMask(a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d=this.worldTransform;if(c.setTransform(d.a,d.c,d.b,d.d,d.tx,d.ty),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),c.beginPath();var e=this.tilePosition,f=this.tileScale;e.x%=this.tilingTexture.baseTexture.width,e.y%=this.tilingTexture.baseTexture.height,c.scale(f.x,f.y),c.translate(e.x,e.y),c.fillStyle=this.__tilePattern,c.fillRect(-e.x+this.anchor.x*-this._width,-e.y+this.anchor.y*-this._height,this._width/f.x,this._height/f.y),c.scale(1/f.x,1/f.y),c.translate(-e.x,-e.y),c.closePath(),this._mask&&a.maskManager.popMask(a.context)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.generateTilingTexture=function(a){var c=this.texture;if(c.baseTexture.hasLoaded){var d,e,f=c.baseTexture,g=c.frame,h=g.width!==f.width||g.height!==f.height,i=!1;if(a?(d=b.getNextPowerOfTwo(g.width),e=b.getNextPowerOfTwo(g.height),g.width!==d&&g.height!==e&&(i=!0)):h&&(d=g.width,e=g.height,i=!0),i){var j;this.tilingTexture&&this.tilingTexture.isTiling?(j=this.tilingTexture.canvasBuffer,j.resize(d,e),this.tilingTexture.baseTexture.width=d,this.tilingTexture.baseTexture.height=e,this.tilingTexture.needsUpdate=!0):(j=new b.CanvasBuffer(d,e),this.tilingTexture=b.Texture.fromCanvas(j.canvas),this.tilingTexture.canvasBuffer=j,this.tilingTexture.isTiling=!0),j.context.drawImage(c.baseTexture.source,g.x,g.y,g.width,g.height,0,0,d,e),this.tileScaleOffset.x=g.width/d,this.tileScaleOffset.y=g.height/e}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=c;this.refreshTexture=!1,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.texturesToUpdate=[],b.texturesToDestroy=[],b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(b.EventTarget.call(this),this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this.id=b.BaseTextureCacheIdGenerator++,this._glTextures=[],a){if(this.source.complete||this.source.getContext)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,b.texturesToUpdate.push(this);else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.width,d.height=d.source.height,b.texturesToUpdate.push(d),d.dispatchEvent({type:"loaded",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.destroy=function(){this.imageUrl&&(delete b.BaseTextureCache[this.imageUrl],this.imageUrl=null,this.source.src=null),this.source=null,b.texturesToDestroy.push(this)},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureCacheIdGenerator=0,b.Texture=function(a,c){if(b.EventTarget.call(this),c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=null,this.scope=this,this._uvs=null,a.hasLoaded)this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c);else{var d=this;a.addEventListener("loaded",function(){d.onBaseTextureLoaded()})}},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;a.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame),this.scope.dispatchEvent({type:"update",content:this})},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy()},b.Texture.prototype.setFrame=function(a){if(this.frame=a,this.width=a.width,this.height=a.height,a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,b.Texture.frameUpdates.push(this)},b.Texture.prototype._updateWebGLuvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.frame,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.Texture.frameUpdates=[],b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y4=0},b.RenderTexture=function(a,c,d){if(b.EventTarget.call(this),this.width=a||100,this.height=c||100,this.frame=new b.Rectangle(0,0,this.width,this.height),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTextures=[],this.baseTexture.hasLoaded=!0,this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var e=this.renderer.gl;this.textureBuffer=new b.FilterTexture(e,this.width,this.height),this.baseTexture._glTextures[e.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(this.width/2,-this.height/2)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width,this.height),this.baseTexture.source=this.textureBuffer.canvas;b.Texture.frameUpdates.push(this)},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c){if(this.width=a,this.height=c,this.frame.width=this.width,this.frame.height=this.height,this.renderer.type===b.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var d=this.renderer.gl;d.bindTexture(d.TEXTURE_2D,this.baseTexture._glTextures[d.id]),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,this.width,this.height,0,d.RGBA,d.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);b.Texture.frameUpdates.push(this)},b.RenderTexture.prototype.renderWebGL=function(a,c,d){var e=this.renderer.gl;e.colorMask(!0,!0,!0,!0),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,this.textureBuffer.frameBuffer),d&&this.textureBuffer.clear();var f=a.children,g=a.worldTransform;a.worldTransform=b.RenderTexture.tempMatrix,a.worldTransform.d=-1,a.worldTransform.ty=-2*this.projection.y,c&&(a.worldTransform.tx=c.x,a.worldTransform.ty-=c.y);for(var h=0,i=f.length;i>h;h++)f[h].updateTransform();b.WebGLRenderer.updateTextures(),this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),a.worldTransform=g},b.RenderTexture.prototype.renderCanvas=function(a,c,d){var e=a.children,f=a.worldTransform;a.worldTransform=b.RenderTexture.tempMatrix,c&&(a.worldTransform.tx=c.x,a.worldTransform.ty=c.y);for(var g=0,h=e.length;h>g;g++)e[g].updateTransform();d&&this.textureBuffer.clear();var i=this.textureBuffer.context;this.renderer.renderDisplayObject(a,i),i.setTransform(1,0,0,1,0,0),a.worldTransform=f},b.RenderTexture.tempMatrix=new b.Matrix,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"<%= version %>",DEV_VERSION:"2.0.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};PIXI.InteractionManager=function(){},b.Utils={parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},shuffle:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3; -var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),b.Circle=function(a,b,c){a=a||0,b=b||0,c=c||0,this.x=a,this.y=b,this._diameter=c,this._radius=c>0?.5*c:0},b.Circle.prototype={circumference:function(){return 2*Math.PI*this._radius},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRound(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x==this.x&&a.y==this.y},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x==b.x&&a.y==b.y},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRound(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.rotate=function(a,c,d,e,f,g){return f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y))),a.setTo(c+g*Math.cos(e),d+g*Math.sin(e))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(this,a)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:this.y-a}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:this.x+a}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b<=a.right&&c>=a.y&&c<=a.bottom},b.Rectangle.containsRaw=function(a,b,c,d,e,f){return e>=a&&a+c>=e&&f>=b&&b+d>=f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.right<=b.right&&a.bottom<=b.bottom},b.Rectangle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.width==b.width&&a.height==b.height},b.Rectangle.intersection=function(a,c,d){return"undefined"==typeof d&&(d=new b.Rectangle),b.Rectangle.intersects(a,c)&&(d.x=Math.max(a.x,c.x),d.y=Math.max(a.y,c.y),d.width=Math.min(a.right,c.right)-d.x,d.height=Math.min(a.bottom,c.bottom)-d.y),d},b.Rectangle.intersects=function(a,b){return a.width<=0||a.height<=0||b.width<=0||b.height<=0?!1:!(a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||e=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.x-this.start.x,this.end.y-this.start.y)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){if(Math.pow(g.x-c.x+(g.y-c.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-a.x+(g.y-a.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-e.x+(g.y-e.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null;if(Math.pow(g.x-d.x+(g.y-d.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this.points=a},b.Polygon.prototype={clone:function(){for(var a=[],c=0;cb!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!0)}return c}},b.Polygon.prototype.constructor=b.Polygon,PIXI.Polygon=b.Polygon,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this.displayObject=null,this.scale=null},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this.deadzone?(this._edge=this.target.x-this.deadzone.x,this.view.x>this._edge&&(this.view.x=this._edge),this._edge=this.target.x+this.target.width-this.deadzone.x-this.deadzone.width,this.view.xthis._edge&&(this.view.y=this._edge),this._edge=this.target.y+this.target.height-this.deadzone.y-this.deadzone.height,this.view.y=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height),this.view.floor()},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},paused:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&("string"==typeof this._pendingState?this.start(this._pendingState,!1,!1):this.add("default",this._pendingState,!0))},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3))},dummy:function(){},preUpdate:function(){this._pendingState&&this.game.isBooted&&(this.current&&(this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy())),this.setCurrentState(this._pendingState),this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()?this.loadComplete():this.game.load.start()):this.loadComplete(),this.current===this._pendingState&&(this._pendingState=null))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),this._args=[]},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null==this.first&&null==this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},remove:function(a){a==this.first?this.first=this.first.next:a==this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null==this.first&&(this.last=null),this.total--},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.Signal=function(){this._bindings=[],this._prevParams=null;var a=this;this.dispatch=function(){b.Signal.prototype.dispatch.apply(a,arguments)}},b.Signal.prototype={memorize:!1,_shouldPropagate:!0,active:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,c,d,e){var f,g=this._indexOfListener(a,d);if(-1!==g){if(f=this._bindings[g],f.isOnce()!==c)throw new Error("You cannot add"+(c?"":"Once")+"() then add"+(c?"Once":"")+"() the same listener without removing the relationship first.")}else f=new b.SignalBinding(this,a,c,d,e),this._addBinding(f);return this.memorize&&this._prevParams&&f.execute(this._prevParams),f},_addBinding:function(a){var b=this._bindings.length;do--b;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){return this.validateListener(a,"add"),this._registerListener(a,!1,b,c)},addOnce:function(a,b,c){return this.validateListener(a,"addOnce"),this._registerListener(a,!0,b,c)},remove:function(a,b){this.validateListener(a,"remove");var c=this._indexOfListener(a,b);return-1!==c&&(this._bindings[c]._destroy(),this._bindings.splice(c,1)),a},removeAll:function(){for(var a=this._bindings.length;a--;)this._bindings[a]._destroy();this._bindings.length=0},getNumListeners:function(){return this._bindings.length},halt:function(){this._shouldPropagate=!1},dispatch:function(){if(this.active){var a,b=Array.prototype.slice.call(arguments),c=this._bindings.length;if(this.memorize&&(this._prevParams=b),c){a=this._bindings.slice(),this._shouldPropagate=!0;do c--;while(a[c]&&this._shouldPropagate&&a[c].execute(b)!==!1)}}},forget:function(){this._prevParams=null},dispose:function(){this.removeAll(),delete this._bindings,delete this._prevParams},toString:function(){return"[Phaser.Signal active:"+this.active+" numListeners:"+this.getNumListeners()+"]"}},b.Signal.prototype.constructor=b.Signal,b.SignalBinding=function(a,b,c,d,e){this._listener=b,this._isOnce=c,this.context=d,this._signal=a,this._priority=e||0},b.SignalBinding.prototype={active:!0,params:null,execute:function(a){var b,c;return this.active&&this._listener&&(c=this.params?this.params.concat(a):a,b=this._listener.apply(this.context,c),this._isOnce&&this.detach()),b},detach:function(){return this.isBound()?this._signal.remove(this._listener,this.context):null},isBound:function(){return!!this._signal&&!!this._listener},isOnce:function(){return this._isOnce},getListener:function(){return this._listener},getSignal:function(){return this._signal},_destroy:function(){delete this._signal,delete this._listener,delete this.context},toString:function(){return"[Phaser.SignalBinding isOnce:"+this._isOnce+", isBound:"+this.isBound()+", active:"+this.active+"]" -}},b.SignalBinding.prototype.constructor=b.SignalBinding,b.Filter=function(a,c,d){this.game=a,this.type=b.WEBGL_FILTER,this.passes=[this],this.shaders=[],this.dirty=!0,this.padding=0,this.uniforms={time:{type:"1f",value:0},resolution:{type:"2f",value:{x:256,y:256}},mouse:{type:"2f",value:{x:0,y:0}}},this.fragmentSrc=d||[]},b.Filter.prototype={init:function(){},setResolution:function(a,b){this.uniforms.resolution.value.x=a,this.uniforms.resolution.value.y=b},update:function(a){"undefined"!=typeof a&&(a.x>0&&(this.uniforms.mouse.x=a.x.toFixed(2)),a.y>0&&(this.uniforms.mouse.y=a.y.toFixed(2))),this.uniforms.time.value=this.game.time.totalElapsedSeconds()},destroy:function(){this.game=null}},b.Filter.prototype.constructor=b.Filter,Object.defineProperty(b.Filter.prototype,"width",{get:function(){return this.uniforms.resolution.value.x},set:function(a){this.uniforms.resolution.value.x=a}}),Object.defineProperty(b.Filter.prototype,"height",{get:function(){return this.uniforms.resolution.value.y},set:function(a){this.uniforms.resolution.value.y=a}}),b.Plugin=function(a,b){"undefined"==typeof b&&(b=null),this.game=a,this.parent=b,this.active=!1,this.visible=!1,this.hasPreUpdate=!1,this.hasUpdate=!1,this.hasPostUpdate=!1,this.hasRender=!1,this.hasPostRender=!1},b.Plugin.prototype={preUpdate:function(){},update:function(){},render:function(){},postRender:function(){},destroy:function(){this.game=null,this.parent=null,this.active=!1,this.visible=!1}},b.Plugin.prototype.constructor=b.Plugin,b.PluginManager=function(a){this.game=a,this.plugins=[],this._len=0,this._i=0},b.PluginManager.prototype={add:function(a){var b=!1;return"function"==typeof a?a=new a(this.game,this._parent):(a.game=this.game,a.parent=this),"function"==typeof a.preUpdate&&(a.hasPreUpdate=!0,b=!0),"function"==typeof a.update&&(a.hasUpdate=!0,b=!0),"function"==typeof a.postUpdate&&(a.hasPostUpdate=!0,b=!0),"function"==typeof a.render&&(a.hasRender=!0,b=!0),"function"==typeof a.postRender&&(a.hasPostRender=!0,b=!0),b?((a.hasPreUpdate||a.hasUpdate||a.hasPostUpdate)&&(a.active=!0),(a.hasRender||a.hasPostRender)&&(a.visible=!0),this._len=this.plugins.push(a),"function"==typeof a.init&&a.init(),a):null},remove:function(a){for(this._i=this._len;this._i--;)if(this.plugins[this._i]===a)return a.destroy(),this.plugins.splice(this._i,1),void this._len--},removeAll:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].destroy();this.plugins.length=0,this._len=0},preUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPreUpdate&&this.plugins[this._i].preUpdate()},update:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasUpdate&&this.plugins[this._i].update()},postUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPostUpdate&&this.plugins[this._i].postUpdate()},render:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasRender&&this.plugins[this._i].render()},postRender:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasPostRender&&this.plugins[this._i].postRender()},destroy:function(){this.removeAll(),this.game=null}},b.PluginManager.prototype.constructor=b.PluginManager,b.Stage=function(a,c,d){this.game=a,this.offset=new b.Point,PIXI.Stage.call(this,0,!1),this.name="_stage_root",this.interactive=!1,this.disableVisibilityChange=!1,this.checkOffsetInterval=2500,this.exists=!0,this.currentRenderOrderID=0,this._hiddenVar="hidden",this._nextOffsetCheck=0,this._backgroundColor=0,a.config?this.parseConfig(a.config):(this.game.canvas=b.Canvas.create(c,d),this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%")},b.Stage.prototype=Object.create(PIXI.Stage.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.preUpdate=function(){this.currentRenderOrderID=0;for(var a=this.children.length,b=0;a>b;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}this.checkOffsetInterval!==!1&&this.game.time.now>this._nextOffsetCheck&&(b.Canvas.getOffset(this.game.canvas,this.offset),this._nextOffsetCheck=this.game.time.now+this.checkOffsetInterval)},b.Stage.prototype.parseConfig=function(a){this.game.canvas=a.canvasID?b.Canvas.create(this.game.width,this.game.height,a.canvasID):b.Canvas.create(this.game.width,this.game.height),a.canvasStyle?this.game.canvas.stlye=a.canvasStyle:this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",a.checkOffsetInterval&&(this.checkOffsetInterval=a.checkOffsetInterval),a.disableVisibilityChange&&(this.disableVisibilityChange=a.disableVisibilityChange),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.scaleMode&&(this.scaleMode=a.scaleMode),a.backgroundColor&&(this.backgroundColor=a.backgroundColor)},b.Stage.prototype.boot=function(){b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds=new b.Rectangle(this.offset.x,this.offset.y,this.game.width,this.game.height);var a=this;this._onChange=function(b){return a.visibilityChange(b)},b.Canvas.setUserSelect(this.game.canvas,"none"),b.Canvas.setTouchAction(this.game.canvas,"none"),this.checkVisibility()},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange},b.Stage.prototype.visibilityChange=function(a){return this.disableVisibilityChange?void 0:"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden?this.game.gamePaused(a):this.game.gameResumed(a))},b.Stage.prototype.setBackgroundColor=function(a){this._backgroundColor=a||0,this.backgroundColorSplit=PIXI.hex2rgb(this.backgroundColor);var b=this._backgroundColor.toString(16);b="000000".substr(0,6-b.length)+b,this.backgroundColorString="#"+b},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this._backgroundColor=a,this.game.transparent===!1&&("string"==typeof a&&(a=b.Color.hexToRGB(a)),this.setBackgroundColor(a))}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addAt=function(a,b){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChildAt(a,b),this.updateZ(),a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.getAt=function(a){return 0>a||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,c,d,e,f){"undefined"==typeof f&&(f=!0);var g=new b.Sprite(this.game,a,c,d,e);return this.enableBody&&this.game.physics.enable(g,this.physicsBodyType),g.exists=f,g.visible=f,g.alive=f,this.addChild(g),g.z=this.children.length,g.events&&g.events.onAddedToGroup.dispatch(g,this),null===this.cursor&&(this.cursor=g),g},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){var c=this.swapChildren(a,b);return c&&this.updateZ(),c},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a),this.addAt(a,0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.setProperty=function(a,b,c,d){d=d||0;var e=b.length;1==e?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2==e?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3==e?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4==e&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c))},b.Group.prototype.set=function(a,b,c,d,e,f){b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)&&this.setProperty(a,b,c,f)},b.Group.prototype.setAll=function(a,b,c,d,e){a=a.split("."),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),e=e||0;for(var f=0,g=this.children.length;g>f;f++)(!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&this.setProperty(this.children[f],a,b,e)},b.Group.prototype.setAllChildren=function(a,c,d,e,f){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),f=f||0;for(var g=0,h=this.children.length;h>g;g++)(!d||d&&this.children[g].alive)&&(!e||e&&this.children[g].visible)&&(this.children[g]instanceof b.Group?this.children[g].setAllChildren(a,c,d,e,f):this.setProperty(this.children[g],a.split("."),c,f))},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.forEach=function(a,b,c){"undefined"==typeof c&&(c=!1);var d=Array.prototype.splice.call(arguments,3);d.unshift(null);for(var e=0,f=this.children.length;f>e;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b){return"undefined"==typeof b&&(b=!1),0===this.children.length?!1:(a.events&&a.events.onRemovedFromGroup.dispatch(a,this),this.removeChild(a),this.updateZ(),this.cursor===a&&this.next(),b&&a.destroy(),!0)},b.Group.prototype.removeAll=function(a){if("undefined"==typeof a&&(a=!1),0!==this.children.length){do this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this),this.removeChild(this.children[0]),a&&this.children[0].destroy();while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c){if("undefined"==typeof b&&(b=this.children.length),"undefined"==typeof c&&(c=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var d=b;d>=a;)this.children[d].events&&this.children[d].events.onRemovedFromGroup.dispatch(this.children[d],this),this.removeChild(this.children[d]),c&&this.children[d].destroy(),this.cursor===this.children[d]&&(this.cursor=null),d--;this.updateZ()}},b.Group.prototype.destroy=function(a,b){if(null!==this.game){if("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),a){if(this.children.length>0)do this.children[0].parent&&this.children[0].destroy(a);while(this.children.length>0)}else this.removeAll();this.cursor=null,b||(this.parent.removeChild(this),this.game=null,this.exists=!1)}},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){cwindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.aspectRatio=0,this.sourceAspectRatio=c/d,this.event=null,this.scaleMode=b.ScaleManager.NO_SCALE,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this._startHeight=0,this._width=0,this._height=0;var e=this;window.addEventListener("orientationchange",function(a){return e.checkOrientation(a)},!1),window.addEventListener("resize",function(a){return e.checkResize(a)},!1),document.addEventListener("webkitfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("mozfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("fullscreenchange",function(a){return e.fullScreenChange(a)},!1)},b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.prototype={startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){this.fullScreenTarget[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},forceOrientation:function(a,c,d){"undefined"==typeof c&&(c=!1),this.forceLandscape=a,this.forcePortrait=c,"undefined"!=typeof d&&((null==d||this.game.cache.checkImageKey(d)===!1)&&(d="__default"),this.orientationSprite=new b.Image(this.game,this.game.width/2,this.game.height/2,PIXI.TextureCache[d]),this.orientationSprite.anchor.set(.5),this.checkOrientationState(),this.incorrectOrientation?(this.orientationSprite.visible=!0,this.game.world.visible=!1):(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.game.stage.addChild(this.orientationSprite))},checkOrientationState:function(){this.incorrectOrientation?(this.forceLandscape&&window.innerWidth>window.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.orientationSprite&&(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,this.isLandscape?this.enterLandscape.dispatch(this.orientation,!0,!1):this.enterPortrait.dispatch(this.orientation,!1,!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh(),this.checkOrientationState()},refresh:function(){if(this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),null==this._check&&this.maxIterations>0){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){"undefined"==typeof a&&(a=!1),this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||window.innerHeight>this._startHeight||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation===!0?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null)},setSize:function(){this.incorrectOrientation===!1&&(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180==this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):("undefined"!=typeof a&&(this.width=a),"undefined"!=typeof c&&(this.height=c),"undefined"!=typeof d&&(this.renderer=d,this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,a.width&&(this.width=b.Utils.parseDimension(a.width,0)),a.height&&(this.height=b.Utils.parseDimension(a.height,1)),a.renderer&&(this.renderer=a.renderer,this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c);var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.stage=new b.Stage(this,this.width,this.height),this.scale=new b.ScaleManager(this,this.width,this.height),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.debug=new b.Utils.Debug(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.debug.boot(),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20)) -},showDebugHeader:function(){var a=b.DEV_VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" - "+c+" - "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #0cf300","background: #00bc17","color: #ffffff; background: #00711f;","background: #00bc17","background: #0cf300","background: #00bc17"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else console.log("Phaser v"+a+" - Renderer: "+c+" - Audio: "+d+" - http://phaser.io")},setUpRenderer:function(){if(this.device.trident&&(this.renderType=b.CANVAS),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,this.canvas,this.transparent),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,this.canvas,this.transparent,this.antialias),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!0),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?this.debug.preUpdate():(this.stepping&&(this.pendingStep=!0),this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender())},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.input.destroy(),this.state.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?this._paused===!1&&(this._paused=!0,this._codePaused=!0,this.sound.mute=!0,this.time.gamePaused(),this.onPause.dispatch(this)):this._paused&&(this._paused=!1,this._codePaused=!1,this.input.reset(),this.sound.mute=!1,this.time.gameResumed(),this.onResume.dispatch(this))}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.interactiveItems=new b.LinkedList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallback=null},setMoveCallback:function(a,b){this.moveCallback=a,this.moveCallbackContext=b},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a===!0&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.interactiveItems.callAll("reset")),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier==a)return this.pointer1;if(this.pointer2.identifier==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier==a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.b*-e.c);return d.setTo(e.d*f*c.x+-e.b*f*c.y+(e.ty*e.b-e.tx*e.d)*f,e.a*f*c.y+-e.c*f*c.x+(-e.ty*e.a+e.tx*e.c)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y)?!0:!1;if(a instanceof b.TileSprite){var e=a.width,f=a.height,g=-e*a.anchor.x;if(this._localPoint.x>g&&this._localPoint.xh&&this._localPoint.yg&&this._localPoint.xh&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(){this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.enabled=!0,this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null},justPressed:function(a){return"undefined"==typeof a&&(a=2500),this.isDown&&this.duration=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.x=(this.pageX-this.game.stage.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.stage.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.game.paused)return this;if(this.game.input.moveCallback&&this.game.input.moveCallback.call(this.game.input.moveCallbackContext,this,this.x,this.y),null!==this.targetObject&&this.targetObject.isDragged===!0)return this.targetObject.update(this)===!1&&(this.targetObject=null),this;if(this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1,this.game.input.interactiveItems.total>0){var d=this.game.input.interactiveItems.next;do d.validForInput(this._highestInputPriorityID,this._highestRenderOrderID)&&(!c&&d.checkPointerOver(this)||c&&d.checkPointerDown(this))&&(this._highestRenderOrderID=d.sprite._cache[3],this._highestInputPriorityID=d.priorityID,this._highestRenderObject=d),d=d.next;while(null!=d)}return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),this}},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){if(this._stateReset)return void a.preventDefault();if(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.total>0){var c=this.game.input.interactiveItems.next;do c&&c._releasedHandler(this),c=c.next;while(null!=c)}return this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null,this},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.identifier=null,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b0&&(b.Texture.frameUpdates.length=0)},b.CanvasRenderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.view.width=a,this.view.height=b},b.CanvasRenderer.prototype.renderDisplayObject=function(a,b){this.renderSession.context=b||this.context,a._renderCanvas(this.renderSession)},b.CanvasRenderer.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.CanvasRenderer.prototype.renderStrip=function(a){var b=this.context,c=a.verticies,d=a.uvs,e=c.length/2;this.count++;for(var f=1;e-2>f;f++){var g=2*f,h=c[g],i=c[g+2],j=c[g+4],k=c[g+1],l=c[g+3],m=c[g+5],n=d[g]*a.texture.width,o=d[g+2]*a.texture.width,p=d[g+4]*a.texture.width,q=d[g+1]*a.texture.height,r=d[g+3]*a.texture.height,s=d[g+5]*a.texture.height;b.save(),b.beginPath(),b.moveTo(h,k),b.lineTo(i,l),b.lineTo(j,m),b.closePath(),b.clip();var t=n*r+q*p+o*s-r*p-q*o-n*s,u=h*r+q*j+i*s-r*j-q*i-h*s,v=n*i+h*p+o*j-i*p-h*o-n*j,w=n*r*j+q*i*p+h*o*s-h*r*p-q*o*j-n*i*s,x=k*r+q*m+l*s-r*m-q*l-k*s,y=n*l+k*p+o*m-l*p-k*o-n*m,z=n*r*m+q*l*p+k*o*s-k*r*p-q*o*m-n*l*s;b.transform(u/t,x/t,v/t,y/t,w/t,z/t),b.drawImage(a.texture.baseTexture.source,0,0),b.restore()}},b.CanvasBuffer=function(a,b){this.width=a,this.height=b,this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=a,this.canvas.height=b},b.CanvasBuffer.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)},b.CanvasBuffer.prototype.resize=function(a,b){this.width=this.canvas.width=a,this.height=this.canvas.height=b},b.CanvasGraphics=function(){},b.CanvasGraphics.renderGraphics=function(a,c){for(var d=a.worldAlpha,e="",f=0;f1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.points;if(f.type===b.Graphics.POLY){c.beginPath(),c.moveTo(g[0],g[1]);for(var h=1;hd;d++)this.children[d]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),a.drawCount++,a.spriteBatch.start()}},b.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){var c=a.context,d=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),c.setTransform(d.a,d.c,d.b,d.d,d.tx,d.ty),b.CanvasGraphics.renderGraphics(this,c);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a)}},b.Graphics.prototype.getBounds=function(a){this.bounds||this.updateBounds();var b=this.bounds.x,c=this.bounds.width+this.bounds.x,d=this.bounds.y,e=this.bounds.height+this.bounds.y,f=a||this.worldTransform,g=f.a,h=f.c,i=f.b,j=f.d,k=f.tx,l=f.ty,m=g*c+i*e+k,n=j*e+h*c+l,o=g*b+i*e+k,p=j*e+h*b+l,q=g*b+i*d+k,r=j*d+h*b+l,s=g*c+i*d+k,t=j*d+h*c+l,u=-1/0,v=-1/0,w=1/0,x=1/0;w=w>m?m:w,w=w>o?o:w,w=w>q?q:w,w=w>s?s:w,x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,u=m>u?m:u,u=o>u?o:u,u=q>u?q:u,u=s>u?s:u,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v;var y=this._bounds;return y.x=w,y.width=u-w,y.y=x,y.height=v-x,y},b.Graphics.prototype.updateBounds=function(){for(var a,c,d,e,f,g=1/0,h=-1/0,i=1/0,j=-1/0,k=0;kc?c:g,h=c+e>h?c+e:h,i=i>d?c:i,j=d+f>j?d+f:j;else if(m===b.Graphics.CIRC||m===b.Graphics.ELIP)c=a[0],d=a[1],e=a[2]+n/2,f=a[3]+n/2,g=g>c-e?c-e:g,h=c+e>h?c+e:h,i=i>d-f?d-f:i,j=d+f>j?d+f:j;else for(var o=0;oc-n?c-n:g,h=c+n>h?c+n:h,i=i>d-n?d-n:i,j=d+n>j?d+n:j}var p=this.boundsPadding;this.bounds=new b.Rectangle(g-p,i-p,h-g+2*p,j-i+2*p)},b.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var c=new b.CanvasBuffer(a.width,a.height),d=b.Texture.fromCanvas(c.canvas);this._cachedSprite=new b.Sprite(d),this._cachedSprite.buffer=c,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),b.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},b.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},b.Graphics.POLY=0,b.Graphics.RECT=1,b.Graphics.CIRC=2,b.Graphics.ELIP=3,b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this.width=c||100,this.height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this.mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this.filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this.filters&&a.filterManager.popFilter(),this.mask&&a.maskManager.popMask(a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d=this.worldTransform;if(c.setTransform(d.a,d.c,d.b,d.d,d.tx,d.ty),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),c.beginPath();var e=this.tilePosition,f=this.tileScale;e.x%=this.tilingTexture.baseTexture.width,e.y%=this.tilingTexture.baseTexture.height,c.scale(f.x,f.y),c.translate(e.x,e.y),c.fillStyle=this.__tilePattern,c.fillRect(-e.x+this.anchor.x*-this._width,-e.y+this.anchor.y*-this._height,this._width/f.x,this._height/f.y),c.scale(1/f.x,1/f.y),c.translate(-e.x,-e.y),c.closePath(),this._mask&&a.maskManager.popMask(a.context)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.generateTilingTexture=function(a){var c=this.texture;if(c.baseTexture.hasLoaded){var d,e,f=c.baseTexture,g=c.frame,h=g.width!==f.width||g.height!==f.height,i=!1;if(a?(d=b.getNextPowerOfTwo(g.width),e=b.getNextPowerOfTwo(g.height),g.width!==d&&g.height!==e&&(i=!0)):h&&(d=g.width,e=g.height,i=!0),i){var j;this.tilingTexture&&this.tilingTexture.isTiling?(j=this.tilingTexture.canvasBuffer,j.resize(d,e),this.tilingTexture.baseTexture.width=d,this.tilingTexture.baseTexture.height=e,this.tilingTexture.needsUpdate=!0):(j=new b.CanvasBuffer(d,e),this.tilingTexture=b.Texture.fromCanvas(j.canvas),this.tilingTexture.canvasBuffer=j,this.tilingTexture.isTiling=!0),j.context.drawImage(c.baseTexture.source,g.x,g.y,g.width,g.height,0,0,d,e),this.tileScaleOffset.x=g.width/d,this.tileScaleOffset.y=g.height/e}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=c;this.refreshTexture=!1,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.texturesToUpdate=[],b.texturesToDestroy=[],b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(b.EventTarget.call(this),this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this.id=b.BaseTextureCacheIdGenerator++,this._glTextures=[],a){if(this.source.complete||this.source.getContext)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,b.texturesToUpdate.push(this);else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.width,d.height=d.source.height,b.texturesToUpdate.push(d),d.dispatchEvent({type:"loaded",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.destroy=function(){this.imageUrl&&(delete b.BaseTextureCache[this.imageUrl],this.imageUrl=null,this.source.src=null),this.source=null,b.texturesToDestroy.push(this)},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureCacheIdGenerator=0,b.Texture=function(a,c){if(b.EventTarget.call(this),c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=null,this.scope=this,this._uvs=null,a.hasLoaded)this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c);else{var d=this;a.addEventListener("loaded",function(){d.onBaseTextureLoaded()})}},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;a.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame),this.scope.dispatchEvent({type:"update",content:this})},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy()},b.Texture.prototype.setFrame=function(a){if(this.frame=a,this.width=a.width,this.height=a.height,a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,b.Texture.frameUpdates.push(this)},b.Texture.prototype._updateWebGLuvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.frame,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.Texture.frameUpdates=[],b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y4=0},b.RenderTexture=function(a,c,d){if(b.EventTarget.call(this),this.width=a||100,this.height=c||100,this.frame=new b.Rectangle(0,0,this.width,this.height),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTextures=[],this.baseTexture.hasLoaded=!0,this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var e=this.renderer.gl;this.textureBuffer=new b.FilterTexture(e,this.width,this.height),this.baseTexture._glTextures[e.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(this.width/2,-this.height/2)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width,this.height),this.baseTexture.source=this.textureBuffer.canvas;b.Texture.frameUpdates.push(this)},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c){if(this.width=a,this.height=c,this.frame.width=this.width,this.frame.height=this.height,this.renderer.type===b.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var d=this.renderer.gl;d.bindTexture(d.TEXTURE_2D,this.baseTexture._glTextures[d.id]),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,this.width,this.height,0,d.RGBA,d.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);b.Texture.frameUpdates.push(this)},b.RenderTexture.prototype.renderWebGL=function(a,c,d){var e=this.renderer.gl;e.colorMask(!0,!0,!0,!0),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,this.textureBuffer.frameBuffer),d&&this.textureBuffer.clear();var f=a.children,g=a.worldTransform;a.worldTransform=b.RenderTexture.tempMatrix,a.worldTransform.d=-1,a.worldTransform.ty=-2*this.projection.y,c&&(a.worldTransform.tx=c.x,a.worldTransform.ty-=c.y);for(var h=0,i=f.length;i>h;h++)f[h].updateTransform();b.WebGLRenderer.updateTextures(),this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),a.worldTransform=g},b.RenderTexture.prototype.renderCanvas=function(a,c,d){var e=a.children,f=a.worldTransform;a.worldTransform=b.RenderTexture.tempMatrix,c&&(a.worldTransform.tx=c.x,a.worldTransform.ty=c.y);for(var g=0,h=e.length;h>g;g++)e[g].updateTransform();d&&this.textureBuffer.clear();var i=this.textureBuffer.context;this.renderer.renderDisplayObject(a,i),i.setTransform(1,0,0,1,0,0),a.worldTransform=f},b.RenderTexture.tempMatrix=new b.Matrix,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"<%= version %>",DEV_VERSION:"2.0.4",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};PIXI.InteractionManager=function(){},b.Utils={parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},shuffle:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3; +var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),b.Circle=function(a,b,c){a=a||0,b=b||0,c=c||0,this.x=a,this.y=b,this._diameter=c,this._radius=c>0?.5*c:0},b.Circle.prototype={circumference:function(){return 2*Math.PI*this._radius},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRound(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x==this.x&&a.y==this.y},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x==b.x&&a.y==b.y},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRound(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.rotate=function(a,c,d,e,f,g){return f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y))),a.setTo(c+g*Math.cos(e),d+g*Math.sin(e))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(this,a)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:this.y-a}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:this.x+a}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b<=a.right&&c>=a.y&&c<=a.bottom},b.Rectangle.containsRaw=function(a,b,c,d,e,f){return e>=a&&a+c>=e&&f>=b&&b+d>=f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.right<=b.right&&a.bottom<=b.bottom},b.Rectangle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.width==b.width&&a.height==b.height},b.Rectangle.intersection=function(a,c,d){return"undefined"==typeof d&&(d=new b.Rectangle),b.Rectangle.intersects(a,c)&&(d.x=Math.max(a.x,c.x),d.y=Math.max(a.y,c.y),d.width=Math.min(a.right,c.right)-d.x,d.height=Math.min(a.bottom,c.bottom)-d.y),d},b.Rectangle.intersects=function(a,b){return a.width<=0||a.height<=0||b.width<=0||b.height<=0?!1:!(a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||e=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){if(Math.pow(g.x-c.x+(g.y-c.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-a.x+(g.y-a.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-e.x+(g.y-e.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null;if(Math.pow(g.x-d.x+(g.y-d.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this.points=a},b.Polygon.prototype={clone:function(){for(var a=[],c=0;cb!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!0)}return c}},b.Polygon.prototype.constructor=b.Polygon,PIXI.Polygon=b.Polygon,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this.displayObject=null,this.scale=null},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this.deadzone?(this._edge=this.target.x-this.deadzone.x,this.view.x>this._edge&&(this.view.x=this._edge),this._edge=this.target.x+this.target.width-this.deadzone.x-this.deadzone.width,this.view.xthis._edge&&(this.view.y=this._edge),this._edge=this.target.y+this.target.height-this.deadzone.y-this.deadzone.height,this.view.y=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height),this.view.floor()},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},paused:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&("string"==typeof this._pendingState?this.start(this._pendingState,!1,!1):this.add("default",this._pendingState,!0))},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){this._pendingState&&this.game.isBooted&&(this.current&&(this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy())),this.setCurrentState(this._pendingState),this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()?this.loadComplete():this.game.load.start()):this.loadComplete(),this.current===this._pendingState&&(this._pendingState=null))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),this._args=[]},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null==this.first&&null==this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},remove:function(a){a==this.first?this.first=this.first.next:a==this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null==this.first&&(this.last=null),this.total--},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.Signal=function(){this._bindings=[],this._prevParams=null;var a=this;this.dispatch=function(){b.Signal.prototype.dispatch.apply(a,arguments)}},b.Signal.prototype={memorize:!1,_shouldPropagate:!0,active:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,c,d,e){var f,g=this._indexOfListener(a,d);if(-1!==g){if(f=this._bindings[g],f.isOnce()!==c)throw new Error("You cannot add"+(c?"":"Once")+"() then add"+(c?"Once":"")+"() the same listener without removing the relationship first.")}else f=new b.SignalBinding(this,a,c,d,e),this._addBinding(f);return this.memorize&&this._prevParams&&f.execute(this._prevParams),f},_addBinding:function(a){var b=this._bindings.length;do--b;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){return this.validateListener(a,"add"),this._registerListener(a,!1,b,c)},addOnce:function(a,b,c){return this.validateListener(a,"addOnce"),this._registerListener(a,!0,b,c)},remove:function(a,b){this.validateListener(a,"remove");var c=this._indexOfListener(a,b);return-1!==c&&(this._bindings[c]._destroy(),this._bindings.splice(c,1)),a},removeAll:function(){for(var a=this._bindings.length;a--;)this._bindings[a]._destroy();this._bindings.length=0},getNumListeners:function(){return this._bindings.length},halt:function(){this._shouldPropagate=!1},dispatch:function(){if(this.active){var a,b=Array.prototype.slice.call(arguments),c=this._bindings.length;if(this.memorize&&(this._prevParams=b),c){a=this._bindings.slice(),this._shouldPropagate=!0;do c--;while(a[c]&&this._shouldPropagate&&a[c].execute(b)!==!1)}}},forget:function(){this._prevParams=null},dispose:function(){this.removeAll(),delete this._bindings,delete this._prevParams},toString:function(){return"[Phaser.Signal active:"+this.active+" numListeners:"+this.getNumListeners()+"]"}},b.Signal.prototype.constructor=b.Signal,b.SignalBinding=function(a,b,c,d,e){this._listener=b,this._isOnce=c,this.context=d,this._signal=a,this._priority=e||0},b.SignalBinding.prototype={active:!0,params:null,execute:function(a){var b,c;return this.active&&this._listener&&(c=this.params?this.params.concat(a):a,b=this._listener.apply(this.context,c),this._isOnce&&this.detach()),b},detach:function(){return this.isBound()?this._signal.remove(this._listener,this.context):null},isBound:function(){return!!this._signal&&!!this._listener},isOnce:function(){return this._isOnce},getListener:function(){return this._listener},getSignal:function(){return this._signal},_destroy:function(){delete this._signal,delete this._listener,delete this.context},toString:function(){return"[Phaser.SignalBinding isOnce:"+this._isOnce+", isBound:"+this.isBound()+", active:"+this.active+"]" +}},b.SignalBinding.prototype.constructor=b.SignalBinding,b.Filter=function(a,c,d){this.game=a,this.type=b.WEBGL_FILTER,this.passes=[this],this.shaders=[],this.dirty=!0,this.padding=0,this.uniforms={time:{type:"1f",value:0},resolution:{type:"2f",value:{x:256,y:256}},mouse:{type:"2f",value:{x:0,y:0}}},this.fragmentSrc=d||[]},b.Filter.prototype={init:function(){},setResolution:function(a,b){this.uniforms.resolution.value.x=a,this.uniforms.resolution.value.y=b},update:function(a){"undefined"!=typeof a&&(a.x>0&&(this.uniforms.mouse.x=a.x.toFixed(2)),a.y>0&&(this.uniforms.mouse.y=a.y.toFixed(2))),this.uniforms.time.value=this.game.time.totalElapsedSeconds()},destroy:function(){this.game=null}},b.Filter.prototype.constructor=b.Filter,Object.defineProperty(b.Filter.prototype,"width",{get:function(){return this.uniforms.resolution.value.x},set:function(a){this.uniforms.resolution.value.x=a}}),Object.defineProperty(b.Filter.prototype,"height",{get:function(){return this.uniforms.resolution.value.y},set:function(a){this.uniforms.resolution.value.y=a}}),b.Plugin=function(a,b){"undefined"==typeof b&&(b=null),this.game=a,this.parent=b,this.active=!1,this.visible=!1,this.hasPreUpdate=!1,this.hasUpdate=!1,this.hasPostUpdate=!1,this.hasRender=!1,this.hasPostRender=!1},b.Plugin.prototype={preUpdate:function(){},update:function(){},render:function(){},postRender:function(){},destroy:function(){this.game=null,this.parent=null,this.active=!1,this.visible=!1}},b.Plugin.prototype.constructor=b.Plugin,b.PluginManager=function(a){this.game=a,this.plugins=[],this._len=0,this._i=0},b.PluginManager.prototype={add:function(a){var b=!1;return"function"==typeof a?a=new a(this.game,this._parent):(a.game=this.game,a.parent=this),"function"==typeof a.preUpdate&&(a.hasPreUpdate=!0,b=!0),"function"==typeof a.update&&(a.hasUpdate=!0,b=!0),"function"==typeof a.postUpdate&&(a.hasPostUpdate=!0,b=!0),"function"==typeof a.render&&(a.hasRender=!0,b=!0),"function"==typeof a.postRender&&(a.hasPostRender=!0,b=!0),b?((a.hasPreUpdate||a.hasUpdate||a.hasPostUpdate)&&(a.active=!0),(a.hasRender||a.hasPostRender)&&(a.visible=!0),this._len=this.plugins.push(a),"function"==typeof a.init&&a.init(),a):null},remove:function(a){for(this._i=this._len;this._i--;)if(this.plugins[this._i]===a)return a.destroy(),this.plugins.splice(this._i,1),void this._len--},removeAll:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].destroy();this.plugins.length=0,this._len=0},preUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPreUpdate&&this.plugins[this._i].preUpdate()},update:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasUpdate&&this.plugins[this._i].update()},postUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPostUpdate&&this.plugins[this._i].postUpdate()},render:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasRender&&this.plugins[this._i].render()},postRender:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasPostRender&&this.plugins[this._i].postRender()},destroy:function(){this.removeAll(),this.game=null}},b.PluginManager.prototype.constructor=b.PluginManager,b.Stage=function(a,c,d){this.game=a,this.offset=new b.Point,PIXI.Stage.call(this,0,!1),this.name="_stage_root",this.interactive=!1,this.disableVisibilityChange=!1,this.checkOffsetInterval=2500,this.exists=!0,this.currentRenderOrderID=0,this._hiddenVar="hidden",this._nextOffsetCheck=0,this._backgroundColor=0,a.config?this.parseConfig(a.config):(this.game.canvas=b.Canvas.create(c,d),this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%")},b.Stage.prototype=Object.create(PIXI.Stage.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.preUpdate=function(){this.currentRenderOrderID=0;for(var a=this.children.length,b=0;a>b;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}this.checkOffsetInterval!==!1&&this.game.time.now>this._nextOffsetCheck&&(b.Canvas.getOffset(this.game.canvas,this.offset),this._nextOffsetCheck=this.game.time.now+this.checkOffsetInterval)},b.Stage.prototype.parseConfig=function(a){this.game.canvas=a.canvasID?b.Canvas.create(this.game.width,this.game.height,a.canvasID):b.Canvas.create(this.game.width,this.game.height),a.canvasStyle?this.game.canvas.stlye=a.canvasStyle:this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",a.checkOffsetInterval&&(this.checkOffsetInterval=a.checkOffsetInterval),a.disableVisibilityChange&&(this.disableVisibilityChange=a.disableVisibilityChange),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.scaleMode&&(this.scaleMode=a.scaleMode),a.backgroundColor&&(this.backgroundColor=a.backgroundColor)},b.Stage.prototype.boot=function(){b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds=new b.Rectangle(this.offset.x,this.offset.y,this.game.width,this.game.height);var a=this;this._onChange=function(b){return a.visibilityChange(b)},b.Canvas.setUserSelect(this.game.canvas,"none"),b.Canvas.setTouchAction(this.game.canvas,"none"),this.checkVisibility()},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange},b.Stage.prototype.visibilityChange=function(a){return this.disableVisibilityChange?void 0:"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden?this.game.gamePaused(a):this.game.gameResumed(a))},b.Stage.prototype.setBackgroundColor=function(a){this._backgroundColor=a||0,this.backgroundColorSplit=PIXI.hex2rgb(this.backgroundColor);var b=this._backgroundColor.toString(16);b="000000".substr(0,6-b.length)+b,this.backgroundColorString="#"+b},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this._backgroundColor=a,this.game.transparent===!1&&("string"==typeof a&&(a=b.Color.hexToRGB(a)),this.setBackgroundColor(a))}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addAt=function(a,b){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChildAt(a,b),this.updateZ(),a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.getAt=function(a){return 0>a||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,c,d,e,f){"undefined"==typeof f&&(f=!0);var g=new b.Sprite(this.game,a,c,d,e);return this.enableBody&&this.game.physics.enable(g,this.physicsBodyType),g.exists=f,g.visible=f,g.alive=f,this.addChild(g),g.z=this.children.length,g.events&&g.events.onAddedToGroup.dispatch(g,this),null===this.cursor&&(this.cursor=g),g},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){var c=this.swapChildren(a,b);return c&&this.updateZ(),c},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a),this.addAt(a,0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.setProperty=function(a,b,c,d){d=d||0;var e=b.length;1==e?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2==e?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3==e?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4==e&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c))},b.Group.prototype.set=function(a,b,c,d,e,f){b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)&&this.setProperty(a,b,c,f)},b.Group.prototype.setAll=function(a,b,c,d,e){a=a.split("."),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),e=e||0;for(var f=0,g=this.children.length;g>f;f++)(!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&this.setProperty(this.children[f],a,b,e)},b.Group.prototype.setAllChildren=function(a,c,d,e,f){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),f=f||0;for(var g=0,h=this.children.length;h>g;g++)(!d||d&&this.children[g].alive)&&(!e||e&&this.children[g].visible)&&(this.children[g]instanceof b.Group?this.children[g].setAllChildren(a,c,d,e,f):this.setProperty(this.children[g],a.split("."),c,f))},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.forEach=function(a,b,c){"undefined"==typeof c&&(c=!1);var d=Array.prototype.splice.call(arguments,3);d.unshift(null);for(var e=0,f=this.children.length;f>e;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b){if("undefined"==typeof b&&(b=!1),0===this.children.length)return!1;a.events&&a.events.onRemovedFromGroup.dispatch(a,this);var c=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&c&&c.destroy(),!0},b.Group.prototype.removeAll=function(a){if("undefined"==typeof a&&(a=!1),0!==this.children.length){do{this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var b=this.removeChild(this.children[0]);a&&b&&b.destroy()}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c){if("undefined"==typeof b&&(b=this.children.length),"undefined"==typeof c&&(c=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var d=b;d>=a;){this.children[d].events&&this.children[d].events.onRemovedFromGroup.dispatch(this.children[d],this);var e=this.removeChild(this.children[d]);c&&e&&e.destroy(),this.cursor===this.children[d]&&(this.cursor=null),d--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null!==this.game&&("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.removeAll(a),this.cursor=null,b||(this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){cwindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.aspectRatio=0,this.sourceAspectRatio=c/d,this.event=null,this.scaleMode=b.ScaleManager.NO_SCALE,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this._startHeight=0,this._width=0,this._height=0;var e=this;window.addEventListener("orientationchange",function(a){return e.checkOrientation(a)},!1),window.addEventListener("resize",function(a){return e.checkResize(a)},!1),document.addEventListener("webkitfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("mozfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("fullscreenchange",function(a){return e.fullScreenChange(a)},!1)},b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.prototype={startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){this.fullScreenTarget[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},forceOrientation:function(a,c,d){"undefined"==typeof c&&(c=!1),this.forceLandscape=a,this.forcePortrait=c,"undefined"!=typeof d&&((null==d||this.game.cache.checkImageKey(d)===!1)&&(d="__default"),this.orientationSprite=new b.Image(this.game,this.game.width/2,this.game.height/2,PIXI.TextureCache[d]),this.orientationSprite.anchor.set(.5),this.checkOrientationState(),this.incorrectOrientation?(this.orientationSprite.visible=!0,this.game.world.visible=!1):(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.game.stage.addChild(this.orientationSprite))},checkOrientationState:function(){this.incorrectOrientation?(this.forceLandscape&&window.innerWidth>window.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.orientationSprite&&(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,this.isLandscape?this.enterLandscape.dispatch(this.orientation,!0,!1):this.enterPortrait.dispatch(this.orientation,!1,!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh(),this.checkOrientationState()},refresh:function(){if(this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),null==this._check&&this.maxIterations>0){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){"undefined"==typeof a&&(a=!1),this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||window.innerHeight>this._startHeight||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation===!0?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null)},setSize:function(){this.incorrectOrientation===!1&&(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180==this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):("undefined"!=typeof a&&(this.width=a),"undefined"!=typeof c&&(this.height=c),"undefined"!=typeof d&&(this.renderer=d,this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,a.width&&(this.width=b.Utils.parseDimension(a.width,0)),a.height&&(this.height=b.Utils.parseDimension(a.height,1)),a.renderer&&(this.renderer=a.renderer,this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c);var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.stage=new b.Stage(this,this.width,this.height),this.scale=new b.ScaleManager(this,this.width,this.height),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.debug=new b.Utils.Debug(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.debug.boot(),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20)) +},showDebugHeader:function(){var a=b.DEV_VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" - "+c+" - "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #0cf300","background: #00bc17","color: #ffffff; background: #00711f;","background: #00bc17","background: #0cf300","background: #00bc17"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else console.log("Phaser v"+a+" - Renderer: "+c+" - Audio: "+d+" - http://phaser.io")},setUpRenderer:function(){if(this.device.trident&&(this.renderType=b.CANVAS),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,this.canvas,this.transparent),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,this.canvas,this.transparent,this.antialias),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!0),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?this.debug.preUpdate():(this.stepping&&(this.pendingStep=!0),this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender())},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.input.destroy(),this.state.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?this._paused===!1&&(this._paused=!0,this._codePaused=!0,this.sound.mute=!0,this.time.gamePaused(),this.onPause.dispatch(this)):this._paused&&(this._paused=!1,this._codePaused=!1,this.input.reset(),this.sound.mute=!1,this.time.gameResumed(),this.onResume.dispatch(this))}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.resetLocked=!1,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.interactiveItems=new b.LinkedList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallback=null},setMoveCallback:function(a,b){this.moveCallback=a,this.moveCallbackContext=b},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.interactiveItems.callAll("reset")),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier==a)return this.pointer1;if(this.pointer2.identifier==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier==a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.b*-e.c);return d.setTo(e.d*f*c.x+-e.b*f*c.y+(e.ty*e.b-e.tx*e.d)*f,e.a*f*c.y+-e.c*f*c.x+(-e.ty*e.a+e.tx*e.c)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y)?!0:!1;if(a instanceof b.TileSprite){var e=a.width,f=a.height,g=-e*a.anchor.x;if(this._localPoint.x>g&&this._localPoint.xh&&this._localPoint.yg&&this._localPoint.xh&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(a){"undefined"==typeof a&&(a=!0),this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.enabled=!0,a&&(this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null)},justPressed:function(a){return"undefined"==typeof a&&(a=2500),this.isDown&&this.duration=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.x=(this.pageX-this.game.stage.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.stage.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.game.paused)return this;if(this.game.input.moveCallback&&this.game.input.moveCallback.call(this.game.input.moveCallbackContext,this,this.x,this.y),null!==this.targetObject&&this.targetObject.isDragged===!0)return this.targetObject.update(this)===!1&&(this.targetObject=null),this;if(this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1,this.game.input.interactiveItems.total>0){var d=this.game.input.interactiveItems.next;do d.validForInput(this._highestInputPriorityID,this._highestRenderOrderID)&&(!c&&d.checkPointerOver(this)||c&&d.checkPointerDown(this))&&(this._highestRenderOrderID=d.sprite._cache[3],this._highestInputPriorityID=d.priorityID,this._highestRenderObject=d),d=d.next;while(null!=d)}return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),this}},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){if(this._stateReset)return void a.preventDefault();if(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.total>0){var c=this.game.input.interactiveItems.next;do c&&c._releasedHandler(this),c=c.next;while(null!=c)}return this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null,this},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.identifier=null,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b0&&e>this.deadZone||0>e&&e<-this.deadZone?{axis:d,value:e}:{axis:d,value:0})}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this._connected;this._index=a.index,this._connected=!0,this._rawPad=a,this._rawButtons=a.buttons,this._axes=a.axes,b&&this._padParent.onConnectCallback&&this._padParent.onConnectCallback.call(this._padParent.callbackContext,this._index),b&&this.onConnectCallback&&this.onConnectCallback.call(this.callbackContext)},disconnect:function(){var a=this._connected;this._connected=!1,this._rawPad=void 0,this._rawButtons=[],this._buttons=[];var b=this._index;this._index=null,a&&this._padParent.onDisconnectCallback&&this._padParent.onDisconnectCallback.call(this._padParent.callbackContext,b),a&&this.onDisconnectCallback&&this.onDisconnectCallback.call(this.callbackContext)},processAxisChange:function(a){this.game.input.disabled||this.game.input.gamepad.disabled||this._axes[a.axis]!==a.value&&(this._axes[a.axis]=a.value,this._padParent.onAxisCallback&&this._padParent.onAxisCallback.call(this._padParent.callbackContext,a,this._index),this.onAxisCallback&&this.onAxisCallback.call(this.callbackContext,a))},processButtonDown:function(a,b){this.game.input.disabled||this.game.input.gamepad.disabled||(this._padParent.onDownCallback&&this._padParent.onDownCallback.call(this._padParent.callbackContext,a,b,this._index),this.onDownCallback&&this.onDownCallback.call(this.callbackContext,a,b),this._buttons[a]&&this._buttons[a].isDown?this._buttons[a].duration=this.game.time.now-this._buttons[a].timeDown:this._buttons[a]?(this._buttons[a].isDown=!0,this._buttons[a].timeDown=this.game.time.now,this._buttons[a].duration=0,this._buttons[a].value=b):this._buttons[a]={isDown:!0,timeDown:this.game.time.now,timeUp:0,duration:0,value:b},this._hotkeys[a]&&this._hotkeys[a].processButtonDown(b))},processButtonUp:function(a,b){this.game.input.disabled||this.game.input.gamepad.disabled||(this._padParent.onUpCallback&&this._padParent.onUpCallback.call(this._padParent.callbackContext,a,b,this._index),this.onUpCallback&&this.onUpCallback.call(this.callbackContext,a,b),this._hotkeys[a]&&this._hotkeys[a].processButtonUp(b),this._buttons[a]?(this._buttons[a].isDown=!1,this._buttons[a].timeUp=this.game.time.now,this._buttons[a].value=b):this._buttons[a]={isDown:!1,timeDown:this.game.time.now,timeUp:this.game.time.now,duration:0,value:b})},processButtonFloat:function(a,b){this.game.input.disabled||this.game.input.gamepad.disabled||(this._padParent.onFloatCallback&&this._padParent.onFloatCallback.call(this._padParent.callbackContext,a,b,this._index),this.onFloatCallback&&this.onFloatCallback.call(this.callbackContext,a,b),this._buttons[a]?this._buttons[a].value=b:this._buttons[a]={value:b},this._hotkeys[a]&&this._hotkeys[a].processButtonFloat(b))},axis:function(a){return this._axes[a]?this._axes[a]:!1},isDown:function(a){return this._buttons[a]?this._buttons[a].isDown:!1},justReleased:function(a,b){return"undefined"==typeof b&&(b=250),this._buttons[a]&&this._buttons[a].isDown===!1&&this.game.time.now-this._buttons[a].timeUpd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new b.Point,this.enabled=!0,this._wasEnabled=!0,this.sprite.events&&null===this.sprite.events.onInputOver&&(this.sprite.events.onInputOver=new b.Signal,this.sprite.events.onInputOut=new b.Signal,this.sprite.events.onInputDown=new b.Signal,this.sprite.events.onInputUp=new b.Signal,this.sprite.events.onDragStart=new b.Signal,this.sprite.events.onDragStop=new b.Signal)}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.sprite},addedToGroup:function(){this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1},reset:function(){this.enabled=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.enabled&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b){return 0===this.sprite.scale.x||0===this.sprite.scale.y?!1:this.pixelPerfectClick||this.pixelPerfectOver?!0:this.priorityID>a||this.priorityID===a&&this.sprite._cache[3]b;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if("undefined"!=typeof a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0:!1},checkPointerOver:function(a){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0:!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(this.game.input.hitContext.clearRect(0,0,1,1),null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID==a.id?this.updateDrag(a):this._pointerData[a.id].isOver===!0?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isOver===!1&&(this._pointerData[a.id].isOver=!0,this._pointerData[a.id].isOut=!1,this._pointerData[a.id].timeOver=this.game.time.now,this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!1),this.sprite.events.onInputOver.dispatch(this.sprite,a))},_pointerOutHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver=!1,this._pointerData[a.id].isOut=!0,this._pointerData[a.id].timeOut=this.game.time.now,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut.dispatch(this.sprite,a))},_touchedHandler:function(a){if(null!==this.sprite){if(this._pointerData[a.id].isDown===!1&&this._pointerData[a.id].isOver===!0){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;this._pointerData[a.id].isDown=!0,this._pointerData[a.id].isUp=!1,this._pointerData[a.id].timeDown=this.game.time.now,this.sprite.events.onInputDown.dispatch(this.sprite,a),this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isDown&&a.isUp&&(this._pointerData[a.id].isDown=!1,this._pointerData[a.id].isUp=!0,this._pointerData[a.id].timeUp=this.game.time.now,this._pointerData[a.id].downDuration=this._pointerData[a.id].timeUp-this._pointerData[a.id].timeDown,this.checkPointerOver(a)?this.sprite.events.onInputUp.dispatch(this.sprite,a,!0):(this.sprite.events.onInputUp.dispatch(this.sprite,a,!1),this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1)),this.draggable&&this.isDragged&&this._draggedPointerID==a.id&&this.stopDrag(a))},updateDrag:function(a){return a.isUp?(this.stopDrag(a),!1):(this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=a.x+this._dragPoint.x+this.dragOffset.x),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=a.y+this._dragPoint.y+this.dragOffset.y),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)):(this.allowHorizontalDrag&&(this.sprite.x=a.x+this._dragPoint.x+this.dragOffset.x),this.allowVerticalDrag&&(this.sprite.y=a.y+this._dragPoint.y+this.dragOffset.y),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),!0)},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1},startDrag:function(a){if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else if(this.dragFromCenter){var b=this.sprite.getBounds();this.sprite.x=a.x+(this.sprite.x-b.centerX),this.sprite.y=a.y+(this.sprite.y-b.centerY),this._dragPoint.setTo(this.sprite.x-a.x,this.sprite.y-a.y)}else this._dragPoint.setTo(this.sprite.x-a.x,this.sprite.y-a.y);this.updateDrag(a),this.bringToTop&&this.sprite.bringToTop(),this.sprite.events.onDragStart.dispatch(this.sprite,a)},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop.dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.xthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-this.sprite.width),this.sprite.ythis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-this.sprite.height))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.camerOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.camerOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.camerOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.camerOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.xthis.boundsSprite.x+this.boundsSprite.width&&(this.sprite.x=this.boundsSprite.x+this.boundsSprite.width-this.sprite.width),this.sprite.ythis.boundsSprite.y+this.boundsSprite.height&&(this.sprite.y=this.boundsSprite.y+this.boundsSprite.height-this.sprite.height))}},b.InputHandler.prototype.constructor=b.InputHandler,b.Events=function(a){this.parent=a,this.onAddedToGroup=new b.Signal,this.onRemovedFromGroup=new b.Signal,this.onKilled=new b.Signal,this.onRevived=new b.Signal,this.onOutOfBounds=new b.Signal,this.onEnterBounds=new b.Signal,this.onInputOver=null,this.onInputOut=null,this.onInputDown=null,this.onInputUp=null,this.onDragStart=null,this.onDragStop=null,this.onAnimationStart=null,this.onAnimationComplete=null,this.onAnimationLoop=null},b.Events.prototype={destroy:function(){this.parent=null,this.onAddedToGroup.dispose(),this.onRemovedFromGroup.dispose(),this.onKilled.dispose(),this.onRevived.dispose(),this.onOutOfBounds.dispose(),this.onInputOver&&(this.onInputOver.dispose(),this.onInputOut.dispose(),this.onInputDown.dispose(),this.onInputUp.dispose(),this.onDragStart.dispose(),this.onDragStop.dispose()),this.onAnimationStart&&(this.onAnimationStart.dispose(),this.onAnimationComplete.dispose(),this.onAnimationLoop.dispose())}},b.Events.prototype.constructor=b.Events,b.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},b.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Image(this.game,a,c,d,e))},sprite:function(a,b,c,d,e){return"undefined"==typeof e&&(e=this.world),e.create(a,b,c,d)},tween:function(a){return this.game.tweens.create(a)},group:function(a,c,d,e,f){return new b.Group(this.game,a,c,d,e,f)},physicsGroup:function(a,c,d,e){return new b.Group(this.game,c,d,e,!0,a)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g,h){return"undefined"==typeof h&&(h=this.world),h.add(new b.TileSprite(this.game,a,c,d,e,f,g))},text:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Text(this.game,a,c,d,e))},button:function(a,c,d,e,f,g,h,i,j,k){return"undefined"==typeof k&&(k=this.world),k.add(new b.Button(this.game,a,c,d,e,f,g,h,i,j))},graphics:function(a,c,d){return"undefined"==typeof d&&(d=this.world),d.add(new b.Graphics(this.game,a,c))},emitter:function(a,c,d){return this.game.particles.add(new b.Particles.Arcade.Emitter(this.game,a,c,d))},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.BitmapText(this.game,a,c,d,e,f))},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectFactory.prototype.constructor=b.GameObjectFactory,b.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},b.GameObjectCreator.prototype={image:function(a,c,d,e){return new b.Image(this.game,a,c,d,e)},sprite:function(a,c,d,e){return new b.Sprite(this.game,a,c,d,e)},tween:function(a){return new b.Tween(a,this.game)},group:function(a,c,d,e,f){return new b.Group(this.game,null,c,d,e,f)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g){return new b.TileSprite(this.game,a,c,d,e,f,g)},text:function(a,c,d,e){return new b.Text(this.game,a,c,d,e)},button:function(a,c,d,e,f,g,h,i,j){return new b.Button(this.game,a,c,d,e,f,g,h,i,j)},graphics:function(a,c){return new b.Graphics(this.game,a,c)},emitter:function(a,c,d){return new b.Particles.Arcade.Emitter(this.game,a,c,d)},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f){return new b.BitmapText(this.game,a,c,d,e,f)},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectCreator.prototype.constructor=b.GameObjectCreator,b.BitmapData=function(a,c,d,e){"undefined"==typeof d&&(d=100),"undefined"==typeof e&&(e=100),this.game=a,this.key=c,this.width=d,this.height=e,this.canvas=b.Canvas.create(d,e,"",!0),this.context=this.canvas.getContext("2d"),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.pixels=this.imageData.data.buffer?this.imageData.data.buffer:this.imageData.data,this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,d,e,"bitmapData",a.rnd.uuid()),this.type=b.BITMAPDATA,this.dirty=!1},b.BitmapData.prototype={add:function(a){if(Array.isArray(a))for(var b=0;b=0&&a<=this.width&&b>=0&&b<=this.height&&(this.pixels[b*this.width+a]=f<<24|e<<16|d<<8|c,this.context.putImageData(this.imageData,0,0),this.dirty=!0)},setPixel:function(a,b,c,d,e){this.setPixel32(a,b,c,d,e,255)},getPixel:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.data32[b*this.width+a]:void 0},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.data32[b*this.width+a]:void 0 },getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},copyPixels:function(a,b,c,d){"string"==typeof a&&(a=this.game.cache.getImage(a)),a&&this.context.drawImage(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height)},draw:function(a,b,c){"string"==typeof a&&(a=this.game.cache.getImage(a)),a&&this.context.drawImage(a,0,0,a.width,a.height,b,c,a.width,a.height)},alphaMask:function(a,b){var c=this.context.globalCompositeOperation;"string"==typeof b&&(b=this.game.cache.getImage(b)),b&&this.context.drawImage(b,0,0),this.context.globalCompositeOperation="source-atop","string"==typeof a&&(a=this.game.cache.getImage(a)),a&&this.context.drawImage(a,0,0),this.context.globalCompositeOperation=c},render:function(){this.game.renderType===b.WEBGL&&this.dirty&&(PIXI.updateWebGLTexture(this.baseTexture,this.game.renderer.gl),this.dirty=!1)}},b.BitmapData.prototype.constructor=b.BitmapData,b.Sprite=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.SPRITE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,this._frame=0,this._frameName="",PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.loadTexture(e,f),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.body=null,this.health=1,this.lifespan=0,this.checkWorldBounds=!1,this.outOfBoundsKill=!1,this.debug=!1,this.cameraOffset=new b.Point,this._cache=[0,0,0,0,1,0,1,0],this._bounds=new b.Rectangle},b.Sprite.prototype=Object.create(PIXI.Sprite.prototype),b.Sprite.prototype.constructor=b.Sprite,b.Sprite.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;if(this.lifespan>0&&(this.lifespan-=this.game.time.elapsed,this.lifespan<=0))return this.kill(),!1;if((this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds)if(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds))this._cache[5]=0,this.events.onEnterBounds.dispatch(this);else if(0===this._cache[5]&&!this.game.world.bounds.intersects(this._bounds)&&(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this),this.outOfBoundsKill))return this.kill(),!1;this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Sprite.prototype.update=function(){},b.Sprite.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Sprite.prototype.loadTexture=function(a,c){return c=c||0,a instanceof b.RenderTexture?(this.key=a.key,void this.setTexture(a)):a instanceof b.BitmapData?(this.key=a,void this.setTexture(a.texture)):a instanceof PIXI.Texture?(this.key=a,void this.setTexture(a)):null===a||"undefined"==typeof a?(this.key="__default",void this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?this.game.cache.isSpriteSheet(a)?(this.key=a,this.animations.loadFrameData(this.game.cache.getFrameData(a)),"string"==typeof c?this.frameName=c:this.frame=c,void 0):(this.key=a,void this.setTexture(PIXI.TextureCache[a])):(this.key="__missing",void this.setTexture(PIXI.TextureCache[this.key]))},b.Sprite.prototype.crop=function(a){if("undefined"==typeof a||null===a)this.texture.hasOwnProperty("sourceWidth")&&this.texture.setFrame(new b.Rectangle(0,0,this.texture.sourceWidth,this.texture.sourceHeight));else if(this.texture instanceof PIXI.Texture){var c={};b.Utils.extend(!0,c,this.texture),c.sourceWidth=c.width,c.sourceHeight=c.height,c.frame=a,c.width=a.width,c.height=a.height,this.texture=c,this.texture.updateFrame=!0,PIXI.Texture.frameUpdates.push(this.texture)}else this.texture.setFrame(a)},b.Sprite.prototype.revive=function(a){return"undefined"==typeof a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,this.health=a,this.events&&this.events.onRevived.dispatch(this),this},b.Sprite.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Sprite.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.input&&this.input.destroy(),this.animations&&this.animations.destroy(),this.body&&this.body.destroy(),this.events&&this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.Sprite.prototype.damage=function(a){return this.alive&&(this.health-=a,this.health<=0&&this.kill()),this},b.Sprite.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},b.Sprite.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},b.Sprite.prototype.play=function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0},b.Sprite.prototype.overlap=function(a){return b.Rectangle.intersects(this.getBounds(),a.getBounds())},Object.defineProperty(b.Sprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Sprite.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Sprite.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Sprite.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Sprite.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}}),Object.defineProperty(b.Sprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}),Object.defineProperty(b.Sprite.prototype,"renderOrderID",{get:function(){return this._cache[3]}}),Object.defineProperty(b.Sprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Sprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&this.body.removeFromWorld(),this.visible=!1)}}),Object.defineProperty(b.Sprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Sprite.prototype,"smoothed",{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}),Object.defineProperty(b.Sprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),b.Image=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.exists=!0,this.name="",this.type=b.IMAGE,this.z=0,this.events=new b.Events(this),this.key=e,this._frame=0,this._frameName="",PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.loadTexture(e,f),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.cameraOffset=new b.Point,this._cache=[0,0,0,0,1,0,1,0]},b.Image.prototype=Object.create(PIXI.Sprite.prototype),b.Image.prototype.constructor=b.Image,b.Image.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform[2],this.game.camera.y+this.worldTransform[5]),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Image.prototype.update=function(){},b.Image.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Image.prototype.loadTexture=function(a,c){if(c=c||0,a instanceof b.RenderTexture)return this.key=a.key,void this.setTexture(a);if(a instanceof b.BitmapData)return this.key=a,void this.setTexture(a.texture);if(a instanceof PIXI.Texture)return this.key=a,void this.setTexture(a);if(null===a||"undefined"==typeof a)return this.key="__default",void this.setTexture(PIXI.TextureCache[this.key]);if("string"==typeof a&&!this.game.cache.checkImageKey(a))return this.key="__missing",void this.setTexture(PIXI.TextureCache[this.key]);if(this.game.cache.isSpriteSheet(a)){this.key=a;var d=this.game.cache.getFrameData(a);return"string"==typeof c?(this._frame=0,this._frameName=c,void this.setTexture(PIXI.TextureCache[d.getFrameByName(c).uuid])):(this._frame=c,this._frameName="",void this.setTexture(PIXI.TextureCache[d.getFrame(c).uuid]))}return this.key=a,void this.setTexture(PIXI.TextureCache[a])},b.Image.prototype.crop=function(a){if("undefined"==typeof a||null===a)this.texture.hasOwnProperty("sourceWidth")&&this.texture.setFrame(new b.Rectangle(0,0,this.texture.sourceWidth,this.texture.sourceHeight));else if(this.texture instanceof PIXI.Texture){var c={};b.Utils.extend(!0,c,this.texture),c.sourceWidth=c.width,c.sourceHeight=c.height,c.frame=a,c.width=a.width,c.height=a.height,this.texture=c,this.texture.updateFrame=!0,PIXI.Texture.frameUpdates.push(this.texture)}else this.texture.setFrame(a)},b.Image.prototype.revive=function(){return this.alive=!0,this.exists=!0,this.visible=!0,this.events&&this.events.onRevived.dispatch(this),this},b.Image.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Image.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.events&&this.events.destroy(),this.input&&this.input.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.Image.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this},b.Image.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},Object.defineProperty(b.Image.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Image.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Image.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Image.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Image.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"frame",{get:function(){return this._frame},set:function(a){if(a!==this.frame&&this.game.cache.isSpriteSheet(this.key)){var b=this.game.cache.getFrameData(this.key);b&&aa;a++)this.children[a].preUpdate();return!0},b.TileSprite.prototype.update=function(){},b.TileSprite.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},b.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},b.TileSprite.prototype.loadTexture=function(a,c){return c=c||0,a instanceof b.RenderTexture?(this.key=a.key,void this.setTexture(a)):a instanceof b.BitmapData?(this.key=a,void this.setTexture(a.texture)):a instanceof PIXI.Texture?(this.key=a,void this.setTexture(a)):null===a||"undefined"==typeof a?(this.key="__default",void this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?this.game.cache.isSpriteSheet(a)?(this.key=a,this.animations.loadFrameData(this.game.cache.getFrameData(a)),"string"==typeof c?this.frameName=c:this.frame=c,void 0):(this.key=a,void this.setTexture(PIXI.TextureCache[a])):(this.key="__missing",void this.setTexture(PIXI.TextureCache[this.key]))},b.TileSprite.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.TileSprite.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.TileSprite.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.TileSprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.TileSprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.TileSprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.TileSprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.TileSprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.TileSprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.TileSprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),b.Text=function(a,c,d,e,f){c=c||0,d=d||0,e=e||" ",f=f||{},e=0===e.length?" ":e.toString(),this.game=a,this.exists=!0,this.name="",this.type=b.TEXT,this.z=0,this.world=new b.Point(c,d),this._text=e,this._font="",this._fontSize=32,this._fontWeight="normal",this._lineSpacing=0,this.events=new b.Events(this),this.input=null,this.cameraOffset=new b.Point,this.setStyle(f),PIXI.Text.call(this,e,this.style),this.position.set(c,d),this._cache=[0,0,0,0,1,0,1,0]},b.Text.prototype=Object.create(PIXI.Text.prototype),b.Text.prototype.constructor=b.Text,b.Text.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform[2],this.game.camera.y+this.worldTransform[5]),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.runWordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=0;ee?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.resize=function(a,b){if(this.width=a,this.height=b,this.frame.width=this.width,this.frame.height=this.height,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.renderer.type===PIXI.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var c=this.renderer.gl;c.bindTexture(c.TEXTURE_2D,this.baseTexture._glTextures[c.id]),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,this.width,this.height,0,c.RGBA,c.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);PIXI.Texture.frameUpdates.push(this)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY),this.textureBuffer.clear();for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight),this.textureBuffer.clear(),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c,d){if("undefined"==typeof d&&(d=!1),a=a||256,b=b||256,d)var e=document.createElement("canvas");else var e=document.createElement(navigator.isCocoonJS?"screencanvas":"canvas");return"string"==typeof c&&""!==c&&(e.id=c),e.width=a,e.height=b,e.style.display="block",e},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.ejecta=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures(),this._checkOS()},b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0,this.typedArray=!0):(this.littleEndian=!1,this.typedArray=!1),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(this.vibration=!0)},_checkCSS3D:function(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),this.css3D=void 0!==a&&a.length>0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},nearestAngleBetween:function(a,b,c){"undefined"==typeof c&&(c=!0);var d=c?Math.PI:180;return a=this.normalizeAngle(a,c),b=this.normalizeAngle(b,c),-d/2>a&&b>d/2&&(a+=2*d),-d/2>b&&a>d/2&&(b+=2*d),b-a},interpolateAngles:function(a,b,c,d,e){return"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=null),a=this.normalizeAngle(a,d),b=this.normalizeAngleToAnother(b,a,d),"function"==typeof e?e(c,a,b-a,1):this.interpolateFloat(a,b,c)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},maxAdd:function(a,b,c){return a+=b,a>c&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*(3-2*a))},smootherstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*a*(a*(6*a-15)+10))},sign:function(a){return 0>a?-1:a>0?1:0},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.round(this.realInRange(a,b))},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this.reset(a,b,c,d,e,f,g) -},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.level++,this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){var b=this.objects,c=this.getIndex(a.body);return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;aa;)this._tweens[a].update(this.game.time.now)?a++:(this._tweens.splice(a,1),b--);return this._add.length>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Linear.None,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1;var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):("string"==typeof l&&(l=k+parseFloat(l,10)),"number"==typeof l&&(j[c]=k+(l-k)*i))}g.push(j),d+=f}if(this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g,this._reversed=!this._reversed}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Time=function(a){this.game=a,this.time=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;a0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},update:function(a){if(this.paused)return!0;for(this._now=a,this._len=this.events.length,this._i=0;this._i=this.nextTick&&this._len>0){for(this._i=0;this._i=this.events[this._i].tick;){var b=this._now-this.events[this._i].tick,c=this._now+this.events[this._i].delay-b;0>c&&(c=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=c,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=c,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args),this.events.splice(this._i,1),this._len--),this._i++}this.events.length>0?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0,this._codePaused=!0)},_pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0)},resume:function(){if(this.running&&!this.expired){var a=this.game.time.now-this._pauseStarted;this._pauseTotal+=a;for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this._now-this._started-this._pauseTotal}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return.001*this.ms}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a){this._frameData=a,this.frame=0,this.isLoaded=!0},add:function(a,c,d,e,f){return null==this._frameData?void console.warn("No FrameData available for Phaser.Animation "+a):(c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null==this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1),this._anims[a])},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a]){if(this.currentAnim!=this._anims[a])return this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentAnim.play(b,c,d);if(this.currentAnim.isPlaying===!1)return this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)}},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData?this._frameData.total:-1}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart.dispatch(this._parent,this)},stop:function(a,b){"undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,a&&(this.currentFrame=this._frameData.getFrame(this._frames[0])),b&&(this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this))},onPause:function(){this.isPlaying&&(this._frameDiff=this._timeNextFrame-this.game.time.now)},onResume:function(){this.isPlaying&&(this._timeNextFrame=this.game.time.now+this._frameDiff)},update:function(){return this.isPaused?!1:this.isPlaying===!0&&this.game.time.now>=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete():(this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1))),!0):!1},destroy:function(){this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.destroy(),this.onLoop.destroy(),this.onComplete.destroy(),this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this)},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.width=b,this.height=c,this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},getFrameRange:function(a,b,c){"undefined"==typeof c&&(c=[]);for(var d=a;b>=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.onLoadComplete.dispatch()))},loadFile:function(){if(!this._fileList[this._fileIndex])return void console.warn("Phaser.Loader loadFile invalid index "+this._fileIndex);var a=this._fileList[this._fileIndex],c=this;switch(a.type){case"image":case"spritesheet":case"textureatlas":case"bitmapfont":a.data=new Image,a.data.name=a.key,a.data.onload=function(){return c.fileComplete(c._fileIndex)},a.data.onerror=function(){return c.fileError(c._fileIndex)},this.crossOrigin&&(a.data.crossOrigin=this.crossOrigin),a.data.src=this.baseURL+a.url;break;case"audio":a.url=this.getAudioURL(a.url),null!==a.url?this.game.sound.usingWebAudio?(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()):this.game.sound.usingAudioTag&&(this.game.sound.touchLocked?(a.data=new Audio,a.data.name=a.key,a.data.preload="auto",a.data.src=this.baseURL+a.url,this.fileComplete(this._fileIndex)):(a.data=new Audio,a.data.name=a.key,a.data.onerror=function(){return c.fileError(c._fileIndex)},a.data.preload="auto",a.data.src=this.baseURL+a.url,a.data.addEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete(this._fileIndex),!1),a.data.load())):this.fileError(this._fileIndex);break;case"json":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)},this._xhr.send();break;case"tilemap":if(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",a.format===b.Tilemap.TILED_JSON)this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)};else{if(a.format!==b.Tilemap.CSV)throw new Error("Phaser.Loader. Invalid Tilemap format: "+a.format);this._xhr.onload=function(){return c.csvLoadComplete(c._fileIndex)}}this._xhr.onerror=function(){return c.dataLoadError(c._fileIndex)},this._xhr.send();break;case"text":case"script":case"physics":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send();break;case"binary":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()}},getAudioURL:function(a){var b;"string"==typeof a&&(a=[a]);for(var c=0;c100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?(this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect)):(this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect))),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying!==!0||e!==!1||this.override!==!1){if(this.isPlaying&&this.override&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return void console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist");this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null==this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0}},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.stop(),this.isPlaying=!1,this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this))},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){this.isPlaying&&this._sound&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.isPlaying=!1;var a=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.onStop.dispatch(this,a)},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a&&this.game.sound.remove(this),this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose()}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32 -},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a255)return b.Color.getColor(255,255,255);if(a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a}},getWebRGB:function(a){var b=(a>>>24)/255,c=a>>16&255,d=a>>8&255,e=255&a;return"rgba("+c.toString()+","+d.toString()+","+e.toString()+","+b.toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=5,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else{if(a===b.Physics.BOX2D&&null===this.box2d)throw new Error("The Box2D physics system has not been implemented yet.");if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")}},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja&&this.ninja.enableAABB(a)},preUpdate:function(){this.p2&&this.p2.preUpdate()},update:function(){this.p2&&this.p2.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.arcade=null,this.ninja=null,this.p2=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length)for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateTile:function(a,b,c){if(!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0 -},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1},postUpdate:function(){this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){c=c||this.offset.x,d=d||this.offset.y,this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof c&&(c=!0),d=d||"rgba(0,255,0,0.4)",c?(a.fillStyle=d,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=d,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.width=1,this.height=1,this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)"object"==typeof a&&(h=this.game.rnd.pick(a)),"object"==typeof b&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):this.minParticleScale!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.width=a,this.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;c=a}if("string"==typeof a&&(a=this.getTilesetIndex(a)),this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i=[],j=0;d>j;j++){h=[];for(var k=0;c>k;k++)h.push(null);i.push(h)}var l={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:i};this.layers.push(l),this.currentLayer=this.layers.length-1;var m=l.widthInPixels,n=l.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var i=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return i.name=a,g.add(i)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hd;d++)this.setCollisionByIndex(a[d],b,c,!1);this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d){if("undefined"==typeof c&&(c=!0),d=this.getLayer(d),!(a>b)){for(var e=a;b>=e;e++)this.setCollisionByIndex(e,c,d,!1);this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c){"undefined"==typeof b&&(b=!0),c=this.getLayer(c);for(var d=0,e=this.tiles.length;e>d;d++)-1===a.indexOf(d)&&this.setCollisionByIndex(d,b,c,!1);this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b=0&&a=0&&b=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},getTile:function(a,b,c){return c=this.getLayer(c),a>=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gthis.layer.width&&(this._mc.maxX=this.layer.width),this._mc.maxY>this.layer.height&&(this._mc.maxY=this.layer.height)),this.dirty=!0},b.TilemapLayer.prototype.render=function(){if(this.layer.dirty&&(this.dirty=!0),this.dirty&&this.visible){this._mc.prevX=this._mc.dx,this._mc.prevY=this._mc.dy,this._mc.dx=-(this._mc.x-this._mc.startX*this.map.tileWidth),this._mc.dy=-(this._mc.y-this._mc.startY*this.map.tileHeight),this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.fillStyle=this.tileColor;var a,c;this.debug&&(this.context.globalAlpha=this.debugAlpha); +}}),Object.defineProperty(b.BitmapText.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.BitmapText.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.Button=function(a,c,d,e,f,g,h,i,j,k){c=c||0,d=d||0,e=e||null,f=f||null,g=g||this,b.Image.call(this,a,c,d,e,i),this.type=b.BUTTON,this._onOverFrameName=null,this._onOutFrameName=null,this._onDownFrameName=null,this._onUpFrameName=null,this._onOverFrameID=null,this._onOutFrameID=null,this._onDownFrameID=null,this._onUpFrameID=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new b.Signal,this.onInputOut=new b.Signal,this.onInputDown=new b.Signal,this.onInputUp=new b.Signal,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this)},b.Button.prototype=Object.create(b.Image.prototype),b.Button.prototype.constructor=b.Button,b.Button.prototype.clearFrames=function(){this._onOverFrameName=null,this._onOverFrameID=null,this._onOutFrameName=null,this._onOutFrameID=null,this._onDownFrameName=null,this._onDownFrameID=null,this._onUpFrameName=null,this._onUpFrameID=null},b.Button.prototype.setFrames=function(a,b,c,d){this.clearFrames(),null!==a&&("string"==typeof a?(this._onOverFrameName=a,this.input.pointerOver()&&(this.frameName=a)):(this._onOverFrameID=a,this.input.pointerOver()&&(this.frame=a))),null!==b&&("string"==typeof b?(this._onOutFrameName=b,this.input.pointerOver()===!1&&(this.frameName=b)):(this._onOutFrameID=b,this.input.pointerOver()===!1&&(this.frame=b))),null!==c&&("string"==typeof c?(this._onDownFrameName=c,this.input.pointerDown()&&(this.frameName=c)):(this._onDownFrameID=c,this.input.pointerDown()&&(this.frame=c))),null!==d&&("string"==typeof d?(this._onUpFrameName=d,this.input.pointerUp()&&(this.frameName=d)):(this._onUpFrameID=d,this.input.pointerUp()&&(this.frame=d)))},b.Button.prototype.setSounds=function(a,b,c,d,e,f,g,h){this.setOverSound(a,b),this.setOutSound(e,f),this.setDownSound(c,d),this.setUpSound(g,h)},b.Button.prototype.setOverSound=function(a,c){this.onOverSound=null,this.onOverSoundMarker="",a instanceof b.Sound&&(this.onOverSound=a),"string"==typeof c&&(this.onOverSoundMarker=c)},b.Button.prototype.setOutSound=function(a,c){this.onOutSound=null,this.onOutSoundMarker="",a instanceof b.Sound&&(this.onOutSound=a),"string"==typeof c&&(this.onOutSoundMarker=c)},b.Button.prototype.setDownSound=function(a,c){this.onDownSound=null,this.onDownSoundMarker="",a instanceof b.Sound&&(this.onDownSound=a),"string"==typeof c&&(this.onDownSoundMarker=c)},b.Button.prototype.setUpSound=function(a,c){this.onUpSound=null,this.onUpSoundMarker="",a instanceof b.Sound&&(this.onUpSound=a),"string"==typeof c&&(this.onUpSoundMarker=c)},b.Button.prototype.onInputOverHandler=function(a,b){this.freezeFrames===!1&&this.setState(1),this.onOverSound&&this.onOverSound.play(this.onOverSoundMarker),this.onInputOver&&this.onInputOver.dispatch(this,b)},b.Button.prototype.onInputOutHandler=function(a,b){this.freezeFrames===!1&&this.setState(2),this.onOutSound&&this.onOutSound.play(this.onOutSoundMarker),this.onInputOut&&this.onInputOut.dispatch(this,b)},b.Button.prototype.onInputDownHandler=function(a,b){this.freezeFrames===!1&&this.setState(3),this.onDownSound&&this.onDownSound.play(this.onDownSoundMarker),this.onInputDown&&this.onInputDown.dispatch(this,b)},b.Button.prototype.onInputUpHandler=function(a,b,c){this.onUpSound&&this.onUpSound.play(this.onUpSoundMarker),this.onInputUp&&this.onInputUp.dispatch(this,b,c),this.freezeFrames||this.setState(this.forceOut?2:null!==this._onUpFrameName||null!==this._onUpFrameID?4:c?1:2)},b.Button.prototype.setState=function(a){1===a?null!=this._onOverFrameName?this.frameName=this._onOverFrameName:null!=this._onOverFrameID&&(this.frame=this._onOverFrameID):2===a?null!=this._onOutFrameName?this.frameName=this._onOutFrameName:null!=this._onOutFrameID&&(this.frame=this._onOutFrameID):3===a?null!=this._onDownFrameName?this.frameName=this._onDownFrameName:null!=this._onDownFrameID&&(this.frame=this._onDownFrameID):4===a&&(null!=this._onUpFrameName?this.frameName=this._onUpFrameName:null!=this._onUpFrameID&&(this.frame=this._onUpFrameID))},b.Graphics=function(a,c,d){c=c||0,d=d||0,this.game=a,this.exists=!0,this.name="",this.type=b.GRAPHICS,this.z=0,this.world=new b.Point(c,d),this.cameraOffset=new b.Point,PIXI.Graphics.call(this),this.position.set(c,d),this._cache=[0,0,0,0,1,0,1,0]},b.Graphics.prototype=Object.create(PIXI.Graphics.prototype),b.Graphics.prototype.constructor=b.Graphics,b.Graphics.prototype.preUpdate=function(){return this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.exists&&this.parent.exists?(this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform[2],this.game.camera.y+this.worldTransform[5]),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),!0):(this.renderOrderID=-1,!1)},b.Graphics.prototype.update=function(){},b.Graphics.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.Graphics.prototype.destroy=function(a){"undefined"==typeof a&&(a=!0),this.clear(),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this));var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.game=null},b.Graphics.prototype.drawPolygon=function(a){this.moveTo(a.points[0].x,a.points[0].y);for(var b=1;b?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.resize=function(a,b){if(this.width=a,this.height=b,this.frame.width=this.width,this.frame.height=this.height,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.renderer.type===PIXI.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var c=this.renderer.gl;c.bindTexture(c.TEXTURE_2D,this.baseTexture._glTextures[c.id]),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,this.width,this.height,0,c.RGBA,c.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);PIXI.Texture.frameUpdates.push(this)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY),this.textureBuffer.clear();for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight),this.textureBuffer.clear(),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c,d){if("undefined"==typeof d&&(d=!1),a=a||256,b=b||256,d)var e=document.createElement("canvas");else var e=document.createElement(navigator.isCocoonJS?"screencanvas":"canvas");return"string"==typeof c&&""!==c&&(e.id=c),e.width=a,e.height=b,e.style.display="block",e},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures(),this._checkOS()},b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0,this.typedArray=!0):(this.littleEndian=!1,this.typedArray=!1),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(this.vibration=!0)},_checkCSS3D:function(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),this.css3D=void 0!==a&&a.length>0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},nearestAngleBetween:function(a,b,c){"undefined"==typeof c&&(c=!0);var d=c?Math.PI:180;return a=this.normalizeAngle(a,c),b=this.normalizeAngle(b,c),-d/2>a&&b>d/2&&(a+=2*d),-d/2>b&&a>d/2&&(b+=2*d),b-a},interpolateAngles:function(a,b,c,d,e){return"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=null),a=this.normalizeAngle(a,d),b=this.normalizeAngleToAnother(b,a,d),"function"==typeof e?e(c,a,b-a,1):this.interpolateFloat(a,b,c)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},maxAdd:function(a,b,c){return a+=b,a>c&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*(3-2*a))},smootherstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*a*(a*(6*a-15)+10))},sign:function(a){return 0>a?-1:a>0?1:0},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.round(this.realInRange(a,b))},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this.reset(a,b,c,d,e,f,g) +},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.level++,this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){var b=this.objects,c=this.getIndex(a.body);return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;aa;)this._tweens[a].update(this.game.time.now)?a++:(this._tweens.splice(a,1),b--);return this._add.length>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Linear.None,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1;var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):("string"==typeof l&&(l=k+parseFloat(l,10)),"number"==typeof l&&(j[c]=k+(l-k)*i))}g.push(j),d+=f}if(this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g,this._reversed=!this._reversed}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Time=function(a){this.game=a,this.time=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;a0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this._now=a,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args),this.events[this._i].pendingDelete=!0),this._i++;this.events.length>0?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0,this._codePaused=!0)},_pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0)},resume:function(){if(this.running&&!this.expired){var a=this.game.time.now-this._pauseStarted;this._pauseTotal+=a;for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this._now-this._started-this._pauseTotal}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return.001*this.ms}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a){this._frameData=a,this.frame=0,this.isLoaded=!0},add:function(a,c,d,e,f){return null==this._frameData?void console.warn("No FrameData available for Phaser.Animation "+a):(c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null==this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1),this._anims[a])},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a]){if(this.currentAnim!==this._anims[a])return this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentAnim.play(b,c,d);if(this.currentAnim.isPlaying===!1)return this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)}},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData?this._frameData.total:-1}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart.dispatch(this._parent,this)},stop:function(a,b){"undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,a&&(this.currentFrame=this._frameData.getFrame(this._frames[0])),b&&(this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this))},onPause:function(){this.isPlaying&&(this._frameDiff=this._timeNextFrame-this.game.time.now)},onResume:function(){this.isPlaying&&(this._timeNextFrame=this.game.time.now+this._frameDiff)},update:function(){return this.isPaused?!1:this.isPlaying===!0&&this.game.time.now>=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete():(this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1))),!0):!1},destroy:function(){this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this)},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.width=b,this.height=c,this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},getFrameRange:function(a,b,c){"undefined"==typeof c&&(c=[]);for(var d=a;b>=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.onLoadComplete.dispatch()))},loadFile:function(){if(!this._fileList[this._fileIndex])return void console.warn("Phaser.Loader loadFile invalid index "+this._fileIndex);var a=this._fileList[this._fileIndex],c=this;switch(this.onFileStart.dispatch(this.progress,a.key),a.type){case"image":case"spritesheet":case"textureatlas":case"bitmapfont":a.data=new Image,a.data.name=a.key,a.data.onload=function(){return c.fileComplete(c._fileIndex)},a.data.onerror=function(){return c.fileError(c._fileIndex)},this.crossOrigin&&(a.data.crossOrigin=this.crossOrigin),a.data.src=this.baseURL+a.url;break;case"audio":a.url=this.getAudioURL(a.url),null!==a.url?this.game.sound.usingWebAudio?(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()):this.game.sound.usingAudioTag&&(this.game.sound.touchLocked?(a.data=new Audio,a.data.name=a.key,a.data.preload="auto",a.data.src=this.baseURL+a.url,this.fileComplete(this._fileIndex)):(a.data=new Audio,a.data.name=a.key,a.data.onerror=function(){return c.fileError(c._fileIndex)},a.data.preload="auto",a.data.src=this.baseURL+a.url,a.data.addEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete(this._fileIndex),!1),a.data.load())):this.fileError(this._fileIndex);break;case"json":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)},this._xhr.send();break;case"tilemap":if(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",a.format===b.Tilemap.TILED_JSON)this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)};else{if(a.format!==b.Tilemap.CSV)throw new Error("Phaser.Loader. Invalid Tilemap format: "+a.format);this._xhr.onload=function(){return c.csvLoadComplete(c._fileIndex)}}this._xhr.onerror=function(){return c.dataLoadError(c._fileIndex)},this._xhr.send();break;case"text":case"script":case"physics":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send();break;case"binary":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()}},getAudioURL:function(a){var b;"string"==typeof a&&(a=[a]);for(var c=0;c100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?(this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect)):(this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect))),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying!==!0||e!==!1||this.override!==!1){if(this.isPlaying&&this.override&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return void console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist");this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null==this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0}},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.stop(),this.isPlaying=!1,this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this))},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){this.isPlaying&&this._sound&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.isPlaying=!1;var a=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.onStop.dispatch(this,a)},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a&&this.game.sound.remove(this),this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose()}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a) +}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a255)return b.Color.getColor(255,255,255);if(a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a}},getWebRGB:function(a){var b=(a>>>24)/255,c=a>>16&255,d=a>>8&255,e=255&a;return"rgba("+c.toString()+","+d.toString()+","+e.toString()+","+b.toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=5,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else{if(a===b.Physics.BOX2D&&null===this.box2d)throw new Error("The Box2D physics system has not been implemented yet.");if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")}},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja&&this.ninja.enableAABB(a)},preUpdate:function(){this.p2&&this.p2.preUpdate()},update:function(){this.p2&&this.p2.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.arcade=null,this.ninja=null,this.p2=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length)for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateTile:function(a,b,c){if(!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0 +},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1},postUpdate:function(){2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){c=c||this.offset.x,d=d||this.offset.y,this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof c&&(c=!0),d=d||"rgba(0,255,0,0.4)",c?(a.fillStyle=d,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=d,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.width=1,this.height=1,this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)"object"==typeof a&&(h=this.game.rnd.pick(a)),"object"==typeof b&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):this.minParticleScale!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.width=a,this.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;c=a}if("string"==typeof a&&(a=this.getTilesetIndex(a)),this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i=[],j=0;d>j;j++){h=[];for(var k=0;c>k;k++)h.push(null);i.push(h)}var l={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:i};this.layers.push(l),this.currentLayer=this.layers.length-1;var m=l.widthInPixels,n=l.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var i=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return i.name=a,g.add(i)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hd;d++)this.setCollisionByIndex(a[d],b,c,!1);this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d){if("undefined"==typeof c&&(c=!0),d=this.getLayer(d),!(a>b)){for(var e=a;b>=e;e++)this.setCollisionByIndex(e,c,d,!1);this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c){"undefined"==typeof b&&(b=!0),c=this.getLayer(c);for(var d=0,e=this.tiles.length;e>d;d++)-1===a.indexOf(d)&&this.setCollisionByIndex(d,b,c,!1);this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b=0&&a=0&&b=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},getTile:function(a,b,c){return c=this.getLayer(c),a>=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gthis.layer.width&&(this._mc.maxX=this.layer.width),this._mc.maxY>this.layer.height&&(this._mc.maxY=this.layer.height)),this.dirty=!0},b.TilemapLayer.prototype.render=function(){if(this.layer.dirty&&(this.dirty=!0),this.dirty&&this.visible){this._mc.prevX=this._mc.dx,this._mc.prevY=this._mc.dy,this._mc.dx=-(this._mc.x-this._mc.startX*this.map.tileWidth),this._mc.dy=-(this._mc.y-this._mc.startY*this.map.tileHeight),this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.fillStyle=this.tileColor;var a,c;this.debug&&(this.context.globalAlpha=this.debugAlpha); for(var d=this._mc.startY,e=this._mc.startY+this._mc.maxY;e>d;d++){this._column=this.layer.data[d];for(var f=this._mc.startX,g=this._mc.startX+this._mc.maxX;g>f;f++)this._column[f]&&(a=this._column[f],c=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),c.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth;this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.game.renderType===b.WEBGL&&PIXI.updateWebGLTexture(this.baseTexture,this.game.renderer.gl),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){this._column=this.layer.data[a];for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=this._column[c];e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&a>=0&&this.layer.widthInPixels>this.width&&(this._mc.x=a,this._mc.x>this.layer.widthInPixels-this.width&&(this._mc.x=this.layer.widthInPixels-this.width),this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this._mc.startX<0&&(this._mc.startX=0),this._mc.startX+this._mc.maxX>this.layer.width&&(this._mc.startX=this.layer.width-this._mc.maxX),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&a>=0&&this.layer.heightInPixels>this.height&&(this._mc.y=a,this._mc.y>this.layer.heightInPixels-this.height&&(this._mc.y=this.layer.heightInPixels-this.height),this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this._mc.startY<0&&(this._mc.startY=0),this._mc.startY+this._mc.maxY>this.layer.height&&(this._mc.startY=this.layer.height-this._mc.maxY),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kj;j++)h.push(a.layers[e].data[j]>0?new b.Tile(f,a.layers[e].data[j],g,i.length,a.tilewidth,a.tileheight):null),g++,g===a.layers[e].width&&(i.push(h),g=0,h=[]);f.data=i,d.push(f)}c.layers=d;for(var l=[],e=0;es;s++)if(a.layers[e].objects[s].gid){var t={gid:a.layers[e].objects[s].gid,name:a.layers[e].objects[s].name,x:a.layers[e].objects[s].x,y:a.layers[e].objects[s].y,visible:a.layers[e].objects[s].visible,properties:a.layers[e].objects[s].properties};q[a.layers[e].name].push(t)}else if(a.layers[e].objects[s].polyline){var t={name:a.layers[e].objects[s].name,x:a.layers[e].objects[s].x,y:a.layers[e].objects[s].y,width:a.layers[e].objects[s].width,height:a.layers[e].objects[s].height,visible:a.layers[e].objects[s].visible,properties:a.layers[e].objects[s].properties};t.polyline=[];for(var u=0;u=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;e', - DEV_VERSION: '2.0.3', + DEV_VERSION: '2.0.4', GAMES: [], AUTO: 0, @@ -2463,7 +2463,7 @@ Object.defineProperty(Phaser.Line.prototype, "length", { Object.defineProperty(Phaser.Line.prototype, "angle", { get: function () { - return Math.atan2(this.end.x - this.start.x, this.end.y - this.start.y); + return Math.atan2(this.end.y - this.start.y, this.end.x - this.start.x); } }); @@ -3976,9 +3976,9 @@ Phaser.StateManager.prototype = { this._clearWorld = clearWorld; this._clearCache = clearCache; - if (arguments.length > 3) + if (arguments.length > 2) { - this._args = Array.prototype.splice.call(arguments, 3); + this._args = Array.prototype.splice.call(arguments, 2); } }, @@ -7327,7 +7327,7 @@ Phaser.Group.prototype.remove = function (child, destroy) { child.events.onRemovedFromGroup.dispatch(child, this); } - this.removeChild(child); + var removed = this.removeChild(child); this.updateZ(); @@ -7336,9 +7336,9 @@ Phaser.Group.prototype.remove = function (child, destroy) { this.next(); } - if (destroy) + if (destroy && removed) { - child.destroy(); + removed.destroy(); } return true; @@ -7368,11 +7368,11 @@ Phaser.Group.prototype.removeAll = function (destroy) { this.children[0].events.onRemovedFromGroup.dispatch(this.children[0], this); } - this.removeChild(this.children[0]); + var removed = this.removeChild(this.children[0]); - if (destroy) + if (destroy && removed) { - this.children[0].destroy(); + removed.destroy(); } } while (this.children.length > 0); @@ -7413,11 +7413,11 @@ Phaser.Group.prototype.removeBetween = function (startIndex, endIndex, destroy) this.children[i].events.onRemovedFromGroup.dispatch(this.children[i], this); } - this.removeChild(this.children[i]); + var removed = this.removeChild(this.children[i]); - if (destroy) + if (destroy && removed) { - this.children[i].destroy(); + removed.destroy(); } if (this.cursor === this.children[i]) @@ -7446,24 +7446,7 @@ Phaser.Group.prototype.destroy = function (destroyChildren, soft) { if (typeof destroyChildren === 'undefined') { destroyChildren = true; } if (typeof soft === 'undefined') { soft = false; } - if (destroyChildren) - { - if (this.children.length > 0) - { - do - { - if (this.children[0].parent) - { - this.children[0].destroy(destroyChildren); - } - } - while (this.children.length > 0); - } - } - else - { - this.removeAll(); - } + this.removeAll(destroyChildren); this.cursor = null; @@ -9654,6 +9637,12 @@ Phaser.Input = function (game) { */ // this.gestures = null; + /** + * @property {boolean} resetLocked - If the Input Manager has been reset locked then all calls made to InputManager.reset, such as from a State change, are ignored. + * @default + */ + this.resetLocked = false; + /** * @property {Phaser.Signal} onDown - A Signal that is dispatched each time a pointer is pressed down. */ @@ -9883,20 +9872,23 @@ Phaser.Input.prototype = { }, /** - * Reset all of the Pointers and Input states + * Reset all of the Pointers and Input states. The optional `hard` parameter will reset any events or callbacks that may be bound. + * Input.reset is called automatically during a State change or if a game loses focus / visibility. If you wish to control the reset + * directly yourself then set InputManager.resetLocked to `true`. + * * @method Phaser.Input#reset - * @param {boolean} hard - A soft reset (hard = false) won't reset any Signals that might be bound. A hard reset will. + * @param {boolean} [hard=false] - A soft reset won't reset any events or callbacks that are bound. A hard reset will. */ reset: function (hard) { - if (this.game.isBooted === false) + if (!this.game.isBooted || this.resetLocked) { return; } - if (typeof hard == 'undefined') { hard = false; } + if (typeof hard === 'undefined') { hard = false; } - this.keyboard.reset(); + this.keyboard.reset(hard); this.mousePointer.reset(); this.gamepad.reset(); @@ -9915,7 +9907,7 @@ Phaser.Input.prototype = { this.game.canvas.style.cursor = 'inherit'; } - if (hard === true) + if (hard) { this.onDown.dispose(); this.onUp.dispose(); @@ -10513,8 +10505,11 @@ Phaser.Key.prototype = { * associated with the onDown and onUp events and nulls the onHoldCallback if set. * * @method Phaser.Key#reset + * @param {boolean} [hard=true] - A soft reset won't reset any events or callbacks that are bound to this Key. A hard reset will. */ - reset: function () { + reset: function (hard) { + + if (typeof hard === 'undefined') { hard = true; } this.isDown = false; this.isUp = true; @@ -10522,10 +10517,13 @@ Phaser.Key.prototype = { this.duration = this.game.time.now - this.timeDown; this.enabled = true; - this.onDown.removeAll(); - this.onUp.removeAll(); - this.onHoldCallback = null; - this.onHoldContext = null; + if (hard) + { + this.onDown.removeAll(); + this.onUp.removeAll(); + this.onHoldCallback = null; + this.onHoldContext = null; + } }, @@ -10921,8 +10919,11 @@ Phaser.Keyboard.prototype = { * Resets all Keys. * * @method Phaser.Keyboard#reset + * @param {boolean} [hard=true] - A soft reset won't reset any events or callbacks that are bound to the Keys. A hard reset will. */ - reset: function () { + reset: function (hard) { + + if (typeof hard === 'undefined') { hard = true; } this.event = null; @@ -10932,7 +10933,7 @@ Phaser.Keyboard.prototype = { { if (this._keys[i]) { - this._keys[i].reset(); + this._keys[i].reset(hard); } } @@ -22644,11 +22645,17 @@ Phaser.Device = function (game) { this.cocoonJS = false; /** - * @property {boolean} ejecta - Is the game running under Ejecta? - * @default - */ + * @property {boolean} ejecta - Is the game running under Ejecta? + * @default + */ this.ejecta = false; + /** + * @property {boolean} crosswalk - Is the game running under the Intel Crosswalk XDK? + * @default + */ + this.crosswalk = false; + /** * @property {boolean} android - Is running on android? * @default @@ -23207,6 +23214,11 @@ Phaser.Device.prototype = { this.ejecta = true; } + if (/Crosswalk/.test(ua)) + { + this.crosswalk = true; + } + }, /** @@ -23899,7 +23911,7 @@ Phaser.Math = { * @return {number} */ angleBetween: function (x1, y1, x2, y2) { - return Math.atan2(x2 - x1, y2 - y1); + return Math.atan2(y2 - y1, x2 - x1); }, /** @@ -23910,7 +23922,7 @@ Phaser.Math = { * @return {number} */ angleBetweenPoints: function (point1, point2) { - return Math.atan2(point2.x - point1.x, point2.y - point1.y); + return Math.atan2(point2.y - point1.y, point2.x - point1.x); }, /** @@ -27692,6 +27704,18 @@ Phaser.Timer = function (game, autoDestroy) { */ this._i = 0; + /** + * @property {number} _diff - Internal cache var. + * @private + */ + this._diff = 0; + + /** + * @property {number} _newTick - Internal cache var. + * @private + */ + this._newTick = 0; + }; /** @@ -27761,6 +27785,7 @@ Phaser.Timer.prototype = { * Adds a new Event to this Timer. The event will fire after the given amount of 'delay' in milliseconds has passed, once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#add * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. * @param {function} callback - The callback that will be called when the Timer event occurs. @@ -27779,9 +27804,10 @@ Phaser.Timer.prototype = { * The event will fire after the given amount of 'delay' milliseconds has passed once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#repeat * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. - * @param {number} repeatCount - The number of times the event will repeat. + * @param {number} repeatCount - The number of times the event will repeat once is has finished playback. A repeatCount of 1 means it will repeat itself once, playing the event twice in total. * @param {function} callback - The callback that will be called when the Timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - The values to be sent to your callback function when it is called. @@ -27798,6 +27824,7 @@ Phaser.Timer.prototype = { * The event will fire after the given amount of 'delay' milliseconds has passed once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#loop * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. * @param {function} callback - The callback that will be called when the Timer event occurs. @@ -27908,6 +27935,28 @@ Phaser.Timer.prototype = { }, + /** + * Clears any events from the Timer which have pendingDelete set to true and then resets the private _len and _i values. + * + * @method Phaser.Timer#clearPendingEvents + */ + clearPendingEvents: function () { + + this._i = this.events.length; + + while (this._i--) + { + if (this.events[this._i].pendingDelete) + { + this.events.splice(this._i, 1); + } + } + + this._len = this.events.length; + this._i = 0; + + }, + /** * The main Timer update event, called automatically by the Game clock. * @method Phaser.Timer#update @@ -27924,55 +27973,38 @@ Phaser.Timer.prototype = { this._now = time; - this._len = this.events.length; - - this._i = 0; - - while (this._i < this._len) - { - if (this.events[this._i].pendingDelete) - { - this.events.splice(this._i, 1); - this._len--; - } - - this._i++; - } - - this._len = this.events.length; + // Clears events marked for deletion and resets _len and _i to 0. + this.clearPendingEvents(); if (this.running && this._now >= this.nextTick && this._len > 0) { - this._i = 0; - while (this._i < this._len && this.running) { if (this._now >= this.events[this._i].tick) { - var diff = this._now - this.events[this._i].tick; - var newTick = (this._now + this.events[this._i].delay) - diff; + // (now + delay) - (time difference from last tick to now) + this._newTick = (this._now + this.events[this._i].delay) - (this._now - this.events[this._i].tick); - if (newTick < 0) + if (this._newTick < 0) { - newTick = this._now + this.events[this._i].delay; + this._newTick = this._now + this.events[this._i].delay; } if (this.events[this._i].loop === true) { - this.events[this._i].tick = newTick; + this.events[this._i].tick = this._newTick; this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); } else if (this.events[this._i].repeatCount > 0) { this.events[this._i].repeatCount--; - this.events[this._i].tick = newTick; + this.events[this._i].tick = this._newTick; this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); } else { this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); - this.events.splice(this._i, 1); - this._len--; + this.events[this._i].pendingDelete = true; } this._i++; @@ -28461,7 +28493,7 @@ Phaser.AnimationManager.prototype = { if (this._anims[name]) { - if (this.currentAnim == this._anims[name]) + if (this.currentAnim === this._anims[name]) { if (this.currentAnim.isPlaying === false) { @@ -28471,6 +28503,11 @@ Phaser.AnimationManager.prototype = { } else { + if (this.currentAnim && this.currentAnim.isPlaying) + { + this.currentAnim.stop(); + } + this.currentAnim = this._anims[name]; this.currentAnim.paused = false; return this.currentAnim.play(frameRate, loop, killOnComplete); @@ -28572,12 +28609,23 @@ Phaser.AnimationManager.prototype = { }, /** - * Destroys all references this AnimationManager contains. Sets the _anims to a new object and nulls the current animation. + * Destroys all references this AnimationManager contains. + * Iterates through the list of animations stored in this manager and calls destroy on each of them. * * @method Phaser.AnimationManager#destroy */ destroy: function () { + var anim = null; + + for (var anim in this._anims) + { + if (this._anims.hasOwnProperty(anim)) + { + this._anims[anim].destroy(); + } + } + this._anims = {}; this._frameData = null; this._frameIndex = 0; @@ -28873,7 +28921,6 @@ Phaser.Animation.prototype = { * Plays this animation. * * @method Phaser.Animation#play - * @memberof Phaser.Animation * @param {number} [frameRate=null] - The framerate to play the animation at. The speed is given in frames per second. If not provided the previously set frameRate of the Animation is used. * @param {boolean} [loop=false] - Should the animation be looped after playback. If not provided the previously set loop value of the Animation is used. * @param {boolean} [killOnComplete=false] - If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. @@ -28930,7 +28977,6 @@ Phaser.Animation.prototype = { * Sets this animation back to the first frame and restarts the animation. * * @method Phaser.Animation#restart - * @memberof Phaser.Animation */ restart: function () { @@ -28955,7 +29001,6 @@ Phaser.Animation.prototype = { * If `dispatchComplete` is true it will dispatch the complete events, otherwise they'll be ignored. * * @method Phaser.Animation#stop - * @memberof Phaser.Animation * @param {boolean} [resetFrame=false] - If true after the animation stops the currentFrame value will be set to the first frame in this animation. * @param {boolean} [dispatchComplete=false] - Dispatch the Animation.onComplete and parent.onAnimationComplete events? */ @@ -28985,7 +29030,6 @@ Phaser.Animation.prototype = { * Called when the Game enters a paused state. * * @method Phaser.Animation#onPause - * @memberof Phaser.Animation */ onPause: function () { @@ -29000,7 +29044,6 @@ Phaser.Animation.prototype = { * Called when the Game resumes from a paused state. * * @method Phaser.Animation#onResume - * @memberof Phaser.Animation */ onResume: function () { @@ -29015,7 +29058,6 @@ Phaser.Animation.prototype = { * Updates this animation. Called automatically by the AnimationManager. * * @method Phaser.Animation#update - * @memberof Phaser.Animation */ update: function () { @@ -29100,7 +29142,6 @@ Phaser.Animation.prototype = { * Cleans up this animation ready for deletion. Nulls all values and references. * * @method Phaser.Animation#destroy - * @memberof Phaser.Animation */ destroy: function () { @@ -29111,9 +29152,9 @@ Phaser.Animation.prototype = { this.currentFrame = null; this.isPlaying = false; - this.onStart.destroy(); - this.onLoop.destroy(); - this.onComplete.destroy(); + this.onStart.dispose(); + this.onLoop.dispose(); + this.onComplete.dispose(); this.game.onPause.remove(this.onPause, this); this.game.onResume.remove(this.onResume, this); @@ -29125,7 +29166,6 @@ Phaser.Animation.prototype = { * Sets the isPlaying and isFinished states and dispatches the onAnimationComplete event if it exists on the parent and local onComplete event. * * @method Phaser.Animation#complete - * @memberof Phaser.Animation */ complete: function () { @@ -31359,22 +31399,27 @@ Phaser.Loader = function (game) { this.baseURL = ''; /** - * @property {Phaser.Signal} onFileComplete - Event signal. + * @property {Phaser.Signal} onLoadStart - This event is dispatched when the loading process starts, before the first file has been requested. */ - this.onFileComplete = new Phaser.Signal(); + this.onLoadStart = new Phaser.Signal(); /** - * @property {Phaser.Signal} onFileError - Event signal. + * @property {Phaser.Signal} onFileStart - This event is dispatched immediately before a file starts loading. It's possible the file may still error (404, etc) after this event is sent. */ - this.onFileError = new Phaser.Signal(); + this.onFileStart = new Phaser.Signal(); /** - * @property {Phaser.Signal} onLoadStart - Event signal. + * @property {Phaser.Signal} onFileComplete - This event is dispatched when a file completes loading successfully. */ - this.onLoadStart = new Phaser.Signal(); + this.onFileComplete = new Phaser.Signal(); /** - * @property {Phaser.Signal} onLoadComplete - Event signal. + * @property {Phaser.Signal} onFileError - This event is dispatched when a file errors as a result of the load request. + */ + this.onFileError = new Phaser.Signal(); + + /** + * @property {Phaser.Signal} onLoadComplete - This event is dispatched when the final file in the load queue has either loaded or failed. */ this.onLoadComplete = new Phaser.Signal(); @@ -32143,10 +32188,12 @@ Phaser.Loader.prototype = { console.warn('Phaser.Loader loadFile invalid index ' + this._fileIndex); return; } - + var file = this._fileList[this._fileIndex]; var _this = this; + this.onFileStart.dispatch(this.progress, file.key); + // Image or Data? switch (file.type) { @@ -37574,7 +37621,7 @@ Phaser.Physics.Arcade.Body = function (sprite) { this.tilePadding = new Phaser.Point(); /** - * @property {number} phaser - Is this Body in a preUpdate or postUpdate state? + * @property {number} phaser - Is this Body in a preUpdate (1) or postUpdate (2) state? */ this.phase = 0; @@ -37721,6 +37768,12 @@ Phaser.Physics.Arcade.Body.prototype = { */ postUpdate: function () { + // Only allow postUpdate to be called once per frame + if (this.phase === 2) + { + return; + } + this.phase = 2; if (this.deltaX() < 0) @@ -39270,8 +39323,8 @@ Phaser.Tile.prototype = { Phaser.Tile.prototype.constructor = Phaser.Tile; /** -* @name Phaser.Tile#canCollide -* @property {boolean} canCollide - True if this tile can collide or has a collision callback. +* @name Phaser.Tile#collides +* @property {boolean} collides - True if this tile can collide on any of its faces. * @readonly */ Object.defineProperty(Phaser.Tile.prototype, "collides", { @@ -39284,7 +39337,7 @@ Object.defineProperty(Phaser.Tile.prototype, "collides", { /** * @name Phaser.Tile#canCollide -* @property {boolean} canCollide - True if this tile can collide or has a collision callback. +* @property {boolean} canCollide - True if this tile can collide on any of its faces or has a collision callback set. * @readonly */ Object.defineProperty(Phaser.Tile.prototype, "canCollide", { diff --git a/build/custom/phaser-no-libs.min.js b/build/custom/phaser-no-libs.min.js index 943857ff20..00a5b5c072 100644 --- a/build/custom/phaser-no-libs.min.js +++ b/build/custom/phaser-no-libs.min.js @@ -1,12 +1,12 @@ -/* Phaser (no libs) v2.0.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ -(function(){var a=this,b=b||{VERSION:"<%= version %>",DEV_VERSION:"2.0.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};PIXI.InteractionManager=function(){},b.Utils={parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},shuffle:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),b.Circle=function(a,b,c){a=a||0,b=b||0,c=c||0,this.x=a,this.y=b,this._diameter=c,this._radius=c>0?.5*c:0},b.Circle.prototype={circumference:function(){return 2*Math.PI*this._radius},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRound(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x==this.x&&a.y==this.y},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x==b.x&&a.y==b.y},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRound(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.rotate=function(a,c,d,e,f,g){return f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y))),a.setTo(c+g*Math.cos(e),d+g*Math.sin(e))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(this,a)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:this.y-a}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:this.x+a}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b<=a.right&&c>=a.y&&c<=a.bottom},b.Rectangle.containsRaw=function(a,b,c,d,e,f){return e>=a&&a+c>=e&&f>=b&&b+d>=f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.right<=b.right&&a.bottom<=b.bottom},b.Rectangle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.width==b.width&&a.height==b.height},b.Rectangle.intersection=function(a,c,d){return"undefined"==typeof d&&(d=new b.Rectangle),b.Rectangle.intersects(a,c)&&(d.x=Math.max(a.x,c.x),d.y=Math.max(a.y,c.y),d.width=Math.min(a.right,c.right)-d.x,d.height=Math.min(a.bottom,c.bottom)-d.y),d},b.Rectangle.intersects=function(a,b){return a.width<=0||a.height<=0||b.width<=0||b.height<=0?!1:!(a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||e=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.x-this.start.x,this.end.y-this.start.y)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){if(Math.pow(g.x-c.x+(g.y-c.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-a.x+(g.y-a.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-e.x+(g.y-e.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null;if(Math.pow(g.x-d.x+(g.y-d.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this.points=a},b.Polygon.prototype={clone:function(){for(var a=[],c=0;cb!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!0)}return c}},b.Polygon.prototype.constructor=b.Polygon,PIXI.Polygon=b.Polygon,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this.displayObject=null,this.scale=null},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this.deadzone?(this._edge=this.target.x-this.deadzone.x,this.view.x>this._edge&&(this.view.x=this._edge),this._edge=this.target.x+this.target.width-this.deadzone.x-this.deadzone.width,this.view.xthis._edge&&(this.view.y=this._edge),this._edge=this.target.y+this.target.height-this.deadzone.y-this.deadzone.height,this.view.y=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height),this.view.floor()},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},paused:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&("string"==typeof this._pendingState?this.start(this._pendingState,!1,!1):this.add("default",this._pendingState,!0))},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3))},dummy:function(){},preUpdate:function(){this._pendingState&&this.game.isBooted&&(this.current&&(this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy())),this.setCurrentState(this._pendingState),this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()?this.loadComplete():this.game.load.start()):this.loadComplete(),this.current===this._pendingState&&(this._pendingState=null))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),this._args=[]},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null==this.first&&null==this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},remove:function(a){a==this.first?this.first=this.first.next:a==this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null==this.first&&(this.last=null),this.total--},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.Signal=function(){this._bindings=[],this._prevParams=null;var a=this;this.dispatch=function(){b.Signal.prototype.dispatch.apply(a,arguments)}},b.Signal.prototype={memorize:!1,_shouldPropagate:!0,active:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,c,d,e){var f,g=this._indexOfListener(a,d);if(-1!==g){if(f=this._bindings[g],f.isOnce()!==c)throw new Error("You cannot add"+(c?"":"Once")+"() then add"+(c?"Once":"")+"() the same listener without removing the relationship first.")}else f=new b.SignalBinding(this,a,c,d,e),this._addBinding(f);return this.memorize&&this._prevParams&&f.execute(this._prevParams),f},_addBinding:function(a){var b=this._bindings.length;do--b;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){return this.validateListener(a,"add"),this._registerListener(a,!1,b,c)},addOnce:function(a,b,c){return this.validateListener(a,"addOnce"),this._registerListener(a,!0,b,c)},remove:function(a,b){this.validateListener(a,"remove");var c=this._indexOfListener(a,b);return-1!==c&&(this._bindings[c]._destroy(),this._bindings.splice(c,1)),a},removeAll:function(){for(var a=this._bindings.length;a--;)this._bindings[a]._destroy();this._bindings.length=0},getNumListeners:function(){return this._bindings.length},halt:function(){this._shouldPropagate=!1},dispatch:function(){if(this.active){var a,b=Array.prototype.slice.call(arguments),c=this._bindings.length;if(this.memorize&&(this._prevParams=b),c){a=this._bindings.slice(),this._shouldPropagate=!0;do c--;while(a[c]&&this._shouldPropagate&&a[c].execute(b)!==!1) -}}},forget:function(){this._prevParams=null},dispose:function(){this.removeAll(),delete this._bindings,delete this._prevParams},toString:function(){return"[Phaser.Signal active:"+this.active+" numListeners:"+this.getNumListeners()+"]"}},b.Signal.prototype.constructor=b.Signal,b.SignalBinding=function(a,b,c,d,e){this._listener=b,this._isOnce=c,this.context=d,this._signal=a,this._priority=e||0},b.SignalBinding.prototype={active:!0,params:null,execute:function(a){var b,c;return this.active&&this._listener&&(c=this.params?this.params.concat(a):a,b=this._listener.apply(this.context,c),this._isOnce&&this.detach()),b},detach:function(){return this.isBound()?this._signal.remove(this._listener,this.context):null},isBound:function(){return!!this._signal&&!!this._listener},isOnce:function(){return this._isOnce},getListener:function(){return this._listener},getSignal:function(){return this._signal},_destroy:function(){delete this._signal,delete this._listener,delete this.context},toString:function(){return"[Phaser.SignalBinding isOnce:"+this._isOnce+", isBound:"+this.isBound()+", active:"+this.active+"]"}},b.SignalBinding.prototype.constructor=b.SignalBinding,b.Filter=function(a,c,d){this.game=a,this.type=b.WEBGL_FILTER,this.passes=[this],this.shaders=[],this.dirty=!0,this.padding=0,this.uniforms={time:{type:"1f",value:0},resolution:{type:"2f",value:{x:256,y:256}},mouse:{type:"2f",value:{x:0,y:0}}},this.fragmentSrc=d||[]},b.Filter.prototype={init:function(){},setResolution:function(a,b){this.uniforms.resolution.value.x=a,this.uniforms.resolution.value.y=b},update:function(a){"undefined"!=typeof a&&(a.x>0&&(this.uniforms.mouse.x=a.x.toFixed(2)),a.y>0&&(this.uniforms.mouse.y=a.y.toFixed(2))),this.uniforms.time.value=this.game.time.totalElapsedSeconds()},destroy:function(){this.game=null}},b.Filter.prototype.constructor=b.Filter,Object.defineProperty(b.Filter.prototype,"width",{get:function(){return this.uniforms.resolution.value.x},set:function(a){this.uniforms.resolution.value.x=a}}),Object.defineProperty(b.Filter.prototype,"height",{get:function(){return this.uniforms.resolution.value.y},set:function(a){this.uniforms.resolution.value.y=a}}),b.Plugin=function(a,b){"undefined"==typeof b&&(b=null),this.game=a,this.parent=b,this.active=!1,this.visible=!1,this.hasPreUpdate=!1,this.hasUpdate=!1,this.hasPostUpdate=!1,this.hasRender=!1,this.hasPostRender=!1},b.Plugin.prototype={preUpdate:function(){},update:function(){},render:function(){},postRender:function(){},destroy:function(){this.game=null,this.parent=null,this.active=!1,this.visible=!1}},b.Plugin.prototype.constructor=b.Plugin,b.PluginManager=function(a){this.game=a,this.plugins=[],this._len=0,this._i=0},b.PluginManager.prototype={add:function(a){var b=!1;return"function"==typeof a?a=new a(this.game,this._parent):(a.game=this.game,a.parent=this),"function"==typeof a.preUpdate&&(a.hasPreUpdate=!0,b=!0),"function"==typeof a.update&&(a.hasUpdate=!0,b=!0),"function"==typeof a.postUpdate&&(a.hasPostUpdate=!0,b=!0),"function"==typeof a.render&&(a.hasRender=!0,b=!0),"function"==typeof a.postRender&&(a.hasPostRender=!0,b=!0),b?((a.hasPreUpdate||a.hasUpdate||a.hasPostUpdate)&&(a.active=!0),(a.hasRender||a.hasPostRender)&&(a.visible=!0),this._len=this.plugins.push(a),"function"==typeof a.init&&a.init(),a):null},remove:function(a){for(this._i=this._len;this._i--;)if(this.plugins[this._i]===a)return a.destroy(),this.plugins.splice(this._i,1),void this._len--},removeAll:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].destroy();this.plugins.length=0,this._len=0},preUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPreUpdate&&this.plugins[this._i].preUpdate()},update:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasUpdate&&this.plugins[this._i].update()},postUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPostUpdate&&this.plugins[this._i].postUpdate()},render:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasRender&&this.plugins[this._i].render()},postRender:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasPostRender&&this.plugins[this._i].postRender()},destroy:function(){this.removeAll(),this.game=null}},b.PluginManager.prototype.constructor=b.PluginManager,b.Stage=function(a,c,d){this.game=a,this.offset=new b.Point,PIXI.Stage.call(this,0,!1),this.name="_stage_root",this.interactive=!1,this.disableVisibilityChange=!1,this.checkOffsetInterval=2500,this.exists=!0,this.currentRenderOrderID=0,this._hiddenVar="hidden",this._nextOffsetCheck=0,this._backgroundColor=0,a.config?this.parseConfig(a.config):(this.game.canvas=b.Canvas.create(c,d),this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%")},b.Stage.prototype=Object.create(PIXI.Stage.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.preUpdate=function(){this.currentRenderOrderID=0;for(var a=this.children.length,b=0;a>b;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}this.checkOffsetInterval!==!1&&this.game.time.now>this._nextOffsetCheck&&(b.Canvas.getOffset(this.game.canvas,this.offset),this._nextOffsetCheck=this.game.time.now+this.checkOffsetInterval)},b.Stage.prototype.parseConfig=function(a){this.game.canvas=a.canvasID?b.Canvas.create(this.game.width,this.game.height,a.canvasID):b.Canvas.create(this.game.width,this.game.height),a.canvasStyle?this.game.canvas.stlye=a.canvasStyle:this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",a.checkOffsetInterval&&(this.checkOffsetInterval=a.checkOffsetInterval),a.disableVisibilityChange&&(this.disableVisibilityChange=a.disableVisibilityChange),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.scaleMode&&(this.scaleMode=a.scaleMode),a.backgroundColor&&(this.backgroundColor=a.backgroundColor)},b.Stage.prototype.boot=function(){b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds=new b.Rectangle(this.offset.x,this.offset.y,this.game.width,this.game.height);var a=this;this._onChange=function(b){return a.visibilityChange(b)},b.Canvas.setUserSelect(this.game.canvas,"none"),b.Canvas.setTouchAction(this.game.canvas,"none"),this.checkVisibility()},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange},b.Stage.prototype.visibilityChange=function(a){return this.disableVisibilityChange?void 0:"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden?this.game.gamePaused(a):this.game.gameResumed(a))},b.Stage.prototype.setBackgroundColor=function(a){this._backgroundColor=a||0,this.backgroundColorSplit=PIXI.hex2rgb(this.backgroundColor);var b=this._backgroundColor.toString(16);b="000000".substr(0,6-b.length)+b,this.backgroundColorString="#"+b},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this._backgroundColor=a,this.game.transparent===!1&&("string"==typeof a&&(a=b.Color.hexToRGB(a)),this.setBackgroundColor(a))}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addAt=function(a,b){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChildAt(a,b),this.updateZ(),a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.getAt=function(a){return 0>a||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,c,d,e,f){"undefined"==typeof f&&(f=!0);var g=new b.Sprite(this.game,a,c,d,e);return this.enableBody&&this.game.physics.enable(g,this.physicsBodyType),g.exists=f,g.visible=f,g.alive=f,this.addChild(g),g.z=this.children.length,g.events&&g.events.onAddedToGroup.dispatch(g,this),null===this.cursor&&(this.cursor=g),g},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){var c=this.swapChildren(a,b);return c&&this.updateZ(),c},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a),this.addAt(a,0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.setProperty=function(a,b,c,d){d=d||0;var e=b.length;1==e?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2==e?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3==e?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4==e&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c))},b.Group.prototype.set=function(a,b,c,d,e,f){b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)&&this.setProperty(a,b,c,f)},b.Group.prototype.setAll=function(a,b,c,d,e){a=a.split("."),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),e=e||0;for(var f=0,g=this.children.length;g>f;f++)(!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&this.setProperty(this.children[f],a,b,e)},b.Group.prototype.setAllChildren=function(a,c,d,e,f){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),f=f||0;for(var g=0,h=this.children.length;h>g;g++)(!d||d&&this.children[g].alive)&&(!e||e&&this.children[g].visible)&&(this.children[g]instanceof b.Group?this.children[g].setAllChildren(a,c,d,e,f):this.setProperty(this.children[g],a.split("."),c,f))},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.forEach=function(a,b,c){"undefined"==typeof c&&(c=!1);var d=Array.prototype.splice.call(arguments,3);d.unshift(null);for(var e=0,f=this.children.length;f>e;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b){return"undefined"==typeof b&&(b=!1),0===this.children.length?!1:(a.events&&a.events.onRemovedFromGroup.dispatch(a,this),this.removeChild(a),this.updateZ(),this.cursor===a&&this.next(),b&&a.destroy(),!0)},b.Group.prototype.removeAll=function(a){if("undefined"==typeof a&&(a=!1),0!==this.children.length){do this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this),this.removeChild(this.children[0]),a&&this.children[0].destroy();while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c){if("undefined"==typeof b&&(b=this.children.length),"undefined"==typeof c&&(c=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var d=b;d>=a;)this.children[d].events&&this.children[d].events.onRemovedFromGroup.dispatch(this.children[d],this),this.removeChild(this.children[d]),c&&this.children[d].destroy(),this.cursor===this.children[d]&&(this.cursor=null),d--;this.updateZ()}},b.Group.prototype.destroy=function(a,b){if(null!==this.game){if("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),a){if(this.children.length>0)do this.children[0].parent&&this.children[0].destroy(a);while(this.children.length>0)}else this.removeAll();this.cursor=null,b||(this.parent.removeChild(this),this.game=null,this.exists=!1)}},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){cwindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.aspectRatio=0,this.sourceAspectRatio=c/d,this.event=null,this.scaleMode=b.ScaleManager.NO_SCALE,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this._startHeight=0,this._width=0,this._height=0;var e=this;window.addEventListener("orientationchange",function(a){return e.checkOrientation(a)},!1),window.addEventListener("resize",function(a){return e.checkResize(a)},!1),document.addEventListener("webkitfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("mozfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("fullscreenchange",function(a){return e.fullScreenChange(a)},!1)},b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.prototype={startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){this.fullScreenTarget[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},forceOrientation:function(a,c,d){"undefined"==typeof c&&(c=!1),this.forceLandscape=a,this.forcePortrait=c,"undefined"!=typeof d&&((null==d||this.game.cache.checkImageKey(d)===!1)&&(d="__default"),this.orientationSprite=new b.Image(this.game,this.game.width/2,this.game.height/2,PIXI.TextureCache[d]),this.orientationSprite.anchor.set(.5),this.checkOrientationState(),this.incorrectOrientation?(this.orientationSprite.visible=!0,this.game.world.visible=!1):(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.game.stage.addChild(this.orientationSprite))},checkOrientationState:function(){this.incorrectOrientation?(this.forceLandscape&&window.innerWidth>window.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.orientationSprite&&(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,this.isLandscape?this.enterLandscape.dispatch(this.orientation,!0,!1):this.enterPortrait.dispatch(this.orientation,!1,!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh(),this.checkOrientationState()},refresh:function(){if(this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),null==this._check&&this.maxIterations>0){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){"undefined"==typeof a&&(a=!1),this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||window.innerHeight>this._startHeight||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation===!0?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null)},setSize:function(){this.incorrectOrientation===!1&&(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180==this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):("undefined"!=typeof a&&(this.width=a),"undefined"!=typeof c&&(this.height=c),"undefined"!=typeof d&&(this.renderer=d,this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,a.width&&(this.width=b.Utils.parseDimension(a.width,0)),a.height&&(this.height=b.Utils.parseDimension(a.height,1)),a.renderer&&(this.renderer=a.renderer,this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.physicsConfig&&(this.physicsConfig=a.physicsConfig); -var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c);var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.stage=new b.Stage(this,this.width,this.height),this.scale=new b.ScaleManager(this,this.width,this.height),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.debug=new b.Utils.Debug(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.debug.boot(),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20))},showDebugHeader:function(){var a=b.DEV_VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" - "+c+" - "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #0cf300","background: #00bc17","color: #ffffff; background: #00711f;","background: #00bc17","background: #0cf300","background: #00bc17"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else console.log("Phaser v"+a+" - Renderer: "+c+" - Audio: "+d+" - http://phaser.io")},setUpRenderer:function(){if(this.device.trident&&(this.renderType=b.CANVAS),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,this.canvas,this.transparent),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,this.canvas,this.transparent,this.antialias),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!0),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?this.debug.preUpdate():(this.stepping&&(this.pendingStep=!0),this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender())},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.input.destroy(),this.state.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?this._paused===!1&&(this._paused=!0,this._codePaused=!0,this.sound.mute=!0,this.time.gamePaused(),this.onPause.dispatch(this)):this._paused&&(this._paused=!1,this._codePaused=!1,this.input.reset(),this.sound.mute=!1,this.time.gameResumed(),this.onResume.dispatch(this))}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.interactiveItems=new b.LinkedList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallback=null},setMoveCallback:function(a,b){this.moveCallback=a,this.moveCallbackContext=b},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a===!0&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.interactiveItems.callAll("reset")),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier==a)return this.pointer1;if(this.pointer2.identifier==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier==a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.b*-e.c);return d.setTo(e.d*f*c.x+-e.b*f*c.y+(e.ty*e.b-e.tx*e.d)*f,e.a*f*c.y+-e.c*f*c.x+(-e.ty*e.a+e.tx*e.c)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y)?!0:!1;if(a instanceof b.TileSprite){var e=a.width,f=a.height,g=-e*a.anchor.x;if(this._localPoint.x>g&&this._localPoint.xh&&this._localPoint.yg&&this._localPoint.xh&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(){this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.enabled=!0,this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null},justPressed:function(a){return"undefined"==typeof a&&(a=2500),this.isDown&&this.duration=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.x=(this.pageX-this.game.stage.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.stage.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.game.paused)return this;if(this.game.input.moveCallback&&this.game.input.moveCallback.call(this.game.input.moveCallbackContext,this,this.x,this.y),null!==this.targetObject&&this.targetObject.isDragged===!0)return this.targetObject.update(this)===!1&&(this.targetObject=null),this;if(this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1,this.game.input.interactiveItems.total>0){var d=this.game.input.interactiveItems.next;do d.validForInput(this._highestInputPriorityID,this._highestRenderOrderID)&&(!c&&d.checkPointerOver(this)||c&&d.checkPointerDown(this))&&(this._highestRenderOrderID=d.sprite._cache[3],this._highestInputPriorityID=d.priorityID,this._highestRenderObject=d),d=d.next;while(null!=d)}return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),this}},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){if(this._stateReset)return void a.preventDefault();if(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.total>0){var c=this.game.input.interactiveItems.next;do c&&c._releasedHandler(this),c=c.next;while(null!=c)}return this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null,this},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.identifier=null,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b",DEV_VERSION:"2.0.4",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};PIXI.InteractionManager=function(){},b.Utils={parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},shuffle:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),b.Circle=function(a,b,c){a=a||0,b=b||0,c=c||0,this.x=a,this.y=b,this._diameter=c,this._radius=c>0?.5*c:0},b.Circle.prototype={circumference:function(){return 2*Math.PI*this._radius},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRound(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x==this.x&&a.y==this.y},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x==b.x&&a.y==b.y},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRound(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.rotate=function(a,c,d,e,f,g){return f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y))),a.setTo(c+g*Math.cos(e),d+g*Math.sin(e))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(this,a)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:this.y-a}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:this.x+a}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b<=a.right&&c>=a.y&&c<=a.bottom},b.Rectangle.containsRaw=function(a,b,c,d,e,f){return e>=a&&a+c>=e&&f>=b&&b+d>=f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.right<=b.right&&a.bottom<=b.bottom},b.Rectangle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.width==b.width&&a.height==b.height},b.Rectangle.intersection=function(a,c,d){return"undefined"==typeof d&&(d=new b.Rectangle),b.Rectangle.intersects(a,c)&&(d.x=Math.max(a.x,c.x),d.y=Math.max(a.y,c.y),d.width=Math.min(a.right,c.right)-d.x,d.height=Math.min(a.bottom,c.bottom)-d.y),d},b.Rectangle.intersects=function(a,b){return a.width<=0||a.height<=0||b.width<=0||b.height<=0?!1:!(a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||e=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){if(Math.pow(g.x-c.x+(g.y-c.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-a.x+(g.y-a.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-e.x+(g.y-e.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null;if(Math.pow(g.x-d.x+(g.y-d.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this.points=a},b.Polygon.prototype={clone:function(){for(var a=[],c=0;cb!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!0)}return c}},b.Polygon.prototype.constructor=b.Polygon,PIXI.Polygon=b.Polygon,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this.displayObject=null,this.scale=null},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this.deadzone?(this._edge=this.target.x-this.deadzone.x,this.view.x>this._edge&&(this.view.x=this._edge),this._edge=this.target.x+this.target.width-this.deadzone.x-this.deadzone.width,this.view.xthis._edge&&(this.view.y=this._edge),this._edge=this.target.y+this.target.height-this.deadzone.y-this.deadzone.height,this.view.y=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height),this.view.floor()},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},paused:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&("string"==typeof this._pendingState?this.start(this._pendingState,!1,!1):this.add("default",this._pendingState,!0))},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){this._pendingState&&this.game.isBooted&&(this.current&&(this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy())),this.setCurrentState(this._pendingState),this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()?this.loadComplete():this.game.load.start()):this.loadComplete(),this.current===this._pendingState&&(this._pendingState=null))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),this._args=[]},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null==this.first&&null==this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},remove:function(a){a==this.first?this.first=this.first.next:a==this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null==this.first&&(this.last=null),this.total--},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.Signal=function(){this._bindings=[],this._prevParams=null;var a=this;this.dispatch=function(){b.Signal.prototype.dispatch.apply(a,arguments)}},b.Signal.prototype={memorize:!1,_shouldPropagate:!0,active:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,c,d,e){var f,g=this._indexOfListener(a,d);if(-1!==g){if(f=this._bindings[g],f.isOnce()!==c)throw new Error("You cannot add"+(c?"":"Once")+"() then add"+(c?"Once":"")+"() the same listener without removing the relationship first.")}else f=new b.SignalBinding(this,a,c,d,e),this._addBinding(f);return this.memorize&&this._prevParams&&f.execute(this._prevParams),f},_addBinding:function(a){var b=this._bindings.length;do--b;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){return this.validateListener(a,"add"),this._registerListener(a,!1,b,c)},addOnce:function(a,b,c){return this.validateListener(a,"addOnce"),this._registerListener(a,!0,b,c)},remove:function(a,b){this.validateListener(a,"remove");var c=this._indexOfListener(a,b);return-1!==c&&(this._bindings[c]._destroy(),this._bindings.splice(c,1)),a},removeAll:function(){for(var a=this._bindings.length;a--;)this._bindings[a]._destroy();this._bindings.length=0},getNumListeners:function(){return this._bindings.length},halt:function(){this._shouldPropagate=!1},dispatch:function(){if(this.active){var a,b=Array.prototype.slice.call(arguments),c=this._bindings.length;if(this.memorize&&(this._prevParams=b),c){a=this._bindings.slice(),this._shouldPropagate=!0;do c--;while(a[c]&&this._shouldPropagate&&a[c].execute(b)!==!1) +}}},forget:function(){this._prevParams=null},dispose:function(){this.removeAll(),delete this._bindings,delete this._prevParams},toString:function(){return"[Phaser.Signal active:"+this.active+" numListeners:"+this.getNumListeners()+"]"}},b.Signal.prototype.constructor=b.Signal,b.SignalBinding=function(a,b,c,d,e){this._listener=b,this._isOnce=c,this.context=d,this._signal=a,this._priority=e||0},b.SignalBinding.prototype={active:!0,params:null,execute:function(a){var b,c;return this.active&&this._listener&&(c=this.params?this.params.concat(a):a,b=this._listener.apply(this.context,c),this._isOnce&&this.detach()),b},detach:function(){return this.isBound()?this._signal.remove(this._listener,this.context):null},isBound:function(){return!!this._signal&&!!this._listener},isOnce:function(){return this._isOnce},getListener:function(){return this._listener},getSignal:function(){return this._signal},_destroy:function(){delete this._signal,delete this._listener,delete this.context},toString:function(){return"[Phaser.SignalBinding isOnce:"+this._isOnce+", isBound:"+this.isBound()+", active:"+this.active+"]"}},b.SignalBinding.prototype.constructor=b.SignalBinding,b.Filter=function(a,c,d){this.game=a,this.type=b.WEBGL_FILTER,this.passes=[this],this.shaders=[],this.dirty=!0,this.padding=0,this.uniforms={time:{type:"1f",value:0},resolution:{type:"2f",value:{x:256,y:256}},mouse:{type:"2f",value:{x:0,y:0}}},this.fragmentSrc=d||[]},b.Filter.prototype={init:function(){},setResolution:function(a,b){this.uniforms.resolution.value.x=a,this.uniforms.resolution.value.y=b},update:function(a){"undefined"!=typeof a&&(a.x>0&&(this.uniforms.mouse.x=a.x.toFixed(2)),a.y>0&&(this.uniforms.mouse.y=a.y.toFixed(2))),this.uniforms.time.value=this.game.time.totalElapsedSeconds()},destroy:function(){this.game=null}},b.Filter.prototype.constructor=b.Filter,Object.defineProperty(b.Filter.prototype,"width",{get:function(){return this.uniforms.resolution.value.x},set:function(a){this.uniforms.resolution.value.x=a}}),Object.defineProperty(b.Filter.prototype,"height",{get:function(){return this.uniforms.resolution.value.y},set:function(a){this.uniforms.resolution.value.y=a}}),b.Plugin=function(a,b){"undefined"==typeof b&&(b=null),this.game=a,this.parent=b,this.active=!1,this.visible=!1,this.hasPreUpdate=!1,this.hasUpdate=!1,this.hasPostUpdate=!1,this.hasRender=!1,this.hasPostRender=!1},b.Plugin.prototype={preUpdate:function(){},update:function(){},render:function(){},postRender:function(){},destroy:function(){this.game=null,this.parent=null,this.active=!1,this.visible=!1}},b.Plugin.prototype.constructor=b.Plugin,b.PluginManager=function(a){this.game=a,this.plugins=[],this._len=0,this._i=0},b.PluginManager.prototype={add:function(a){var b=!1;return"function"==typeof a?a=new a(this.game,this._parent):(a.game=this.game,a.parent=this),"function"==typeof a.preUpdate&&(a.hasPreUpdate=!0,b=!0),"function"==typeof a.update&&(a.hasUpdate=!0,b=!0),"function"==typeof a.postUpdate&&(a.hasPostUpdate=!0,b=!0),"function"==typeof a.render&&(a.hasRender=!0,b=!0),"function"==typeof a.postRender&&(a.hasPostRender=!0,b=!0),b?((a.hasPreUpdate||a.hasUpdate||a.hasPostUpdate)&&(a.active=!0),(a.hasRender||a.hasPostRender)&&(a.visible=!0),this._len=this.plugins.push(a),"function"==typeof a.init&&a.init(),a):null},remove:function(a){for(this._i=this._len;this._i--;)if(this.plugins[this._i]===a)return a.destroy(),this.plugins.splice(this._i,1),void this._len--},removeAll:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].destroy();this.plugins.length=0,this._len=0},preUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPreUpdate&&this.plugins[this._i].preUpdate()},update:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasUpdate&&this.plugins[this._i].update()},postUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPostUpdate&&this.plugins[this._i].postUpdate()},render:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasRender&&this.plugins[this._i].render()},postRender:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasPostRender&&this.plugins[this._i].postRender()},destroy:function(){this.removeAll(),this.game=null}},b.PluginManager.prototype.constructor=b.PluginManager,b.Stage=function(a,c,d){this.game=a,this.offset=new b.Point,PIXI.Stage.call(this,0,!1),this.name="_stage_root",this.interactive=!1,this.disableVisibilityChange=!1,this.checkOffsetInterval=2500,this.exists=!0,this.currentRenderOrderID=0,this._hiddenVar="hidden",this._nextOffsetCheck=0,this._backgroundColor=0,a.config?this.parseConfig(a.config):(this.game.canvas=b.Canvas.create(c,d),this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%")},b.Stage.prototype=Object.create(PIXI.Stage.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.preUpdate=function(){this.currentRenderOrderID=0;for(var a=this.children.length,b=0;a>b;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}this.checkOffsetInterval!==!1&&this.game.time.now>this._nextOffsetCheck&&(b.Canvas.getOffset(this.game.canvas,this.offset),this._nextOffsetCheck=this.game.time.now+this.checkOffsetInterval)},b.Stage.prototype.parseConfig=function(a){this.game.canvas=a.canvasID?b.Canvas.create(this.game.width,this.game.height,a.canvasID):b.Canvas.create(this.game.width,this.game.height),a.canvasStyle?this.game.canvas.stlye=a.canvasStyle:this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",a.checkOffsetInterval&&(this.checkOffsetInterval=a.checkOffsetInterval),a.disableVisibilityChange&&(this.disableVisibilityChange=a.disableVisibilityChange),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.scaleMode&&(this.scaleMode=a.scaleMode),a.backgroundColor&&(this.backgroundColor=a.backgroundColor)},b.Stage.prototype.boot=function(){b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds=new b.Rectangle(this.offset.x,this.offset.y,this.game.width,this.game.height);var a=this;this._onChange=function(b){return a.visibilityChange(b)},b.Canvas.setUserSelect(this.game.canvas,"none"),b.Canvas.setTouchAction(this.game.canvas,"none"),this.checkVisibility()},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange},b.Stage.prototype.visibilityChange=function(a){return this.disableVisibilityChange?void 0:"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden?this.game.gamePaused(a):this.game.gameResumed(a))},b.Stage.prototype.setBackgroundColor=function(a){this._backgroundColor=a||0,this.backgroundColorSplit=PIXI.hex2rgb(this.backgroundColor);var b=this._backgroundColor.toString(16);b="000000".substr(0,6-b.length)+b,this.backgroundColorString="#"+b},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this._backgroundColor=a,this.game.transparent===!1&&("string"==typeof a&&(a=b.Color.hexToRGB(a)),this.setBackgroundColor(a))}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addAt=function(a,b){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChildAt(a,b),this.updateZ(),a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.getAt=function(a){return 0>a||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,c,d,e,f){"undefined"==typeof f&&(f=!0);var g=new b.Sprite(this.game,a,c,d,e);return this.enableBody&&this.game.physics.enable(g,this.physicsBodyType),g.exists=f,g.visible=f,g.alive=f,this.addChild(g),g.z=this.children.length,g.events&&g.events.onAddedToGroup.dispatch(g,this),null===this.cursor&&(this.cursor=g),g},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){var c=this.swapChildren(a,b);return c&&this.updateZ(),c},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a),this.addAt(a,0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.setProperty=function(a,b,c,d){d=d||0;var e=b.length;1==e?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2==e?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3==e?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4==e&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c))},b.Group.prototype.set=function(a,b,c,d,e,f){b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)&&this.setProperty(a,b,c,f)},b.Group.prototype.setAll=function(a,b,c,d,e){a=a.split("."),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),e=e||0;for(var f=0,g=this.children.length;g>f;f++)(!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&this.setProperty(this.children[f],a,b,e)},b.Group.prototype.setAllChildren=function(a,c,d,e,f){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),f=f||0;for(var g=0,h=this.children.length;h>g;g++)(!d||d&&this.children[g].alive)&&(!e||e&&this.children[g].visible)&&(this.children[g]instanceof b.Group?this.children[g].setAllChildren(a,c,d,e,f):this.setProperty(this.children[g],a.split("."),c,f))},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.forEach=function(a,b,c){"undefined"==typeof c&&(c=!1);var d=Array.prototype.splice.call(arguments,3);d.unshift(null);for(var e=0,f=this.children.length;f>e;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b){if("undefined"==typeof b&&(b=!1),0===this.children.length)return!1;a.events&&a.events.onRemovedFromGroup.dispatch(a,this);var c=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&c&&c.destroy(),!0},b.Group.prototype.removeAll=function(a){if("undefined"==typeof a&&(a=!1),0!==this.children.length){do{this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var b=this.removeChild(this.children[0]);a&&b&&b.destroy()}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c){if("undefined"==typeof b&&(b=this.children.length),"undefined"==typeof c&&(c=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var d=b;d>=a;){this.children[d].events&&this.children[d].events.onRemovedFromGroup.dispatch(this.children[d],this);var e=this.removeChild(this.children[d]);c&&e&&e.destroy(),this.cursor===this.children[d]&&(this.cursor=null),d--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null!==this.game&&("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.removeAll(a),this.cursor=null,b||(this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){cwindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.aspectRatio=0,this.sourceAspectRatio=c/d,this.event=null,this.scaleMode=b.ScaleManager.NO_SCALE,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this._startHeight=0,this._width=0,this._height=0;var e=this;window.addEventListener("orientationchange",function(a){return e.checkOrientation(a)},!1),window.addEventListener("resize",function(a){return e.checkResize(a)},!1),document.addEventListener("webkitfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("mozfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("fullscreenchange",function(a){return e.fullScreenChange(a)},!1)},b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.prototype={startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){this.fullScreenTarget[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},forceOrientation:function(a,c,d){"undefined"==typeof c&&(c=!1),this.forceLandscape=a,this.forcePortrait=c,"undefined"!=typeof d&&((null==d||this.game.cache.checkImageKey(d)===!1)&&(d="__default"),this.orientationSprite=new b.Image(this.game,this.game.width/2,this.game.height/2,PIXI.TextureCache[d]),this.orientationSprite.anchor.set(.5),this.checkOrientationState(),this.incorrectOrientation?(this.orientationSprite.visible=!0,this.game.world.visible=!1):(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.game.stage.addChild(this.orientationSprite))},checkOrientationState:function(){this.incorrectOrientation?(this.forceLandscape&&window.innerWidth>window.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.orientationSprite&&(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,this.isLandscape?this.enterLandscape.dispatch(this.orientation,!0,!1):this.enterPortrait.dispatch(this.orientation,!1,!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh(),this.checkOrientationState()},refresh:function(){if(this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),null==this._check&&this.maxIterations>0){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){"undefined"==typeof a&&(a=!1),this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||window.innerHeight>this._startHeight||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation===!0?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null)},setSize:function(){this.incorrectOrientation===!1&&(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180==this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):("undefined"!=typeof a&&(this.width=a),"undefined"!=typeof c&&(this.height=c),"undefined"!=typeof d&&(this.renderer=d,this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,a.width&&(this.width=b.Utils.parseDimension(a.width,0)),a.height&&(this.height=b.Utils.parseDimension(a.height,1)),a.renderer&&(this.renderer=a.renderer,this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c); +var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.stage=new b.Stage(this,this.width,this.height),this.scale=new b.ScaleManager(this,this.width,this.height),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.debug=new b.Utils.Debug(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.debug.boot(),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20))},showDebugHeader:function(){var a=b.DEV_VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" - "+c+" - "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #0cf300","background: #00bc17","color: #ffffff; background: #00711f;","background: #00bc17","background: #0cf300","background: #00bc17"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else console.log("Phaser v"+a+" - Renderer: "+c+" - Audio: "+d+" - http://phaser.io")},setUpRenderer:function(){if(this.device.trident&&(this.renderType=b.CANVAS),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,this.canvas,this.transparent),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,this.canvas,this.transparent,this.antialias),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!0),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?this.debug.preUpdate():(this.stepping&&(this.pendingStep=!0),this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender())},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.input.destroy(),this.state.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?this._paused===!1&&(this._paused=!0,this._codePaused=!0,this.sound.mute=!0,this.time.gamePaused(),this.onPause.dispatch(this)):this._paused&&(this._paused=!1,this._codePaused=!1,this.input.reset(),this.sound.mute=!1,this.time.gameResumed(),this.onResume.dispatch(this))}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.resetLocked=!1,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.interactiveItems=new b.LinkedList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallback=null},setMoveCallback:function(a,b){this.moveCallback=a,this.moveCallbackContext=b},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.interactiveItems.callAll("reset")),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier==a)return this.pointer1;if(this.pointer2.identifier==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier==a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.b*-e.c);return d.setTo(e.d*f*c.x+-e.b*f*c.y+(e.ty*e.b-e.tx*e.d)*f,e.a*f*c.y+-e.c*f*c.x+(-e.ty*e.a+e.tx*e.c)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y)?!0:!1;if(a instanceof b.TileSprite){var e=a.width,f=a.height,g=-e*a.anchor.x;if(this._localPoint.x>g&&this._localPoint.xh&&this._localPoint.yg&&this._localPoint.xh&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(a){"undefined"==typeof a&&(a=!0),this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.enabled=!0,a&&(this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null)},justPressed:function(a){return"undefined"==typeof a&&(a=2500),this.isDown&&this.duration=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.x=(this.pageX-this.game.stage.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.stage.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.game.paused)return this;if(this.game.input.moveCallback&&this.game.input.moveCallback.call(this.game.input.moveCallbackContext,this,this.x,this.y),null!==this.targetObject&&this.targetObject.isDragged===!0)return this.targetObject.update(this)===!1&&(this.targetObject=null),this;if(this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1,this.game.input.interactiveItems.total>0){var d=this.game.input.interactiveItems.next;do d.validForInput(this._highestInputPriorityID,this._highestRenderOrderID)&&(!c&&d.checkPointerOver(this)||c&&d.checkPointerDown(this))&&(this._highestRenderOrderID=d.sprite._cache[3],this._highestInputPriorityID=d.priorityID,this._highestRenderObject=d),d=d.next;while(null!=d)}return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),this}},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){if(this._stateReset)return void a.preventDefault();if(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.total>0){var c=this.game.input.interactiveItems.next;do c&&c._releasedHandler(this),c=c.next;while(null!=c)}return this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null,this},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.identifier=null,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b0&&e>this.deadZone||0>e&&e<-this.deadZone?{axis:d,value:e}:{axis:d,value:0})}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this._connected;this._index=a.index,this._connected=!0,this._rawPad=a,this._rawButtons=a.buttons,this._axes=a.axes,b&&this._padParent.onConnectCallback&&this._padParent.onConnectCallback.call(this._padParent.callbackContext,this._index),b&&this.onConnectCallback&&this.onConnectCallback.call(this.callbackContext)},disconnect:function(){var a=this._connected;this._connected=!1,this._rawPad=void 0,this._rawButtons=[],this._buttons=[];var b=this._index;this._index=null,a&&this._padParent.onDisconnectCallback&&this._padParent.onDisconnectCallback.call(this._padParent.callbackContext,b),a&&this.onDisconnectCallback&&this.onDisconnectCallback.call(this.callbackContext)},processAxisChange:function(a){this.game.input.disabled||this.game.input.gamepad.disabled||this._axes[a.axis]!==a.value&&(this._axes[a.axis]=a.value,this._padParent.onAxisCallback&&this._padParent.onAxisCallback.call(this._padParent.callbackContext,a,this._index),this.onAxisCallback&&this.onAxisCallback.call(this.callbackContext,a))},processButtonDown:function(a,b){this.game.input.disabled||this.game.input.gamepad.disabled||(this._padParent.onDownCallback&&this._padParent.onDownCallback.call(this._padParent.callbackContext,a,b,this._index),this.onDownCallback&&this.onDownCallback.call(this.callbackContext,a,b),this._buttons[a]&&this._buttons[a].isDown?this._buttons[a].duration=this.game.time.now-this._buttons[a].timeDown:this._buttons[a]?(this._buttons[a].isDown=!0,this._buttons[a].timeDown=this.game.time.now,this._buttons[a].duration=0,this._buttons[a].value=b):this._buttons[a]={isDown:!0,timeDown:this.game.time.now,timeUp:0,duration:0,value:b},this._hotkeys[a]&&this._hotkeys[a].processButtonDown(b))},processButtonUp:function(a,b){this.game.input.disabled||this.game.input.gamepad.disabled||(this._padParent.onUpCallback&&this._padParent.onUpCallback.call(this._padParent.callbackContext,a,b,this._index),this.onUpCallback&&this.onUpCallback.call(this.callbackContext,a,b),this._hotkeys[a]&&this._hotkeys[a].processButtonUp(b),this._buttons[a]?(this._buttons[a].isDown=!1,this._buttons[a].timeUp=this.game.time.now,this._buttons[a].value=b):this._buttons[a]={isDown:!1,timeDown:this.game.time.now,timeUp:this.game.time.now,duration:0,value:b})},processButtonFloat:function(a,b){this.game.input.disabled||this.game.input.gamepad.disabled||(this._padParent.onFloatCallback&&this._padParent.onFloatCallback.call(this._padParent.callbackContext,a,b,this._index),this.onFloatCallback&&this.onFloatCallback.call(this.callbackContext,a,b),this._buttons[a]?this._buttons[a].value=b:this._buttons[a]={value:b},this._hotkeys[a]&&this._hotkeys[a].processButtonFloat(b))},axis:function(a){return this._axes[a]?this._axes[a]:!1},isDown:function(a){return this._buttons[a]?this._buttons[a].isDown:!1},justReleased:function(a,b){return"undefined"==typeof b&&(b=250),this._buttons[a]&&this._buttons[a].isDown===!1&&this.game.time.now-this._buttons[a].timeUpd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new b.Point,this.enabled=!0,this._wasEnabled=!0,this.sprite.events&&null===this.sprite.events.onInputOver&&(this.sprite.events.onInputOver=new b.Signal,this.sprite.events.onInputOut=new b.Signal,this.sprite.events.onInputDown=new b.Signal,this.sprite.events.onInputUp=new b.Signal,this.sprite.events.onDragStart=new b.Signal,this.sprite.events.onDragStop=new b.Signal)}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.sprite},addedToGroup:function(){this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1},reset:function(){this.enabled=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.enabled&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b){return 0===this.sprite.scale.x||0===this.sprite.scale.y?!1:this.pixelPerfectClick||this.pixelPerfectOver?!0:this.priorityID>a||this.priorityID===a&&this.sprite._cache[3]b;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if("undefined"!=typeof a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0:!1},checkPointerOver:function(a){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0:!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(this.game.input.hitContext.clearRect(0,0,1,1),null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID==a.id?this.updateDrag(a):this._pointerData[a.id].isOver===!0?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isOver===!1&&(this._pointerData[a.id].isOver=!0,this._pointerData[a.id].isOut=!1,this._pointerData[a.id].timeOver=this.game.time.now,this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!1),this.sprite.events.onInputOver.dispatch(this.sprite,a))},_pointerOutHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver=!1,this._pointerData[a.id].isOut=!0,this._pointerData[a.id].timeOut=this.game.time.now,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut.dispatch(this.sprite,a))},_touchedHandler:function(a){if(null!==this.sprite){if(this._pointerData[a.id].isDown===!1&&this._pointerData[a.id].isOver===!0){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;this._pointerData[a.id].isDown=!0,this._pointerData[a.id].isUp=!1,this._pointerData[a.id].timeDown=this.game.time.now,this.sprite.events.onInputDown.dispatch(this.sprite,a),this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isDown&&a.isUp&&(this._pointerData[a.id].isDown=!1,this._pointerData[a.id].isUp=!0,this._pointerData[a.id].timeUp=this.game.time.now,this._pointerData[a.id].downDuration=this._pointerData[a.id].timeUp-this._pointerData[a.id].timeDown,this.checkPointerOver(a)?this.sprite.events.onInputUp.dispatch(this.sprite,a,!0):(this.sprite.events.onInputUp.dispatch(this.sprite,a,!1),this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1)),this.draggable&&this.isDragged&&this._draggedPointerID==a.id&&this.stopDrag(a))},updateDrag:function(a){return a.isUp?(this.stopDrag(a),!1):(this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=a.x+this._dragPoint.x+this.dragOffset.x),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=a.y+this._dragPoint.y+this.dragOffset.y),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)):(this.allowHorizontalDrag&&(this.sprite.x=a.x+this._dragPoint.x+this.dragOffset.x),this.allowVerticalDrag&&(this.sprite.y=a.y+this._dragPoint.y+this.dragOffset.y),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),!0)},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1},startDrag:function(a){if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else if(this.dragFromCenter){var b=this.sprite.getBounds();this.sprite.x=a.x+(this.sprite.x-b.centerX),this.sprite.y=a.y+(this.sprite.y-b.centerY),this._dragPoint.setTo(this.sprite.x-a.x,this.sprite.y-a.y)}else this._dragPoint.setTo(this.sprite.x-a.x,this.sprite.y-a.y);this.updateDrag(a),this.bringToTop&&this.sprite.bringToTop(),this.sprite.events.onDragStart.dispatch(this.sprite,a)},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop.dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.xthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-this.sprite.width),this.sprite.ythis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-this.sprite.height))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.camerOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.camerOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.camerOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.camerOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.xthis.boundsSprite.x+this.boundsSprite.width&&(this.sprite.x=this.boundsSprite.x+this.boundsSprite.width-this.sprite.width),this.sprite.ythis.boundsSprite.y+this.boundsSprite.height&&(this.sprite.y=this.boundsSprite.y+this.boundsSprite.height-this.sprite.height))}},b.InputHandler.prototype.constructor=b.InputHandler,b.Events=function(a){this.parent=a,this.onAddedToGroup=new b.Signal,this.onRemovedFromGroup=new b.Signal,this.onKilled=new b.Signal,this.onRevived=new b.Signal,this.onOutOfBounds=new b.Signal,this.onEnterBounds=new b.Signal,this.onInputOver=null,this.onInputOut=null,this.onInputDown=null,this.onInputUp=null,this.onDragStart=null,this.onDragStop=null,this.onAnimationStart=null,this.onAnimationComplete=null,this.onAnimationLoop=null},b.Events.prototype={destroy:function(){this.parent=null,this.onAddedToGroup.dispose(),this.onRemovedFromGroup.dispose(),this.onKilled.dispose(),this.onRevived.dispose(),this.onOutOfBounds.dispose(),this.onInputOver&&(this.onInputOver.dispose(),this.onInputOut.dispose(),this.onInputDown.dispose(),this.onInputUp.dispose(),this.onDragStart.dispose(),this.onDragStop.dispose()),this.onAnimationStart&&(this.onAnimationStart.dispose(),this.onAnimationComplete.dispose(),this.onAnimationLoop.dispose())}},b.Events.prototype.constructor=b.Events,b.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},b.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Image(this.game,a,c,d,e))},sprite:function(a,b,c,d,e){return"undefined"==typeof e&&(e=this.world),e.create(a,b,c,d)},tween:function(a){return this.game.tweens.create(a)},group:function(a,c,d,e,f){return new b.Group(this.game,a,c,d,e,f)},physicsGroup:function(a,c,d,e){return new b.Group(this.game,c,d,e,!0,a)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g,h){return"undefined"==typeof h&&(h=this.world),h.add(new b.TileSprite(this.game,a,c,d,e,f,g))},text:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Text(this.game,a,c,d,e))},button:function(a,c,d,e,f,g,h,i,j,k){return"undefined"==typeof k&&(k=this.world),k.add(new b.Button(this.game,a,c,d,e,f,g,h,i,j))},graphics:function(a,c,d){return"undefined"==typeof d&&(d=this.world),d.add(new b.Graphics(this.game,a,c))},emitter:function(a,c,d){return this.game.particles.add(new b.Particles.Arcade.Emitter(this.game,a,c,d))},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.BitmapText(this.game,a,c,d,e,f))},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectFactory.prototype.constructor=b.GameObjectFactory,b.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},b.GameObjectCreator.prototype={image:function(a,c,d,e){return new b.Image(this.game,a,c,d,e)},sprite:function(a,c,d,e){return new b.Sprite(this.game,a,c,d,e)},tween:function(a){return new b.Tween(a,this.game)},group:function(a,c,d,e,f){return new b.Group(this.game,null,c,d,e,f)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g){return new b.TileSprite(this.game,a,c,d,e,f,g)},text:function(a,c,d,e){return new b.Text(this.game,a,c,d,e)},button:function(a,c,d,e,f,g,h,i,j){return new b.Button(this.game,a,c,d,e,f,g,h,i,j)},graphics:function(a,c){return new b.Graphics(this.game,a,c)},emitter:function(a,c,d){return new b.Particles.Arcade.Emitter(this.game,a,c,d)},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f){return new b.BitmapText(this.game,a,c,d,e,f)},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectCreator.prototype.constructor=b.GameObjectCreator,b.BitmapData=function(a,c,d,e){"undefined"==typeof d&&(d=100),"undefined"==typeof e&&(e=100),this.game=a,this.key=c,this.width=d,this.height=e,this.canvas=b.Canvas.create(d,e,"",!0),this.context=this.canvas.getContext("2d"),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.pixels=this.imageData.data.buffer?this.imageData.data.buffer:this.imageData.data,this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,d,e,"bitmapData",a.rnd.uuid()),this.type=b.BITMAPDATA,this.dirty=!1 },b.BitmapData.prototype={add:function(a){if(Array.isArray(a))for(var b=0;b=0&&a<=this.width&&b>=0&&b<=this.height&&(this.pixels[b*this.width+a]=f<<24|e<<16|d<<8|c,this.context.putImageData(this.imageData,0,0),this.dirty=!0)},setPixel:function(a,b,c,d,e){this.setPixel32(a,b,c,d,e,255)},getPixel:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.data32[b*this.width+a]:void 0},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.data32[b*this.width+a]:void 0},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},copyPixels:function(a,b,c,d){"string"==typeof a&&(a=this.game.cache.getImage(a)),a&&this.context.drawImage(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height)},draw:function(a,b,c){"string"==typeof a&&(a=this.game.cache.getImage(a)),a&&this.context.drawImage(a,0,0,a.width,a.height,b,c,a.width,a.height)},alphaMask:function(a,b){var c=this.context.globalCompositeOperation;"string"==typeof b&&(b=this.game.cache.getImage(b)),b&&this.context.drawImage(b,0,0),this.context.globalCompositeOperation="source-atop","string"==typeof a&&(a=this.game.cache.getImage(a)),a&&this.context.drawImage(a,0,0),this.context.globalCompositeOperation=c},render:function(){this.game.renderType===b.WEBGL&&this.dirty&&(PIXI.updateWebGLTexture(this.baseTexture,this.game.renderer.gl),this.dirty=!1)}},b.BitmapData.prototype.constructor=b.BitmapData,b.Sprite=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.SPRITE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,this._frame=0,this._frameName="",PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.loadTexture(e,f),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.body=null,this.health=1,this.lifespan=0,this.checkWorldBounds=!1,this.outOfBoundsKill=!1,this.debug=!1,this.cameraOffset=new b.Point,this._cache=[0,0,0,0,1,0,1,0],this._bounds=new b.Rectangle},b.Sprite.prototype=Object.create(PIXI.Sprite.prototype),b.Sprite.prototype.constructor=b.Sprite,b.Sprite.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;if(this.lifespan>0&&(this.lifespan-=this.game.time.elapsed,this.lifespan<=0))return this.kill(),!1;if((this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds)if(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds))this._cache[5]=0,this.events.onEnterBounds.dispatch(this);else if(0===this._cache[5]&&!this.game.world.bounds.intersects(this._bounds)&&(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this),this.outOfBoundsKill))return this.kill(),!1;this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Sprite.prototype.update=function(){},b.Sprite.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Sprite.prototype.loadTexture=function(a,c){return c=c||0,a instanceof b.RenderTexture?(this.key=a.key,void this.setTexture(a)):a instanceof b.BitmapData?(this.key=a,void this.setTexture(a.texture)):a instanceof PIXI.Texture?(this.key=a,void this.setTexture(a)):null===a||"undefined"==typeof a?(this.key="__default",void this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?this.game.cache.isSpriteSheet(a)?(this.key=a,this.animations.loadFrameData(this.game.cache.getFrameData(a)),"string"==typeof c?this.frameName=c:this.frame=c,void 0):(this.key=a,void this.setTexture(PIXI.TextureCache[a])):(this.key="__missing",void this.setTexture(PIXI.TextureCache[this.key]))},b.Sprite.prototype.crop=function(a){if("undefined"==typeof a||null===a)this.texture.hasOwnProperty("sourceWidth")&&this.texture.setFrame(new b.Rectangle(0,0,this.texture.sourceWidth,this.texture.sourceHeight));else if(this.texture instanceof PIXI.Texture){var c={};b.Utils.extend(!0,c,this.texture),c.sourceWidth=c.width,c.sourceHeight=c.height,c.frame=a,c.width=a.width,c.height=a.height,this.texture=c,this.texture.updateFrame=!0,PIXI.Texture.frameUpdates.push(this.texture)}else this.texture.setFrame(a)},b.Sprite.prototype.revive=function(a){return"undefined"==typeof a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,this.health=a,this.events&&this.events.onRevived.dispatch(this),this},b.Sprite.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Sprite.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.input&&this.input.destroy(),this.animations&&this.animations.destroy(),this.body&&this.body.destroy(),this.events&&this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.Sprite.prototype.damage=function(a){return this.alive&&(this.health-=a,this.health<=0&&this.kill()),this},b.Sprite.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},b.Sprite.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},b.Sprite.prototype.play=function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0},b.Sprite.prototype.overlap=function(a){return b.Rectangle.intersects(this.getBounds(),a.getBounds())},Object.defineProperty(b.Sprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Sprite.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Sprite.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Sprite.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Sprite.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}}),Object.defineProperty(b.Sprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}),Object.defineProperty(b.Sprite.prototype,"renderOrderID",{get:function(){return this._cache[3]}}),Object.defineProperty(b.Sprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Sprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&this.body.removeFromWorld(),this.visible=!1)}}),Object.defineProperty(b.Sprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Sprite.prototype,"smoothed",{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}),Object.defineProperty(b.Sprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),b.Image=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.exists=!0,this.name="",this.type=b.IMAGE,this.z=0,this.events=new b.Events(this),this.key=e,this._frame=0,this._frameName="",PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.loadTexture(e,f),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.cameraOffset=new b.Point,this._cache=[0,0,0,0,1,0,1,0]},b.Image.prototype=Object.create(PIXI.Sprite.prototype),b.Image.prototype.constructor=b.Image,b.Image.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform[2],this.game.camera.y+this.worldTransform[5]),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Image.prototype.update=function(){},b.Image.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Image.prototype.loadTexture=function(a,c){if(c=c||0,a instanceof b.RenderTexture)return this.key=a.key,void this.setTexture(a);if(a instanceof b.BitmapData)return this.key=a,void this.setTexture(a.texture);if(a instanceof PIXI.Texture)return this.key=a,void this.setTexture(a);if(null===a||"undefined"==typeof a)return this.key="__default",void this.setTexture(PIXI.TextureCache[this.key]);if("string"==typeof a&&!this.game.cache.checkImageKey(a))return this.key="__missing",void this.setTexture(PIXI.TextureCache[this.key]);if(this.game.cache.isSpriteSheet(a)){this.key=a;var d=this.game.cache.getFrameData(a);return"string"==typeof c?(this._frame=0,this._frameName=c,void this.setTexture(PIXI.TextureCache[d.getFrameByName(c).uuid])):(this._frame=c,this._frameName="",void this.setTexture(PIXI.TextureCache[d.getFrame(c).uuid]))}return this.key=a,void this.setTexture(PIXI.TextureCache[a])},b.Image.prototype.crop=function(a){if("undefined"==typeof a||null===a)this.texture.hasOwnProperty("sourceWidth")&&this.texture.setFrame(new b.Rectangle(0,0,this.texture.sourceWidth,this.texture.sourceHeight));else if(this.texture instanceof PIXI.Texture){var c={};b.Utils.extend(!0,c,this.texture),c.sourceWidth=c.width,c.sourceHeight=c.height,c.frame=a,c.width=a.width,c.height=a.height,this.texture=c,this.texture.updateFrame=!0,PIXI.Texture.frameUpdates.push(this.texture)}else this.texture.setFrame(a)},b.Image.prototype.revive=function(){return this.alive=!0,this.exists=!0,this.visible=!0,this.events&&this.events.onRevived.dispatch(this),this},b.Image.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Image.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.events&&this.events.destroy(),this.input&&this.input.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.Image.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this},b.Image.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},Object.defineProperty(b.Image.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Image.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Image.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Image.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Image.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"frame",{get:function(){return this._frame},set:function(a){if(a!==this.frame&&this.game.cache.isSpriteSheet(this.key)){var b=this.game.cache.getFrameData(this.key);b&&aa;a++)this.children[a].preUpdate();return!0},b.TileSprite.prototype.update=function(){},b.TileSprite.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},b.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},b.TileSprite.prototype.loadTexture=function(a,c){return c=c||0,a instanceof b.RenderTexture?(this.key=a.key,void this.setTexture(a)):a instanceof b.BitmapData?(this.key=a,void this.setTexture(a.texture)):a instanceof PIXI.Texture?(this.key=a,void this.setTexture(a)):null===a||"undefined"==typeof a?(this.key="__default",void this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?this.game.cache.isSpriteSheet(a)?(this.key=a,this.animations.loadFrameData(this.game.cache.getFrameData(a)),"string"==typeof c?this.frameName=c:this.frame=c,void 0):(this.key=a,void this.setTexture(PIXI.TextureCache[a])):(this.key="__missing",void this.setTexture(PIXI.TextureCache[this.key]))},b.TileSprite.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.TileSprite.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.TileSprite.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.TileSprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.TileSprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.TileSprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.TileSprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.TileSprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.TileSprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.TileSprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),b.Text=function(a,c,d,e,f){c=c||0,d=d||0,e=e||" ",f=f||{},e=0===e.length?" ":e.toString(),this.game=a,this.exists=!0,this.name="",this.type=b.TEXT,this.z=0,this.world=new b.Point(c,d),this._text=e,this._font="",this._fontSize=32,this._fontWeight="normal",this._lineSpacing=0,this.events=new b.Events(this),this.input=null,this.cameraOffset=new b.Point,this.setStyle(f),PIXI.Text.call(this,e,this.style),this.position.set(c,d),this._cache=[0,0,0,0,1,0,1,0]},b.Text.prototype=Object.create(PIXI.Text.prototype),b.Text.prototype.constructor=b.Text,b.Text.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform[2],this.game.camera.y+this.worldTransform[5]),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.runWordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=0;ee?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.resize=function(a,b){if(this.width=a,this.height=b,this.frame.width=this.width,this.frame.height=this.height,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.renderer.type===PIXI.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var c=this.renderer.gl;c.bindTexture(c.TEXTURE_2D,this.baseTexture._glTextures[c.id]),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,this.width,this.height,0,c.RGBA,c.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);PIXI.Texture.frameUpdates.push(this)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY),this.textureBuffer.clear();for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight),this.textureBuffer.clear(),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c,d){if("undefined"==typeof d&&(d=!1),a=a||256,b=b||256,d)var e=document.createElement("canvas");else var e=document.createElement(navigator.isCocoonJS?"screencanvas":"canvas");return"string"==typeof c&&""!==c&&(e.id=c),e.width=a,e.height=b,e.style.display="block",e},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.ejecta=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures(),this._checkOS()},b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0,this.typedArray=!0):(this.littleEndian=!1,this.typedArray=!1),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(this.vibration=!0)},_checkCSS3D:function(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),this.css3D=void 0!==a&&a.length>0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},nearestAngleBetween:function(a,b,c){"undefined"==typeof c&&(c=!0);var d=c?Math.PI:180;return a=this.normalizeAngle(a,c),b=this.normalizeAngle(b,c),-d/2>a&&b>d/2&&(a+=2*d),-d/2>b&&a>d/2&&(b+=2*d),b-a},interpolateAngles:function(a,b,c,d,e){return"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=null),a=this.normalizeAngle(a,d),b=this.normalizeAngleToAnother(b,a,d),"function"==typeof e?e(c,a,b-a,1):this.interpolateFloat(a,b,c)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},maxAdd:function(a,b,c){return a+=b,a>c&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*(3-2*a))},smootherstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*a*(a*(6*a-15)+10))},sign:function(a){return 0>a?-1:a>0?1:0},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0) -},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.round(this.realInRange(a,b))},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.level++,this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){var b=this.objects,c=this.getIndex(a.body);return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;aa;)this._tweens[a].update(this.game.time.now)?a++:(this._tweens.splice(a,1),b--);return this._add.length>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Linear.None,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1;var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):("string"==typeof l&&(l=k+parseFloat(l,10)),"number"==typeof l&&(j[c]=k+(l-k)*i))}g.push(j),d+=f}if(this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g,this._reversed=!this._reversed}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Time=function(a){this.game=a,this.time=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;a0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},update:function(a){if(this.paused)return!0;for(this._now=a,this._len=this.events.length,this._i=0;this._i=this.nextTick&&this._len>0){for(this._i=0;this._i=this.events[this._i].tick;){var b=this._now-this.events[this._i].tick,c=this._now+this.events[this._i].delay-b;0>c&&(c=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=c,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=c,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args),this.events.splice(this._i,1),this._len--),this._i++}this.events.length>0?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0,this._codePaused=!0)},_pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0)},resume:function(){if(this.running&&!this.expired){var a=this.game.time.now-this._pauseStarted;this._pauseTotal+=a;for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this._now-this._started-this._pauseTotal}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return.001*this.ms}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a){this._frameData=a,this.frame=0,this.isLoaded=!0},add:function(a,c,d,e,f){return null==this._frameData?void console.warn("No FrameData available for Phaser.Animation "+a):(c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null==this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1),this._anims[a])},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a]){if(this.currentAnim!=this._anims[a])return this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentAnim.play(b,c,d);if(this.currentAnim.isPlaying===!1)return this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)}},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData?this._frameData.total:-1}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart.dispatch(this._parent,this)},stop:function(a,b){"undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,a&&(this.currentFrame=this._frameData.getFrame(this._frames[0])),b&&(this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this))},onPause:function(){this.isPlaying&&(this._frameDiff=this._timeNextFrame-this.game.time.now)},onResume:function(){this.isPlaying&&(this._timeNextFrame=this.game.time.now+this._frameDiff)},update:function(){return this.isPaused?!1:this.isPlaying===!0&&this.game.time.now>=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete():(this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1))),!0):!1},destroy:function(){this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.destroy(),this.onLoop.destroy(),this.onComplete.destroy(),this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this)},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.width=b,this.height=c,this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},getFrameRange:function(a,b,c){"undefined"==typeof c&&(c=[]);for(var d=a;b>=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.onLoadComplete.dispatch()))},loadFile:function(){if(!this._fileList[this._fileIndex])return void console.warn("Phaser.Loader loadFile invalid index "+this._fileIndex);var a=this._fileList[this._fileIndex],c=this;switch(a.type){case"image":case"spritesheet":case"textureatlas":case"bitmapfont":a.data=new Image,a.data.name=a.key,a.data.onload=function(){return c.fileComplete(c._fileIndex)},a.data.onerror=function(){return c.fileError(c._fileIndex)},this.crossOrigin&&(a.data.crossOrigin=this.crossOrigin),a.data.src=this.baseURL+a.url;break;case"audio":a.url=this.getAudioURL(a.url),null!==a.url?this.game.sound.usingWebAudio?(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()):this.game.sound.usingAudioTag&&(this.game.sound.touchLocked?(a.data=new Audio,a.data.name=a.key,a.data.preload="auto",a.data.src=this.baseURL+a.url,this.fileComplete(this._fileIndex)):(a.data=new Audio,a.data.name=a.key,a.data.onerror=function(){return c.fileError(c._fileIndex)},a.data.preload="auto",a.data.src=this.baseURL+a.url,a.data.addEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete(this._fileIndex),!1),a.data.load())):this.fileError(this._fileIndex);break;case"json":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)},this._xhr.send();break;case"tilemap":if(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",a.format===b.Tilemap.TILED_JSON)this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)};else{if(a.format!==b.Tilemap.CSV)throw new Error("Phaser.Loader. Invalid Tilemap format: "+a.format);this._xhr.onload=function(){return c.csvLoadComplete(c._fileIndex)}}this._xhr.onerror=function(){return c.dataLoadError(c._fileIndex)},this._xhr.send();break;case"text":case"script":case"physics":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send();break;case"binary":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()}},getAudioURL:function(a){var b;"string"==typeof a&&(a=[a]);for(var c=0;c100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?(this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect)):(this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect))),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying!==!0||e!==!1||this.override!==!1){if(this.isPlaying&&this.override&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return void console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist");this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null==this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0}},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.stop(),this.isPlaying=!1,this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this))},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){this.isPlaying&&this._sound&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.isPlaying=!1;var a=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.onStop.dispatch(this,a)},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a&&this.game.sound.remove(this),this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose()}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding -}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a255)return b.Color.getColor(255,255,255);if(a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a}},getWebRGB:function(a){var b=(a>>>24)/255,c=a>>16&255,d=a>>8&255,e=255&a;return"rgba("+c.toString()+","+d.toString()+","+e.toString()+","+b.toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=5,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else{if(a===b.Physics.BOX2D&&null===this.box2d)throw new Error("The Box2D physics system has not been implemented yet.");if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")}},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja&&this.ninja.enableAABB(a)},preUpdate:function(){this.p2&&this.p2.preUpdate()},update:function(){this.p2&&this.p2.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.arcade=null,this.ninja=null,this.p2=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length)for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateTile:function(a,b,c){if(!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle -},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1},postUpdate:function(){this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){c=c||this.offset.x,d=d||this.offset.y,this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof c&&(c=!0),d=d||"rgba(0,255,0,0.4)",c?(a.fillStyle=d,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=d,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.width=1,this.height=1,this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)"object"==typeof a&&(h=this.game.rnd.pick(a)),"object"==typeof b&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):this.minParticleScale!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.width=a,this.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;c=a}if("string"==typeof a&&(a=this.getTilesetIndex(a)),this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i=[],j=0;d>j;j++){h=[];for(var k=0;c>k;k++)h.push(null);i.push(h)}var l={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:i};this.layers.push(l),this.currentLayer=this.layers.length-1;var m=l.widthInPixels,n=l.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var i=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return i.name=a,g.add(i)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hd;d++)this.setCollisionByIndex(a[d],b,c,!1);this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d){if("undefined"==typeof c&&(c=!0),d=this.getLayer(d),!(a>b)){for(var e=a;b>=e;e++)this.setCollisionByIndex(e,c,d,!1);this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c){"undefined"==typeof b&&(b=!0),c=this.getLayer(c);for(var d=0,e=this.tiles.length;e>d;d++)-1===a.indexOf(d)&&this.setCollisionByIndex(d,b,c,!1);this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b=0&&a=0&&b=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},getTile:function(a,b,c){return c=this.getLayer(c),a>=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c -},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gthis.layer.width&&(this._mc.maxX=this.layer.width),this._mc.maxY>this.layer.height&&(this._mc.maxY=this.layer.height)),this.dirty=!0},b.TilemapLayer.prototype.render=function(){if(this.layer.dirty&&(this.dirty=!0),this.dirty&&this.visible){this._mc.prevX=this._mc.dx,this._mc.prevY=this._mc.dy,this._mc.dx=-(this._mc.x-this._mc.startX*this.map.tileWidth),this._mc.dy=-(this._mc.y-this._mc.startY*this.map.tileHeight),this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.fillStyle=this.tileColor;var a,c;this.debug&&(this.context.globalAlpha=this.debugAlpha);for(var d=this._mc.startY,e=this._mc.startY+this._mc.maxY;e>d;d++){this._column=this.layer.data[d];for(var f=this._mc.startX,g=this._mc.startX+this._mc.maxX;g>f;f++)this._column[f]&&(a=this._column[f],c=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),c.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth;this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.game.renderType===b.WEBGL&&PIXI.updateWebGLTexture(this.baseTexture,this.game.renderer.gl),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){this._column=this.layer.data[a];for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=this._column[c];e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&a>=0&&this.layer.widthInPixels>this.width&&(this._mc.x=a,this._mc.x>this.layer.widthInPixels-this.width&&(this._mc.x=this.layer.widthInPixels-this.width),this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this._mc.startX<0&&(this._mc.startX=0),this._mc.startX+this._mc.maxX>this.layer.width&&(this._mc.startX=this.layer.width-this._mc.maxX),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&a>=0&&this.layer.heightInPixels>this.height&&(this._mc.y=a,this._mc.y>this.layer.heightInPixels-this.height&&(this._mc.y=this.layer.heightInPixels-this.height),this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this._mc.startY<0&&(this._mc.startY=0),this._mc.startY+this._mc.maxY>this.layer.height&&(this._mc.startY=this.layer.height-this._mc.maxY),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kj;j++)h.push(a.layers[e].data[j]>0?new b.Tile(f,a.layers[e].data[j],g,i.length,a.tilewidth,a.tileheight):null),g++,g===a.layers[e].width&&(i.push(h),g=0,h=[]);f.data=i,d.push(f)}c.layers=d;for(var l=[],e=0;es;s++)if(a.layers[e].objects[s].gid){var t={gid:a.layers[e].objects[s].gid,name:a.layers[e].objects[s].name,x:a.layers[e].objects[s].x,y:a.layers[e].objects[s].y,visible:a.layers[e].objects[s].visible,properties:a.layers[e].objects[s].properties};q[a.layers[e].name].push(t)}else if(a.layers[e].objects[s].polyline){var t={name:a.layers[e].objects[s].name,x:a.layers[e].objects[s].x,y:a.layers[e].objects[s].y,width:a.layers[e].objects[s].width,height:a.layers[e].objects[s].height,visible:a.layers[e].objects[s].visible,properties:a.layers[e].objects[s].properties};t.polyline=[];for(var u=0;u=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.resize=function(a,b){if(this.width=a,this.height=b,this.frame.width=this.width,this.frame.height=this.height,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.renderer.type===PIXI.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var c=this.renderer.gl;c.bindTexture(c.TEXTURE_2D,this.baseTexture._glTextures[c.id]),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,this.width,this.height,0,c.RGBA,c.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);PIXI.Texture.frameUpdates.push(this)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY),this.textureBuffer.clear();for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight),this.textureBuffer.clear(),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c,d){if("undefined"==typeof d&&(d=!1),a=a||256,b=b||256,d)var e=document.createElement("canvas");else var e=document.createElement(navigator.isCocoonJS?"screencanvas":"canvas");return"string"==typeof c&&""!==c&&(e.id=c),e.width=a,e.height=b,e.style.display="block",e},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures(),this._checkOS()},b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0,this.typedArray=!0):(this.littleEndian=!1,this.typedArray=!1),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(this.vibration=!0)},_checkCSS3D:function(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),this.css3D=void 0!==a&&a.length>0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},nearestAngleBetween:function(a,b,c){"undefined"==typeof c&&(c=!0);var d=c?Math.PI:180;return a=this.normalizeAngle(a,c),b=this.normalizeAngle(b,c),-d/2>a&&b>d/2&&(a+=2*d),-d/2>b&&a>d/2&&(b+=2*d),b-a},interpolateAngles:function(a,b,c,d,e){return"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=null),a=this.normalizeAngle(a,d),b=this.normalizeAngleToAnother(b,a,d),"function"==typeof e?e(c,a,b-a,1):this.interpolateFloat(a,b,c)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},maxAdd:function(a,b,c){return a+=b,a>c&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*(3-2*a))},smootherstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*a*(a*(6*a-15)+10))},sign:function(a){return 0>a?-1:a>0?1:0},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0) +},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.round(this.realInRange(a,b))},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this.reset(a,b,c,d,e,f,g)},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.level++,this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){var b=this.objects,c=this.getIndex(a.body);return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;aa;)this._tweens[a].update(this.game.time.now)?a++:(this._tweens.splice(a,1),b--);return this._add.length>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Linear.None,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1;var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):("string"==typeof l&&(l=k+parseFloat(l,10)),"number"==typeof l&&(j[c]=k+(l-k)*i))}g.push(j),d+=f}if(this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g,this._reversed=!this._reversed}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Time=function(a){this.game=a,this.time=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;a0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this._now=a,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args),this.events[this._i].pendingDelete=!0),this._i++;this.events.length>0?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0,this._codePaused=!0)},_pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0)},resume:function(){if(this.running&&!this.expired){var a=this.game.time.now-this._pauseStarted;this._pauseTotal+=a;for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this._now-this._started-this._pauseTotal}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return.001*this.ms}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a){this._frameData=a,this.frame=0,this.isLoaded=!0},add:function(a,c,d,e,f){return null==this._frameData?void console.warn("No FrameData available for Phaser.Animation "+a):(c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null==this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1),this._anims[a])},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a]){if(this.currentAnim!==this._anims[a])return this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentAnim.play(b,c,d);if(this.currentAnim.isPlaying===!1)return this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)}},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData?this._frameData.total:-1}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart.dispatch(this._parent,this)},stop:function(a,b){"undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,a&&(this.currentFrame=this._frameData.getFrame(this._frames[0])),b&&(this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this))},onPause:function(){this.isPlaying&&(this._frameDiff=this._timeNextFrame-this.game.time.now)},onResume:function(){this.isPlaying&&(this._timeNextFrame=this.game.time.now+this._frameDiff)},update:function(){return this.isPaused?!1:this.isPlaying===!0&&this.game.time.now>=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete():(this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1))),!0):!1},destroy:function(){this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this)},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.width=b,this.height=c,this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},getFrameRange:function(a,b,c){"undefined"==typeof c&&(c=[]);for(var d=a;b>=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.onLoadComplete.dispatch()))},loadFile:function(){if(!this._fileList[this._fileIndex])return void console.warn("Phaser.Loader loadFile invalid index "+this._fileIndex);var a=this._fileList[this._fileIndex],c=this;switch(this.onFileStart.dispatch(this.progress,a.key),a.type){case"image":case"spritesheet":case"textureatlas":case"bitmapfont":a.data=new Image,a.data.name=a.key,a.data.onload=function(){return c.fileComplete(c._fileIndex)},a.data.onerror=function(){return c.fileError(c._fileIndex)},this.crossOrigin&&(a.data.crossOrigin=this.crossOrigin),a.data.src=this.baseURL+a.url;break;case"audio":a.url=this.getAudioURL(a.url),null!==a.url?this.game.sound.usingWebAudio?(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()):this.game.sound.usingAudioTag&&(this.game.sound.touchLocked?(a.data=new Audio,a.data.name=a.key,a.data.preload="auto",a.data.src=this.baseURL+a.url,this.fileComplete(this._fileIndex)):(a.data=new Audio,a.data.name=a.key,a.data.onerror=function(){return c.fileError(c._fileIndex)},a.data.preload="auto",a.data.src=this.baseURL+a.url,a.data.addEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete(this._fileIndex),!1),a.data.load())):this.fileError(this._fileIndex);break;case"json":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)},this._xhr.send();break;case"tilemap":if(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",a.format===b.Tilemap.TILED_JSON)this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)};else{if(a.format!==b.Tilemap.CSV)throw new Error("Phaser.Loader. Invalid Tilemap format: "+a.format);this._xhr.onload=function(){return c.csvLoadComplete(c._fileIndex)}}this._xhr.onerror=function(){return c.dataLoadError(c._fileIndex)},this._xhr.send();break;case"text":case"script":case"physics":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send();break;case"binary":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()}},getAudioURL:function(a){var b;"string"==typeof a&&(a=[a]);for(var c=0;c100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?(this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect)):(this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect))),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying!==!0||e!==!1||this.override!==!1){if(this.isPlaying&&this.override&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return void console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist");this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null==this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0}},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.stop(),this.isPlaying=!1,this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this))},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){this.isPlaying&&this._sound&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.isPlaying=!1;var a=this.currentMarker; +""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.onStop.dispatch(this,a)},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a&&this.game.sound.remove(this),this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose()}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a255)return b.Color.getColor(255,255,255);if(a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a}},getWebRGB:function(a){var b=(a>>>24)/255,c=a>>16&255,d=a>>8&255,e=255&a;return"rgba("+c.toString()+","+d.toString()+","+e.toString()+","+b.toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=5,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else{if(a===b.Physics.BOX2D&&null===this.box2d)throw new Error("The Box2D physics system has not been implemented yet.");if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")}},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja&&this.ninja.enableAABB(a)},preUpdate:function(){this.p2&&this.p2.preUpdate()},update:function(){this.p2&&this.p2.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.arcade=null,this.ninja=null,this.p2=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length)for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateTile:function(a,b,c){if(!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle +},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1},postUpdate:function(){2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){c=c||this.offset.x,d=d||this.offset.y,this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof c&&(c=!0),d=d||"rgba(0,255,0,0.4)",c?(a.fillStyle=d,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=d,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.width=1,this.height=1,this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)"object"==typeof a&&(h=this.game.rnd.pick(a)),"object"==typeof b&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):this.minParticleScale!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.width=a,this.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;c=a}if("string"==typeof a&&(a=this.getTilesetIndex(a)),this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i=[],j=0;d>j;j++){h=[];for(var k=0;c>k;k++)h.push(null);i.push(h)}var l={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:i};this.layers.push(l),this.currentLayer=this.layers.length-1;var m=l.widthInPixels,n=l.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var i=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return i.name=a,g.add(i)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hd;d++)this.setCollisionByIndex(a[d],b,c,!1);this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d){if("undefined"==typeof c&&(c=!0),d=this.getLayer(d),!(a>b)){for(var e=a;b>=e;e++)this.setCollisionByIndex(e,c,d,!1);this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c){"undefined"==typeof b&&(b=!0),c=this.getLayer(c);for(var d=0,e=this.tiles.length;e>d;d++)-1===a.indexOf(d)&&this.setCollisionByIndex(d,b,c,!1);this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b=0&&a=0&&b=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},getTile:function(a,b,c){return c=this.getLayer(c),a>=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x) +},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gthis.layer.width&&(this._mc.maxX=this.layer.width),this._mc.maxY>this.layer.height&&(this._mc.maxY=this.layer.height)),this.dirty=!0},b.TilemapLayer.prototype.render=function(){if(this.layer.dirty&&(this.dirty=!0),this.dirty&&this.visible){this._mc.prevX=this._mc.dx,this._mc.prevY=this._mc.dy,this._mc.dx=-(this._mc.x-this._mc.startX*this.map.tileWidth),this._mc.dy=-(this._mc.y-this._mc.startY*this.map.tileHeight),this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.fillStyle=this.tileColor;var a,c;this.debug&&(this.context.globalAlpha=this.debugAlpha);for(var d=this._mc.startY,e=this._mc.startY+this._mc.maxY;e>d;d++){this._column=this.layer.data[d];for(var f=this._mc.startX,g=this._mc.startX+this._mc.maxX;g>f;f++)this._column[f]&&(a=this._column[f],c=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),c.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth;this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.game.renderType===b.WEBGL&&PIXI.updateWebGLTexture(this.baseTexture,this.game.renderer.gl),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){this._column=this.layer.data[a];for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=this._column[c];e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&a>=0&&this.layer.widthInPixels>this.width&&(this._mc.x=a,this._mc.x>this.layer.widthInPixels-this.width&&(this._mc.x=this.layer.widthInPixels-this.width),this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this._mc.startX<0&&(this._mc.startX=0),this._mc.startX+this._mc.maxX>this.layer.width&&(this._mc.startX=this.layer.width-this._mc.maxX),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&a>=0&&this.layer.heightInPixels>this.height&&(this._mc.y=a,this._mc.y>this.layer.heightInPixels-this.height&&(this._mc.y=this.layer.heightInPixels-this.height),this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this._mc.startY<0&&(this._mc.startY=0),this._mc.startY+this._mc.maxY>this.layer.height&&(this._mc.startY=this.layer.height-this._mc.maxY),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kj;j++)h.push(a.layers[e].data[j]>0?new b.Tile(f,a.layers[e].data[j],g,i.length,a.tilewidth,a.tileheight):null),g++,g===a.layers[e].width&&(i.push(h),g=0,h=[]);f.data=i,d.push(f)}c.layers=d;for(var l=[],e=0;es;s++)if(a.layers[e].objects[s].gid){var t={gid:a.layers[e].objects[s].gid,name:a.layers[e].objects[s].name,x:a.layers[e].objects[s].x,y:a.layers[e].objects[s].y,visible:a.layers[e].objects[s].visible,properties:a.layers[e].objects[s].properties};q[a.layers[e].name].push(t)}else if(a.layers[e].objects[s].polyline){var t={name:a.layers[e].objects[s].name,x:a.layers[e].objects[s].x,y:a.layers[e].objects[s].y,width:a.layers[e].objects[s].width,height:a.layers[e].objects[s].height,visible:a.layers[e].objects[s].visible,properties:a.layers[e].objects[s].properties};t.polyline=[];for(var u=0;u=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;e=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1},b.Rectangle.prototype.constructor=b.Rectangle,b.EmptyRectangle=new b.Rectangle(0,0,0,0),b.Polygon=function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this.points=a},b.Polygon.prototype.clone=function(){for(var a=[],c=0;cb!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!c)}return c},b.Polygon.prototype.constructor=b.Polygon,b.Circle=function(a,b,c){this.x=a||0,this.y=b||0,this.radius=c||0},b.Circle.prototype.clone=function(){return new b.Circle(this.x,this.y,this.radius)},b.Circle.prototype.contains=function(a,b){if(this.radius<=0)return!1;var c=this.x-a,d=this.y-b,e=this.radius*this.radius;return c*=c,d*=d,e>=c+d},b.Circle.prototype.constructor=b.Circle,b.Ellipse=function(a,b,c,d){this.x=a||0,this.y=b||0,this.width=c||0,this.height=d||0},b.Ellipse.prototype.clone=function(){return new b.Ellipse(this.x,this.y,this.width,this.height)},b.Ellipse.prototype.contains=function(a,b){if(this.width<=0||this.height<=0)return!1;var c=(a-this.x)/this.width,d=(b-this.y)/this.height;return c*=c,d*=d,1>=c+d},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},b.Ellipse.prototype.constructor=b.Ellipse,b.determineMatrixArrayType=function(){return"undefined"!=typeof Float32Array?Float32Array:Array},b.Matrix2=b.determineMatrixArrayType(),b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new Float32Array(9));var b=this.array;return a?(this.array[0]=this.a,this.array[1]=this.c,this.array[2]=0,this.array[3]=this.b,this.array[4]=this.d,this.array[5]=0,this.array[6]=this.tx,this.array[7]=this.ty,this.array[8]=1):(this.array[0]=this.a,this.array[1]=this.b,this.array[2]=this.tx,this.array[3]=this.c,this.array[4]=this.d,this.array[5]=this.ty,this.array[6]=0,this.array[7]=0,this.array[8]=1),b},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this.color=[],this.dynamic=!0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.setInteractive=function(a){this.interactive=a},Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length))throw new Error(a+" The index "+b+" supplied is out of bounds "+this.children.length);a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.children.indexOf(a),d=this.children.indexOf(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(a>=0&&a0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(a){if(0===this.children.length)return b.EmptyRectangle;if(a){var c=this.worldTransform;this.worldTransform=a,this.updateTransform(),this.worldTransform=c}for(var d,e,f,g=1/0,h=1/0,i=-1/0,j=-1/0,k=!1,l=0,m=this.children.length;m>l;l++){var n=this.children[l];n.visible&&(k=!0,d=this.children[l].getBounds(a),g=ge?i:e,j=j>f?j:f)}if(!k)return b.EmptyRectangle;var o=this._bounds;return o.x=g,o.y=h,o.width=i-g,o.height=j-h,o},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a.context);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a.context)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture.baseTexture!==a.baseTexture?(this.textureChange=!0,this.texture=a):this.texture=a,this.cachedTint=16777215,this.updateFrame=!0},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=this.texture.frame,d=a.context,e=this.texture;if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,d.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a.context),c&&c.width&&c.height&&e.baseTexture.source){d.globalAlpha=this.worldAlpha;var f=this.worldTransform;if(a.roundPixels?d.setTransform(f.a,f.c,f.b,f.d,0|f.tx,0|f.ty):d.setTransform(f.a,f.c,f.b,f.d,f.tx,f.ty),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,d[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR),16777215!==this.tint){if(this.cachedTint!==this.tint){if(!e.baseTexture.hasLoaded)return;this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)}d.drawImage(this.tintedTexture,0,0,c.width,c.height,this.anchor.x*-c.width,this.anchor.y*-c.height,c.width,c.height)}else if(e.trim){var g=e.trim;d.drawImage(this.texture.baseTexture.source,c.x,c.y,c.width,c.height,g.x-this.anchor.x*g.width,g.y-this.anchor.y*g.height,c.width,c.height)}else d.drawImage(this.texture.baseTexture.source,c.x,c.y,c.width,c.height,this.anchor.x*-c.width,this.anchor.y*-c.height,c.width,c.height)}for(var h=0,i=this.children.length;i>h;h++){var j=this.children[h];j._renderCanvas(a)}this._mask&&a.maskManager.popMask(a.context)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.activateShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.shaderManager.activateShader(a.shaderManager.defaultShader),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fe?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global};for(var c=0,d=["ms","moz","webkit","o"],e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget=function(){var a={};this.addEventListener=this.on=function(b,c){void 0===a[b]&&(a[b]=[]),-1===a[b].indexOf(c)&&a[b].push(c)},this.dispatchEvent=this.emit=function(b){if(a[b.type]&&a[b.type].length)for(var c=0,d=a[b.type].length;d>c;c++)a[b.type][c](b)},this.removeEventListener=this.off=function(b,c){var d=a[b].indexOf(c);-1!==d&&a[b].splice(d,1)},this.removeAllEventListeners=function(b){var c=a[b];c&&(c.length=0)}},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c);return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.attributes=[],this.init()},b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]||b.createWebGLTexture(a.value.baseTexture,c)),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec2 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init() },b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(){this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));"," gl_FragColor = gl_FragColor * alpha;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","varying vec2 vTextureCoord;","uniform vec2 offsetVector;","varying float vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition, 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"]},b.StripShader.prototype.init=function(){var a=b.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader=function(a){this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d=c.gl,e=c.projection,f=c.offset,g=c.shaderManager.primitiveShader;a._webGL[d.id]||(a._webGL[d.id]={points:[],indices:[],lastIndex:0,buffer:d.createBuffer(),indexBuffer:d.createBuffer()});var h=a._webGL[d.id];a.dirty&&(a.dirty=!1,a.clearDirty&&(a.clearDirty=!1,h.lastIndex=0,h.points=[],h.indices=[]),b.WebGLGraphics.updateGraphics(a,d)),c.shaderManager.activatePrimitiveShader(),d.blendFunc(d.ONE,d.ONE_MINUS_SRC_ALPHA),d.uniformMatrix3fv(g.translationMatrix,!1,a.worldTransform.toArray(!0)),d.uniform2f(g.projectionVector,e.x,-e.y),d.uniform2f(g.offsetVector,-f.x,-f.y),d.uniform3fv(g.tintColor,b.hex2rgb(a.tint)),d.uniform1f(g.alpha,a.worldAlpha),d.bindBuffer(d.ARRAY_BUFFER,h.buffer),d.vertexAttribPointer(g.aVertexPosition,2,d.FLOAT,!1,24,0),d.vertexAttribPointer(g.colorAttribute,4,d.FLOAT,!1,24,8),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,h.indexBuffer),d.drawElements(d.TRIANGLE_STRIP,h.indices.length,d.UNSIGNED_SHORT,0),c.shaderManager.deactivatePrimitiveShader()},b.WebGLGraphics.updateGraphics=function(a,c){for(var d=a._webGL[c.id],e=d.lastIndex;e3&&b.WebGLGraphics.buildPoly(f,d),f.lineWidth>0&&b.WebGLGraphics.buildLine(f,d)):f.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(f,d):(f.type===b.Graphics.CIRC||f.type===b.Graphics.ELIP)&&b.WebGLGraphics.buildCircle(f,d)}d.lastIndex=a.graphicsData.length,d.glPoints=new Float32Array(d.points),c.bindBuffer(c.ARRAY_BUFFER,d.buffer),c.bufferData(c.ARRAY_BUFFER,d.glPoints,c.STATIC_DRAW),d.glIndicies=new Uint16Array(d.indices),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,d.indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,d.glIndicies,c.STATIC_DRAW)},b.WebGLGraphics.buildRectangle=function(a,c){var d=a.points,e=d[0],f=d[1],g=d[2],h=d[3];if(a.fill){var i=b.hex2rgb(a.fillColor),j=a.fillAlpha,k=i[0]*j,l=i[1]*j,m=i[2]*j,n=c.points,o=c.indices,p=n.length/6;n.push(e,f),n.push(k,l,m,j),n.push(e+g,f),n.push(k,l,m,j),n.push(e,f+h),n.push(k,l,m,j),n.push(e+g,f+h),n.push(k,l,m,j),o.push(p,p,p+1,p+2,p+3,p+3)}if(a.lineWidth){var q=a.points;a.points=[e,f,e+g,f,e+g,f+h,e,f+h,e,f],b.WebGLGraphics.buildLine(a,c),a.points=q}},b.WebGLGraphics.buildCircle=function(a,c){var d=a.points,e=d[0],f=d[1],g=d[2],h=d[3],i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(e,f,n,o,p,m),q.push(e+Math.sin(j*k)*g,f+Math.cos(j*k)*h,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(e+Math.sin(j*k)*g,f+Math.cos(j*k)*h);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.glContexts=[],b.WebGLRenderer=function(a,c,d,e,f){b.defaultRenderer||(b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.transparent=!!e,this.width=a||800,this.height=c||600,this.view=d||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.contextLost=this.handleContextLost.bind(this),this.contextRestoredLost=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLost,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredLost,!1),this.options={alpha:this.transparent,antialias:!!f,premultipliedAlpha:!!e,stencil:!0};try{this.gl=this.view.getContext("experimental-webgl",this.options)}catch(g){try{this.gl=this.view.getContext("webgl",this.options)}catch(h){throw new Error(" This browser does not support webGL. Try using the canvas renderer"+this)}}var i=this.gl;this.glContextId=i.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=i,b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[i.SRC_ALPHA,i.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[i.DST_COLOR,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[i.SRC_ALPHA,i.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[i.ONE,i.ONE_MINUS_SRC_ALPHA]),this.projection=new b.Point,this.projection.x=this.width/2,this.projection.y=-this.height/2,this.offset=new b.Point(0,0),this.resize(this.width,this.height),this.contextLost=!1,this.shaderManager=new b.WebGLShaderManager(i),this.spriteBatch=new b.WebGLSpriteBatch(i),this.maskManager=new b.WebGLMaskManager(i),this.filterManager=new b.WebGLFilterManager(i,this.transparent),this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.renderer=this,i.useProgram(this.shaderManager.defaultShader.program),i.disable(i.DEPTH_TEST),i.disable(i.CULL_FACE),i.enable(i.BLEND),i.colorMask(!0,!0,!0,this.transparent)},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),b.WebGLRenderer.updateTextures(),a.updateTransform(),a._interactive&&(a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)));var c=this.gl;c.viewport(0,0,this.width,this.height),c.bindFramebuffer(c.FRAMEBUFFER,null),this.transparent?c.clearColor(0,0,0,0):c.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),c.clear(c.COLOR_BUFFER_BIT),this.renderDisplayObject(a,this.projection),a.interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this))}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,b,c){this.renderSession.drawCount=0,this.renderSession.currentBlendMode=9999,this.renderSession.projection=b,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,c),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.updateTextures=function(){var a=0;for(a=0;a=0;c--){var d=a._glTextures[c],e=b.glContexts[c];e&&d&&e.deleteTexture(d)}a._glTextures.length=0},b.WebGLRenderer.updateTextureFrame=function(a){a.updateFrame=!1,a._updateWebGLuvs()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.view.width=a,this.view.height=b,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2,this.projection.y=-this.height/2},b.createWebGLTexture=function(a,c){return a.hasLoaded&&(a._glTextures[c.id]=c.createTexture(),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),c.bindTexture(c.TEXTURE_2D,null)),a._glTextures[c.id]},b.updateWebGLTexture=function(a,c){a._glTextures[c.id]&&(c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),c.bindTexture(c.TEXTURE_2D,null))},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){try{this.gl=this.view.getContext("experimental-webgl",this.options)}catch(a){try{this.gl=this.view.getContext("webgl",this.options)}catch(c){throw new Error(" This browser does not support webGL. Try using the canvas renderer"+this)}}var d=this.gl;d.id=b.WebGLRenderer.glContextId++,this.shaderManager.setContext(d),this.spriteBatch.setContext(d),this.maskManager.setContext(d),this.filterManager.setContext(d),this.renderSession.gl=this.gl,d.disable(d.DEPTH_TEST),d.disable(d.CULL_FACE),d.enable(d.BLEND),d.colorMask(!0,!0,!0,this.transparent),this.gl.viewport(0,0,this.width,this.height);for(var e in b.TextureCache){var f=b.TextureCache[e].baseTexture;f._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.removeEventListener("webglcontextlost",this.contextLost),this.view.removeEventListener("webglcontextrestored",this.contextRestoredLost),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.glContextId=0,b.WebGLMaskManager=function(a){this.maskStack=[],this.maskPosition=0,this.setContext(a)},b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=this.gl;0===this.maskStack.length&&(d.enable(d.STENCIL_TEST),d.stencilFunc(d.ALWAYS,1,1)),this.maskStack.push(a),d.colorMask(!1,!1,!1,!0),d.stencilOp(d.KEEP,d.KEEP,d.INCR),b.WebGLGraphics.renderGraphics(a,c),d.colorMask(!0,!0,!0,!0),d.stencilFunc(d.NOTEQUAL,0,this.maskStack.length),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)},b.WebGLMaskManager.prototype.popMask=function(a){var c=this.gl,d=this.maskStack.pop();d&&(c.colorMask(!1,!1,!1,!1),c.stencilOp(c.KEEP,c.KEEP,c.DECR),b.WebGLGraphics.renderGraphics(d,a),c.colorMask(!0,!0,!0,!0),c.stencilFunc(c.NOTEQUAL,0,this.maskStack.length),c.stencilOp(c.KEEP,c.KEEP,c.KEEP)),0===this.maskStack.length&&c.disable(c.STENCIL_TEST)},b.WebGLMaskManager.prototype.destroy=function(){this.maskStack=null,this.gl=null},b.WebGLShaderManager=function(a){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var b=0;bd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.setContext(a)},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;(b.baseTexture!==this.currentBaseTexture||this.currentBatchSize>=this.size)&&(this.flush(),this.currentBaseTexture=b.baseTexture),a.blendMode!==this.currentBlendMode&&this.setBlendMode(a.blendMode);var c=a._uvs||a.texture._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(a.texture.trim){var m=a.texture.trim;e=m.x-k*m.width,d=e+b.frame.width,g=m.y-l*m.height,f=g+b.frame.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=a.worldTransform,p=o.a,q=o.c,r=o.b,s=o.d,t=o.tx,u=o.ty;j[n++]=p*e+r*g+t,j[n++]=s*g+q*e+u,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=p*d+r*g+t,j[n++]=s*g+q*d+u,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=p*d+r*f+t,j[n++]=s*f+q*d+u,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=p*e+r*f+t,j[n++]=s*f+q*e+u,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.currentBatchSize++}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;(c.baseTexture!==this.currentBaseTexture||this.currentBatchSize>=this.size)&&(this.flush(),this.currentBaseTexture=c.baseTexture),a.blendMode!==this.currentBlendMode&&this.setBlendMode(a.blendMode),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=a.worldTransform,v=u.a,w=u.c,x=u.b,y=u.d,z=u.tx,A=u.ty;k[t++]=v*q+x*s+z,k[t++]=y*s+w*q+A,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=v*p+x*s+z,k[t++]=y*s+w*p+A,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=v*p+x*r+z,k[t++]=y*r+w*p+A,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=v*q+x*r+z,k[t++]=y*r+w*q+A,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.currentBatchSize++},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a)),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var c=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,c.x,c.y);var d=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,d,0),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,d,8),a.vertexAttribPointer(this.shader.colorAttribute,2,a.FLOAT,!1,d,16),this.currentBlendMode!==b.blendModes.NORMAL&&this.setBlendMode(b.blendModes.NORMAL)},b.WebGLSpriteBatch.prototype.setBlendMode=function(a){this.flush(),this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];this.gl.blendFunc(c[0],c[1])},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var b=4*this.size*this.vertSize,c=6*this.maxSize;this.vertices=new Float32Array(b),this.indices=new Uint16Array(c),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var d=0,e=0;c>d;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.currentBlendMode&&this.setBlendMode(c.blendMode);for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.frame.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.frame.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var c=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,c.x,c.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var d=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,d,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,d,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,d,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,d,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,d,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,d,36),this.currentBlendMode!==b.blendModes.NORMAL&&this.setBlendMode(b.blendModes.NORMAL)},b.WebGLFastSpriteBatch.prototype.setBlendMode=function(a){this.flush(),this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];this.gl.blendFunc(c[0],c[1])},b.WebGLFilterManager=function(a,b){this.transparent=b,this.filterStack=[],this.offsetX=0,this.offsetY=0,this.setContext(a)},b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.uniform2f(this.defaultShader.projectionVector,h.width/2,-h.height/2),c.uniform2f(this.defaultShader.offsetVector,-h.x,-h.y),c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0&&(b.Texture.frameUpdates.length=0)},b.CanvasRenderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.view.width=a,this.view.height=b},b.CanvasRenderer.prototype.renderDisplayObject=function(a,b){this.renderSession.context=b||this.context,a._renderCanvas(this.renderSession)},b.CanvasRenderer.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.CanvasRenderer.prototype.renderStrip=function(a){var b=this.context,c=a.verticies,d=a.uvs,e=c.length/2;this.count++;for(var f=1;e-2>f;f++){var g=2*f,h=c[g],i=c[g+2],j=c[g+4],k=c[g+1],l=c[g+3],m=c[g+5],n=d[g]*a.texture.width,o=d[g+2]*a.texture.width,p=d[g+4]*a.texture.width,q=d[g+1]*a.texture.height,r=d[g+3]*a.texture.height,s=d[g+5]*a.texture.height;b.save(),b.beginPath(),b.moveTo(h,k),b.lineTo(i,l),b.lineTo(j,m),b.closePath(),b.clip();var t=n*r+q*p+o*s-r*p-q*o-n*s,u=h*r+q*j+i*s-r*j-q*i-h*s,v=n*i+h*p+o*j-i*p-h*o-n*j,w=n*r*j+q*i*p+h*o*s-h*r*p-q*o*j-n*i*s,x=k*r+q*m+l*s-r*m-q*l-k*s,y=n*l+k*p+o*m-l*p-k*o-n*m,z=n*r*m+q*l*p+k*o*s-k*r*p-q*o*m-n*l*s;b.transform(u/t,x/t,v/t,y/t,w/t,z/t),b.drawImage(a.texture.baseTexture.source,0,0),b.restore()}},b.CanvasBuffer=function(a,b){this.width=a,this.height=b,this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=a,this.canvas.height=b},b.CanvasBuffer.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)},b.CanvasBuffer.prototype.resize=function(a,b){this.width=this.canvas.width=a,this.height=this.canvas.height=b},b.CanvasGraphics=function(){},b.CanvasGraphics.renderGraphics=function(a,c){for(var d=a.worldAlpha,e="",f=0;f1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.points;if(f.type===b.Graphics.POLY){c.beginPath(),c.moveTo(g[0],g[1]);for(var h=1;hd;d++)this.children[d]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),a.drawCount++,a.spriteBatch.start()}},b.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){var c=a.context,d=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),c.setTransform(d.a,d.c,d.b,d.d,d.tx,d.ty),b.CanvasGraphics.renderGraphics(this,c);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a)}},b.Graphics.prototype.getBounds=function(a){this.bounds||this.updateBounds();var b=this.bounds.x,c=this.bounds.width+this.bounds.x,d=this.bounds.y,e=this.bounds.height+this.bounds.y,f=a||this.worldTransform,g=f.a,h=f.c,i=f.b,j=f.d,k=f.tx,l=f.ty,m=g*c+i*e+k,n=j*e+h*c+l,o=g*b+i*e+k,p=j*e+h*b+l,q=g*b+i*d+k,r=j*d+h*b+l,s=g*c+i*d+k,t=j*d+h*c+l,u=-1/0,v=-1/0,w=1/0,x=1/0;w=w>m?m:w,w=w>o?o:w,w=w>q?q:w,w=w>s?s:w,x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,u=m>u?m:u,u=o>u?o:u,u=q>u?q:u,u=s>u?s:u,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v;var y=this._bounds;return y.x=w,y.width=u-w,y.y=x,y.height=v-x,y},b.Graphics.prototype.updateBounds=function(){for(var a,c,d,e,f,g=1/0,h=-1/0,i=1/0,j=-1/0,k=0;kc?c:g,h=c+e>h?c+e:h,i=i>d?c:i,j=d+f>j?d+f:j;else if(m===b.Graphics.CIRC||m===b.Graphics.ELIP)c=a[0],d=a[1],e=a[2]+n/2,f=a[3]+n/2,g=g>c-e?c-e:g,h=c+e>h?c+e:h,i=i>d-f?d-f:i,j=d+f>j?d+f:j;else for(var o=0;oc-n?c-n:g,h=c+n>h?c+n:h,i=i>d-n?d-n:i,j=d+n>j?d+n:j}var p=this.boundsPadding;this.bounds=new b.Rectangle(g-p,i-p,h-g+2*p,j-i+2*p)},b.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var c=new b.CanvasBuffer(a.width,a.height),d=b.Texture.fromCanvas(c.canvas);this._cachedSprite=new b.Sprite(d),this._cachedSprite.buffer=c,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),b.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},b.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},b.Graphics.POLY=0,b.Graphics.RECT=1,b.Graphics.CIRC=2,b.Graphics.ELIP=3,b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this.width=c||100,this.height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this.mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this.filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this.filters&&a.filterManager.popFilter(),this.mask&&a.maskManager.popMask(a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d=this.worldTransform;if(c.setTransform(d.a,d.c,d.b,d.d,d.tx,d.ty),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),c.beginPath();var e=this.tilePosition,f=this.tileScale;e.x%=this.tilingTexture.baseTexture.width,e.y%=this.tilingTexture.baseTexture.height,c.scale(f.x,f.y),c.translate(e.x,e.y),c.fillStyle=this.__tilePattern,c.fillRect(-e.x+this.anchor.x*-this._width,-e.y+this.anchor.y*-this._height,this._width/f.x,this._height/f.y),c.scale(1/f.x,1/f.y),c.translate(-e.x,-e.y),c.closePath(),this._mask&&a.maskManager.popMask(a.context)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.generateTilingTexture=function(a){var c=this.texture;if(c.baseTexture.hasLoaded){var d,e,f=c.baseTexture,g=c.frame,h=g.width!==f.width||g.height!==f.height,i=!1;if(a?(d=b.getNextPowerOfTwo(g.width),e=b.getNextPowerOfTwo(g.height),g.width!==d&&g.height!==e&&(i=!0)):h&&(d=g.width,e=g.height,i=!0),i){var j;this.tilingTexture&&this.tilingTexture.isTiling?(j=this.tilingTexture.canvasBuffer,j.resize(d,e),this.tilingTexture.baseTexture.width=d,this.tilingTexture.baseTexture.height=e,this.tilingTexture.needsUpdate=!0):(j=new b.CanvasBuffer(d,e),this.tilingTexture=b.Texture.fromCanvas(j.canvas),this.tilingTexture.canvasBuffer=j,this.tilingTexture.isTiling=!0),j.context.drawImage(c.baseTexture.source,g.x,g.y,g.width,g.height,0,0,d,e),this.tileScaleOffset.x=g.width/d,this.tileScaleOffset.y=g.height/e}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=c;this.refreshTexture=!1,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.texturesToUpdate=[],b.texturesToDestroy=[],b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(b.EventTarget.call(this),this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this.id=b.BaseTextureCacheIdGenerator++,this._glTextures=[],a){if(this.source.complete||this.source.getContext)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,b.texturesToUpdate.push(this);else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.width,d.height=d.source.height,b.texturesToUpdate.push(d),d.dispatchEvent({type:"loaded",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.destroy=function(){this.imageUrl&&(delete b.BaseTextureCache[this.imageUrl],this.imageUrl=null,this.source.src=null),this.source=null,b.texturesToDestroy.push(this)},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureCacheIdGenerator=0,b.Texture=function(a,c){if(b.EventTarget.call(this),c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=null,this.scope=this,this._uvs=null,a.hasLoaded)this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c);else{var d=this;a.addEventListener("loaded",function(){d.onBaseTextureLoaded()})}},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;a.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame),this.scope.dispatchEvent({type:"update",content:this})},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy()},b.Texture.prototype.setFrame=function(a){if(this.frame=a,this.width=a.width,this.height=a.height,a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,b.Texture.frameUpdates.push(this)},b.Texture.prototype._updateWebGLuvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.frame,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.Texture.frameUpdates=[],b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y4=0},b.RenderTexture=function(a,c,d){if(b.EventTarget.call(this),this.width=a||100,this.height=c||100,this.frame=new b.Rectangle(0,0,this.width,this.height),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTextures=[],this.baseTexture.hasLoaded=!0,this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var e=this.renderer.gl;this.textureBuffer=new b.FilterTexture(e,this.width,this.height),this.baseTexture._glTextures[e.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(this.width/2,-this.height/2)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width,this.height),this.baseTexture.source=this.textureBuffer.canvas;b.Texture.frameUpdates.push(this)},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c){if(this.width=a,this.height=c,this.frame.width=this.width,this.frame.height=this.height,this.renderer.type===b.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var d=this.renderer.gl;d.bindTexture(d.TEXTURE_2D,this.baseTexture._glTextures[d.id]),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,this.width,this.height,0,d.RGBA,d.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);b.Texture.frameUpdates.push(this)},b.RenderTexture.prototype.renderWebGL=function(a,c,d){var e=this.renderer.gl;e.colorMask(!0,!0,!0,!0),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,this.textureBuffer.frameBuffer),d&&this.textureBuffer.clear();var f=a.children,g=a.worldTransform;a.worldTransform=b.RenderTexture.tempMatrix,a.worldTransform.d=-1,a.worldTransform.ty=-2*this.projection.y,c&&(a.worldTransform.tx=c.x,a.worldTransform.ty-=c.y);for(var h=0,i=f.length;i>h;h++)f[h].updateTransform();b.WebGLRenderer.updateTextures(),this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),a.worldTransform=g},b.RenderTexture.prototype.renderCanvas=function(a,c,d){var e=a.children,f=a.worldTransform;a.worldTransform=b.RenderTexture.tempMatrix,c&&(a.worldTransform.tx=c.x,a.worldTransform.ty=c.y);for(var g=0,h=e.length;h>g;g++)e[g].updateTransform();d&&this.textureBuffer.clear();var i=this.textureBuffer.context;this.renderer.renderDisplayObject(a,i),i.setTransform(1,0,0,1,0,0),a.worldTransform=f},b.RenderTexture.tempMatrix=new b.Matrix,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this); \ No newline at end of file diff --git a/build/phaser.js b/build/phaser.js index d63ad94be3..7e8f814b06 100644 --- a/build/phaser.js +++ b/build/phaser.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.0.3 "Allorallen" - Built: Fri Apr 11 2014 13:08:30 +* v2.0.4 "Mos Shirare" - Built: Tue Apr 15 2014 15:38:35 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -9702,7 +9702,7 @@ PIXI.RenderTexture.tempMatrix = new PIXI.Matrix(); * * Phaser - http://phaser.io * -* v2.0.3 "Allorallen" - Built: Fri Apr 11 2014 13:08:30 +* v2.0.4 "Mos Shirare" - Built: Tue Apr 15 2014 15:38:35 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -9746,7 +9746,7 @@ PIXI.RenderTexture.tempMatrix = new PIXI.Matrix(); var Phaser = Phaser || { VERSION: '<%= version %>', - DEV_VERSION: '2.0.3', + DEV_VERSION: '2.0.4', GAMES: [], AUTO: 0, @@ -12158,7 +12158,7 @@ Object.defineProperty(Phaser.Line.prototype, "length", { Object.defineProperty(Phaser.Line.prototype, "angle", { get: function () { - return Math.atan2(this.end.x - this.start.x, this.end.y - this.start.y); + return Math.atan2(this.end.y - this.start.y, this.end.x - this.start.x); } }); @@ -13671,9 +13671,9 @@ Phaser.StateManager.prototype = { this._clearWorld = clearWorld; this._clearCache = clearCache; - if (arguments.length > 3) + if (arguments.length > 2) { - this._args = Array.prototype.splice.call(arguments, 3); + this._args = Array.prototype.splice.call(arguments, 2); } }, @@ -17022,7 +17022,7 @@ Phaser.Group.prototype.remove = function (child, destroy) { child.events.onRemovedFromGroup.dispatch(child, this); } - this.removeChild(child); + var removed = this.removeChild(child); this.updateZ(); @@ -17031,9 +17031,9 @@ Phaser.Group.prototype.remove = function (child, destroy) { this.next(); } - if (destroy) + if (destroy && removed) { - child.destroy(); + removed.destroy(); } return true; @@ -17063,11 +17063,11 @@ Phaser.Group.prototype.removeAll = function (destroy) { this.children[0].events.onRemovedFromGroup.dispatch(this.children[0], this); } - this.removeChild(this.children[0]); + var removed = this.removeChild(this.children[0]); - if (destroy) + if (destroy && removed) { - this.children[0].destroy(); + removed.destroy(); } } while (this.children.length > 0); @@ -17108,11 +17108,11 @@ Phaser.Group.prototype.removeBetween = function (startIndex, endIndex, destroy) this.children[i].events.onRemovedFromGroup.dispatch(this.children[i], this); } - this.removeChild(this.children[i]); + var removed = this.removeChild(this.children[i]); - if (destroy) + if (destroy && removed) { - this.children[i].destroy(); + removed.destroy(); } if (this.cursor === this.children[i]) @@ -17141,24 +17141,7 @@ Phaser.Group.prototype.destroy = function (destroyChildren, soft) { if (typeof destroyChildren === 'undefined') { destroyChildren = true; } if (typeof soft === 'undefined') { soft = false; } - if (destroyChildren) - { - if (this.children.length > 0) - { - do - { - if (this.children[0].parent) - { - this.children[0].destroy(destroyChildren); - } - } - while (this.children.length > 0); - } - } - else - { - this.removeAll(); - } + this.removeAll(destroyChildren); this.cursor = null; @@ -19349,6 +19332,12 @@ Phaser.Input = function (game) { */ // this.gestures = null; + /** + * @property {boolean} resetLocked - If the Input Manager has been reset locked then all calls made to InputManager.reset, such as from a State change, are ignored. + * @default + */ + this.resetLocked = false; + /** * @property {Phaser.Signal} onDown - A Signal that is dispatched each time a pointer is pressed down. */ @@ -19578,20 +19567,23 @@ Phaser.Input.prototype = { }, /** - * Reset all of the Pointers and Input states + * Reset all of the Pointers and Input states. The optional `hard` parameter will reset any events or callbacks that may be bound. + * Input.reset is called automatically during a State change or if a game loses focus / visibility. If you wish to control the reset + * directly yourself then set InputManager.resetLocked to `true`. + * * @method Phaser.Input#reset - * @param {boolean} hard - A soft reset (hard = false) won't reset any Signals that might be bound. A hard reset will. + * @param {boolean} [hard=false] - A soft reset won't reset any events or callbacks that are bound. A hard reset will. */ reset: function (hard) { - if (this.game.isBooted === false) + if (!this.game.isBooted || this.resetLocked) { return; } - if (typeof hard == 'undefined') { hard = false; } + if (typeof hard === 'undefined') { hard = false; } - this.keyboard.reset(); + this.keyboard.reset(hard); this.mousePointer.reset(); this.gamepad.reset(); @@ -19610,7 +19602,7 @@ Phaser.Input.prototype = { this.game.canvas.style.cursor = 'inherit'; } - if (hard === true) + if (hard) { this.onDown.dispose(); this.onUp.dispose(); @@ -20208,8 +20200,11 @@ Phaser.Key.prototype = { * associated with the onDown and onUp events and nulls the onHoldCallback if set. * * @method Phaser.Key#reset + * @param {boolean} [hard=true] - A soft reset won't reset any events or callbacks that are bound to this Key. A hard reset will. */ - reset: function () { + reset: function (hard) { + + if (typeof hard === 'undefined') { hard = true; } this.isDown = false; this.isUp = true; @@ -20217,10 +20212,13 @@ Phaser.Key.prototype = { this.duration = this.game.time.now - this.timeDown; this.enabled = true; - this.onDown.removeAll(); - this.onUp.removeAll(); - this.onHoldCallback = null; - this.onHoldContext = null; + if (hard) + { + this.onDown.removeAll(); + this.onUp.removeAll(); + this.onHoldCallback = null; + this.onHoldContext = null; + } }, @@ -20616,8 +20614,11 @@ Phaser.Keyboard.prototype = { * Resets all Keys. * * @method Phaser.Keyboard#reset + * @param {boolean} [hard=true] - A soft reset won't reset any events or callbacks that are bound to the Keys. A hard reset will. */ - reset: function () { + reset: function (hard) { + + if (typeof hard === 'undefined') { hard = true; } this.event = null; @@ -20627,7 +20628,7 @@ Phaser.Keyboard.prototype = { { if (this._keys[i]) { - this._keys[i].reset(); + this._keys[i].reset(hard); } } @@ -32339,11 +32340,17 @@ Phaser.Device = function (game) { this.cocoonJS = false; /** - * @property {boolean} ejecta - Is the game running under Ejecta? - * @default - */ + * @property {boolean} ejecta - Is the game running under Ejecta? + * @default + */ this.ejecta = false; + /** + * @property {boolean} crosswalk - Is the game running under the Intel Crosswalk XDK? + * @default + */ + this.crosswalk = false; + /** * @property {boolean} android - Is running on android? * @default @@ -32902,6 +32909,11 @@ Phaser.Device.prototype = { this.ejecta = true; } + if (/Crosswalk/.test(ua)) + { + this.crosswalk = true; + } + }, /** @@ -33594,7 +33606,7 @@ Phaser.Math = { * @return {number} */ angleBetween: function (x1, y1, x2, y2) { - return Math.atan2(x2 - x1, y2 - y1); + return Math.atan2(y2 - y1, x2 - x1); }, /** @@ -33605,7 +33617,7 @@ Phaser.Math = { * @return {number} */ angleBetweenPoints: function (point1, point2) { - return Math.atan2(point2.x - point1.x, point2.y - point1.y); + return Math.atan2(point2.y - point1.y, point2.x - point1.x); }, /** @@ -37387,6 +37399,18 @@ Phaser.Timer = function (game, autoDestroy) { */ this._i = 0; + /** + * @property {number} _diff - Internal cache var. + * @private + */ + this._diff = 0; + + /** + * @property {number} _newTick - Internal cache var. + * @private + */ + this._newTick = 0; + }; /** @@ -37456,6 +37480,7 @@ Phaser.Timer.prototype = { * Adds a new Event to this Timer. The event will fire after the given amount of 'delay' in milliseconds has passed, once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#add * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. * @param {function} callback - The callback that will be called when the Timer event occurs. @@ -37474,9 +37499,10 @@ Phaser.Timer.prototype = { * The event will fire after the given amount of 'delay' milliseconds has passed once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#repeat * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. - * @param {number} repeatCount - The number of times the event will repeat. + * @param {number} repeatCount - The number of times the event will repeat once is has finished playback. A repeatCount of 1 means it will repeat itself once, playing the event twice in total. * @param {function} callback - The callback that will be called when the Timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - The values to be sent to your callback function when it is called. @@ -37493,6 +37519,7 @@ Phaser.Timer.prototype = { * The event will fire after the given amount of 'delay' milliseconds has passed once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#loop * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. * @param {function} callback - The callback that will be called when the Timer event occurs. @@ -37603,6 +37630,28 @@ Phaser.Timer.prototype = { }, + /** + * Clears any events from the Timer which have pendingDelete set to true and then resets the private _len and _i values. + * + * @method Phaser.Timer#clearPendingEvents + */ + clearPendingEvents: function () { + + this._i = this.events.length; + + while (this._i--) + { + if (this.events[this._i].pendingDelete) + { + this.events.splice(this._i, 1); + } + } + + this._len = this.events.length; + this._i = 0; + + }, + /** * The main Timer update event, called automatically by the Game clock. * @method Phaser.Timer#update @@ -37619,55 +37668,38 @@ Phaser.Timer.prototype = { this._now = time; - this._len = this.events.length; - - this._i = 0; - - while (this._i < this._len) - { - if (this.events[this._i].pendingDelete) - { - this.events.splice(this._i, 1); - this._len--; - } - - this._i++; - } - - this._len = this.events.length; + // Clears events marked for deletion and resets _len and _i to 0. + this.clearPendingEvents(); if (this.running && this._now >= this.nextTick && this._len > 0) { - this._i = 0; - while (this._i < this._len && this.running) { if (this._now >= this.events[this._i].tick) { - var diff = this._now - this.events[this._i].tick; - var newTick = (this._now + this.events[this._i].delay) - diff; + // (now + delay) - (time difference from last tick to now) + this._newTick = (this._now + this.events[this._i].delay) - (this._now - this.events[this._i].tick); - if (newTick < 0) + if (this._newTick < 0) { - newTick = this._now + this.events[this._i].delay; + this._newTick = this._now + this.events[this._i].delay; } if (this.events[this._i].loop === true) { - this.events[this._i].tick = newTick; + this.events[this._i].tick = this._newTick; this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); } else if (this.events[this._i].repeatCount > 0) { this.events[this._i].repeatCount--; - this.events[this._i].tick = newTick; + this.events[this._i].tick = this._newTick; this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); } else { this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); - this.events.splice(this._i, 1); - this._len--; + this.events[this._i].pendingDelete = true; } this._i++; @@ -38156,7 +38188,7 @@ Phaser.AnimationManager.prototype = { if (this._anims[name]) { - if (this.currentAnim == this._anims[name]) + if (this.currentAnim === this._anims[name]) { if (this.currentAnim.isPlaying === false) { @@ -38166,6 +38198,11 @@ Phaser.AnimationManager.prototype = { } else { + if (this.currentAnim && this.currentAnim.isPlaying) + { + this.currentAnim.stop(); + } + this.currentAnim = this._anims[name]; this.currentAnim.paused = false; return this.currentAnim.play(frameRate, loop, killOnComplete); @@ -38267,12 +38304,23 @@ Phaser.AnimationManager.prototype = { }, /** - * Destroys all references this AnimationManager contains. Sets the _anims to a new object and nulls the current animation. + * Destroys all references this AnimationManager contains. + * Iterates through the list of animations stored in this manager and calls destroy on each of them. * * @method Phaser.AnimationManager#destroy */ destroy: function () { + var anim = null; + + for (var anim in this._anims) + { + if (this._anims.hasOwnProperty(anim)) + { + this._anims[anim].destroy(); + } + } + this._anims = {}; this._frameData = null; this._frameIndex = 0; @@ -38568,7 +38616,6 @@ Phaser.Animation.prototype = { * Plays this animation. * * @method Phaser.Animation#play - * @memberof Phaser.Animation * @param {number} [frameRate=null] - The framerate to play the animation at. The speed is given in frames per second. If not provided the previously set frameRate of the Animation is used. * @param {boolean} [loop=false] - Should the animation be looped after playback. If not provided the previously set loop value of the Animation is used. * @param {boolean} [killOnComplete=false] - If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. @@ -38625,7 +38672,6 @@ Phaser.Animation.prototype = { * Sets this animation back to the first frame and restarts the animation. * * @method Phaser.Animation#restart - * @memberof Phaser.Animation */ restart: function () { @@ -38650,7 +38696,6 @@ Phaser.Animation.prototype = { * If `dispatchComplete` is true it will dispatch the complete events, otherwise they'll be ignored. * * @method Phaser.Animation#stop - * @memberof Phaser.Animation * @param {boolean} [resetFrame=false] - If true after the animation stops the currentFrame value will be set to the first frame in this animation. * @param {boolean} [dispatchComplete=false] - Dispatch the Animation.onComplete and parent.onAnimationComplete events? */ @@ -38680,7 +38725,6 @@ Phaser.Animation.prototype = { * Called when the Game enters a paused state. * * @method Phaser.Animation#onPause - * @memberof Phaser.Animation */ onPause: function () { @@ -38695,7 +38739,6 @@ Phaser.Animation.prototype = { * Called when the Game resumes from a paused state. * * @method Phaser.Animation#onResume - * @memberof Phaser.Animation */ onResume: function () { @@ -38710,7 +38753,6 @@ Phaser.Animation.prototype = { * Updates this animation. Called automatically by the AnimationManager. * * @method Phaser.Animation#update - * @memberof Phaser.Animation */ update: function () { @@ -38795,7 +38837,6 @@ Phaser.Animation.prototype = { * Cleans up this animation ready for deletion. Nulls all values and references. * * @method Phaser.Animation#destroy - * @memberof Phaser.Animation */ destroy: function () { @@ -38806,9 +38847,9 @@ Phaser.Animation.prototype = { this.currentFrame = null; this.isPlaying = false; - this.onStart.destroy(); - this.onLoop.destroy(); - this.onComplete.destroy(); + this.onStart.dispose(); + this.onLoop.dispose(); + this.onComplete.dispose(); this.game.onPause.remove(this.onPause, this); this.game.onResume.remove(this.onResume, this); @@ -38820,7 +38861,6 @@ Phaser.Animation.prototype = { * Sets the isPlaying and isFinished states and dispatches the onAnimationComplete event if it exists on the parent and local onComplete event. * * @method Phaser.Animation#complete - * @memberof Phaser.Animation */ complete: function () { @@ -41054,22 +41094,27 @@ Phaser.Loader = function (game) { this.baseURL = ''; /** - * @property {Phaser.Signal} onFileComplete - Event signal. + * @property {Phaser.Signal} onLoadStart - This event is dispatched when the loading process starts, before the first file has been requested. */ - this.onFileComplete = new Phaser.Signal(); + this.onLoadStart = new Phaser.Signal(); /** - * @property {Phaser.Signal} onFileError - Event signal. + * @property {Phaser.Signal} onFileStart - This event is dispatched immediately before a file starts loading. It's possible the file may still error (404, etc) after this event is sent. */ - this.onFileError = new Phaser.Signal(); + this.onFileStart = new Phaser.Signal(); /** - * @property {Phaser.Signal} onLoadStart - Event signal. + * @property {Phaser.Signal} onFileComplete - This event is dispatched when a file completes loading successfully. */ - this.onLoadStart = new Phaser.Signal(); + this.onFileComplete = new Phaser.Signal(); /** - * @property {Phaser.Signal} onLoadComplete - Event signal. + * @property {Phaser.Signal} onFileError - This event is dispatched when a file errors as a result of the load request. + */ + this.onFileError = new Phaser.Signal(); + + /** + * @property {Phaser.Signal} onLoadComplete - This event is dispatched when the final file in the load queue has either loaded or failed. */ this.onLoadComplete = new Phaser.Signal(); @@ -41838,10 +41883,12 @@ Phaser.Loader.prototype = { console.warn('Phaser.Loader loadFile invalid index ' + this._fileIndex); return; } - + var file = this._fileList[this._fileIndex]; var _this = this; + this.onFileStart.dispatch(this.progress, file.key); + // Image or Data? switch (file.type) { @@ -47269,7 +47316,7 @@ Phaser.Physics.Arcade.Body = function (sprite) { this.tilePadding = new Phaser.Point(); /** - * @property {number} phaser - Is this Body in a preUpdate or postUpdate state? + * @property {number} phaser - Is this Body in a preUpdate (1) or postUpdate (2) state? */ this.phase = 0; @@ -47416,6 +47463,12 @@ Phaser.Physics.Arcade.Body.prototype = { */ postUpdate: function () { + // Only allow postUpdate to be called once per frame + if (this.phase === 2) + { + return; + } + this.phase = 2; if (this.deltaX() < 0) @@ -48965,8 +49018,8 @@ Phaser.Tile.prototype = { Phaser.Tile.prototype.constructor = Phaser.Tile; /** -* @name Phaser.Tile#canCollide -* @property {boolean} canCollide - True if this tile can collide or has a collision callback. +* @name Phaser.Tile#collides +* @property {boolean} collides - True if this tile can collide on any of its faces. * @readonly */ Object.defineProperty(Phaser.Tile.prototype, "collides", { @@ -48979,7 +49032,7 @@ Object.defineProperty(Phaser.Tile.prototype, "collides", { /** * @name Phaser.Tile#canCollide -* @property {boolean} canCollide - True if this tile can collide or has a collision callback. +* @property {boolean} canCollide - True if this tile can collide on any of its faces or has a collision callback set. * @readonly */ Object.defineProperty(Phaser.Tile.prototype, "canCollide", { @@ -70235,7 +70288,7 @@ Phaser.Physics.P2.prototype = { { var tile = map.layers[layer].data[y][x]; - if (tile) + if (tile && tile.collides) { if (optimize) { diff --git a/build/phaser.map b/build/phaser.map index a1b5535ece..314aee4465 100644 --- a/build/phaser.map +++ b/build/phaser.map @@ -1 +1 @@ -{"version":3,"file":"phaser.min.js","sources":["phaser.js"],"names":["root","this","PIXI","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","INTERACTION_FREQUENCY","AUTO_PREVENT_DEFAULT","RAD_TO_DEG","Math","PI","DEG_TO_RAD","Point","x","y","prototype","clone","constructor","set","Rectangle","width","height","contains","x1","y1","EmptyRectangle","Polygon","points","Array","slice","call","arguments","p","i","il","length","push","inside","j","xi","yi","xj","yj","intersect","Circle","radius","dx","dy","r2","Ellipse","normx","normy","getBounds","determineMatrixArrayType","Float32Array","Matrix2","Matrix","a","b","c","d","tx","ty","fromArray","array","toArray","transpose","identityMatrix","DisplayObject","position","scale","pivot","rotation","alpha","visible","hitArea","buttonMode","renderable","parent","stage","worldAlpha","_interactive","defaultCursor","worldTransform","color","dynamic","_sr","_cr","filterArea","_bounds","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","setInteractive","interactive","Object","defineProperty","get","value","dirty","item","isMask","_filters","passes","filterPasses","_filterBlock","target","_generateCachedSprite","_destroyCachedSprite","updateTransform","rotationCache","sin","cos","parentTransform","px","py","a00","a01","a10","a11","a02","a12","b00","b01","b10","b11","matrix","getLocalBounds","setStageReference","generateTexture","renderer","bounds","renderTexture","RenderTexture","render","updateCache","_renderCachedSprite","renderSession","gl","Sprite","_renderWebGL","_cachedSprite","_renderCanvas","texture","resize","tempFilters","filters","destroy","DisplayObjectContainer","children","create","addChild","child","addChildAt","index","Error","removeChild","splice","swapChildren","child2","index1","indexOf","index2","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","matrixCache","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","spriteBatch","stop","maskManager","pushMask","mask","start","flush","filterManager","pushFilter","popFilter","popMask","context","anchor","_width","_height","tint","blendMode","baseTexture","hasLoaded","onTextureUpdate","onTextureUpdateBind","bind","addEventListener","frame","setTexture","textureChange","cachedTint","updateFrame","w0","w1","h0","h1","x2","y2","x3","y3","x4","y4","currentBlendMode","globalCompositeOperation","blendModesCanvas","source","globalAlpha","transform","roundPixels","setTransform","smoothProperty","scaleMode","tintedTexture","CanvasTinter","getTintedTexture","drawImage","trim","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","Texture","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","shaderManager","activateShader","fastShader","defaultShader","isRotated","childTransform","FilterBlock","Text","text","style","canvas","document","createElement","getContext","fromCanvas","setText","setStyle","updateText","font","fill","align","stroke","strokeThickness","wordWrap","wordWrapWidth","dropShadow","dropShadowAngle","dropShadowDistance","dropShadowColor","toString","outputText","lines","split","lineWidths","maxLineWidth","lineWidth","measureText","max","lineHeight","determineFontHeight","navigator","isCocoonJS","clearRect","strokeStyle","textBaseline","linePositionX","linePositionY","fillStyle","xShadowOffset","yShadowOffset","fillText","strokeText","updateTexture","requiresUpdate","updateWebGLTexture","fontStyle","result","heightCache","body","getElementsByTagName","dummy","dummyText","createTextNode","appendChild","setAttribute","offsetHeight","spaceLeft","words","wordWidth","wordWidthWithSpace","destroyTexture","BitmapText","_pool","fontName","fontSize","parseInt","fonts","size","data","pos","prevCharCode","chars","line","charCode","charCodeAt","test","charAt","charData","kerning","xOffset","yOffset","xAdvance","lineAlignOffsets","alignOffset","lenChildren","lenChars","pop","textWidth","textHeight","Stage","backgroundColor","interactionManager","InteractionManager","setBackgroundColor","setInteractionDelegate","domElement","setTargetDomElement","update","backgroundColorSplit","hex2rgb","hex","substr","backgroundColorString","getMousePosition","mouse","global","lastTime","vendors","window","requestAnimationFrame","cancelAnimationFrame","callback","currTime","Date","getTime","timeToCall","id","setTimeout","clearTimeout","requestAnimFrame","rgb2hex","rgb","Function","thisArg","bound","args","boundArgs","concat","apply","TypeError","F","proto","AjaxRequest","activexmodes","ActiveXObject","XMLHttpRequest","e","canUseNewCanvasBlendModes","fillRect","getImageData","getNextPowerOfTwo","number","EventTarget","listeners","on","type","listener","dispatchEvent","emit","event","l","removeEventListener","off","removeAllEventListeners","PolyK","Triangulate","sign","n","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","vi","_PointInTriangle","console","log","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","u","v","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","src","join","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","z","w","createWebGLTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","PrimitiveShader","tintColor","attribute","WebGLGraphics","renderGraphics","graphics","projection","offset","primitiveShader","_webGL","indices","lastIndex","buffer","createBuffer","indexBuffer","webGL","clearDirty","updateGraphics","activatePrimitiveShader","blendFunc","ONE","ONE_MINUS_SRC_ALPHA","uniform2f","uniform3fv","uniform1f","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","drawElements","TRIANGLE_STRIP","UNSIGNED_SHORT","deactivatePrimitiveShader","graphicsData","Graphics","POLY","buildPoly","buildLine","RECT","buildRectangle","CIRC","ELIP","buildCircle","glPoints","bufferData","STATIC_DRAW","glIndicies","Uint16Array","webGLData","rectData","fillColor","fillAlpha","r","g","verts","vertPos","tempPoints","totalSegs","seg","vecPos","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","a1","b1","c1","a2","b2","c2","denom","pdist","dist","indexCount","indexStart","lineColor","lineAlpha","sqrt","abs","triangles","glContexts","WebGLRenderer","view","transparent","antialias","defaultRenderer","contextLost","handleContextLost","contextRestoredLost","handleContextRestored","options","premultipliedAlpha","stencil","e2","glContextId","blendModesWebGL","SRC_ALPHA","DST_ALPHA","DST_COLOR","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","drawCount","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","colorMask","__stage","removeEvents","updateTextures","_interactiveEventsAdded","setTarget","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","clear","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","frameUpdates","updateTextureFrame","texturesToDestroy","texturesToUpdate","glTexture","deleteTexture","_updateWebGLuvs","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","_powerOf2","preventDefault","setContext","maskStack","maskPosition","maskData","STENCIL_TEST","stencilFunc","ALWAYS","stencilOp","KEEP","INCR","NOTEQUAL","DECR","maxAttibs","attribState","tempAttribState","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","currentShader","vertSize","numVerts","numIndices","vertices","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","vertexBuffer","DYNAMIC_DRAW","sprite","setBlendMode","uvs","_uvs","verticies","aX","aY","x0","y0","renderTilingSprite","tilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","bufferSubData","subarray","TRIANGLES","TEXTURE0","stride","blendModeWebGL","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padidng","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","temp","sizeX","sizeY","currentFilter","shaders","colorBuffer","colorArray","createFramebuffer","framebuffer","framebufferTexture2D","COLOR_ATTACHMENT0","deleteFramebuffer","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","roundColor","stringColor","tintCache","tintMethod","convertTintToImage","tintImage","Image","toDataURL","tintWithMultiply","tintWithOverlay","tintWithPerPixel","rgbValues","pixelData","pixels","putImageData","step","cacheStepsPerColorChannel","min","canUseMultiply","CanvasRenderer","clearBeforeRender","refresh","count","renderStripFlat","strip","beginPath","moveTo","lineTo","closePath","renderStrip","u0","u1","u2","v0","v1","v2","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","CanvasBuffer","strokeRect","arc","ellipseData","h","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","len","rect","currentPath","boundsPadding","destroyCachedSprite","lineStyle","filling","beginFill","endFill","drawRect","drawCircle","drawEllipse","canvasBuffer","translate","updateBounds","TilingSprite","refreshTexture","generateTilingTexture","needsUpdate","__tilePattern","createPattern","forcePowerOfTwo","targetWidth","targetHeight","isFrame","newTextureRequired","isTiling","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","scope","onload","content","imageUrl","updateSourceImage","newSrc","image","crossOrigin","_pixiId","TextureCacheIdGenerator","FrameCache","noFrame","setFrame","onBaseTextureLoaded","onLoaded","destroyBase","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","originalWorldTransform","tempMatrix","exports","module","define","amd","Phaser","DEV_VERSION","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","Utils","parseDimension","dimension","f","innerWidth","innerHeight","shuffle","floor","random","pad","str","dir","padlen","right","ceil","left","isPlainObject","obj","nodeType","hasOwnProperty","extend","name","copy","copyIsArray","deep","isArray","arg","forEach","fun","t","diameter","_diameter","_radius","circumference","setTo","copyFrom","copyTo","dest","distance","round","distanceRound","out","circumferencePoint","angle","asDegrees","offsetPoint","point","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","invert","add","subtract","multiply","divide","clampX","clamp","clampY","output","rotate","getMagnitude","setMagnitude","magnitude","normalize","isZero","m","centroid","pointslength","floorAll","inflate","containsRect","intersection","tolerance","intersectsRaw","union","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","Line","fromSprite","startSprite","endSprite","useCenter","center","asSegment","intersectsPoints","pointOnLine","pointOnSegment","xMin","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","atan2","pow","Camera","game","world","screenView","deadzone","atLimit","_edge","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","focusOn","setPosition","focusOnXY","updateTarget","checkBounds","setBoundsToWorld","setSize","reset","State","make","camera","cache","input","load","math","sound","time","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","paused","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","current","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","onLoadComplete","loadComplete","state","autoStart","newState","isBooted","remove","callbackContext","onDestroyCallback","clearWorld","clearCache","checkState","restart","preUpdate","removeAll","setCurrentState","totalQueuedFiles","valid","warn","link","getCurrentState","preRender","renderType","LinkedList","next","prev","first","last","total","callAll","entity","Signal","_bindings","_prevParams","self","dispatch","memorize","_shouldPropagate","active","validateListener","fnName","replace","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","signal","_isOnce","_signal","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","resolution","setResolution","pointer","toFixed","totalElapsedSeconds","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","_parent","postUpdate","disableVisibilityChange","checkOffsetInterval","exists","currentRenderOrderID","_hiddenVar","_nextOffsetCheck","_backgroundColor","config","parseConfig","Canvas","now","getOffset","stlye","fullScreenScaleMode","_this","_onChange","visibilityChange","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","onpagehide","onpageshow","onblur","onfocus","focusLoss","focusGain","gamePaused","gameResumed","Color","hexToRGB","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","alive","cursor","cameraOffset","enableBodyDebug","_sortProperty","_cache","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","events","onAddedToGroup","addAt","updateZ","getAt","createMultiple","quantity","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","reverse","oldChild","newChild","onRemovedFromGroup","setProperty","operation","checkAlive","checkVisible","setAll","setAllChildren","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","existsValue","callbackFromArray","method","methodLength","contextLength","renderOrderID","checkExists","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","getFirstAlive","getFirstDead","getTop","getBottom","countLiving","countDead","getRandom","startIndex","removeBetween","destroyChildren","soft","radToDeg","World","setBounds","integerInRange","ScaleManager","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","pageAlignHorizontally","pageAlignVertically","maxIterations","orientationSprite","enterLandscape","enterPortrait","enterIncorrectOrientation","leaveIncorrectOrientation","hasResized","fullScreenTarget","enterFullScreen","leaveFullScreen","orientation","outerWidth","outerHeight","scaleFactor","scaleFactorInversed","margin","aspectRatio","sourceAspectRatio","NO_SCALE","_startHeight","checkOrientation","checkResize","fullScreenChange","EXACT_FIT","SHOW_ALL","startFullScreen","isFullScreen","device","fullscreen","smoothed","fullscreenKeyboard","requestFullscreen","Element","ALLOW_KEYBOARD_INPUT","stopFullScreen","cancelFullscreen","setShowAll","forceOrientation","orientationImage","checkImageKey","checkOrientationState","isLandscape","iPad","webApp","desktop","android","chrome","scrollTo","_check","_iterations","setInterval","setScreenSize","force","documentElement","setMaximum","setExactFit","clearInterval","marginLeft","marginTop","multiplier","availableWidth","availableHeight","Game","physicsConfig","isRunning","raf","net","debug","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","RandomDataGenerator","_onBoot","readyState","seed","Device","setUpRenderer","checkFullScreenSupport","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Net","Debug","showDebugHeader","RequestAnimationFrame","webAudio","trident","addToDOM","enableStep","disableStep","setMute","unsetMute","mute","hitCanvas","hitContext","moveCallback","moveCallbackContext","pollRate","disabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","currentPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","onDown","onUp","onTap","onHold","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","Pointer","Mouse","Keyboard","Touch","MSPointer","Gamepad","setMoveCallback","addPointer","hard","resetSpeed","startPointer","totalActivePointers","updatePointer","identifier","move","stopPointer","getPointer","getPointerFromIdentifier","getLocalPosition","wt","hitTest","localPoint","worldVisible","TileSprite","Key","keycode","enabled","isDown","isUp","altKey","ctrlKey","shiftKey","timeDown","duration","timeUp","repeats","keyCode","onHoldCallback","onHoldContext","processKeyDown","processKeyUp","justPressed","justReleased","onDownCallback","onUpCallback","_keys","_capture","_onKeyDown","_onKeyUp","addCallbacks","addKey","addKeyCapture","removeKey","removeKeyCapture","createCursorKeys","up","down","clearCaptures","A","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","UNDERSCORE","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","INSERT","DELETE","HELP","NUM_LOCK","mouseDownCallback","mouseMoveCallback","mouseUpCallback","capture","button","locked","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","onMouseDown","onMouseMove","onMouseUp","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","onPointerDown","onPointerMove","onPointerUp","pointerId","_holdSent","_history","_nextDrop","_stateReset","withinGame","clientX","clientY","pageX","pageY","screenX","screenY","isMouse","previousTapTime","totalTouches","msSinceLastClick","Number","MAX_VALUE","targetObject","positionDown","positionUp","_touchedHandler","shift","fromClick","pollLocked","isDragged","_highestRenderOrderID","MAX_SAFE_INTEGER","_highestRenderObject","_highestInputPriorityID","currentNode","validForInput","checkPointerOver","checkPointerDown","priorityID","_pointerOutHandler","_pointerOverHandler","leave","_releasedHandler","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","changedTouches","_gamepads","SinglePad","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","callbacks","onConnect","onDisconnect","onAxis","onFloat","newPad","connect","_ongamepaddisconnected","removedPad","disconnect","_pollGamepads","_connected","pollStatus","rawGamepads","gamepadsChanged","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","buttonCode","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","padParent","_padParent","_index","_rawPad","_prevTimestamp","_rawButtons","_buttons","_axes","_hotkeys","addButton","GamepadButton","timestamp","buttons","buttonValue","processButtonDown","processButtonUp","processButtonFloat","axes","axis","processAxisChange","triggerCallback","disconnectingIndex","axisState","axisCode","buttoncode","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","addedToGroup","removedFromGroup","highestID","highestRenderID","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","checkPixel","_draggedPointerID","updateDrag","startDrag","stopDrag","fixedToCamera","_dragPoint","dragOffset","checkBoundsRect","checkBoundsSprite","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","dragFromCenter","disableDrag","centerOn","centerX","centerY","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","camerOffset","Events","onKilled","onRevived","onOutOfBounds","onEnterBounds","onAnimationStart","onAnimationComplete","onAnimationLoop","existing","object","group","tween","physicsGroup","audio","loop","tileSprite","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","characterWidth","characterHeight","charsPerRow","xSpacing","ySpacing","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","Tilemap","addToCache","uuid","addRenderTexture","bitmapData","BitmapData","addBitmapData","Tween","ctx","imageData","textureFrame","Frame","loadTexture","refreshBuffer","Int32Array","setPixel32","red","green","blue","setPixel","getPixel","data32","getPixel32","getPixels","copyPixels","area","destX","destY","getImage","draw","alphaMask","animations","AnimationManager","_frame","_frameName","autoCull","health","lifespan","checkWorldBounds","outOfBoundsKill","elapsed","kill","isSpriteSheet","loadFrameData","getFrameData","frameName","crop","sourceWidth","sourceHeight","local","revive","damage","_outOfBoundsFired","play","frameRate","killOnComplete","overlap","wrapAngle","P2JS","addToWorld","removeFromWorld","phase","_reset","frameData","getFrameByName","getFrame","_scroll","physicsElapsed","autoScroll","stopScroll","safeRemove","_text","_font","_fontSize","_fontWeight","_lineSpacing","parentNode","setShadow","blur","shadowOffsetX","shadowOffsetY","shadowColor","shadowBlur","runWordWrap","lineJoin","linePosition","parseFloat","_align","_tint","_onOverFrameName","_onOutFrameName","_onDownFrameName","_onUpFrameName","_onOverFrameID","_onOutFrameID","_onDownFrameID","_onUpFrameID","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","freezeFrames","forceOut","inputEnabled","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","clearFrames","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","marker","Sound","setState","drawPolygon","poly","_temp","renderXY","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","FrameData","addFrame","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","characterSpacing","lineSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","newText","toUpperCase","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","noCocoon","display","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollLeft","compatMode","pageYOffset","pageXOffset","getAspectRatio","msTouchAction","overflowHidden","getElementById","overflow","translateX","translateY","skewX","skewY","setSmoothingEnabled","setImageRenderingCrisp","msInterpolationMode","setImageRenderingBicubic","iOS","cocoonJS","ejecta","chromeOS","linux","macOS","windows","windowsPhone","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","epiphany","firefox","ie","ieVersion","tridentVersion","mobileSafari","midori","opera","safari","silk","audioData","ogg","opus","mp3","wav","m4a","webm","iPhone","iPhone4","pixelRatio","littleEndian","_checkAudio","_checkBrowser","_checkCSS3D","_checkDevice","_checkFeatures","_checkOS","ua","getItem","error","WebGLRenderingContext","maxTouchPoints","msPointerEnabled","pointerEnabled","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","fs","cfs","RegExp","$1","$3","audioElement","canPlayType","toLowerCase","Int8Array","Int16Array","vibrate","webkitVibrate","mozVibrate","msVibrate","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","isConsoleOpen","profile","profileEnd","forceSetTimeOut","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","avg","truncate","shear","snapTo","gap","snapToFloor","snapToCeil","snapToInArray","arr","low","high","POSITIVE_INFINITY","roundTo","place","base","floorTo","ceilTo","interpolateFloat","weight","angleBetween","angleBetweenPoints","point1","point2","reverseAngle","angleRad","normalizeAngle","normalizeLatitude","lat","normalizeLongitude","lng","nearestAngleBetween","radians","rd","interpolateAngles","ease","normalizeAngleToAnother","chanceRoll","chance","numberArray","maxAdd","minSub","wrap","wrapValue","diff","randomSign","isOdd","isEven","minProperty","maxProperty","radianFactor","angleLimit","linearInterpolation","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","p1","factorial","p2","p3","t2","t3","difference","objects","removeRandom","idx","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","stack","s","shuffleArray","distancePow","distanceRounded","clampBottom","within","mapLinear","smoothstep","smootherstep","degreeToRadiansFactor","degrees","radianToDegreesFactor","seeds","s0","s1","s2","sow","hash","integer","frac","real","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","level","nodes","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","url","href","re","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","_tweens","_add","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","numTweens","isTweening","some","_object","_pause","_resume","pauseAll","resumeAll","manager","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_repeat","_yoyo","_reversed","_delayTime","_startTime","_easingFunction","Easing","Linear","None","_interpolationFunction","_chainedTweens","_onStartCallbackFired","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","onStart","onLoop","onComplete","to","properties","yoyo","_lastChild","chain","generateData","tick","blob","reversed","times","easing","interpolation","pauseDuration","isFinite","tmp","numChainedTweens","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Exponential","Circular","Elastic","asin","Back","Bounce","pausedTime","advancedTiming","fps","fpsMin","fpsMax","msMin","msMax","deltaCap","frames","Timer","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","autoDestroy","timer","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","_pauseTotal","_now","MINUTE","SECOND","HALF","QUARTER","repeatCount","TimerEvent","clearEvents","newTick","ms","currentFrame","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","useNumericIndex","getFrameIndexes","Animation","currentAnim","validateFrames","checkFrameName","isPlaying","resetFrame","getAnimation","refreshFrame","_frameIndex","isPaused","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","_timeLastFrame","_timeNextFrame","dispatchComplete","generateFrameNames","prefix","suffix","zeroPad","rotated","rotationDirection","trimmed","sourceSizeW","sourceSizeH","spriteSourceSizeX","spriteSourceSizeY","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destWidth","destHeight","getRect","_frameNames","getFrameRange","getFrames","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","spacing","img","row","column","JSONData","json","cacheKey","newFrame","filename","sourceSize","spriteSourceSize","JSONDataHash","XMLData","xml","frameX","frameY","nodeValue","_canvases","_images","_textures","_sounds","_json","_physics","_tilemaps","_binary","_bitmapDatas","_bitmapFont","addDefaultImage","addMissingImage","onSoundUnlock","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","addCanvas","addBinary","binaryData","addSpriteSheet","addTilemap","mapData","addTextureAtlas","atlasData","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","TEXTURE_ATLAS_XML_STARLING","addBitmapFont","xmlData","LoaderParser","bitmapFont","addPhysicsData","addText","addJSON","addImage","addSound","audioTag","decoded","isDecoding","touchLocked","reloadSound","reloadSoundComplete","updateSound","decodedSound","getCanvas","getBitmapData","getBitmapFont","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getFrameByIndex","getTextureFrame","getTexture","getSound","getSoundData","isSoundDecoded","isSoundReady","getText","getJSON","getBinary","getKeys","removeCanvas","removeImage","removeSound","removeText","removeJSON","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","_fileList","_fileIndex","_progressChunk","_xhr","isLoading","progress","progressFloat","preloadSprite","baseURL","onFileComplete","onFileError","onLoadStart","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","direction","checkKeyExists","getAssetIndex","getAsset","addToFileList","entry","loaded","prop","replaceInFileList","overwrite","script","binary","spritesheet","urls","autoDecode","mapDataURL","CSV","TILED_JSON","parse","dataURL","jsonData","LIME_CORONA_JSON","textureURL","xmlURL","domparser","DOMParser","parseFromString","async","loadXML","atlasJSONArray","atlasURL","atlas","atlasJSONHash","atlasXML","removeFile","loadFile","fileComplete","onerror","fileError","getAudioURL","usingWebAudio","open","responseType","send","usingAudioTag","Audio","jsonLoadComplete","csvLoadComplete","dataLoadError","extension","lastIndexOf","nextFile","loadNext","xmlLoadComplete","response","that","decodeAudioData","onSoundDecode","responseText","language","defer","head","previousIndex","success","totalLoadedFiles","ajaxRequest","div","innerHTML","info","common","getAttribute","letters","textureRect","kernings","second","connectToMaster","_volume","markers","_buffer","_muted","autoplay","totalDuration","startTime","currentTime","stopTime","pausedPosition","currentMarker","pendingPlayback","override","externalNode","masterGainNode","masterGain","gainNode","createGain","createGainNode","gain","_sound","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","addMarker","durationMS","removeMarker","_tempMarker","_tempPosition","_tempVolume","_tempLoop","forceRestart","noteOff","createBufferSource","noteGrainOn","decode","muted","prevMarker","_muteVolume","_codeMuted","_unlockSource","noAudio","channels","fakeiOSTouchLock","unlock","disableAudio","disableWebAudio","destination","noteOn","stopAll","soundData","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","columnWidth","renderShadow","currentAlpha","currentColor","soundInfo","isDecoded","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","inputInfo","spriteBounds","filled","rectangle","spriteInfo","inCamera","spriteCoords","lineInfo","pixel","geom","forceType","quadTree","quadtree","Body","bodyInfo","renderBodyInfo","getColor32","getColor","hex16","getColorInfo","argb","getRGB","hsl","RGBtoHSV","RGBtoHexstring","hue","saturation","lightness","colorToHexstring","RGBtoWebstring","digits","lsd","msd","hexified","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","r1","g1","g2","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","arcade","ninja","box2d","chipmunk","NINJA","BOX2D","CHIPMUNK","Ninja","P2","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","TILE_BIAS","forceX","_overlap","_maxOverlap","_velocity1","_velocity2","_newVelocity1","_newVelocity2","_average","_mapData","_result","_total","_angle","_dx","_dy","updateMotion","_velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","_drag","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","overlapOnly","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","collideGroupVsSelf","sprite1","sprite2","separate","_potentials","group1","group2","tilemapLayer","getTiles","tilePadding","separateTile","body1","body2","separateX","separateY","immovable","deltaAbsX","deltaX","embedded","touching","none","overlapX","customSeparateX","bounce","mass","deltaAbsY","deltaY","overlapY","customSeparateY","moves","tile","collisionCallback","collisionCallbackContext","layer","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","blocked","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","allowRotation","preRotation","newVelocity","deltaMax","facing","collideWorldBounds","any","wasTouching","_sx","_sy","asx","asy","deltaZ","onFloor","onWall","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_explode","emitParticle","makeParticles","keys","particle","rndKey","rndFrame","explode","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","setScale","at","Tile","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","collides","faces","TilemapParser","version","widthInPixels","heightInPixels","layers","tilesets","tiles","collideIndexes","collision","images","currentLayer","debugMap","_results","_tempA","_tempB","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","gid","getTilesetIndex","setImage","newSet","Tileset","countX","countY","columns","rows","createFromObjects","CustomClass","adjustY","createLayer","getLayerIndex","TilemapLayer","indexes","bodies","getImageIndex","getObjectIndex","setTileIndexCallback","getLayer","setTileLocationCallback","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","recalculate","above","below","getTileAbove","getTileBelow","getTileLeft","getTileRight","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","getTile","getTileWorldXY","paste","tileblock","diffX","diffY","tileA","tileB","swapHandler","removeAllLayers","dump","txt","map","tileColor","debugAlpha","debugColor","debugFill","debugFillColor","debugCallbackColor","scrollFactorX","scrollFactorY","rayStepRate","_mc","cw","ch","ga","dw","dh","tl","startX","startY","prevX","prevY","updateMax","scrollX","scrollY","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coords","wy","wx","lenY","_column","lenX","renderDebug","getEmptyData","parseCSV","parseTiledJSON","tilewidth","tileheight","opacity","firstgid","tileproperties","tileProperties","imageheight","imagewidth","polyline","drawCoords","setSpacing","enableCircle","enableTile","clearTilemapLayerBodies","convertTilemap","slopeMap","aabb","collideAABBVsAABB","collideAABBVsTile","collideCircleVsTile","shape","friction","gravityScale","maxSpeed","AABB","integrate","xw","yw","setZeroVelocity","oldpos","moveFrom","moveLeft","fx","moveRight","oH","oV","aabbTileProjections","TYPE_FULL","projAABB_Full","TYPE_45DEG","projAABB_45Deg","TYPE_CONCAVE","projAABB_Concave","TYPE_CONVEX","projAABB_Convex","TYPE_22DEGs","projAABB_22DegS","TYPE_22DEGb","projAABB_22DegB","TYPE_67DEGs","projAABB_67DegS","TYPE_67DEGb","projAABB_67DegB","TYPE_HALF","projAABB_Half","COL_NONE","COL_AXIS","COL_OTHER","reportCollisionVsWorld","fy","o","vx","vy","dp","nx","ny","reportCollisionVsBody","vx1","vy1","dp1","txw","tyw","resolveTile","signx","signy","lenN","lenP","penY","penX","twid","rad","pen","EMPTY","TYPE_EMPTY","setType","updateType","SLOPE_45DEGpn","SQRT2","SLOPE_45DEGnn","SLOPE_45DEGnp","SLOPE_45DEGpp","CONCAVEpn","CONCAVEnn","CONCAVEnp","CONCAVEpp","CONVEXpn","CONVEXnn","CONVEXnp","CONVEXpp","SLOPE_22DEGpnS","slen","SLOPE_22DEGnnS","SLOPE_22DEGnpS","SLOPE_22DEGppS","SLOPE_22DEGpnB","SLOPE_22DEGnnB","SLOPE_22DEGnpB","SLOPE_22DEGppB","SLOPE_67DEGpnS","SLOPE_67DEGnnS","SLOPE_67DEGnpS","SLOPE_67DEGppS","SLOPE_67DEGpnB","SLOPE_67DEGnnB","SLOPE_67DEGnpB","SLOPE_67DEGppB","HALFd","HALFu","HALFl","HALFr","FULL","circleTileProjections","projCircle_Full","projCircle_45Deg","projCircle_Concave","projCircle_Convex","projCircle_22DegS","projCircle_22DegB","projCircle_67DegS","projCircle_67DegB","projCircle_Half","resolveCircleTile","perp","trad","celldp","require",1,"GLMAT_EPSILON","GLMAT_ARRAY_TYPE","setMatrixArrayType","vec2","fromValues","sub","mul","squaredDistance","sqrDist","squaredLength","sqrLen","negate","dot","cross","lerp","transformMat2","transformMat2d","transformMat3","transformMat4","vec","fn",2,"Scalar","lineInt","l1","l2","precision","det","eq","segmentsIntersect","q1","q2","da","db","./Scalar",3,"leftOn","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","magA","magB","acos","sqdist",4,"getIntersectionPoint","append","from","makeCCW","br","isReflex","tmpLine1","tmpLine2","canSee","targetPoly","getCutEdges","tmp1","tmp2","tmpPoly","nDiags","decomp","edges","cutEdges","polys","cutEdge","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","upperInt","lowerInt","upperDist","lowerDist","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","removeCollinearPoints","num","./Line","./Point",5,6,"./Polygon",7,"description","author","keywords","main","engines","node","repository","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-browserify","z-schema","dependencies","poly-decomp","gl-matrix",8,"lowerBound","upperBound","setFromPoints","overlaps","../math/vec2","../utils/Utils",9,"Broadphase","boundingVolumeType","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","d2","boundingRadius","aabbCheck","aabbNeedsUpdate","updateAABB","boundingVolumeCheck","canCollide","motionState","STATIC","KINEMATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body",10,"GridBroadphase","xmin","xmax","ymin","ymax","binsizeX","binsizeY","Ncolliding","bins","Nbins","xmult","ymult","bi","lowerX","lowerY","upperX","upperY","xi1","yi1","xi2","yi2","bin","NbodiesInBin","bj","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane",11,"NaiveBroadphase","../shapes/Shape",12,"Narrowphase","contactEquations","frictionEquations","enableFriction","slipForce","frictionCoefficient","surfaceVelocity","reuseObjects","reusableContactEquations","reusableFrictionEquations","restitution","stiffness","relaxation","frictionStiffness","frictionRelaxation","collidingBodiesLastStep","clearObject","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","pic_r1","lastCross","crossLength","ContactEquation","FrictionEquation","Shape","yAxis","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","collidedLastStep","id1","id2","ce","fe","rfe","rce","appendArray","createContactEquation","shapeA","shapeB","firstImpact","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","normalA","contactEquation","LINE","CONVEX","convexLine","si","ai","sj","aj","justTest","RECTANGLE","lineRectangle","convexCapsule_tempRect","convexCapsule_tempVec","CAPSULE","convexCapsule","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","circlePosi","circlePosj","numContacts","circleCircle","lineLine","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","lineBody","lineShape","lineOffset","lineAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","circleLine","CIRCLE","lineRadius","circleRadius","circleOffset","circleBody","circleShape","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","pos0","pos1","circleCapsule","convexBody","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","particleBody","convexToparticle","minEdgeNormal","radiusA","radiusB","offsetA","offsetB","planeConvex","numReported","convexPrecision","convexPlane","particlePlane","circleParticle","capsulePlane_tmpCircle","capsulePlane_tmp1","capsulePlane_tmp2","planeCapsule","end1","end2","numContacts1","circlePlane","numContacts2","capsulePlane","planeToCircle","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","angleA","angleB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","edge","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","flip","closestEdge","halfPi","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","circleAngle","hfBody","hfShape","hfPos","hfAngle","elementWidth","minCandidateNormal","idxA","idxB","minDist","../equations/ContactEquation","../equations/FrictionEquation","../shapes/Rectangle",13,"SAPBroadphase","axisListX","axisListY","_addBodyHandler","_removeBodyHandler","sortAxisListX","sortAxisListY","preliminaryList","bodiesX","bodiesY","axisIndex",14,"Constraint","equations","collideConnected","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","eqs","setRelaxation",15,"DistanceConstraint","maxForce","Equation","computeGq","setMaxForce","minForce","getMaxForce","../equations/Equation","./Constraint",16,"GearConstraint","AngleLockEquation","ratio","setMaxTorque","maxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation",17,"LockConstraint","localOffsetB","localAngleB","rot","xAxis",18,"PrismaticConstraint","localAnchorA","localAxisA","localAnchorB","trans","ri","rj","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","lowerLimitEnabled","upperLimitEnabled","lowerLimit","upperLimit","upperLimitEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vj","wi","wj","transformedGmult","worldAxisA","worldAnchorA","worldAnchorB","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","../equations/RotationalLockEquation",19,"RevoluteConstraint","pivotA","pivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","getMotorSpeed","../equations/RotationalVelocityEquation",20,"./Equation",21,"computeB","rixn","rjxn","GW","Gq","GiMf","computeGiMf",22,"DEFAULT_STIFFNESS","DEFAULT_RELAXATION","ARRAY_TYPE","timeStep","Gmult","getBodyInvMass","invMass","getBodyInvInertia","invInertia","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassj","invIi","invIj","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps",23,"getSlipForce",24,"worldVectorA","worldVectorB",25,26,"EventEmitter","_listeners","listenerArray",27,"ContactMaterial","materialA","materialB","Material","idCounter","./Material",28,29,"GetArea","sum",30,"crossVZ","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","../../build/vec2",31,"_idCounter","shapes","shapeOffsets","shapeAngles","inertia","fixedRotation","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","timeLastSleepy","concavePath","lastDampingScale","lastAngularDampingScale","lastDampingTimeStep","updateMassProperties","Convex","setDensity","density","totalArea","getArea","shapeAABB","computeAABB","updateBoundingRadius","addShape","removeShape","Icm","computeMomentOfInertia","Body_applyForce_r","applyForce","rotForce","toWorldFrame","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","idleTime","wakeUpEvent","sleep","sleepEvent","sleepTick","dontSleep","speedSquared","speedLimitSquared","SLEEPY","getVelocityFromPosition","store","getAngularVelocityFromPosition","sleepyEvent","../collision/AABB","../events/EventEmitter","../shapes/Convex",32,"Spring","restLength","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f",33,"Capsule","GSSolver","Heightfield","Plane","Solver","../package.json","./collision/AABB","./collision/Broadphase","./collision/GridBroadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/Spring","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Rectangle","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/Utils","./world/World",34,"updateArea","./Shape",35,36,"polyk","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","numer","../math/polyk",37,"maxValue",38,39,40,41,"./Convex",42,"collisionGroup","collisionMask","material","sensor",43,"GS","iterations","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","solve","sortEquations","iter","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver",44,"equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","addEquation","removeEquation","ISLAND",45,"howmany",46,"Island","bodyIds",47,"IslandManager","_nodePool","_islandPool","islands","queue","IslandNode","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","neighbors","ni","nj","./Island","./IslandNode",48,49,"springs","disabledBodyCollisionPairs","solver","narrowphase","islandManager","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","doProfiling","lastStepTime","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","bodiesToBeRemoved","fixedStepTime","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","postBroadphaseEvent","pairs","enableBodySleeping","enableIslandSleeping","beginContactEvent","endContactEvent","preSolveEvent","overlappingShapesLastState","overlappingShapesCurrentState","overlappingShapeLookup","v2a","contactMaterialToJSON","pkg","performance","nowOffset","timing","navigationStart","addConstraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","removeConstraint","step_mg","xiw","xjw","interpvelo","timeSinceLastCalled","maxSubSteps","internalStep","internalSteps","t0","t1","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","Nshapesi","Nshapesj","runNarrowphase","integrateBody","ev","removeBody","ib_fhMinv","ib_velodt","minv","velo","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","wakeUpA","wakeUpB","speedSquaredA","speedLimitSquaredA","speedSquaredB","speedLimitSquaredB","addSpring","removeSpring","addBody","getBodyById","disableBodyCollision","enableBodyCollision","toJSON","distanceConstraints","revoluteConstraints","prismaticConstraints","lockConstraints","gearConstraints","materials","js","jb","wb","jc","ss","jsonBody","circleShapes","planeShapes","particleShapes","lineShapes","rectangleShapes","convexShapes","capsuleShapes","jsonShape","mats","matId","fromJSON","shapeJSON","id2material","jm","matA","matB","revolute","cs","cms","hitTest_tmp1","hitTest_zero","hitTest_tmp2","pb","ps","pa","zero","NS","setGlobalEquationParameters","parameters","setGlobalStiffness","setGlobalRelaxation","../../package.json","../collision/NaiveBroadphase","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/Constraint","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/Spring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","./IslandManager","useElapsedTime","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","removeBodyNextStep","setImpactEvents","impactHandler","setPostBroadphaseCallback","postBroadphaseHandler","_bodyCallbacks","_bodyCallbackContext","_groupCallbacks","_groupCallbackContext","setCollisionGroup","setWorldMaterial","updateBoundsCollisionGroup","impactCallback","createDistanceConstraint","getBody","createGearConstraint","createRevoluteConstraint","createLockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","constraint","setMaterial","createMaterial","createContactMaterial","getSprings","getConstraints","filterStatic","physicsPosition","query","createCollisionGroup","bitmask","createSpring","worldA","worldB","localA","localB","createBody","addPolygon","createParticle","convertCollisionObjects","optimize","addRectangle","FixtureList","list","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","flatten","getFixtureByKey","getGroup","groupID","_ref","isNaN","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","_groupCallbacksContext","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","setZeroRotation","setZeroDamping","rotateLeft","rotateRight","moveForward","moveBackward","thrust","resetDamping","resetMass","clearShapes","shapeChanged","addCircle","addPlane","addParticle","addLine","addCapsule","setCircle","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","generatedShapes","categoryBits","maskBits","isSensor","polygons","loadPolygon","localData","loadData","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","updateSpriteTransform","lw","vrot","_j","_ref1","randomPastelHex","drawConvex","drawPlane","drawLine","drawRectangle","colors","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","componentToHex"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"phaser.min.js","sources":["phaser.js"],"names":["root","this","PIXI","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","INTERACTION_FREQUENCY","AUTO_PREVENT_DEFAULT","RAD_TO_DEG","Math","PI","DEG_TO_RAD","Point","x","y","prototype","clone","constructor","set","Rectangle","width","height","contains","x1","y1","EmptyRectangle","Polygon","points","Array","slice","call","arguments","p","i","il","length","push","inside","j","xi","yi","xj","yj","intersect","Circle","radius","dx","dy","r2","Ellipse","normx","normy","getBounds","determineMatrixArrayType","Float32Array","Matrix2","Matrix","a","b","c","d","tx","ty","fromArray","array","toArray","transpose","identityMatrix","DisplayObject","position","scale","pivot","rotation","alpha","visible","hitArea","buttonMode","renderable","parent","stage","worldAlpha","_interactive","defaultCursor","worldTransform","color","dynamic","_sr","_cr","filterArea","_bounds","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","setInteractive","interactive","Object","defineProperty","get","value","dirty","item","isMask","_filters","passes","filterPasses","_filterBlock","target","_generateCachedSprite","_destroyCachedSprite","updateTransform","rotationCache","sin","cos","parentTransform","px","py","a00","a01","a10","a11","a02","a12","b00","b01","b10","b11","matrix","getLocalBounds","setStageReference","generateTexture","renderer","bounds","renderTexture","RenderTexture","render","updateCache","_renderCachedSprite","renderSession","gl","Sprite","_renderWebGL","_cachedSprite","_renderCanvas","texture","resize","tempFilters","filters","destroy","DisplayObjectContainer","children","create","addChild","child","addChildAt","index","Error","removeChild","splice","swapChildren","child2","index1","indexOf","index2","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","matrixCache","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","spriteBatch","stop","maskManager","pushMask","mask","start","flush","filterManager","pushFilter","popFilter","popMask","context","anchor","_width","_height","tint","blendMode","baseTexture","hasLoaded","onTextureUpdate","onTextureUpdateBind","bind","addEventListener","frame","setTexture","textureChange","cachedTint","updateFrame","w0","w1","h0","h1","x2","y2","x3","y3","x4","y4","currentBlendMode","globalCompositeOperation","blendModesCanvas","source","globalAlpha","transform","roundPixels","setTransform","smoothProperty","scaleMode","tintedTexture","CanvasTinter","getTintedTexture","drawImage","trim","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","Texture","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","shaderManager","activateShader","fastShader","defaultShader","isRotated","childTransform","FilterBlock","Text","text","style","canvas","document","createElement","getContext","fromCanvas","setText","setStyle","updateText","font","fill","align","stroke","strokeThickness","wordWrap","wordWrapWidth","dropShadow","dropShadowAngle","dropShadowDistance","dropShadowColor","toString","outputText","lines","split","lineWidths","maxLineWidth","lineWidth","measureText","max","lineHeight","determineFontHeight","navigator","isCocoonJS","clearRect","strokeStyle","textBaseline","linePositionX","linePositionY","fillStyle","xShadowOffset","yShadowOffset","fillText","strokeText","updateTexture","requiresUpdate","updateWebGLTexture","fontStyle","result","heightCache","body","getElementsByTagName","dummy","dummyText","createTextNode","appendChild","setAttribute","offsetHeight","spaceLeft","words","wordWidth","wordWidthWithSpace","destroyTexture","BitmapText","_pool","fontName","fontSize","parseInt","fonts","size","data","pos","prevCharCode","chars","line","charCode","charCodeAt","test","charAt","charData","kerning","xOffset","yOffset","xAdvance","lineAlignOffsets","alignOffset","lenChildren","lenChars","pop","textWidth","textHeight","Stage","backgroundColor","interactionManager","InteractionManager","setBackgroundColor","setInteractionDelegate","domElement","setTargetDomElement","update","backgroundColorSplit","hex2rgb","hex","substr","backgroundColorString","getMousePosition","mouse","global","lastTime","vendors","window","requestAnimationFrame","cancelAnimationFrame","callback","currTime","Date","getTime","timeToCall","id","setTimeout","clearTimeout","requestAnimFrame","rgb2hex","rgb","Function","thisArg","bound","args","boundArgs","concat","apply","TypeError","F","proto","AjaxRequest","activexmodes","ActiveXObject","XMLHttpRequest","e","canUseNewCanvasBlendModes","fillRect","getImageData","getNextPowerOfTwo","number","EventTarget","listeners","on","type","listener","dispatchEvent","emit","event","l","removeEventListener","off","removeAllEventListeners","PolyK","Triangulate","sign","n","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","vi","_PointInTriangle","console","log","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","u","v","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","src","join","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","z","w","createWebGLTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","PrimitiveShader","tintColor","attribute","WebGLGraphics","renderGraphics","graphics","projection","offset","primitiveShader","_webGL","indices","lastIndex","buffer","createBuffer","indexBuffer","webGL","clearDirty","updateGraphics","activatePrimitiveShader","blendFunc","ONE","ONE_MINUS_SRC_ALPHA","uniform2f","uniform3fv","uniform1f","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","drawElements","TRIANGLE_STRIP","UNSIGNED_SHORT","deactivatePrimitiveShader","graphicsData","Graphics","POLY","buildPoly","buildLine","RECT","buildRectangle","CIRC","ELIP","buildCircle","glPoints","bufferData","STATIC_DRAW","glIndicies","Uint16Array","webGLData","rectData","fillColor","fillAlpha","r","g","verts","vertPos","tempPoints","totalSegs","seg","vecPos","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","a1","b1","c1","a2","b2","c2","denom","pdist","dist","indexCount","indexStart","lineColor","lineAlpha","sqrt","abs","triangles","glContexts","WebGLRenderer","view","transparent","antialias","defaultRenderer","contextLost","handleContextLost","contextRestoredLost","handleContextRestored","options","premultipliedAlpha","stencil","e2","glContextId","blendModesWebGL","SRC_ALPHA","DST_ALPHA","DST_COLOR","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","drawCount","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","colorMask","__stage","removeEvents","updateTextures","_interactiveEventsAdded","setTarget","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","clear","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","frameUpdates","updateTextureFrame","texturesToDestroy","texturesToUpdate","glTexture","deleteTexture","_updateWebGLuvs","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","_powerOf2","preventDefault","setContext","maskStack","maskPosition","maskData","STENCIL_TEST","stencilFunc","ALWAYS","stencilOp","KEEP","INCR","NOTEQUAL","DECR","maxAttibs","attribState","tempAttribState","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","currentShader","vertSize","numVerts","numIndices","vertices","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","vertexBuffer","DYNAMIC_DRAW","sprite","setBlendMode","uvs","_uvs","verticies","aX","aY","x0","y0","renderTilingSprite","tilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","bufferSubData","subarray","TRIANGLES","TEXTURE0","stride","blendModeWebGL","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padidng","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","temp","sizeX","sizeY","currentFilter","shaders","colorBuffer","colorArray","createFramebuffer","framebuffer","framebufferTexture2D","COLOR_ATTACHMENT0","deleteFramebuffer","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","roundColor","stringColor","tintCache","tintMethod","convertTintToImage","tintImage","Image","toDataURL","tintWithMultiply","tintWithOverlay","tintWithPerPixel","rgbValues","pixelData","pixels","putImageData","step","cacheStepsPerColorChannel","min","canUseMultiply","CanvasRenderer","clearBeforeRender","refresh","count","renderStripFlat","strip","beginPath","moveTo","lineTo","closePath","renderStrip","u0","u1","u2","v0","v1","v2","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","CanvasBuffer","strokeRect","arc","ellipseData","h","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","len","rect","currentPath","boundsPadding","destroyCachedSprite","lineStyle","filling","beginFill","endFill","drawRect","drawCircle","drawEllipse","canvasBuffer","translate","updateBounds","TilingSprite","refreshTexture","generateTilingTexture","needsUpdate","__tilePattern","createPattern","forcePowerOfTwo","targetWidth","targetHeight","isFrame","newTextureRequired","isTiling","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","scope","onload","content","imageUrl","updateSourceImage","newSrc","image","crossOrigin","_pixiId","TextureCacheIdGenerator","FrameCache","noFrame","setFrame","onBaseTextureLoaded","onLoaded","destroyBase","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","originalWorldTransform","tempMatrix","exports","module","define","amd","Phaser","DEV_VERSION","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","Utils","parseDimension","dimension","f","innerWidth","innerHeight","shuffle","floor","random","pad","str","dir","padlen","right","ceil","left","isPlainObject","obj","nodeType","hasOwnProperty","extend","name","copy","copyIsArray","deep","isArray","arg","forEach","fun","t","diameter","_diameter","_radius","circumference","setTo","copyFrom","copyTo","dest","distance","round","distanceRound","out","circumferencePoint","angle","asDegrees","offsetPoint","point","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","invert","add","subtract","multiply","divide","clampX","clamp","clampY","output","rotate","getMagnitude","setMagnitude","magnitude","normalize","isZero","m","centroid","pointslength","floorAll","inflate","containsRect","intersection","tolerance","intersectsRaw","union","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","Line","fromSprite","startSprite","endSprite","useCenter","center","asSegment","intersectsPoints","pointOnLine","pointOnSegment","xMin","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","atan2","pow","Camera","game","world","screenView","deadzone","atLimit","_edge","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","focusOn","setPosition","focusOnXY","updateTarget","checkBounds","setBoundsToWorld","setSize","reset","State","make","camera","cache","input","load","math","sound","time","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","paused","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","current","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","onLoadComplete","loadComplete","state","autoStart","newState","isBooted","remove","callbackContext","onDestroyCallback","clearWorld","clearCache","checkState","restart","preUpdate","removeAll","setCurrentState","totalQueuedFiles","valid","warn","link","getCurrentState","preRender","renderType","LinkedList","next","prev","first","last","total","callAll","entity","Signal","_bindings","_prevParams","self","dispatch","memorize","_shouldPropagate","active","validateListener","fnName","replace","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","signal","_isOnce","_signal","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","resolution","setResolution","pointer","toFixed","totalElapsedSeconds","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","_parent","postUpdate","disableVisibilityChange","checkOffsetInterval","exists","currentRenderOrderID","_hiddenVar","_nextOffsetCheck","_backgroundColor","config","parseConfig","Canvas","now","getOffset","stlye","fullScreenScaleMode","_this","_onChange","visibilityChange","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","onpagehide","onpageshow","onblur","onfocus","focusLoss","focusGain","gamePaused","gameResumed","Color","hexToRGB","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","alive","cursor","cameraOffset","enableBodyDebug","_sortProperty","_cache","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","events","onAddedToGroup","addAt","updateZ","getAt","createMultiple","quantity","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","reverse","oldChild","newChild","onRemovedFromGroup","setProperty","operation","checkAlive","checkVisible","setAll","setAllChildren","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","existsValue","callbackFromArray","method","methodLength","contextLength","renderOrderID","checkExists","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","getFirstAlive","getFirstDead","getTop","getBottom","countLiving","countDead","getRandom","startIndex","removeBetween","destroyChildren","soft","radToDeg","World","setBounds","integerInRange","ScaleManager","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","pageAlignHorizontally","pageAlignVertically","maxIterations","orientationSprite","enterLandscape","enterPortrait","enterIncorrectOrientation","leaveIncorrectOrientation","hasResized","fullScreenTarget","enterFullScreen","leaveFullScreen","orientation","outerWidth","outerHeight","scaleFactor","scaleFactorInversed","margin","aspectRatio","sourceAspectRatio","NO_SCALE","_startHeight","checkOrientation","checkResize","fullScreenChange","EXACT_FIT","SHOW_ALL","startFullScreen","isFullScreen","device","fullscreen","smoothed","fullscreenKeyboard","requestFullscreen","Element","ALLOW_KEYBOARD_INPUT","stopFullScreen","cancelFullscreen","setShowAll","forceOrientation","orientationImage","checkImageKey","checkOrientationState","isLandscape","iPad","webApp","desktop","android","chrome","scrollTo","_check","_iterations","setInterval","setScreenSize","force","documentElement","setMaximum","setExactFit","clearInterval","marginLeft","marginTop","multiplier","availableWidth","availableHeight","Game","physicsConfig","isRunning","raf","net","debug","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","RandomDataGenerator","_onBoot","readyState","seed","Device","setUpRenderer","checkFullScreenSupport","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Net","Debug","showDebugHeader","RequestAnimationFrame","webAudio","trident","addToDOM","enableStep","disableStep","setMute","unsetMute","mute","hitCanvas","hitContext","moveCallback","moveCallbackContext","pollRate","disabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","currentPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","Pointer","Mouse","Keyboard","Touch","MSPointer","Gamepad","setMoveCallback","addPointer","hard","resetSpeed","startPointer","totalActivePointers","updatePointer","identifier","move","stopPointer","getPointer","getPointerFromIdentifier","getLocalPosition","wt","hitTest","localPoint","worldVisible","TileSprite","Key","keycode","enabled","isDown","isUp","altKey","ctrlKey","shiftKey","timeDown","duration","timeUp","repeats","keyCode","onHoldCallback","onHoldContext","processKeyDown","processKeyUp","justPressed","justReleased","onDownCallback","onUpCallback","_keys","_capture","_onKeyDown","_onKeyUp","addCallbacks","addKey","addKeyCapture","removeKey","removeKeyCapture","createCursorKeys","up","down","clearCaptures","A","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","UNDERSCORE","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","INSERT","DELETE","HELP","NUM_LOCK","mouseDownCallback","mouseMoveCallback","mouseUpCallback","capture","button","locked","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","onMouseDown","onMouseMove","onMouseUp","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","onPointerDown","onPointerMove","onPointerUp","pointerId","_holdSent","_history","_nextDrop","_stateReset","withinGame","clientX","clientY","pageX","pageY","screenX","screenY","isMouse","previousTapTime","totalTouches","msSinceLastClick","Number","MAX_VALUE","targetObject","positionDown","positionUp","_touchedHandler","shift","fromClick","pollLocked","isDragged","_highestRenderOrderID","MAX_SAFE_INTEGER","_highestRenderObject","_highestInputPriorityID","currentNode","validForInput","checkPointerOver","checkPointerDown","priorityID","_pointerOutHandler","_pointerOverHandler","leave","_releasedHandler","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","changedTouches","_gamepads","SinglePad","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","callbacks","onConnect","onDisconnect","onAxis","onFloat","newPad","connect","_ongamepaddisconnected","removedPad","disconnect","_pollGamepads","_connected","pollStatus","rawGamepads","gamepadsChanged","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","buttonCode","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","padParent","_padParent","_index","_rawPad","_prevTimestamp","_rawButtons","_buttons","_axes","_hotkeys","addButton","GamepadButton","timestamp","buttons","buttonValue","processButtonDown","processButtonUp","processButtonFloat","axes","axis","processAxisChange","triggerCallback","disconnectingIndex","axisState","axisCode","buttoncode","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","addedToGroup","removedFromGroup","highestID","highestRenderID","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","checkPixel","_draggedPointerID","updateDrag","startDrag","stopDrag","fixedToCamera","_dragPoint","dragOffset","checkBoundsRect","checkBoundsSprite","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","dragFromCenter","disableDrag","centerOn","centerX","centerY","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","camerOffset","Events","onKilled","onRevived","onOutOfBounds","onEnterBounds","onAnimationStart","onAnimationComplete","onAnimationLoop","existing","object","group","tween","physicsGroup","audio","loop","tileSprite","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","characterWidth","characterHeight","charsPerRow","xSpacing","ySpacing","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","Tilemap","addToCache","uuid","addRenderTexture","bitmapData","BitmapData","addBitmapData","Tween","ctx","imageData","textureFrame","Frame","loadTexture","refreshBuffer","Int32Array","setPixel32","red","green","blue","setPixel","getPixel","data32","getPixel32","getPixels","copyPixels","area","destX","destY","getImage","draw","alphaMask","animations","AnimationManager","_frame","_frameName","autoCull","health","lifespan","checkWorldBounds","outOfBoundsKill","elapsed","kill","isSpriteSheet","loadFrameData","getFrameData","frameName","crop","sourceWidth","sourceHeight","local","revive","damage","_outOfBoundsFired","play","frameRate","killOnComplete","overlap","wrapAngle","P2JS","addToWorld","removeFromWorld","phase","_reset","frameData","getFrameByName","getFrame","_scroll","physicsElapsed","autoScroll","stopScroll","safeRemove","_text","_font","_fontSize","_fontWeight","_lineSpacing","parentNode","setShadow","blur","shadowOffsetX","shadowOffsetY","shadowColor","shadowBlur","runWordWrap","lineJoin","linePosition","parseFloat","_align","_tint","_onOverFrameName","_onOutFrameName","_onDownFrameName","_onUpFrameName","_onOverFrameID","_onOutFrameID","_onDownFrameID","_onUpFrameID","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","freezeFrames","forceOut","inputEnabled","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","clearFrames","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","marker","Sound","setState","drawPolygon","poly","_temp","renderXY","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","FrameData","addFrame","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","characterSpacing","lineSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","newText","toUpperCase","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","noCocoon","display","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollLeft","compatMode","pageYOffset","pageXOffset","getAspectRatio","msTouchAction","overflowHidden","getElementById","overflow","translateX","translateY","skewX","skewY","setSmoothingEnabled","setImageRenderingCrisp","msInterpolationMode","setImageRenderingBicubic","iOS","cocoonJS","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","epiphany","firefox","ie","ieVersion","tridentVersion","mobileSafari","midori","opera","safari","silk","audioData","ogg","opus","mp3","wav","m4a","webm","iPhone","iPhone4","pixelRatio","littleEndian","_checkAudio","_checkBrowser","_checkCSS3D","_checkDevice","_checkFeatures","_checkOS","ua","getItem","error","WebGLRenderingContext","maxTouchPoints","msPointerEnabled","pointerEnabled","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","fs","cfs","RegExp","$1","$3","audioElement","canPlayType","toLowerCase","Int8Array","Int16Array","vibrate","webkitVibrate","mozVibrate","msVibrate","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","isConsoleOpen","profile","profileEnd","forceSetTimeOut","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","avg","truncate","shear","snapTo","gap","snapToFloor","snapToCeil","snapToInArray","arr","low","high","POSITIVE_INFINITY","roundTo","place","base","floorTo","ceilTo","interpolateFloat","weight","angleBetween","angleBetweenPoints","point1","point2","reverseAngle","angleRad","normalizeAngle","normalizeLatitude","lat","normalizeLongitude","lng","nearestAngleBetween","radians","rd","interpolateAngles","ease","normalizeAngleToAnother","chanceRoll","chance","numberArray","maxAdd","minSub","wrap","wrapValue","diff","randomSign","isOdd","isEven","minProperty","maxProperty","radianFactor","angleLimit","linearInterpolation","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","p1","factorial","p2","p3","t2","t3","difference","objects","removeRandom","idx","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","stack","s","shuffleArray","distancePow","distanceRounded","clampBottom","within","mapLinear","smoothstep","smootherstep","degreeToRadiansFactor","degrees","radianToDegreesFactor","seeds","s0","s1","s2","sow","hash","integer","frac","real","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","level","nodes","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","url","href","re","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","_tweens","_add","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","numTweens","isTweening","some","_object","_pause","_resume","pauseAll","resumeAll","manager","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_repeat","_yoyo","_reversed","_delayTime","_startTime","_easingFunction","Easing","Linear","None","_interpolationFunction","_chainedTweens","_onStartCallbackFired","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","onStart","onLoop","onComplete","to","properties","yoyo","_lastChild","chain","generateData","tick","blob","reversed","times","easing","interpolation","pauseDuration","isFinite","tmp","numChainedTweens","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Exponential","Circular","Elastic","asin","Back","Bounce","pausedTime","advancedTiming","fps","fpsMin","fpsMax","msMin","msMax","deltaCap","frames","Timer","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","autoDestroy","timer","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","_pauseTotal","_now","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","TimerEvent","clearEvents","clearPendingEvents","ms","currentFrame","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","useNumericIndex","getFrameIndexes","Animation","currentAnim","validateFrames","checkFrameName","isPlaying","resetFrame","getAnimation","refreshFrame","anim","_frameIndex","isPaused","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","_timeLastFrame","_timeNextFrame","dispatchComplete","generateFrameNames","prefix","suffix","zeroPad","rotated","rotationDirection","trimmed","sourceSizeW","sourceSizeH","spriteSourceSizeX","spriteSourceSizeY","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destWidth","destHeight","getRect","_frameNames","getFrameRange","getFrames","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","spacing","img","row","column","JSONData","json","cacheKey","newFrame","filename","sourceSize","spriteSourceSize","JSONDataHash","XMLData","xml","frameX","frameY","nodeValue","_canvases","_images","_textures","_sounds","_json","_physics","_tilemaps","_binary","_bitmapDatas","_bitmapFont","addDefaultImage","addMissingImage","onSoundUnlock","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","addCanvas","addBinary","binaryData","addSpriteSheet","addTilemap","mapData","addTextureAtlas","atlasData","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","TEXTURE_ATLAS_XML_STARLING","addBitmapFont","xmlData","LoaderParser","bitmapFont","addPhysicsData","addText","addJSON","addImage","addSound","audioTag","decoded","isDecoding","touchLocked","reloadSound","reloadSoundComplete","updateSound","decodedSound","getCanvas","getBitmapData","getBitmapFont","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getFrameByIndex","getTextureFrame","getTexture","getSound","getSoundData","isSoundDecoded","isSoundReady","getText","getJSON","getBinary","getKeys","removeCanvas","removeImage","removeSound","removeText","removeJSON","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","_fileList","_fileIndex","_progressChunk","_xhr","isLoading","progress","progressFloat","preloadSprite","baseURL","onLoadStart","onFileStart","onFileComplete","onFileError","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","direction","checkKeyExists","getAssetIndex","getAsset","addToFileList","entry","loaded","prop","replaceInFileList","overwrite","script","binary","spritesheet","urls","autoDecode","mapDataURL","CSV","TILED_JSON","parse","dataURL","jsonData","LIME_CORONA_JSON","textureURL","xmlURL","domparser","DOMParser","parseFromString","async","loadXML","atlasJSONArray","atlasURL","atlas","atlasJSONHash","atlasXML","removeFile","loadFile","fileComplete","onerror","fileError","getAudioURL","usingWebAudio","open","responseType","send","usingAudioTag","Audio","jsonLoadComplete","csvLoadComplete","dataLoadError","extension","lastIndexOf","nextFile","loadNext","xmlLoadComplete","response","that","decodeAudioData","onSoundDecode","responseText","language","defer","head","previousIndex","success","totalLoadedFiles","ajaxRequest","div","innerHTML","info","common","getAttribute","letters","textureRect","kernings","second","connectToMaster","_volume","markers","_buffer","_muted","autoplay","totalDuration","startTime","currentTime","stopTime","pausedPosition","currentMarker","pendingPlayback","override","externalNode","masterGainNode","masterGain","gainNode","createGain","createGainNode","gain","_sound","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","addMarker","durationMS","removeMarker","_tempMarker","_tempPosition","_tempVolume","_tempLoop","forceRestart","noteOff","createBufferSource","noteGrainOn","decode","muted","prevMarker","_muteVolume","_codeMuted","_unlockSource","noAudio","channels","fakeiOSTouchLock","unlock","disableAudio","disableWebAudio","destination","noteOn","stopAll","soundData","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","columnWidth","renderShadow","currentAlpha","currentColor","soundInfo","isDecoded","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","inputInfo","spriteBounds","filled","rectangle","spriteInfo","inCamera","spriteCoords","lineInfo","pixel","geom","forceType","quadTree","quadtree","Body","bodyInfo","renderBodyInfo","getColor32","getColor","hex16","getColorInfo","argb","getRGB","hsl","RGBtoHSV","RGBtoHexstring","hue","saturation","lightness","colorToHexstring","RGBtoWebstring","digits","lsd","msd","hexified","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","r1","g1","g2","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","arcade","ninja","box2d","chipmunk","NINJA","BOX2D","CHIPMUNK","Ninja","P2","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","TILE_BIAS","forceX","_overlap","_maxOverlap","_velocity1","_velocity2","_newVelocity1","_newVelocity2","_average","_mapData","_result","_total","_angle","_dx","_dy","updateMotion","_velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","_drag","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","overlapOnly","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","collideGroupVsSelf","sprite1","sprite2","separate","_potentials","group1","group2","tilemapLayer","getTiles","tilePadding","separateTile","body1","body2","separateX","separateY","immovable","deltaAbsX","deltaX","embedded","touching","none","overlapX","customSeparateX","bounce","mass","deltaAbsY","deltaY","overlapY","customSeparateY","moves","tile","collisionCallback","collisionCallbackContext","layer","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","blocked","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","allowRotation","preRotation","newVelocity","deltaMax","facing","collideWorldBounds","any","wasTouching","_sx","_sy","asx","asy","deltaZ","onFloor","onWall","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_explode","emitParticle","makeParticles","keys","particle","rndKey","rndFrame","explode","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","setScale","at","Tile","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","collides","faces","TilemapParser","version","widthInPixels","heightInPixels","layers","tilesets","tiles","collideIndexes","collision","images","currentLayer","debugMap","_results","_tempA","_tempB","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","gid","getTilesetIndex","setImage","newSet","Tileset","countX","countY","columns","rows","createFromObjects","CustomClass","adjustY","createLayer","getLayerIndex","TilemapLayer","indexes","bodies","getImageIndex","getObjectIndex","setTileIndexCallback","getLayer","setTileLocationCallback","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","recalculate","above","below","getTileAbove","getTileBelow","getTileLeft","getTileRight","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","getTile","getTileWorldXY","paste","tileblock","diffX","diffY","tileA","tileB","swapHandler","removeAllLayers","dump","txt","map","tileColor","debugAlpha","debugColor","debugFill","debugFillColor","debugCallbackColor","scrollFactorX","scrollFactorY","rayStepRate","_mc","cw","ch","ga","dw","dh","tl","startX","startY","prevX","prevY","updateMax","scrollX","scrollY","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coords","wy","wx","lenY","_column","lenX","renderDebug","getEmptyData","parseCSV","parseTiledJSON","tilewidth","tileheight","opacity","firstgid","tileproperties","tileProperties","imageheight","imagewidth","polyline","drawCoords","setSpacing","enableCircle","enableTile","clearTilemapLayerBodies","convertTilemap","slopeMap","aabb","collideAABBVsAABB","collideAABBVsTile","collideCircleVsTile","shape","friction","gravityScale","maxSpeed","AABB","integrate","xw","yw","setZeroVelocity","oldpos","moveFrom","moveLeft","fx","moveRight","oH","oV","aabbTileProjections","TYPE_FULL","projAABB_Full","TYPE_45DEG","projAABB_45Deg","TYPE_CONCAVE","projAABB_Concave","TYPE_CONVEX","projAABB_Convex","TYPE_22DEGs","projAABB_22DegS","TYPE_22DEGb","projAABB_22DegB","TYPE_67DEGs","projAABB_67DegS","TYPE_67DEGb","projAABB_67DegB","TYPE_HALF","projAABB_Half","COL_NONE","COL_AXIS","COL_OTHER","reportCollisionVsWorld","fy","o","vx","vy","dp","nx","ny","reportCollisionVsBody","vx1","vy1","dp1","txw","tyw","resolveTile","signx","signy","lenN","lenP","penY","penX","twid","rad","pen","EMPTY","TYPE_EMPTY","setType","updateType","SLOPE_45DEGpn","SQRT2","SLOPE_45DEGnn","SLOPE_45DEGnp","SLOPE_45DEGpp","CONCAVEpn","CONCAVEnn","CONCAVEnp","CONCAVEpp","CONVEXpn","CONVEXnn","CONVEXnp","CONVEXpp","SLOPE_22DEGpnS","slen","SLOPE_22DEGnnS","SLOPE_22DEGnpS","SLOPE_22DEGppS","SLOPE_22DEGpnB","SLOPE_22DEGnnB","SLOPE_22DEGnpB","SLOPE_22DEGppB","SLOPE_67DEGpnS","SLOPE_67DEGnnS","SLOPE_67DEGnpS","SLOPE_67DEGppS","SLOPE_67DEGpnB","SLOPE_67DEGnnB","SLOPE_67DEGnpB","SLOPE_67DEGppB","HALFd","HALFu","HALFl","HALFr","FULL","circleTileProjections","projCircle_Full","projCircle_45Deg","projCircle_Concave","projCircle_Convex","projCircle_22DegS","projCircle_22DegB","projCircle_67DegS","projCircle_67DegB","projCircle_Half","resolveCircleTile","perp","trad","celldp","require",1,"GLMAT_EPSILON","GLMAT_ARRAY_TYPE","setMatrixArrayType","vec2","fromValues","sub","mul","squaredDistance","sqrDist","squaredLength","sqrLen","negate","dot","cross","lerp","transformMat2","transformMat2d","transformMat3","transformMat4","vec","fn",2,"Scalar","lineInt","l1","l2","precision","det","eq","segmentsIntersect","q1","q2","da","db","./Scalar",3,"leftOn","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","magA","magB","acos","sqdist",4,"getIntersectionPoint","append","from","makeCCW","br","isReflex","tmpLine1","tmpLine2","canSee","targetPoly","getCutEdges","tmp1","tmp2","tmpPoly","nDiags","decomp","edges","cutEdges","polys","cutEdge","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","upperInt","lowerInt","upperDist","lowerDist","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","removeCollinearPoints","num","./Line","./Point",5,6,"./Polygon",7,"description","author","keywords","main","engines","node","repository","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-browserify","z-schema","dependencies","poly-decomp","gl-matrix",8,"lowerBound","upperBound","setFromPoints","overlaps","../math/vec2","../utils/Utils",9,"Broadphase","boundingVolumeType","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","d2","boundingRadius","aabbCheck","aabbNeedsUpdate","updateAABB","boundingVolumeCheck","canCollide","motionState","STATIC","KINEMATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body",10,"GridBroadphase","xmin","xmax","ymin","ymax","binsizeX","binsizeY","Ncolliding","bins","Nbins","xmult","ymult","bi","lowerX","lowerY","upperX","upperY","xi1","yi1","xi2","yi2","bin","NbodiesInBin","bj","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane",11,"NaiveBroadphase","../shapes/Shape",12,"Narrowphase","contactEquations","frictionEquations","enableFriction","slipForce","frictionCoefficient","surfaceVelocity","reuseObjects","reusableContactEquations","reusableFrictionEquations","restitution","stiffness","relaxation","frictionStiffness","frictionRelaxation","collidingBodiesLastStep","clearObject","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","pic_r1","lastCross","crossLength","ContactEquation","FrictionEquation","Shape","yAxis","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","collidedLastStep","id1","id2","ce","fe","rfe","rce","appendArray","createContactEquation","shapeA","shapeB","firstImpact","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","normalA","contactEquation","LINE","CONVEX","convexLine","si","ai","sj","aj","justTest","RECTANGLE","lineRectangle","convexCapsule_tempRect","convexCapsule_tempVec","CAPSULE","convexCapsule","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","circlePosi","circlePosj","numContacts","circleCircle","lineLine","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","lineBody","lineShape","lineOffset","lineAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","circleLine","CIRCLE","lineRadius","circleRadius","circleOffset","circleBody","circleShape","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","pos0","pos1","circleCapsule","convexBody","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","particleBody","convexToparticle","minEdgeNormal","radiusA","radiusB","offsetA","offsetB","planeConvex","numReported","convexPrecision","convexPlane","particlePlane","circleParticle","capsulePlane_tmpCircle","capsulePlane_tmp1","capsulePlane_tmp2","planeCapsule","end1","end2","numContacts1","circlePlane","numContacts2","capsulePlane","planeToCircle","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","angleA","angleB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","edge","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","flip","closestEdge","halfPi","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","circleAngle","hfBody","hfShape","hfPos","hfAngle","elementWidth","minCandidateNormal","idxA","idxB","minDist","../equations/ContactEquation","../equations/FrictionEquation","../shapes/Rectangle",13,"SAPBroadphase","axisListX","axisListY","_addBodyHandler","_removeBodyHandler","sortAxisListX","sortAxisListY","preliminaryList","bodiesX","bodiesY","axisIndex",14,"Constraint","equations","collideConnected","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","eqs","setRelaxation",15,"DistanceConstraint","maxForce","Equation","computeGq","setMaxForce","minForce","getMaxForce","../equations/Equation","./Constraint",16,"GearConstraint","AngleLockEquation","ratio","setMaxTorque","maxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation",17,"LockConstraint","localOffsetB","localAngleB","rot","xAxis",18,"PrismaticConstraint","localAnchorA","localAxisA","localAnchorB","trans","ri","rj","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","lowerLimitEnabled","upperLimitEnabled","lowerLimit","upperLimit","upperLimitEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vj","wi","wj","transformedGmult","worldAxisA","worldAnchorA","worldAnchorB","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","../equations/RotationalLockEquation",19,"RevoluteConstraint","pivotA","pivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","getMotorSpeed","../equations/RotationalVelocityEquation",20,"./Equation",21,"computeB","rixn","rjxn","GW","Gq","GiMf","computeGiMf",22,"DEFAULT_STIFFNESS","DEFAULT_RELAXATION","ARRAY_TYPE","timeStep","Gmult","getBodyInvMass","invMass","getBodyInvInertia","invInertia","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassj","invIi","invIj","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps",23,"getSlipForce",24,"worldVectorA","worldVectorB",25,26,"EventEmitter","_listeners","listenerArray",27,"ContactMaterial","materialA","materialB","Material","idCounter","./Material",28,29,"GetArea","sum",30,"crossVZ","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","../../build/vec2",31,"_idCounter","shapes","shapeOffsets","shapeAngles","inertia","fixedRotation","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","timeLastSleepy","concavePath","lastDampingScale","lastAngularDampingScale","lastDampingTimeStep","updateMassProperties","Convex","setDensity","density","totalArea","getArea","shapeAABB","computeAABB","updateBoundingRadius","addShape","removeShape","Icm","computeMomentOfInertia","Body_applyForce_r","applyForce","rotForce","toWorldFrame","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","idleTime","wakeUpEvent","sleep","sleepEvent","sleepTick","dontSleep","speedSquared","speedLimitSquared","SLEEPY","getVelocityFromPosition","store","getAngularVelocityFromPosition","sleepyEvent","../collision/AABB","../events/EventEmitter","../shapes/Convex",32,"Spring","restLength","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f",33,"Capsule","GSSolver","Heightfield","Plane","Solver","../package.json","./collision/AABB","./collision/Broadphase","./collision/GridBroadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/Spring","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Rectangle","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/Utils","./world/World",34,"updateArea","./Shape",35,36,"polyk","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","numer","../math/polyk",37,"maxValue",38,39,40,41,"./Convex",42,"collisionGroup","collisionMask","material","sensor",43,"GS","iterations","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","solve","sortEquations","iter","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver",44,"equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","addEquation","removeEquation","ISLAND",45,"howmany",46,"Island","bodyIds",47,"IslandManager","_nodePool","_islandPool","islands","queue","IslandNode","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","neighbors","ni","nj","./Island","./IslandNode",48,49,"springs","disabledBodyCollisionPairs","solver","narrowphase","islandManager","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","doProfiling","lastStepTime","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","bodiesToBeRemoved","fixedStepTime","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","postBroadphaseEvent","pairs","enableBodySleeping","enableIslandSleeping","beginContactEvent","endContactEvent","preSolveEvent","overlappingShapesLastState","overlappingShapesCurrentState","overlappingShapeLookup","v2a","contactMaterialToJSON","pkg","performance","nowOffset","timing","navigationStart","addConstraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","removeConstraint","step_mg","xiw","xjw","interpvelo","timeSinceLastCalled","maxSubSteps","internalStep","internalSteps","t0","t1","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","Nshapesi","Nshapesj","runNarrowphase","integrateBody","ev","removeBody","ib_fhMinv","ib_velodt","minv","velo","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","wakeUpA","wakeUpB","speedSquaredA","speedLimitSquaredA","speedSquaredB","speedLimitSquaredB","addSpring","removeSpring","addBody","getBodyById","disableBodyCollision","enableBodyCollision","toJSON","distanceConstraints","revoluteConstraints","prismaticConstraints","lockConstraints","gearConstraints","materials","js","jb","wb","jc","ss","jsonBody","circleShapes","planeShapes","particleShapes","lineShapes","rectangleShapes","convexShapes","capsuleShapes","jsonShape","mats","matId","fromJSON","shapeJSON","id2material","jm","matA","matB","revolute","cs","cms","hitTest_tmp1","hitTest_zero","hitTest_tmp2","pb","ps","pa","zero","NS","setGlobalEquationParameters","parameters","setGlobalStiffness","setGlobalRelaxation","../../package.json","../collision/NaiveBroadphase","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/Constraint","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/Spring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","./IslandManager","useElapsedTime","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","removeBodyNextStep","setImpactEvents","impactHandler","setPostBroadphaseCallback","postBroadphaseHandler","_bodyCallbacks","_bodyCallbackContext","_groupCallbacks","_groupCallbackContext","setCollisionGroup","setWorldMaterial","updateBoundsCollisionGroup","impactCallback","createDistanceConstraint","getBody","createGearConstraint","createRevoluteConstraint","createLockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","constraint","setMaterial","createMaterial","createContactMaterial","getSprings","getConstraints","filterStatic","physicsPosition","query","createCollisionGroup","bitmask","createSpring","worldA","worldB","localA","localB","createBody","addPolygon","createParticle","convertCollisionObjects","optimize","addRectangle","FixtureList","list","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","flatten","getFixtureByKey","getGroup","groupID","_ref","isNaN","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","_groupCallbacksContext","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","setZeroRotation","setZeroDamping","rotateLeft","rotateRight","moveForward","moveBackward","thrust","resetDamping","resetMass","clearShapes","shapeChanged","addCircle","addPlane","addParticle","addLine","addCapsule","setCircle","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","generatedShapes","categoryBits","maskBits","isSensor","polygons","loadPolygon","localData","loadData","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","updateSpriteTransform","lw","vrot","_j","_ref1","randomPastelHex","drawConvex","drawPlane","drawLine","drawRectangle","colors","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","componentToHex"],"mappings":"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"} \ No newline at end of file diff --git a/build/phaser.min.js b/build/phaser.min.js index 31ebf9bb42..b40eb2aaf7 100644 --- a/build/phaser.min.js +++ b/build/phaser.min.js @@ -1,23 +1,23 @@ -/* Phaser v2.0.3 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ +/* Phaser v2.0.4 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */ (function(){var a=this,b=b||{};b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v1.5.2",b.blendModes={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},b.scaleModes={DEFAULT:0,LINEAR:0,NEAREST:1},b.INTERACTION_FREQUENCY=30,b.AUTO_PREVENT_DEFAULT=!0,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.Point=function(a,b){this.x=a||0,this.y=b||0},b.Point.prototype.clone=function(){return new b.Point(this.x,this.y)},b.Point.prototype.constructor=b.Point,b.Point.prototype.set=function(a,b){this.x=a||0,this.y=b||(0!==b?this.x:0)},b.Rectangle=function(a,b,c,d){this.x=a||0,this.y=b||0,this.width=c||0,this.height=d||0},b.Rectangle.prototype.clone=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},b.Rectangle.prototype.contains=function(a,b){if(this.width<=0||this.height<=0)return!1;var c=this.x;if(a>=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1},b.Rectangle.prototype.constructor=b.Rectangle,b.EmptyRectangle=new b.Rectangle(0,0,0,0),b.Polygon=function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this.points=a},b.Polygon.prototype.clone=function(){for(var a=[],c=0;cb!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!c)}return c},b.Polygon.prototype.constructor=b.Polygon,b.Circle=function(a,b,c){this.x=a||0,this.y=b||0,this.radius=c||0},b.Circle.prototype.clone=function(){return new b.Circle(this.x,this.y,this.radius)},b.Circle.prototype.contains=function(a,b){if(this.radius<=0)return!1;var c=this.x-a,d=this.y-b,e=this.radius*this.radius;return c*=c,d*=d,e>=c+d},b.Circle.prototype.constructor=b.Circle,b.Ellipse=function(a,b,c,d){this.x=a||0,this.y=b||0,this.width=c||0,this.height=d||0},b.Ellipse.prototype.clone=function(){return new b.Ellipse(this.x,this.y,this.width,this.height)},b.Ellipse.prototype.contains=function(a,b){if(this.width<=0||this.height<=0)return!1;var c=(a-this.x)/this.width,d=(b-this.y)/this.height;return c*=c,d*=d,1>=c+d},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},b.Ellipse.prototype.constructor=b.Ellipse,b.determineMatrixArrayType=function(){return"undefined"!=typeof Float32Array?Float32Array:Array},b.Matrix2=b.determineMatrixArrayType(),b.Matrix=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0},b.Matrix.prototype.fromArray=function(a){this.a=a[0],this.b=a[1],this.c=a[3],this.d=a[4],this.tx=a[2],this.ty=a[5]},b.Matrix.prototype.toArray=function(a){this.array||(this.array=new Float32Array(9));var b=this.array;return a?(this.array[0]=this.a,this.array[1]=this.c,this.array[2]=0,this.array[3]=this.b,this.array[4]=this.d,this.array[5]=0,this.array[6]=this.tx,this.array[7]=this.ty,this.array[8]=1):(this.array[0]=this.a,this.array[1]=this.b,this.array[2]=this.tx,this.array[3]=this.c,this.array[4]=this.d,this.array[5]=this.ty,this.array[6]=0,this.array[7]=0,this.array[8]=1),b},b.identityMatrix=new b.Matrix,b.DisplayObject=function(){this.position=new b.Point,this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.buttonMode=!1,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this._interactive=!1,this.defaultCursor="pointer",this.worldTransform=new b.Matrix,this.color=[],this.dynamic=!0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.setInteractive=function(a){this.interactive=a},Object.defineProperty(b.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var b=[],c=0;c=0&&b<=this.children.length))throw new Error(a+" The index "+b+" supplied is out of bounds "+this.children.length);a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.children.indexOf(a),d=this.children.indexOf(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(a>=0&&a0&&d>=e){for(var f=this.children.splice(c,e),g=0;ga;a++)this.children[a].updateTransform()},b.DisplayObjectContainer.prototype.getBounds=function(a){if(0===this.children.length)return b.EmptyRectangle;if(a){var c=this.worldTransform;this.worldTransform=a,this.updateTransform(),this.worldTransform=c}for(var d,e,f,g=1/0,h=1/0,i=-1/0,j=-1/0,k=!1,l=0,m=this.children.length;m>l;l++){var n=this.children[l];n.visible&&(k=!0,d=this.children[l].getBounds(a),g=ge?i:e,j=j>f?j:f)}if(!k)return b.EmptyRectangle;var o=this._bounds;return o.x=g,o.y=h,o.width=i-g,o.height=j-h,o},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a,this._interactive&&(this.stage.dirty=!0);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d.setStageReference(a)}},b.DisplayObjectContainer.prototype.removeStageReference=function(){for(var a=0,b=this.children.length;b>a;a++){var c=this.children[a];c.removeStageReference()}this._interactive&&(this.stage.dirty=!0),this.stage=null},b.DisplayObjectContainer.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);var b,c;if(this._mask||this._filters){for(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);a.spriteBatch.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),a.spriteBatch.start()}else for(b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.DisplayObjectContainer.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._cacheAsBitmap)return void this._renderCachedSprite(a);this._mask&&a.maskManager.pushMask(this._mask,a.context);for(var b=0,c=this.children.length;c>b;b++){var d=this.children[b];d._renderCanvas(a)}this._mask&&a.maskManager.popMask(a.context)}},b.Sprite=function(a){b.DisplayObjectContainer.call(this),this.anchor=new b.Point,this.texture=a,this._width=0,this._height=0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL,a.baseTexture.hasLoaded?this.onTextureUpdate():(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},b.Sprite.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Sprite.prototype.constructor=b.Sprite,Object.defineProperty(b.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(b.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),b.Sprite.prototype.setTexture=function(a){this.texture.baseTexture!==a.baseTexture?(this.textureChange=!0,this.texture=a):this.texture=a,this.cachedTint=16777215,this.updateFrame=!0},b.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},b.Sprite.prototype.getBounds=function(a){var b=this.texture.frame.width,c=this.texture.frame.height,d=b*(1-this.anchor.x),e=b*-this.anchor.x,f=c*(1-this.anchor.y),g=c*-this.anchor.y,h=a||this.worldTransform,i=h.a,j=h.c,k=h.b,l=h.d,m=h.tx,n=h.ty,o=i*e+k*g+m,p=l*g+j*e+n,q=i*d+k*g+m,r=l*g+j*d+n,s=i*d+k*f+m,t=l*f+j*d+n,u=i*e+k*f+m,v=l*f+j*e+n,w=-1/0,x=-1/0,y=1/0,z=1/0;y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,z=z>p?p:z,z=z>r?r:z,z=z>t?t:z,z=z>v?v:z,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,x=p>x?p:x,x=r>x?r:x,x=t>x?t:x,x=v>x?v:x;var A=this._bounds;return A.x=y,A.width=w-y,A.y=z,A.height=x-z,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a){if(this.visible&&!(this.alpha<=0)){var b,c;if(this._mask||this._filters){var d=a.spriteBatch;for(this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),d.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a);d.stop(),this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),d.start()}else for(a.spriteBatch.render(this),b=0,c=this.children.length;c>b;b++)this.children[b]._renderWebGL(a)}},b.Sprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=this.texture.frame,d=a.context,e=this.texture;if(this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,d.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),this._mask&&a.maskManager.pushMask(this._mask,a.context),c&&c.width&&c.height&&e.baseTexture.source){d.globalAlpha=this.worldAlpha;var f=this.worldTransform;if(a.roundPixels?d.setTransform(f.a,f.c,f.b,f.d,0|f.tx,0|f.ty):d.setTransform(f.a,f.c,f.b,f.d,f.tx,f.ty),a.smoothProperty&&a.scaleMode!==this.texture.baseTexture.scaleMode&&(a.scaleMode=this.texture.baseTexture.scaleMode,d[a.smoothProperty]=a.scaleMode===b.scaleModes.LINEAR),16777215!==this.tint){if(this.cachedTint!==this.tint){if(!e.baseTexture.hasLoaded)return;this.cachedTint=this.tint,this.tintedTexture=b.CanvasTinter.getTintedTexture(this,this.tint)}d.drawImage(this.tintedTexture,0,0,c.width,c.height,this.anchor.x*-c.width,this.anchor.y*-c.height,c.width,c.height)}else if(e.trim){var g=e.trim;d.drawImage(this.texture.baseTexture.source,c.x,c.y,c.width,c.height,g.x-this.anchor.x*g.width,g.y-this.anchor.y*g.height,c.width,c.height)}else d.drawImage(this.texture.baseTexture.source,c.x,c.y,c.width,c.height,this.anchor.x*-c.width,this.anchor.y*-c.height,c.width,c.height)}for(var h=0,i=this.children.length;i>h;h++){var j=this.children[h];j._renderCanvas(a)}this._mask&&a.maskManager.popMask(a.context)}},b.Sprite.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache'+this);return new b.Sprite(c)},b.Sprite.fromImage=function(a,c,d){var e=b.Texture.fromImage(a,c,d);return new b.Sprite(e)},b.SpriteBatch=function(a){b.DisplayObjectContainer.call(this),this.textureThing=a,this.ready=!1},b.SpriteBatch.prototype=Object.create(b.DisplayObjectContainer.prototype),b.SpriteBatch.constructor=b.SpriteBatch,b.SpriteBatch.prototype.initWebGL=function(a){this.fastSpriteBatch=new b.WebGLFastSpriteBatch(a),this.ready=!0},b.SpriteBatch.prototype.updateTransform=function(){b.DisplayObject.prototype.updateTransform.call(this)},b.SpriteBatch.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||!this.children.length||(this.ready||this.initWebGL(a.gl),a.spriteBatch.stop(),a.shaderManager.activateShader(a.shaderManager.fastShader),this.fastSpriteBatch.begin(this,a),this.fastSpriteBatch.render(this),a.shaderManager.activateShader(a.shaderManager.defaultShader),a.spriteBatch.start())},b.SpriteBatch.prototype._renderCanvas=function(a){var c=a.context;c.globalAlpha=this.worldAlpha,b.DisplayObject.prototype.updateTransform.call(this);for(var d=this.worldTransform,e=!0,f=0;fe?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d=2?parseInt(c[c.length-2],10):b.BitmapText.fonts[this.fontName].size,this.dirty=!0,this.tint=a.tint},b.BitmapText.prototype.updateText=function(){for(var a=b.BitmapText.fonts[this.fontName],c=new b.Point,d=null,e=[],f=0,g=[],h=0,i=this.fontSize/a.size,j=0;j=j;j++){var n=0;"right"===this.style.align?n=f-g[j]:"center"===this.style.align&&(n=(f-g[j])/2),m.push(n)}var o=this.children.length,p=e.length,q=this.tint||16777215;for(j=0;p>j;j++){var r=o>j?this.children[j]:this._pool.pop();r?r.setTexture(e[j].texture):r=new b.Sprite(e[j].texture),r.position.x=(e[j].position.x+m[e[j].line])*i,r.position.y=e[j].position.y*i,r.scale.x=r.scale.y=i,r.tint=q,r.parent||this.addChild(r)}for(;this.children.length>p;){var s=this.getChildAt(this.children.length-1);this._pool.push(s),this.removeChild(s)}this.textWidth=f*i,this.textHeight=(c.y+a.lineHeight)*i},b.BitmapText.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),b.DisplayObjectContainer.prototype.updateTransform.call(this)},b.BitmapText.fonts={},b.Stage=function(a){b.DisplayObjectContainer.call(this),this.worldTransform=new b.Matrix,this.interactive=!0,this.interactionManager=new b.InteractionManager(this),this.dirty=!0,this.stage=this,this.stage.hitArea=new b.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a)},b.Stage.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},b.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var a=0,b=this.children.length;b>a;a++)this.children[a].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},b.Stage.prototype.setBackgroundColor=function(a){this.backgroundColor=a||0,this.backgroundColorSplit=b.hex2rgb(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},b.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global};for(var c=0,d=["ms","moz","webkit","o"],e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),b.AjaxRequest=function(){var a=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new window.XMLHttpRequest:!1;for(var b=0;b0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.EventTarget=function(){var a={};this.addEventListener=this.on=function(b,c){void 0===a[b]&&(a[b]=[]),-1===a[b].indexOf(c)&&a[b].push(c)},this.dispatchEvent=this.emit=function(b){if(a[b.type]&&a[b.type].length)for(var c=0,d=a[b.type].length;d>c;c++)a[b.type][c](b)},this.removeEventListener=this.off=function(b,c){var d=a[b].indexOf(c);-1!==d&&a[b].splice(d,1)},this.removeAllEventListeners=function(b){var c=a[b];c&&(c.length=0)}},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return window.console.log("PIXI Warning: shape too complex to fill"),[];for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.initDefaultShaders=function(){},b.CompileVertexShader=function(a,c){return b._CompileShader(a,c,a.VERTEX_SHADER)},b.CompileFragmentShader=function(a,c){return b._CompileShader(a,c,a.FRAGMENT_SHADER)},b._CompileShader=function(a,b,c){var d=b.join("\n"),e=a.createShader(c);return a.shaderSource(e,d),a.compileShader(e),a.getShaderParameter(e,a.COMPILE_STATUS)?e:(window.console.log(a.getShaderInfoLog(e)),null)},b.compileProgram=function(a,c,d){var e=b.CompileFragmentShader(a,d),f=b.CompileVertexShader(a,c),g=a.createProgram();return a.attachShader(g,f),a.attachShader(g,e),a.linkProgram(g),a.getProgramParameter(g,a.LINK_STATUS)||window.console.log("Could not initialise shaders"),g},b.PixiShader=function(a){this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.textureCount=0,this.attributes=[],this.init()},b.PixiShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc||b.PixiShader.defaultVertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute];for(var d in this.uniforms)this.uniforms[d].uniformLocation=a.getUniformLocation(c,d);this.initUniforms(),this.program=c},b.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a,b=this.gl;for(var c in this.uniforms){a=this.uniforms[c];var d=a.type;"sampler2D"===d?(a._init=!1,null!==a.value&&this.initSampler2D(a)):"mat2"===d||"mat3"===d||"mat4"===d?(a.glMatrix=!0,a.glValueLength=1,"mat2"===d?a.glFunc=b.uniformMatrix2fv:"mat3"===d?a.glFunc=b.uniformMatrix3fv:"mat4"===d&&(a.glFunc=b.uniformMatrix4fv)):(a.glFunc=b["uniform"+d],a.glValueLength="2f"===d||"2i"===d?2:"3f"===d||"3i"===d?3:"4f"===d||"4i"===d?4:1)}},b.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){var b=this.gl;if(b.activeTexture(b["TEXTURE"+this.textureCount]),b.bindTexture(b.TEXTURE_2D,a.value.baseTexture._glTextures[b.id]),a.textureData){var c=a.textureData,d=c.magFilter?c.magFilter:b.LINEAR,e=c.minFilter?c.minFilter:b.LINEAR,f=c.wrapS?c.wrapS:b.CLAMP_TO_EDGE,g=c.wrapT?c.wrapT:b.CLAMP_TO_EDGE,h=c.luminance?b.LUMINANCE:b.RGBA;if(c.repeat&&(f=b.REPEAT,g=b.REPEAT),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,!!c.flipY),c.width){var i=c.width?c.width:512,j=c.height?c.height:2,k=c.border?c.border:0;b.texImage2D(b.TEXTURE_2D,0,h,i,j,k,h,b.UNSIGNED_BYTE,null)}else b.texImage2D(b.TEXTURE_2D,0,h,b.RGBA,b.UNSIGNED_BYTE,a.value.baseTexture.source);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,d),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,f),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,g)}b.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},b.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a,c=this.gl;for(var d in this.uniforms)a=this.uniforms[d],1===a.glValueLength?a.glMatrix===!0?a.glFunc.call(c,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c,a.uniformLocation,a.value):2===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y):3===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z):4===a.glValueLength?a.glFunc.call(c,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"===a.type&&(a._init?(c.activeTexture(c["TEXTURE"+this.textureCount]),c.bindTexture(c.TEXTURE_2D,a.value.baseTexture._glTextures[c.id]||b.createWebGLTexture(a.value.baseTexture,c)),c.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},b.PixiShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec2 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"],b.PixiFastShader=function(a){this.gl=a,this.program=null,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"],this.textureCount=0,this.init() },b.PixiFastShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.dimensions=a.getUniformLocation(c,"dimensions"),this.uMatrix=a.getUniformLocation(c,"uMatrix"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aPositionCoord=a.getAttribLocation(c,"aPositionCoord"),this.aScale=a.getAttribLocation(c,"aScale"),this.aRotation=a.getAttribLocation(c,"aRotation"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.colorAttribute=a.getAttribLocation(c,"aColor"),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute],this.program=c},b.PixiFastShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},b.StripShader=function(){this.program=null,this.fragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));"," gl_FragColor = gl_FragColor * alpha;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","varying vec2 vTextureCoord;","uniform vec2 offsetVector;","varying float vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition, 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"]},b.StripShader.prototype.init=function(){var a=b.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.uSampler=a.getUniformLocation(c,"uSampler"),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.aTextureCoord=a.getAttribLocation(c,"aTextureCoord"),this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader=function(a){this.gl=a,this.program=null,this.fragmentSrc=["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"],this.vertexSrc=["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor * vec4(tint * alpha, alpha);","}"],this.init()},b.PrimitiveShader.prototype.init=function(){var a=this.gl,c=b.compileProgram(a,this.vertexSrc,this.fragmentSrc);a.useProgram(c),this.projectionVector=a.getUniformLocation(c,"projectionVector"),this.offsetVector=a.getUniformLocation(c,"offsetVector"),this.tintColor=a.getUniformLocation(c,"tint"),this.aVertexPosition=a.getAttribLocation(c,"aVertexPosition"),this.colorAttribute=a.getAttribLocation(c,"aColor"),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=a.getUniformLocation(c,"translationMatrix"),this.alpha=a.getUniformLocation(c,"alpha"),this.program=c},b.PrimitiveShader.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null},b.WebGLGraphics=function(){},b.WebGLGraphics.renderGraphics=function(a,c){var d=c.gl,e=c.projection,f=c.offset,g=c.shaderManager.primitiveShader;a._webGL[d.id]||(a._webGL[d.id]={points:[],indices:[],lastIndex:0,buffer:d.createBuffer(),indexBuffer:d.createBuffer()});var h=a._webGL[d.id];a.dirty&&(a.dirty=!1,a.clearDirty&&(a.clearDirty=!1,h.lastIndex=0,h.points=[],h.indices=[]),b.WebGLGraphics.updateGraphics(a,d)),c.shaderManager.activatePrimitiveShader(),d.blendFunc(d.ONE,d.ONE_MINUS_SRC_ALPHA),d.uniformMatrix3fv(g.translationMatrix,!1,a.worldTransform.toArray(!0)),d.uniform2f(g.projectionVector,e.x,-e.y),d.uniform2f(g.offsetVector,-f.x,-f.y),d.uniform3fv(g.tintColor,b.hex2rgb(a.tint)),d.uniform1f(g.alpha,a.worldAlpha),d.bindBuffer(d.ARRAY_BUFFER,h.buffer),d.vertexAttribPointer(g.aVertexPosition,2,d.FLOAT,!1,24,0),d.vertexAttribPointer(g.colorAttribute,4,d.FLOAT,!1,24,8),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,h.indexBuffer),d.drawElements(d.TRIANGLE_STRIP,h.indices.length,d.UNSIGNED_SHORT,0),c.shaderManager.deactivatePrimitiveShader()},b.WebGLGraphics.updateGraphics=function(a,c){for(var d=a._webGL[c.id],e=d.lastIndex;e3&&b.WebGLGraphics.buildPoly(f,d),f.lineWidth>0&&b.WebGLGraphics.buildLine(f,d)):f.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(f,d):(f.type===b.Graphics.CIRC||f.type===b.Graphics.ELIP)&&b.WebGLGraphics.buildCircle(f,d)}d.lastIndex=a.graphicsData.length,d.glPoints=new Float32Array(d.points),c.bindBuffer(c.ARRAY_BUFFER,d.buffer),c.bufferData(c.ARRAY_BUFFER,d.glPoints,c.STATIC_DRAW),d.glIndicies=new Uint16Array(d.indices),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,d.indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,d.glIndicies,c.STATIC_DRAW)},b.WebGLGraphics.buildRectangle=function(a,c){var d=a.points,e=d[0],f=d[1],g=d[2],h=d[3];if(a.fill){var i=b.hex2rgb(a.fillColor),j=a.fillAlpha,k=i[0]*j,l=i[1]*j,m=i[2]*j,n=c.points,o=c.indices,p=n.length/6;n.push(e,f),n.push(k,l,m,j),n.push(e+g,f),n.push(k,l,m,j),n.push(e,f+h),n.push(k,l,m,j),n.push(e+g,f+h),n.push(k,l,m,j),o.push(p,p,p+1,p+2,p+3,p+3)}if(a.lineWidth){var q=a.points;a.points=[e,f,e+g,f,e+g,f+h,e,f+h,e,f],b.WebGLGraphics.buildLine(a,c),a.points=q}},b.WebGLGraphics.buildCircle=function(a,c){var d=a.points,e=d[0],f=d[1],g=d[2],h=d[3],i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(e,f,n,o,p,m),q.push(e+Math.sin(j*k)*g,f+Math.cos(j*k)*h,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(e+Math.sin(j*k)*g,f+Math.cos(j*k)*h);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d),n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i)}},b.glContexts=[],b.WebGLRenderer=function(a,c,d,e,f){b.defaultRenderer||(b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.transparent=!!e,this.width=a||800,this.height=c||600,this.view=d||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.contextLost=this.handleContextLost.bind(this),this.contextRestoredLost=this.handleContextRestored.bind(this),this.view.addEventListener("webglcontextlost",this.contextLost,!1),this.view.addEventListener("webglcontextrestored",this.contextRestoredLost,!1),this.options={alpha:this.transparent,antialias:!!f,premultipliedAlpha:!!e,stencil:!0};try{this.gl=this.view.getContext("experimental-webgl",this.options)}catch(g){try{this.gl=this.view.getContext("webgl",this.options)}catch(h){throw new Error(" This browser does not support webGL. Try using the canvas renderer"+this)}}var i=this.gl;this.glContextId=i.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=i,b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[i.SRC_ALPHA,i.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[i.DST_COLOR,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[i.SRC_ALPHA,i.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[i.ONE,i.ONE_MINUS_SRC_ALPHA]),this.projection=new b.Point,this.projection.x=this.width/2,this.projection.y=-this.height/2,this.offset=new b.Point(0,0),this.resize(this.width,this.height),this.contextLost=!1,this.shaderManager=new b.WebGLShaderManager(i),this.spriteBatch=new b.WebGLSpriteBatch(i),this.maskManager=new b.WebGLMaskManager(i),this.filterManager=new b.WebGLFilterManager(i,this.transparent),this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.renderer=this,i.useProgram(this.shaderManager.defaultShader.program),i.disable(i.DEPTH_TEST),i.disable(i.CULL_FACE),i.enable(i.BLEND),i.colorMask(!0,!0,!0,this.transparent)},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(a.interactive&&a.interactionManager.removeEvents(),this.__stage=a),b.WebGLRenderer.updateTextures(),a.updateTransform(),a._interactive&&(a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)));var c=this.gl;c.viewport(0,0,this.width,this.height),c.bindFramebuffer(c.FRAMEBUFFER,null),this.transparent?c.clearColor(0,0,0,0):c.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),c.clear(c.COLOR_BUFFER_BIT),this.renderDisplayObject(a,this.projection),a.interactive?a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this)):a._interactiveEventsAdded&&(a._interactiveEventsAdded=!1,a.interactionManager.setTarget(this))}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,b,c){this.renderSession.drawCount=0,this.renderSession.currentBlendMode=9999,this.renderSession.projection=b,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,c),a._renderWebGL(this.renderSession),this.spriteBatch.end()},b.WebGLRenderer.updateTextures=function(){var a=0;for(a=0;a=0;c--){var d=a._glTextures[c],e=b.glContexts[c];e&&d&&e.deleteTexture(d)}a._glTextures.length=0},b.WebGLRenderer.updateTextureFrame=function(a){a.updateFrame=!1,a._updateWebGLuvs()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.view.width=a,this.view.height=b,this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2,this.projection.y=-this.height/2},b.createWebGLTexture=function(a,c){return a.hasLoaded&&(a._glTextures[c.id]=c.createTexture(),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),c.bindTexture(c.TEXTURE_2D,null)),a._glTextures[c.id]},b.updateWebGLTexture=function(a,c){a._glTextures[c.id]&&(c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),c.bindTexture(c.TEXTURE_2D,null))},b.WebGLRenderer.prototype.handleContextLost=function(a){a.preventDefault(),this.contextLost=!0},b.WebGLRenderer.prototype.handleContextRestored=function(){try{this.gl=this.view.getContext("experimental-webgl",this.options)}catch(a){try{this.gl=this.view.getContext("webgl",this.options)}catch(c){throw new Error(" This browser does not support webGL. Try using the canvas renderer"+this)}}var d=this.gl;d.id=b.WebGLRenderer.glContextId++,this.shaderManager.setContext(d),this.spriteBatch.setContext(d),this.maskManager.setContext(d),this.filterManager.setContext(d),this.renderSession.gl=this.gl,d.disable(d.DEPTH_TEST),d.disable(d.CULL_FACE),d.enable(d.BLEND),d.colorMask(!0,!0,!0,this.transparent),this.gl.viewport(0,0,this.width,this.height);for(var e in b.TextureCache){var f=b.TextureCache[e].baseTexture;f._glTextures=[]}this.contextLost=!1},b.WebGLRenderer.prototype.destroy=function(){this.view.removeEventListener("webglcontextlost",this.contextLost),this.view.removeEventListener("webglcontextrestored",this.contextRestoredLost),b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null},b.WebGLRenderer.glContextId=0,b.WebGLMaskManager=function(a){this.maskStack=[],this.maskPosition=0,this.setContext(a)},b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=this.gl;0===this.maskStack.length&&(d.enable(d.STENCIL_TEST),d.stencilFunc(d.ALWAYS,1,1)),this.maskStack.push(a),d.colorMask(!1,!1,!1,!0),d.stencilOp(d.KEEP,d.KEEP,d.INCR),b.WebGLGraphics.renderGraphics(a,c),d.colorMask(!0,!0,!0,!0),d.stencilFunc(d.NOTEQUAL,0,this.maskStack.length),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)},b.WebGLMaskManager.prototype.popMask=function(a){var c=this.gl,d=this.maskStack.pop();d&&(c.colorMask(!1,!1,!1,!1),c.stencilOp(c.KEEP,c.KEEP,c.DECR),b.WebGLGraphics.renderGraphics(d,a),c.colorMask(!0,!0,!0,!0),c.stencilFunc(c.NOTEQUAL,0,this.maskStack.length),c.stencilOp(c.KEEP,c.KEEP,c.KEEP)),0===this.maskStack.length&&c.disable(c.STENCIL_TEST)},b.WebGLMaskManager.prototype.destroy=function(){this.maskStack=null,this.gl=null},b.WebGLShaderManager=function(a){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var b=0;bd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.setContext(a)},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a){var b=a.texture;(b.baseTexture!==this.currentBaseTexture||this.currentBatchSize>=this.size)&&(this.flush(),this.currentBaseTexture=b.baseTexture),a.blendMode!==this.currentBlendMode&&this.setBlendMode(a.blendMode);var c=a._uvs||a.texture._uvs;if(c){var d,e,f,g,h=a.worldAlpha,i=a.tint,j=this.vertices,k=a.anchor.x,l=a.anchor.y;if(a.texture.trim){var m=a.texture.trim;e=m.x-k*m.width,d=e+b.frame.width,g=m.y-l*m.height,f=g+b.frame.height}else d=b.frame.width*(1-k),e=b.frame.width*-k,f=b.frame.height*(1-l),g=b.frame.height*-l;var n=4*this.currentBatchSize*this.vertSize,o=a.worldTransform,p=o.a,q=o.c,r=o.b,s=o.d,t=o.tx,u=o.ty;j[n++]=p*e+r*g+t,j[n++]=s*g+q*e+u,j[n++]=c.x0,j[n++]=c.y0,j[n++]=h,j[n++]=i,j[n++]=p*d+r*g+t,j[n++]=s*g+q*d+u,j[n++]=c.x1,j[n++]=c.y1,j[n++]=h,j[n++]=i,j[n++]=p*d+r*f+t,j[n++]=s*f+q*d+u,j[n++]=c.x2,j[n++]=c.y2,j[n++]=h,j[n++]=i,j[n++]=p*e+r*f+t,j[n++]=s*f+q*e+u,j[n++]=c.x3,j[n++]=c.y3,j[n++]=h,j[n++]=i,this.currentBatchSize++}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;(c.baseTexture!==this.currentBaseTexture||this.currentBatchSize>=this.size)&&(this.flush(),this.currentBaseTexture=c.baseTexture),a.blendMode!==this.currentBlendMode&&this.setBlendMode(a.blendMode),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs;a.tilePosition.x%=c.baseTexture.width*a.tileScaleOffset.x,a.tilePosition.y%=c.baseTexture.height*a.tileScaleOffset.y;var e=a.tilePosition.x/(c.baseTexture.width*a.tileScaleOffset.x),f=a.tilePosition.y/(c.baseTexture.height*a.tileScaleOffset.y),g=a.width/c.baseTexture.width/(a.tileScale.x*a.tileScaleOffset.x),h=a.height/c.baseTexture.height/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-e,d.y0=0-f,d.x1=1*g-e,d.y1=0-f,d.x2=1*g-e,d.y2=1*h-f,d.x3=0-e,d.y3=1*h-f;var i=a.worldAlpha,j=a.tint,k=this.vertices,l=a.width,m=a.height,n=a.anchor.x,o=a.anchor.y,p=l*(1-n),q=l*-n,r=m*(1-o),s=m*-o,t=4*this.currentBatchSize*this.vertSize,u=a.worldTransform,v=u.a,w=u.c,x=u.b,y=u.d,z=u.tx,A=u.ty;k[t++]=v*q+x*s+z,k[t++]=y*s+w*q+A,k[t++]=d.x0,k[t++]=d.y0,k[t++]=i,k[t++]=j,k[t++]=v*p+x*s+z,k[t++]=y*s+w*p+A,k[t++]=d.x1,k[t++]=d.y1,k[t++]=i,k[t++]=j,k[t++]=v*p+x*r+z,k[t++]=y*r+w*p+A,k[t++]=d.x2,k[t++]=d.y2,k[t++]=i,k[t++]=j,k[t++]=v*q+x*r+z,k[t++]=y*r+w*q+A,k[t++]=d.x3,k[t++]=d.y3,k[t++]=i,k[t++]=j,this.currentBatchSize++},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a)),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var c=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,c.x,c.y);var d=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,d,0),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,d,8),a.vertexAttribPointer(this.shader.colorAttribute,2,a.FLOAT,!1,d,16),this.currentBlendMode!==b.blendModes.NORMAL&&this.setBlendMode(b.blendModes.NORMAL)},b.WebGLSpriteBatch.prototype.setBlendMode=function(a){this.flush(),this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];this.gl.blendFunc(c[0],c[1])},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var b=4*this.size*this.vertSize,c=6*this.maxSize;this.vertices=new Float32Array(b),this.indices=new Uint16Array(c),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var d=0,e=0;c>d;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.currentBlendMode&&this.setBlendMode(c.blendMode);for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.frame.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.frame.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||b.createWebGLTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var c=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,c)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var c=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,c.x,c.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var d=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,d,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,d,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,d,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,d,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,d,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,d,36),this.currentBlendMode!==b.blendModes.NORMAL&&this.setBlendMode(b.blendModes.NORMAL)},b.WebGLFastSpriteBatch.prototype.setBlendMode=function(a){this.flush(),this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];this.gl.blendFunc(c[0],c[1])},b.WebGLFilterManager=function(a,b){this.transparent=b,this.filterStack=[],this.offsetX=0,this.offsetY=0,this.setContext(a)},b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.uniform2f(this.defaultShader.projectionVector,h.width/2,-h.height/2),c.uniform2f(this.defaultShader.offsetVector,-h.x,-h.y),c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0&&(b.Texture.frameUpdates.length=0)},b.CanvasRenderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.view.width=a,this.view.height=b},b.CanvasRenderer.prototype.renderDisplayObject=function(a,b){this.renderSession.context=b||this.context,a._renderCanvas(this.renderSession)},b.CanvasRenderer.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.CanvasRenderer.prototype.renderStrip=function(a){var b=this.context,c=a.verticies,d=a.uvs,e=c.length/2;this.count++;for(var f=1;e-2>f;f++){var g=2*f,h=c[g],i=c[g+2],j=c[g+4],k=c[g+1],l=c[g+3],m=c[g+5],n=d[g]*a.texture.width,o=d[g+2]*a.texture.width,p=d[g+4]*a.texture.width,q=d[g+1]*a.texture.height,r=d[g+3]*a.texture.height,s=d[g+5]*a.texture.height;b.save(),b.beginPath(),b.moveTo(h,k),b.lineTo(i,l),b.lineTo(j,m),b.closePath(),b.clip();var t=n*r+q*p+o*s-r*p-q*o-n*s,u=h*r+q*j+i*s-r*j-q*i-h*s,v=n*i+h*p+o*j-i*p-h*o-n*j,w=n*r*j+q*i*p+h*o*s-h*r*p-q*o*j-n*i*s,x=k*r+q*m+l*s-r*m-q*l-k*s,y=n*l+k*p+o*m-l*p-k*o-n*m,z=n*r*m+q*l*p+k*o*s-k*r*p-q*o*m-n*l*s;b.transform(u/t,x/t,v/t,y/t,w/t,z/t),b.drawImage(a.texture.baseTexture.source,0,0),b.restore()}},b.CanvasBuffer=function(a,b){this.width=a,this.height=b,this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=a,this.canvas.height=b},b.CanvasBuffer.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)},b.CanvasBuffer.prototype.resize=function(a,b){this.width=this.canvas.width=a,this.height=this.canvas.height=b},b.CanvasGraphics=function(){},b.CanvasGraphics.renderGraphics=function(a,c){for(var d=a.worldAlpha,e="",f=0;f1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.points;if(f.type===b.Graphics.POLY){c.beginPath(),c.moveTo(g[0],g[1]);for(var h=1;hd;d++)this.children[d]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),a.drawCount++,a.spriteBatch.start()}},b.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){var c=a.context,d=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),c.setTransform(d.a,d.c,d.b,d.d,d.tx,d.ty),b.CanvasGraphics.renderGraphics(this,c);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a)}},b.Graphics.prototype.getBounds=function(a){this.bounds||this.updateBounds();var b=this.bounds.x,c=this.bounds.width+this.bounds.x,d=this.bounds.y,e=this.bounds.height+this.bounds.y,f=a||this.worldTransform,g=f.a,h=f.c,i=f.b,j=f.d,k=f.tx,l=f.ty,m=g*c+i*e+k,n=j*e+h*c+l,o=g*b+i*e+k,p=j*e+h*b+l,q=g*b+i*d+k,r=j*d+h*b+l,s=g*c+i*d+k,t=j*d+h*c+l,u=-1/0,v=-1/0,w=1/0,x=1/0;w=w>m?m:w,w=w>o?o:w,w=w>q?q:w,w=w>s?s:w,x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,u=m>u?m:u,u=o>u?o:u,u=q>u?q:u,u=s>u?s:u,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v;var y=this._bounds;return y.x=w,y.width=u-w,y.y=x,y.height=v-x,y},b.Graphics.prototype.updateBounds=function(){for(var a,c,d,e,f,g=1/0,h=-1/0,i=1/0,j=-1/0,k=0;kc?c:g,h=c+e>h?c+e:h,i=i>d?c:i,j=d+f>j?d+f:j;else if(m===b.Graphics.CIRC||m===b.Graphics.ELIP)c=a[0],d=a[1],e=a[2]+n/2,f=a[3]+n/2,g=g>c-e?c-e:g,h=c+e>h?c+e:h,i=i>d-f?d-f:i,j=d+f>j?d+f:j;else for(var o=0;oc-n?c-n:g,h=c+n>h?c+n:h,i=i>d-n?d-n:i,j=d+n>j?d+n:j}var p=this.boundsPadding;this.bounds=new b.Rectangle(g-p,i-p,h-g+2*p,j-i+2*p)},b.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var c=new b.CanvasBuffer(a.width,a.height),d=b.Texture.fromCanvas(c.canvas);this._cachedSprite=new b.Sprite(d),this._cachedSprite.buffer=c,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),b.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},b.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},b.Graphics.POLY=0,b.Graphics.RECT=1,b.Graphics.CIRC=2,b.Graphics.ELIP=3,b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this.width=c||100,this.height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this.mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this.filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this.filters&&a.filterManager.popFilter(),this.mask&&a.maskManager.popMask(a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d=this.worldTransform;if(c.setTransform(d.a,d.c,d.b,d.d,d.tx,d.ty),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),c.beginPath();var e=this.tilePosition,f=this.tileScale;e.x%=this.tilingTexture.baseTexture.width,e.y%=this.tilingTexture.baseTexture.height,c.scale(f.x,f.y),c.translate(e.x,e.y),c.fillStyle=this.__tilePattern,c.fillRect(-e.x+this.anchor.x*-this._width,-e.y+this.anchor.y*-this._height,this._width/f.x,this._height/f.y),c.scale(1/f.x,1/f.y),c.translate(-e.x,-e.y),c.closePath(),this._mask&&a.maskManager.popMask(a.context)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.generateTilingTexture=function(a){var c=this.texture;if(c.baseTexture.hasLoaded){var d,e,f=c.baseTexture,g=c.frame,h=g.width!==f.width||g.height!==f.height,i=!1;if(a?(d=b.getNextPowerOfTwo(g.width),e=b.getNextPowerOfTwo(g.height),g.width!==d&&g.height!==e&&(i=!0)):h&&(d=g.width,e=g.height,i=!0),i){var j;this.tilingTexture&&this.tilingTexture.isTiling?(j=this.tilingTexture.canvasBuffer,j.resize(d,e),this.tilingTexture.baseTexture.width=d,this.tilingTexture.baseTexture.height=e,this.tilingTexture.needsUpdate=!0):(j=new b.CanvasBuffer(d,e),this.tilingTexture=b.Texture.fromCanvas(j.canvas),this.tilingTexture.canvasBuffer=j,this.tilingTexture.isTiling=!0),j.context.drawImage(c.baseTexture.source,g.x,g.y,g.width,g.height,0,0,d,e),this.tileScaleOffset.x=g.width/d,this.tileScaleOffset.y=g.height/e}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=c;this.refreshTexture=!1,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.texturesToUpdate=[],b.texturesToDestroy=[],b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(b.EventTarget.call(this),this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this.id=b.BaseTextureCacheIdGenerator++,this._glTextures=[],a){if(this.source.complete||this.source.getContext)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,b.texturesToUpdate.push(this);else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.width,d.height=d.source.height,b.texturesToUpdate.push(d),d.dispatchEvent({type:"loaded",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.destroy=function(){this.imageUrl&&(delete b.BaseTextureCache[this.imageUrl],this.imageUrl=null,this.source.src=null),this.source=null,b.texturesToDestroy.push(this)},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureCacheIdGenerator=0,b.Texture=function(a,c){if(b.EventTarget.call(this),c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=null,this.scope=this,this._uvs=null,a.hasLoaded)this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c);else{var d=this;a.addEventListener("loaded",function(){d.onBaseTextureLoaded()})}},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;a.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame),this.scope.dispatchEvent({type:"update",content:this})},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy()},b.Texture.prototype.setFrame=function(a){if(this.frame=a,this.width=a.width,this.height=a.height,a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,b.Texture.frameUpdates.push(this)},b.Texture.prototype._updateWebGLuvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.frame,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.Texture.frameUpdates=[],b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y4=0},b.RenderTexture=function(a,c,d){if(b.EventTarget.call(this),this.width=a||100,this.height=c||100,this.frame=new b.Rectangle(0,0,this.width,this.height),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTextures=[],this.baseTexture.hasLoaded=!0,this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var e=this.renderer.gl;this.textureBuffer=new b.FilterTexture(e,this.width,this.height),this.baseTexture._glTextures[e.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(this.width/2,-this.height/2)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width,this.height),this.baseTexture.source=this.textureBuffer.canvas;b.Texture.frameUpdates.push(this)},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c){if(this.width=a,this.height=c,this.frame.width=this.width,this.frame.height=this.height,this.renderer.type===b.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var d=this.renderer.gl;d.bindTexture(d.TEXTURE_2D,this.baseTexture._glTextures[d.id]),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,this.width,this.height,0,d.RGBA,d.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);b.Texture.frameUpdates.push(this)},b.RenderTexture.prototype.renderWebGL=function(a,c,d){var e=this.renderer.gl;e.colorMask(!0,!0,!0,!0),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,this.textureBuffer.frameBuffer),d&&this.textureBuffer.clear();var f=a.children,g=a.worldTransform;a.worldTransform=b.RenderTexture.tempMatrix,a.worldTransform.d=-1,a.worldTransform.ty=-2*this.projection.y,c&&(a.worldTransform.tx=c.x,a.worldTransform.ty-=c.y);for(var h=0,i=f.length;i>h;h++)f[h].updateTransform();b.WebGLRenderer.updateTextures(),this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),a.worldTransform=g},b.RenderTexture.prototype.renderCanvas=function(a,c,d){var e=a.children,f=a.worldTransform;a.worldTransform=b.RenderTexture.tempMatrix,c&&(a.worldTransform.tx=c.x,a.worldTransform.ty=c.y);for(var g=0,h=e.length;h>g;g++)e[g].updateTransform();d&&this.textureBuffer.clear();var i=this.textureBuffer.context;this.renderer.renderDisplayObject(a,i),i.setTransform(1,0,0,1,0,0),a.worldTransform=f},b.RenderTexture.tempMatrix=new b.Matrix,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"<%= version %>",DEV_VERSION:"2.0.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};PIXI.InteractionManager=function(){},b.Utils={parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},shuffle:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3; -var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),b.Circle=function(a,b,c){a=a||0,b=b||0,c=c||0,this.x=a,this.y=b,this._diameter=c,this._radius=c>0?.5*c:0},b.Circle.prototype={circumference:function(){return 2*Math.PI*this._radius},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRound(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x==this.x&&a.y==this.y},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x==b.x&&a.y==b.y},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRound(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.rotate=function(a,c,d,e,f,g){return f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y))),a.setTo(c+g*Math.cos(e),d+g*Math.sin(e))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(this,a)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:this.y-a}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:this.x+a}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b<=a.right&&c>=a.y&&c<=a.bottom},b.Rectangle.containsRaw=function(a,b,c,d,e,f){return e>=a&&a+c>=e&&f>=b&&b+d>=f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.right<=b.right&&a.bottom<=b.bottom},b.Rectangle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.width==b.width&&a.height==b.height},b.Rectangle.intersection=function(a,c,d){return"undefined"==typeof d&&(d=new b.Rectangle),b.Rectangle.intersects(a,c)&&(d.x=Math.max(a.x,c.x),d.y=Math.max(a.y,c.y),d.width=Math.min(a.right,c.right)-d.x,d.height=Math.min(a.bottom,c.bottom)-d.y),d},b.Rectangle.intersects=function(a,b){return a.width<=0||a.height<=0||b.width<=0||b.height<=0?!1:!(a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||e=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.x-this.start.x,this.end.y-this.start.y)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){if(Math.pow(g.x-c.x+(g.y-c.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-a.x+(g.y-a.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-e.x+(g.y-e.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null;if(Math.pow(g.x-d.x+(g.y-d.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this.points=a},b.Polygon.prototype={clone:function(){for(var a=[],c=0;cb!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!0)}return c}},b.Polygon.prototype.constructor=b.Polygon,PIXI.Polygon=b.Polygon,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this.displayObject=null,this.scale=null},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this.deadzone?(this._edge=this.target.x-this.deadzone.x,this.view.x>this._edge&&(this.view.x=this._edge),this._edge=this.target.x+this.target.width-this.deadzone.x-this.deadzone.width,this.view.xthis._edge&&(this.view.y=this._edge),this._edge=this.target.y+this.target.height-this.deadzone.y-this.deadzone.height,this.view.y=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height),this.view.floor()},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},paused:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&("string"==typeof this._pendingState?this.start(this._pendingState,!1,!1):this.add("default",this._pendingState,!0))},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3))},dummy:function(){},preUpdate:function(){this._pendingState&&this.game.isBooted&&(this.current&&(this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy())),this.setCurrentState(this._pendingState),this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()?this.loadComplete():this.game.load.start()):this.loadComplete(),this.current===this._pendingState&&(this._pendingState=null))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),this._args=[]},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null==this.first&&null==this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},remove:function(a){a==this.first?this.first=this.first.next:a==this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null==this.first&&(this.last=null),this.total--},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.Signal=function(){this._bindings=[],this._prevParams=null;var a=this;this.dispatch=function(){b.Signal.prototype.dispatch.apply(a,arguments)}},b.Signal.prototype={memorize:!1,_shouldPropagate:!0,active:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,c,d,e){var f,g=this._indexOfListener(a,d);if(-1!==g){if(f=this._bindings[g],f.isOnce()!==c)throw new Error("You cannot add"+(c?"":"Once")+"() then add"+(c?"Once":"")+"() the same listener without removing the relationship first.")}else f=new b.SignalBinding(this,a,c,d,e),this._addBinding(f);return this.memorize&&this._prevParams&&f.execute(this._prevParams),f},_addBinding:function(a){var b=this._bindings.length;do--b;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){return this.validateListener(a,"add"),this._registerListener(a,!1,b,c)},addOnce:function(a,b,c){return this.validateListener(a,"addOnce"),this._registerListener(a,!0,b,c)},remove:function(a,b){this.validateListener(a,"remove");var c=this._indexOfListener(a,b);return-1!==c&&(this._bindings[c]._destroy(),this._bindings.splice(c,1)),a},removeAll:function(){for(var a=this._bindings.length;a--;)this._bindings[a]._destroy();this._bindings.length=0},getNumListeners:function(){return this._bindings.length},halt:function(){this._shouldPropagate=!1},dispatch:function(){if(this.active){var a,b=Array.prototype.slice.call(arguments),c=this._bindings.length;if(this.memorize&&(this._prevParams=b),c){a=this._bindings.slice(),this._shouldPropagate=!0;do c--;while(a[c]&&this._shouldPropagate&&a[c].execute(b)!==!1)}}},forget:function(){this._prevParams=null},dispose:function(){this.removeAll(),delete this._bindings,delete this._prevParams},toString:function(){return"[Phaser.Signal active:"+this.active+" numListeners:"+this.getNumListeners()+"]"}},b.Signal.prototype.constructor=b.Signal,b.SignalBinding=function(a,b,c,d,e){this._listener=b,this._isOnce=c,this.context=d,this._signal=a,this._priority=e||0},b.SignalBinding.prototype={active:!0,params:null,execute:function(a){var b,c;return this.active&&this._listener&&(c=this.params?this.params.concat(a):a,b=this._listener.apply(this.context,c),this._isOnce&&this.detach()),b},detach:function(){return this.isBound()?this._signal.remove(this._listener,this.context):null},isBound:function(){return!!this._signal&&!!this._listener},isOnce:function(){return this._isOnce},getListener:function(){return this._listener},getSignal:function(){return this._signal},_destroy:function(){delete this._signal,delete this._listener,delete this.context},toString:function(){return"[Phaser.SignalBinding isOnce:"+this._isOnce+", isBound:"+this.isBound()+", active:"+this.active+"]" -}},b.SignalBinding.prototype.constructor=b.SignalBinding,b.Filter=function(a,c,d){this.game=a,this.type=b.WEBGL_FILTER,this.passes=[this],this.shaders=[],this.dirty=!0,this.padding=0,this.uniforms={time:{type:"1f",value:0},resolution:{type:"2f",value:{x:256,y:256}},mouse:{type:"2f",value:{x:0,y:0}}},this.fragmentSrc=d||[]},b.Filter.prototype={init:function(){},setResolution:function(a,b){this.uniforms.resolution.value.x=a,this.uniforms.resolution.value.y=b},update:function(a){"undefined"!=typeof a&&(a.x>0&&(this.uniforms.mouse.x=a.x.toFixed(2)),a.y>0&&(this.uniforms.mouse.y=a.y.toFixed(2))),this.uniforms.time.value=this.game.time.totalElapsedSeconds()},destroy:function(){this.game=null}},b.Filter.prototype.constructor=b.Filter,Object.defineProperty(b.Filter.prototype,"width",{get:function(){return this.uniforms.resolution.value.x},set:function(a){this.uniforms.resolution.value.x=a}}),Object.defineProperty(b.Filter.prototype,"height",{get:function(){return this.uniforms.resolution.value.y},set:function(a){this.uniforms.resolution.value.y=a}}),b.Plugin=function(a,b){"undefined"==typeof b&&(b=null),this.game=a,this.parent=b,this.active=!1,this.visible=!1,this.hasPreUpdate=!1,this.hasUpdate=!1,this.hasPostUpdate=!1,this.hasRender=!1,this.hasPostRender=!1},b.Plugin.prototype={preUpdate:function(){},update:function(){},render:function(){},postRender:function(){},destroy:function(){this.game=null,this.parent=null,this.active=!1,this.visible=!1}},b.Plugin.prototype.constructor=b.Plugin,b.PluginManager=function(a){this.game=a,this.plugins=[],this._len=0,this._i=0},b.PluginManager.prototype={add:function(a){var b=!1;return"function"==typeof a?a=new a(this.game,this._parent):(a.game=this.game,a.parent=this),"function"==typeof a.preUpdate&&(a.hasPreUpdate=!0,b=!0),"function"==typeof a.update&&(a.hasUpdate=!0,b=!0),"function"==typeof a.postUpdate&&(a.hasPostUpdate=!0,b=!0),"function"==typeof a.render&&(a.hasRender=!0,b=!0),"function"==typeof a.postRender&&(a.hasPostRender=!0,b=!0),b?((a.hasPreUpdate||a.hasUpdate||a.hasPostUpdate)&&(a.active=!0),(a.hasRender||a.hasPostRender)&&(a.visible=!0),this._len=this.plugins.push(a),"function"==typeof a.init&&a.init(),a):null},remove:function(a){for(this._i=this._len;this._i--;)if(this.plugins[this._i]===a)return a.destroy(),this.plugins.splice(this._i,1),void this._len--},removeAll:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].destroy();this.plugins.length=0,this._len=0},preUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPreUpdate&&this.plugins[this._i].preUpdate()},update:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasUpdate&&this.plugins[this._i].update()},postUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPostUpdate&&this.plugins[this._i].postUpdate()},render:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasRender&&this.plugins[this._i].render()},postRender:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasPostRender&&this.plugins[this._i].postRender()},destroy:function(){this.removeAll(),this.game=null}},b.PluginManager.prototype.constructor=b.PluginManager,b.Stage=function(a,c,d){this.game=a,this.offset=new b.Point,PIXI.Stage.call(this,0,!1),this.name="_stage_root",this.interactive=!1,this.disableVisibilityChange=!1,this.checkOffsetInterval=2500,this.exists=!0,this.currentRenderOrderID=0,this._hiddenVar="hidden",this._nextOffsetCheck=0,this._backgroundColor=0,a.config?this.parseConfig(a.config):(this.game.canvas=b.Canvas.create(c,d),this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%")},b.Stage.prototype=Object.create(PIXI.Stage.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.preUpdate=function(){this.currentRenderOrderID=0;for(var a=this.children.length,b=0;a>b;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}this.checkOffsetInterval!==!1&&this.game.time.now>this._nextOffsetCheck&&(b.Canvas.getOffset(this.game.canvas,this.offset),this._nextOffsetCheck=this.game.time.now+this.checkOffsetInterval)},b.Stage.prototype.parseConfig=function(a){this.game.canvas=a.canvasID?b.Canvas.create(this.game.width,this.game.height,a.canvasID):b.Canvas.create(this.game.width,this.game.height),a.canvasStyle?this.game.canvas.stlye=a.canvasStyle:this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",a.checkOffsetInterval&&(this.checkOffsetInterval=a.checkOffsetInterval),a.disableVisibilityChange&&(this.disableVisibilityChange=a.disableVisibilityChange),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.scaleMode&&(this.scaleMode=a.scaleMode),a.backgroundColor&&(this.backgroundColor=a.backgroundColor)},b.Stage.prototype.boot=function(){b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds=new b.Rectangle(this.offset.x,this.offset.y,this.game.width,this.game.height);var a=this;this._onChange=function(b){return a.visibilityChange(b)},b.Canvas.setUserSelect(this.game.canvas,"none"),b.Canvas.setTouchAction(this.game.canvas,"none"),this.checkVisibility()},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange},b.Stage.prototype.visibilityChange=function(a){return this.disableVisibilityChange?void 0:"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden?this.game.gamePaused(a):this.game.gameResumed(a))},b.Stage.prototype.setBackgroundColor=function(a){this._backgroundColor=a||0,this.backgroundColorSplit=PIXI.hex2rgb(this.backgroundColor);var b=this._backgroundColor.toString(16);b="000000".substr(0,6-b.length)+b,this.backgroundColorString="#"+b},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this._backgroundColor=a,this.game.transparent===!1&&("string"==typeof a&&(a=b.Color.hexToRGB(a)),this.setBackgroundColor(a))}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addAt=function(a,b){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChildAt(a,b),this.updateZ(),a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.getAt=function(a){return 0>a||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,c,d,e,f){"undefined"==typeof f&&(f=!0);var g=new b.Sprite(this.game,a,c,d,e);return this.enableBody&&this.game.physics.enable(g,this.physicsBodyType),g.exists=f,g.visible=f,g.alive=f,this.addChild(g),g.z=this.children.length,g.events&&g.events.onAddedToGroup.dispatch(g,this),null===this.cursor&&(this.cursor=g),g},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){var c=this.swapChildren(a,b);return c&&this.updateZ(),c},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a),this.addAt(a,0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.setProperty=function(a,b,c,d){d=d||0;var e=b.length;1==e?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2==e?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3==e?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4==e&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c))},b.Group.prototype.set=function(a,b,c,d,e,f){b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)&&this.setProperty(a,b,c,f)},b.Group.prototype.setAll=function(a,b,c,d,e){a=a.split("."),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),e=e||0;for(var f=0,g=this.children.length;g>f;f++)(!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&this.setProperty(this.children[f],a,b,e)},b.Group.prototype.setAllChildren=function(a,c,d,e,f){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),f=f||0;for(var g=0,h=this.children.length;h>g;g++)(!d||d&&this.children[g].alive)&&(!e||e&&this.children[g].visible)&&(this.children[g]instanceof b.Group?this.children[g].setAllChildren(a,c,d,e,f):this.setProperty(this.children[g],a.split("."),c,f))},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.forEach=function(a,b,c){"undefined"==typeof c&&(c=!1);var d=Array.prototype.splice.call(arguments,3);d.unshift(null);for(var e=0,f=this.children.length;f>e;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b){return"undefined"==typeof b&&(b=!1),0===this.children.length?!1:(a.events&&a.events.onRemovedFromGroup.dispatch(a,this),this.removeChild(a),this.updateZ(),this.cursor===a&&this.next(),b&&a.destroy(),!0)},b.Group.prototype.removeAll=function(a){if("undefined"==typeof a&&(a=!1),0!==this.children.length){do this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this),this.removeChild(this.children[0]),a&&this.children[0].destroy();while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c){if("undefined"==typeof b&&(b=this.children.length),"undefined"==typeof c&&(c=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var d=b;d>=a;)this.children[d].events&&this.children[d].events.onRemovedFromGroup.dispatch(this.children[d],this),this.removeChild(this.children[d]),c&&this.children[d].destroy(),this.cursor===this.children[d]&&(this.cursor=null),d--;this.updateZ()}},b.Group.prototype.destroy=function(a,b){if(null!==this.game){if("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),a){if(this.children.length>0)do this.children[0].parent&&this.children[0].destroy(a);while(this.children.length>0)}else this.removeAll();this.cursor=null,b||(this.parent.removeChild(this),this.game=null,this.exists=!1)}},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){cwindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.aspectRatio=0,this.sourceAspectRatio=c/d,this.event=null,this.scaleMode=b.ScaleManager.NO_SCALE,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this._startHeight=0,this._width=0,this._height=0;var e=this;window.addEventListener("orientationchange",function(a){return e.checkOrientation(a)},!1),window.addEventListener("resize",function(a){return e.checkResize(a)},!1),document.addEventListener("webkitfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("mozfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("fullscreenchange",function(a){return e.fullScreenChange(a)},!1)},b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.prototype={startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){this.fullScreenTarget[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},forceOrientation:function(a,c,d){"undefined"==typeof c&&(c=!1),this.forceLandscape=a,this.forcePortrait=c,"undefined"!=typeof d&&((null==d||this.game.cache.checkImageKey(d)===!1)&&(d="__default"),this.orientationSprite=new b.Image(this.game,this.game.width/2,this.game.height/2,PIXI.TextureCache[d]),this.orientationSprite.anchor.set(.5),this.checkOrientationState(),this.incorrectOrientation?(this.orientationSprite.visible=!0,this.game.world.visible=!1):(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.game.stage.addChild(this.orientationSprite))},checkOrientationState:function(){this.incorrectOrientation?(this.forceLandscape&&window.innerWidth>window.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.orientationSprite&&(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,this.isLandscape?this.enterLandscape.dispatch(this.orientation,!0,!1):this.enterPortrait.dispatch(this.orientation,!1,!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh(),this.checkOrientationState()},refresh:function(){if(this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),null==this._check&&this.maxIterations>0){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){"undefined"==typeof a&&(a=!1),this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||window.innerHeight>this._startHeight||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation===!0?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null)},setSize:function(){this.incorrectOrientation===!1&&(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180==this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):("undefined"!=typeof a&&(this.width=a),"undefined"!=typeof c&&(this.height=c),"undefined"!=typeof d&&(this.renderer=d,this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,a.width&&(this.width=b.Utils.parseDimension(a.width,0)),a.height&&(this.height=b.Utils.parseDimension(a.height,1)),a.renderer&&(this.renderer=a.renderer,this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c);var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.stage=new b.Stage(this,this.width,this.height),this.scale=new b.ScaleManager(this,this.width,this.height),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.debug=new b.Utils.Debug(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.debug.boot(),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20)) -},showDebugHeader:function(){var a=b.DEV_VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" - "+c+" - "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #0cf300","background: #00bc17","color: #ffffff; background: #00711f;","background: #00bc17","background: #0cf300","background: #00bc17"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else console.log("Phaser v"+a+" - Renderer: "+c+" - Audio: "+d+" - http://phaser.io")},setUpRenderer:function(){if(this.device.trident&&(this.renderType=b.CANVAS),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,this.canvas,this.transparent),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,this.canvas,this.transparent,this.antialias),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!0),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?this.debug.preUpdate():(this.stepping&&(this.pendingStep=!0),this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender())},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.input.destroy(),this.state.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?this._paused===!1&&(this._paused=!0,this._codePaused=!0,this.sound.mute=!0,this.time.gamePaused(),this.onPause.dispatch(this)):this._paused&&(this._paused=!1,this._codePaused=!1,this.input.reset(),this.sound.mute=!1,this.time.gameResumed(),this.onResume.dispatch(this))}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.interactiveItems=new b.LinkedList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallback=null},setMoveCallback:function(a,b){this.moveCallback=a,this.moveCallbackContext=b},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a===!0&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.interactiveItems.callAll("reset")),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier==a)return this.pointer1;if(this.pointer2.identifier==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier==a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.b*-e.c);return d.setTo(e.d*f*c.x+-e.b*f*c.y+(e.ty*e.b-e.tx*e.d)*f,e.a*f*c.y+-e.c*f*c.x+(-e.ty*e.a+e.tx*e.c)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y)?!0:!1;if(a instanceof b.TileSprite){var e=a.width,f=a.height,g=-e*a.anchor.x;if(this._localPoint.x>g&&this._localPoint.xh&&this._localPoint.yg&&this._localPoint.xh&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(){this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.enabled=!0,this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null},justPressed:function(a){return"undefined"==typeof a&&(a=2500),this.isDown&&this.duration=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.x=(this.pageX-this.game.stage.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.stage.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.game.paused)return this;if(this.game.input.moveCallback&&this.game.input.moveCallback.call(this.game.input.moveCallbackContext,this,this.x,this.y),null!==this.targetObject&&this.targetObject.isDragged===!0)return this.targetObject.update(this)===!1&&(this.targetObject=null),this;if(this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1,this.game.input.interactiveItems.total>0){var d=this.game.input.interactiveItems.next;do d.validForInput(this._highestInputPriorityID,this._highestRenderOrderID)&&(!c&&d.checkPointerOver(this)||c&&d.checkPointerDown(this))&&(this._highestRenderOrderID=d.sprite._cache[3],this._highestInputPriorityID=d.priorityID,this._highestRenderObject=d),d=d.next;while(null!=d)}return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),this}},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){if(this._stateReset)return void a.preventDefault();if(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.total>0){var c=this.game.input.interactiveItems.next;do c&&c._releasedHandler(this),c=c.next;while(null!=c)}return this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null,this},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.identifier=null,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b0&&(b.Texture.frameUpdates.length=0)},b.CanvasRenderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.view.width=a,this.view.height=b},b.CanvasRenderer.prototype.renderDisplayObject=function(a,b){this.renderSession.context=b||this.context,a._renderCanvas(this.renderSession)},b.CanvasRenderer.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.CanvasRenderer.prototype.renderStrip=function(a){var b=this.context,c=a.verticies,d=a.uvs,e=c.length/2;this.count++;for(var f=1;e-2>f;f++){var g=2*f,h=c[g],i=c[g+2],j=c[g+4],k=c[g+1],l=c[g+3],m=c[g+5],n=d[g]*a.texture.width,o=d[g+2]*a.texture.width,p=d[g+4]*a.texture.width,q=d[g+1]*a.texture.height,r=d[g+3]*a.texture.height,s=d[g+5]*a.texture.height;b.save(),b.beginPath(),b.moveTo(h,k),b.lineTo(i,l),b.lineTo(j,m),b.closePath(),b.clip();var t=n*r+q*p+o*s-r*p-q*o-n*s,u=h*r+q*j+i*s-r*j-q*i-h*s,v=n*i+h*p+o*j-i*p-h*o-n*j,w=n*r*j+q*i*p+h*o*s-h*r*p-q*o*j-n*i*s,x=k*r+q*m+l*s-r*m-q*l-k*s,y=n*l+k*p+o*m-l*p-k*o-n*m,z=n*r*m+q*l*p+k*o*s-k*r*p-q*o*m-n*l*s;b.transform(u/t,x/t,v/t,y/t,w/t,z/t),b.drawImage(a.texture.baseTexture.source,0,0),b.restore()}},b.CanvasBuffer=function(a,b){this.width=a,this.height=b,this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=a,this.canvas.height=b},b.CanvasBuffer.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)},b.CanvasBuffer.prototype.resize=function(a,b){this.width=this.canvas.width=a,this.height=this.canvas.height=b},b.CanvasGraphics=function(){},b.CanvasGraphics.renderGraphics=function(a,c){for(var d=a.worldAlpha,e="",f=0;f1&&(d=1,window.console.log("Pixi.js warning: masks in canvas can only mask using the first path in the graphics object"));for(var e=0;1>e;e++){var f=a.graphicsData[e],g=f.points;if(f.type===b.Graphics.POLY){c.beginPath(),c.moveTo(g[0],g[1]);for(var h=1;hd;d++)this.children[d]._renderWebGL(a);a.spriteBatch.stop()}this._filters&&a.filterManager.popFilter(),this._mask&&a.maskManager.popMask(a),a.drawCount++,a.spriteBatch.start()}},b.Graphics.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha&&this.isMask!==!0){var c=a.context,d=this.worldTransform;this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),c.setTransform(d.a,d.c,d.b,d.d,d.tx,d.ty),b.CanvasGraphics.renderGraphics(this,c);for(var e=0,f=this.children.length;f>e;e++)this.children[e]._renderCanvas(a)}},b.Graphics.prototype.getBounds=function(a){this.bounds||this.updateBounds();var b=this.bounds.x,c=this.bounds.width+this.bounds.x,d=this.bounds.y,e=this.bounds.height+this.bounds.y,f=a||this.worldTransform,g=f.a,h=f.c,i=f.b,j=f.d,k=f.tx,l=f.ty,m=g*c+i*e+k,n=j*e+h*c+l,o=g*b+i*e+k,p=j*e+h*b+l,q=g*b+i*d+k,r=j*d+h*b+l,s=g*c+i*d+k,t=j*d+h*c+l,u=-1/0,v=-1/0,w=1/0,x=1/0;w=w>m?m:w,w=w>o?o:w,w=w>q?q:w,w=w>s?s:w,x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,u=m>u?m:u,u=o>u?o:u,u=q>u?q:u,u=s>u?s:u,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v;var y=this._bounds;return y.x=w,y.width=u-w,y.y=x,y.height=v-x,y},b.Graphics.prototype.updateBounds=function(){for(var a,c,d,e,f,g=1/0,h=-1/0,i=1/0,j=-1/0,k=0;kc?c:g,h=c+e>h?c+e:h,i=i>d?c:i,j=d+f>j?d+f:j;else if(m===b.Graphics.CIRC||m===b.Graphics.ELIP)c=a[0],d=a[1],e=a[2]+n/2,f=a[3]+n/2,g=g>c-e?c-e:g,h=c+e>h?c+e:h,i=i>d-f?d-f:i,j=d+f>j?d+f:j;else for(var o=0;oc-n?c-n:g,h=c+n>h?c+n:h,i=i>d-n?d-n:i,j=d+n>j?d+n:j}var p=this.boundsPadding;this.bounds=new b.Rectangle(g-p,i-p,h-g+2*p,j-i+2*p)},b.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var c=new b.CanvasBuffer(a.width,a.height),d=b.Texture.fromCanvas(c.canvas);this._cachedSprite=new b.Sprite(d),this._cachedSprite.buffer=c,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),b.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},b.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},b.Graphics.POLY=0,b.Graphics.RECT=1,b.Graphics.CIRC=2,b.Graphics.ELIP=3,b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this.width=c||100,this.height=d||100,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point(0,0),this.renderable=!0,this.tint=16777215,this.blendMode=b.blendModes.NORMAL},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),b.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){var c,d;for(this.mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this.filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),!this.tilingTexture||this.refreshTexture?(this.generateTilingTexture(!0),this.tilingTexture&&this.tilingTexture.needsUpdate&&(b.updateWebGLTexture(this.tilingTexture.baseTexture,a.gl),this.tilingTexture.needsUpdate=!1)):a.spriteBatch.renderTilingSprite(this),c=0,d=this.children.length;d>c;c++)this.children[c]._renderWebGL(a);a.spriteBatch.stop(),this.filters&&a.filterManager.popFilter(),this.mask&&a.maskManager.popMask(a),a.spriteBatch.start()}},b.TilingSprite.prototype._renderCanvas=function(a){if(this.visible!==!1&&0!==this.alpha){var c=a.context;this._mask&&a.maskManager.pushMask(this._mask,c),c.globalAlpha=this.worldAlpha;var d=this.worldTransform;if(c.setTransform(d.a,d.c,d.b,d.d,d.tx,d.ty),!this.__tilePattern||this.refreshTexture){if(this.generateTilingTexture(!1),!this.tilingTexture)return;this.__tilePattern=c.createPattern(this.tilingTexture.baseTexture.source,"repeat")}this.blendMode!==a.currentBlendMode&&(a.currentBlendMode=this.blendMode,c.globalCompositeOperation=b.blendModesCanvas[a.currentBlendMode]),c.beginPath();var e=this.tilePosition,f=this.tileScale;e.x%=this.tilingTexture.baseTexture.width,e.y%=this.tilingTexture.baseTexture.height,c.scale(f.x,f.y),c.translate(e.x,e.y),c.fillStyle=this.__tilePattern,c.fillRect(-e.x+this.anchor.x*-this._width,-e.y+this.anchor.y*-this._height,this._width/f.x,this._height/f.y),c.scale(1/f.x,1/f.y),c.translate(-e.x,-e.y),c.closePath(),this._mask&&a.maskManager.popMask(a.context)}},b.TilingSprite.prototype.getBounds=function(){var a=this._width,b=this._height,c=a*(1-this.anchor.x),d=a*-this.anchor.x,e=b*(1-this.anchor.y),f=b*-this.anchor.y,g=this.worldTransform,h=g.a,i=g.c,j=g.b,k=g.d,l=g.tx,m=g.ty,n=h*d+j*f+l,o=k*f+i*d+m,p=h*c+j*f+l,q=k*f+i*c+m,r=h*c+j*e+l,s=k*e+i*c+m,t=h*d+j*e+l,u=k*e+i*d+m,v=-1/0,w=-1/0,x=1/0,y=1/0;x=x>n?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.generateTilingTexture=function(a){var c=this.texture;if(c.baseTexture.hasLoaded){var d,e,f=c.baseTexture,g=c.frame,h=g.width!==f.width||g.height!==f.height,i=!1;if(a?(d=b.getNextPowerOfTwo(g.width),e=b.getNextPowerOfTwo(g.height),g.width!==d&&g.height!==e&&(i=!0)):h&&(d=g.width,e=g.height,i=!0),i){var j;this.tilingTexture&&this.tilingTexture.isTiling?(j=this.tilingTexture.canvasBuffer,j.resize(d,e),this.tilingTexture.baseTexture.width=d,this.tilingTexture.baseTexture.height=e,this.tilingTexture.needsUpdate=!0):(j=new b.CanvasBuffer(d,e),this.tilingTexture=b.Texture.fromCanvas(j.canvas),this.tilingTexture.canvasBuffer=j,this.tilingTexture.isTiling=!0),j.context.drawImage(c.baseTexture.source,g.x,g.y,g.width,g.height,0,0,d,e),this.tileScaleOffset.x=g.width/d,this.tileScaleOffset.y=g.height/e}else this.tilingTexture&&this.tilingTexture.isTiling&&this.tilingTexture.destroy(!0),this.tileScaleOffset.x=1,this.tileScaleOffset.y=1,this.tilingTexture=c;this.refreshTexture=!1,this.tilingTexture.baseTexture._powerOf2=!0}},b.BaseTextureCache={},b.texturesToUpdate=[],b.texturesToDestroy=[],b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){if(b.EventTarget.call(this),this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this.id=b.BaseTextureCacheIdGenerator++,this._glTextures=[],a){if(this.source.complete||this.source.getContext)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,b.texturesToUpdate.push(this);else{var d=this;this.source.onload=function(){d.hasLoaded=!0,d.width=d.source.width,d.height=d.source.height,b.texturesToUpdate.push(d),d.dispatchEvent({type:"loaded",content:d})}}this.imageUrl=null,this._powerOf2=!1}},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.destroy=function(){this.imageUrl&&(delete b.BaseTextureCache[this.imageUrl],this.imageUrl=null,this.source.src=null),this.source=null,b.texturesToDestroy.push(this)},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureCacheIdGenerator=0,b.Texture=function(a,c){if(b.EventTarget.call(this),c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=null,this.scope=this,this._uvs=null,a.hasLoaded)this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c);else{var d=this;a.addEventListener("loaded",function(){d.onBaseTextureLoaded()})}},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;a.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame),this.scope.dispatchEvent({type:"update",content:this})},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy()},b.Texture.prototype.setFrame=function(a){if(this.frame=a,this.width=a.width,this.height=a.height,a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,b.Texture.frameUpdates.push(this)},b.Texture.prototype._updateWebGLuvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.frame,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.Texture.frameUpdates=[],b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y4=0},b.RenderTexture=function(a,c,d){if(b.EventTarget.call(this),this.width=a||100,this.height=c||100,this.frame=new b.Rectangle(0,0,this.width,this.height),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTextures=[],this.baseTexture.hasLoaded=!0,this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var e=this.renderer.gl;this.textureBuffer=new b.FilterTexture(e,this.width,this.height),this.baseTexture._glTextures[e.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(this.width/2,-this.height/2)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width,this.height),this.baseTexture.source=this.textureBuffer.canvas;b.Texture.frameUpdates.push(this)},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c){if(this.width=a,this.height=c,this.frame.width=this.width,this.frame.height=this.height,this.renderer.type===b.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var d=this.renderer.gl;d.bindTexture(d.TEXTURE_2D,this.baseTexture._glTextures[d.id]),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,this.width,this.height,0,d.RGBA,d.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);b.Texture.frameUpdates.push(this)},b.RenderTexture.prototype.renderWebGL=function(a,c,d){var e=this.renderer.gl;e.colorMask(!0,!0,!0,!0),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,this.textureBuffer.frameBuffer),d&&this.textureBuffer.clear();var f=a.children,g=a.worldTransform;a.worldTransform=b.RenderTexture.tempMatrix,a.worldTransform.d=-1,a.worldTransform.ty=-2*this.projection.y,c&&(a.worldTransform.tx=c.x,a.worldTransform.ty-=c.y);for(var h=0,i=f.length;i>h;h++)f[h].updateTransform();b.WebGLRenderer.updateTextures(),this.renderer.renderDisplayObject(a,this.projection,this.textureBuffer.frameBuffer),a.worldTransform=g},b.RenderTexture.prototype.renderCanvas=function(a,c,d){var e=a.children,f=a.worldTransform;a.worldTransform=b.RenderTexture.tempMatrix,c&&(a.worldTransform.tx=c.x,a.worldTransform.ty=c.y);for(var g=0,h=e.length;h>g;g++)e[g].updateTransform();d&&this.textureBuffer.clear();var i=this.textureBuffer.context;this.renderer.renderDisplayObject(a,i),i.setTransform(1,0,0,1,0,0),a.worldTransform=f},b.RenderTexture.tempMatrix=new b.Matrix,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b}).call(this),function(){var a=this,b=b||{VERSION:"<%= version %>",DEV_VERSION:"2.0.4",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1}};PIXI.InteractionManager=function(){},b.Utils={parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},shuffle:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},pad:function(a,b,c,d){if("undefined"==typeof b)var b=0;if("undefined"==typeof c)var c=" ";if("undefined"==typeof d)var d=3; +var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(c in a)d=h[c],e=a[c],h!==e&&(k&&e&&(b.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&b.Utils.isPlainObject(d)?d:{},h[c]=b.Utils.extend(k,g,e)):void 0!==e&&(h[c]=e));return h}},"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),b.Circle=function(a,b,c){a=a||0,b=b||0,c=c||0,this.x=a,this.y=b,this._diameter=c,this._radius=c>0?.5*c:0},b.Circle.prototype={circumference:function(){return 2*Math.PI*this._radius},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,c){return"undefined"==typeof c&&(c=!1),c?b.Math.distanceRound(this.x,this.y,a.x,a.y):b.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a?a=new b.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,c){return b.Circle.contains(this,a,c)},circumferencePoint:function(a,c,d){return b.Circle.circumferencePoint(this,a,c,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},b.Circle.prototype.constructor=b.Circle,Object.defineProperty(b.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(b.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(b.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(b.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(b.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(b.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),b.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},b.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},b.Circle.intersects=function(a,c){return b.Math.distance(a.x,a.y,c.x,c.y)<=a.radius+c.radius},b.Circle.circumferencePoint=function(a,c,d,e){return"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=new b.Point),d===!0&&(c=b.Math.degToRad(c)),e.x=a.x+a.radius*Math.cos(c),e.y=a.y+a.radius*Math.sin(c),e},b.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=b.Circle,b.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},b.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this},clampY:function(a,c){return this.y=b.Math.clamp(this.y,a,c),this},clamp:function(a,c){return this.x=b.Math.clamp(this.x,a,c),this.y=b.Math.clamp(this.y,a,c),this},clone:function(a){return"undefined"==typeof a?a=new b.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,c){return b.Point.distance(this,a,c)},equals:function(a){return a.x==this.x&&a.y==this.y},rotate:function(a,c,d,e,f){return b.Point.rotate(this,a,c,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},b.Point.prototype.constructor=b.Point,b.Point.add=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x+c.x,d.y=a.y+c.y,d},b.Point.subtract=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x-c.x,d.y=a.y-c.y,d},b.Point.multiply=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x*c.x,d.y=a.y*c.y,d},b.Point.divide=function(a,c,d){return"undefined"==typeof d&&(d=new b.Point),d.x=a.x/c.x,d.y=a.y/c.y,d},b.Point.equals=function(a,b){return a.x==b.x&&a.y==b.y},b.Point.distance=function(a,c,d){return"undefined"==typeof d&&(d=!1),d?b.Math.distanceRound(a.x,a.y,c.x,c.y):b.Math.distance(a.x,a.y,c.x,c.y)},b.Point.rotate=function(a,c,d,e,f,g){return f=f||!1,g=g||null,f&&(e=b.Math.degToRad(e)),null===g&&(g=Math.sqrt((c-a.x)*(c-a.x)+(d-a.y)*(d-a.y))),a.setTo(c+g*Math.cos(e),d+g*Math.sin(e))},b.Point.centroid=function(a,c){if("undefined"==typeof c&&(c=new b.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return c.copyFrom(a[0]),c;for(var e=0;d>e;e++)b.Point.add(c,a[e],c);return c.divide(d,d),c},PIXI.Point=b.Point,b.Rectangle=function(a,b,c,d){a=a||0,b=b||0,c=c||0,d=d||0,this.x=a,this.y=b,this.width=c,this.height=d},b.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,c){return b.Rectangle.inflate(this,a,c)},size:function(a){return b.Rectangle.size(this,a)},clone:function(a){return b.Rectangle.clone(this,a)},contains:function(a,c){return b.Rectangle.contains(this,a,c)},containsRect:function(a){return b.Rectangle.containsRect(this,a)},equals:function(a){return b.Rectangle.equals(this,a)},intersection:function(a,c){return b.Rectangle.intersection(this,a,c)},intersects:function(a,c){return b.Rectangle.intersects(this,a,c)},intersectsRaw:function(a,c,d,e,f){return b.Rectangle.intersectsRaw(this,a,c,d,e,f)},union:function(a,c){return b.Rectangle.union(this,a,c)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(b.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(b.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(b.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:this.y-a}}),Object.defineProperty(b.Rectangle.prototype,"bottomRight",{get:function(){return new b.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(b.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){this.width=a>=this.right?0:this.right-a,this.x=a}}),Object.defineProperty(b.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:this.x+a}}),Object.defineProperty(b.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(b.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(b.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(b.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(b.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(b.Rectangle.prototype,"topLeft",{get:function(){return new b.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(b.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),b.Rectangle.prototype.constructor=b.Rectangle,b.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},b.Rectangle.inflatePoint=function(a,c){return b.Rectangle.inflate(a,c.x,c.y)},b.Rectangle.size=function(a,c){return"undefined"==typeof c?c=new b.Point(a.width,a.height):c.setTo(a.width,a.height),c},b.Rectangle.clone=function(a,c){return"undefined"==typeof c?c=new b.Rectangle(a.x,a.y,a.width,a.height):c.setTo(a.x,a.y,a.width,a.height),c},b.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b<=a.right&&c>=a.y&&c<=a.bottom},b.Rectangle.containsRaw=function(a,b,c,d,e,f){return e>=a&&a+c>=e&&f>=b&&b+d>=f},b.Rectangle.containsPoint=function(a,c){return b.Rectangle.contains(a,c.x,c.y)},b.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.right<=b.right&&a.bottom<=b.bottom},b.Rectangle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.width==b.width&&a.height==b.height},b.Rectangle.intersection=function(a,c,d){return"undefined"==typeof d&&(d=new b.Rectangle),b.Rectangle.intersects(a,c)&&(d.x=Math.max(a.x,c.x),d.y=Math.max(a.y,c.y),d.width=Math.min(a.right,c.right)-d.x,d.height=Math.min(a.bottom,c.bottom)-d.y),d},b.Rectangle.intersects=function(a,b){return a.width<=0||a.height<=0||b.width<=0||b.height<=0?!1:!(a.rightb.right||a.y>b.bottom)},b.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=0),!(b>a.right+f||ca.bottom+f||e=c&&d>=a&&b>=e&&f>=b},coordinatesOnLine:function(a,b){"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b}},Object.defineProperty(b.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(b.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(b.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(b.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(b.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(b.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),b.Line.intersectsPoints=function(a,c,d,e,f,g){"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=new b.Point);var h=c.y-a.y,i=e.y-d.y,j=a.x-c.x,k=d.x-e.x,l=c.x*a.y-a.x*c.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){if(Math.pow(g.x-c.x+(g.y-c.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-a.x+(g.y-a.y),2)>Math.pow(a.x-c.x+(a.y-c.y),2))return null;if(Math.pow(g.x-e.x+(g.y-e.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null;if(Math.pow(g.x-d.x+(g.y-d.y),2)>Math.pow(d.x-e.x+(d.y-e.y),2))return null}return g},b.Line.intersects=function(a,c,d,e){return b.Line.intersectsPoints(a.start,a.end,c.start,c.end,d,e)},b.Ellipse=function(a,c,d,e){this.type=b.ELLIPSE,a=a||0,c=c||0,d=d||0,e=e||0,this.x=a,this.y=c,this.width=d,this.height=e},b.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return"undefined"==typeof a?a=new b.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,c){return b.Ellipse.contains(this,a,c)},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},b.Ellipse.prototype.constructor=b.Ellipse,Object.defineProperty(b.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(b.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},b.Ellipse.prototype.getBounds=function(){return new b.Rectangle(this.x,this.y,this.width,this.height)},PIXI.Ellipse=b.Ellipse,b.Polygon=function(a){if(this.type=b.POLYGON,a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var c=[],d=0,e=a.length;e>d;d+=2)c.push(new b.Point(a[d],a[d+1]));a=c}this.points=a},b.Polygon.prototype={clone:function(){for(var a=[],c=0;cb!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!0)}return c}},b.Polygon.prototype.constructor=b.Polygon,PIXI.Polygon=b.Polygon,b.Camera=function(a,c,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new b.Rectangle(d,e,f,g),this.screenView=new b.Rectangle(d,e,f,g),this.bounds=new b.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this.displayObject=null,this.scale=null},b.Camera.FOLLOW_LOCKON=0,b.Camera.FOLLOW_PLATFORMER=1,b.Camera.FOLLOW_TOPDOWN=2,b.Camera.FOLLOW_TOPDOWN_TIGHT=3,b.Camera.prototype={follow:function(a,c){"undefined"==typeof c&&(c=b.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(c){case b.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new b.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case b.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new b.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case b.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},update:function(){this.target&&this.updateTarget(),this.bounds&&this.checkBounds(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this.deadzone?(this._edge=this.target.x-this.deadzone.x,this.view.x>this._edge&&(this.view.x=this._edge),this._edge=this.target.x+this.target.width-this.deadzone.x-this.deadzone.width,this.view.xthis._edge&&(this.view.y=this._edge),this._edge=this.target.y+this.target.height-this.deadzone.y-this.deadzone.height,this.view.y=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height),this.view.floor()},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},b.Camera.prototype.constructor=b.Camera,Object.defineProperty(b.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(b.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(b.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),b.State=function(){this.game=null,this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},b.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},paused:function(){},shutdown:function(){}},b.State.prototype.constructor=b.State,b.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onShutDownCallback=null},b.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),this.game.load.onLoadComplete.add(this.loadComplete,this),null!==this._pendingState&&("string"==typeof this._pendingState?this.start(this._pendingState,!1,!1):this.add("default",this._pendingState,!0))},add:function(a,c,d){"undefined"==typeof d&&(d=!1);var e;return c instanceof b.State?e=c:"object"==typeof c?(e=c,e.game=this.game):"function"==typeof c&&(e=new c(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null),delete this.states[a]},start:function(a,b,c){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){this._pendingState&&this.game.isBooted&&(this.current&&(this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy())),this.setCurrentState(this._pendingState),this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()?this.loadComplete():this.game.load.start()):this.loadComplete(),this.current===this._pendingState&&(this._pendingState=null))},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),this.states[a].create&&(b=!0),this.states[a].update&&(b=!0),this.states[a].render&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),this._args=[]},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created&&this.onUpdateCallback?this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(){this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game)},render:function(){this._created&&this.onRenderCallback?(this.game.renderType===b.CANVAS&&(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0)),this.onRenderCallback.call(this.callbackContext,this.game),this.game.renderType===b.CANVAS&&this.game.context.restore()):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onDestroyCallback=null,this.game=null,this.states={},this._pendingState=null}},b.StateManager.prototype.constructor=b.StateManager,b.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},b.LinkedList.prototype={add:function(a){return 0===this.total&&null==this.first&&null==this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},remove:function(a){a==this.first?this.first=this.first.next:a==this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null==this.first&&(this.last=null),this.total--},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},b.LinkedList.prototype.constructor=b.LinkedList,b.Signal=function(){this._bindings=[],this._prevParams=null;var a=this;this.dispatch=function(){b.Signal.prototype.dispatch.apply(a,arguments)}},b.Signal.prototype={memorize:!1,_shouldPropagate:!0,active:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,c,d,e){var f,g=this._indexOfListener(a,d);if(-1!==g){if(f=this._bindings[g],f.isOnce()!==c)throw new Error("You cannot add"+(c?"":"Once")+"() then add"+(c?"Once":"")+"() the same listener without removing the relationship first.")}else f=new b.SignalBinding(this,a,c,d,e),this._addBinding(f);return this.memorize&&this._prevParams&&f.execute(this._prevParams),f},_addBinding:function(a){var b=this._bindings.length;do--b;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){return this.validateListener(a,"add"),this._registerListener(a,!1,b,c)},addOnce:function(a,b,c){return this.validateListener(a,"addOnce"),this._registerListener(a,!0,b,c)},remove:function(a,b){this.validateListener(a,"remove");var c=this._indexOfListener(a,b);return-1!==c&&(this._bindings[c]._destroy(),this._bindings.splice(c,1)),a},removeAll:function(){for(var a=this._bindings.length;a--;)this._bindings[a]._destroy();this._bindings.length=0},getNumListeners:function(){return this._bindings.length},halt:function(){this._shouldPropagate=!1},dispatch:function(){if(this.active){var a,b=Array.prototype.slice.call(arguments),c=this._bindings.length;if(this.memorize&&(this._prevParams=b),c){a=this._bindings.slice(),this._shouldPropagate=!0;do c--;while(a[c]&&this._shouldPropagate&&a[c].execute(b)!==!1)}}},forget:function(){this._prevParams=null},dispose:function(){this.removeAll(),delete this._bindings,delete this._prevParams},toString:function(){return"[Phaser.Signal active:"+this.active+" numListeners:"+this.getNumListeners()+"]"}},b.Signal.prototype.constructor=b.Signal,b.SignalBinding=function(a,b,c,d,e){this._listener=b,this._isOnce=c,this.context=d,this._signal=a,this._priority=e||0},b.SignalBinding.prototype={active:!0,params:null,execute:function(a){var b,c;return this.active&&this._listener&&(c=this.params?this.params.concat(a):a,b=this._listener.apply(this.context,c),this._isOnce&&this.detach()),b},detach:function(){return this.isBound()?this._signal.remove(this._listener,this.context):null},isBound:function(){return!!this._signal&&!!this._listener},isOnce:function(){return this._isOnce},getListener:function(){return this._listener},getSignal:function(){return this._signal},_destroy:function(){delete this._signal,delete this._listener,delete this.context},toString:function(){return"[Phaser.SignalBinding isOnce:"+this._isOnce+", isBound:"+this.isBound()+", active:"+this.active+"]" +}},b.SignalBinding.prototype.constructor=b.SignalBinding,b.Filter=function(a,c,d){this.game=a,this.type=b.WEBGL_FILTER,this.passes=[this],this.shaders=[],this.dirty=!0,this.padding=0,this.uniforms={time:{type:"1f",value:0},resolution:{type:"2f",value:{x:256,y:256}},mouse:{type:"2f",value:{x:0,y:0}}},this.fragmentSrc=d||[]},b.Filter.prototype={init:function(){},setResolution:function(a,b){this.uniforms.resolution.value.x=a,this.uniforms.resolution.value.y=b},update:function(a){"undefined"!=typeof a&&(a.x>0&&(this.uniforms.mouse.x=a.x.toFixed(2)),a.y>0&&(this.uniforms.mouse.y=a.y.toFixed(2))),this.uniforms.time.value=this.game.time.totalElapsedSeconds()},destroy:function(){this.game=null}},b.Filter.prototype.constructor=b.Filter,Object.defineProperty(b.Filter.prototype,"width",{get:function(){return this.uniforms.resolution.value.x},set:function(a){this.uniforms.resolution.value.x=a}}),Object.defineProperty(b.Filter.prototype,"height",{get:function(){return this.uniforms.resolution.value.y},set:function(a){this.uniforms.resolution.value.y=a}}),b.Plugin=function(a,b){"undefined"==typeof b&&(b=null),this.game=a,this.parent=b,this.active=!1,this.visible=!1,this.hasPreUpdate=!1,this.hasUpdate=!1,this.hasPostUpdate=!1,this.hasRender=!1,this.hasPostRender=!1},b.Plugin.prototype={preUpdate:function(){},update:function(){},render:function(){},postRender:function(){},destroy:function(){this.game=null,this.parent=null,this.active=!1,this.visible=!1}},b.Plugin.prototype.constructor=b.Plugin,b.PluginManager=function(a){this.game=a,this.plugins=[],this._len=0,this._i=0},b.PluginManager.prototype={add:function(a){var b=!1;return"function"==typeof a?a=new a(this.game,this._parent):(a.game=this.game,a.parent=this),"function"==typeof a.preUpdate&&(a.hasPreUpdate=!0,b=!0),"function"==typeof a.update&&(a.hasUpdate=!0,b=!0),"function"==typeof a.postUpdate&&(a.hasPostUpdate=!0,b=!0),"function"==typeof a.render&&(a.hasRender=!0,b=!0),"function"==typeof a.postRender&&(a.hasPostRender=!0,b=!0),b?((a.hasPreUpdate||a.hasUpdate||a.hasPostUpdate)&&(a.active=!0),(a.hasRender||a.hasPostRender)&&(a.visible=!0),this._len=this.plugins.push(a),"function"==typeof a.init&&a.init(),a):null},remove:function(a){for(this._i=this._len;this._i--;)if(this.plugins[this._i]===a)return a.destroy(),this.plugins.splice(this._i,1),void this._len--},removeAll:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].destroy();this.plugins.length=0,this._len=0},preUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPreUpdate&&this.plugins[this._i].preUpdate()},update:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasUpdate&&this.plugins[this._i].update()},postUpdate:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].active&&this.plugins[this._i].hasPostUpdate&&this.plugins[this._i].postUpdate()},render:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasRender&&this.plugins[this._i].render()},postRender:function(){for(this._i=this._len;this._i--;)this.plugins[this._i].visible&&this.plugins[this._i].hasPostRender&&this.plugins[this._i].postRender()},destroy:function(){this.removeAll(),this.game=null}},b.PluginManager.prototype.constructor=b.PluginManager,b.Stage=function(a,c,d){this.game=a,this.offset=new b.Point,PIXI.Stage.call(this,0,!1),this.name="_stage_root",this.interactive=!1,this.disableVisibilityChange=!1,this.checkOffsetInterval=2500,this.exists=!0,this.currentRenderOrderID=0,this._hiddenVar="hidden",this._nextOffsetCheck=0,this._backgroundColor=0,a.config?this.parseConfig(a.config):(this.game.canvas=b.Canvas.create(c,d),this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%")},b.Stage.prototype=Object.create(PIXI.Stage.prototype),b.Stage.prototype.constructor=b.Stage,b.Stage.prototype.preUpdate=function(){this.currentRenderOrderID=0;for(var a=this.children.length,b=0;a>b;b++)this.children[b].preUpdate()},b.Stage.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Stage.prototype.postUpdate=function(){if(this.game.world.camera.target){this.game.world.camera.target.postUpdate(),this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a]!==this.game.world.camera.target&&this.children[a].postUpdate()}else{this.game.world.camera.update();for(var a=this.children.length;a--;)this.children[a].postUpdate()}this.checkOffsetInterval!==!1&&this.game.time.now>this._nextOffsetCheck&&(b.Canvas.getOffset(this.game.canvas,this.offset),this._nextOffsetCheck=this.game.time.now+this.checkOffsetInterval)},b.Stage.prototype.parseConfig=function(a){this.game.canvas=a.canvasID?b.Canvas.create(this.game.width,this.game.height,a.canvasID):b.Canvas.create(this.game.width,this.game.height),a.canvasStyle?this.game.canvas.stlye=a.canvasStyle:this.game.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",a.checkOffsetInterval&&(this.checkOffsetInterval=a.checkOffsetInterval),a.disableVisibilityChange&&(this.disableVisibilityChange=a.disableVisibilityChange),a.fullScreenScaleMode&&(this.fullScreenScaleMode=a.fullScreenScaleMode),a.scaleMode&&(this.scaleMode=a.scaleMode),a.backgroundColor&&(this.backgroundColor=a.backgroundColor)},b.Stage.prototype.boot=function(){b.Canvas.getOffset(this.game.canvas,this.offset),this.bounds=new b.Rectangle(this.offset.x,this.offset.y,this.game.width,this.game.height);var a=this;this._onChange=function(b){return a.visibilityChange(b)},b.Canvas.setUserSelect(this.game.canvas,"none"),b.Canvas.setTouchAction(this.game.canvas,"none"),this.checkVisibility()},b.Stage.prototype.checkVisibility=function(){this._hiddenVar=void 0!==document.webkitHidden?"webkitvisibilitychange":void 0!==document.mozHidden?"mozvisibilitychange":void 0!==document.msHidden?"msvisibilitychange":void 0!==document.hidden?"visibilitychange":null,this._hiddenVar&&document.addEventListener(this._hiddenVar,this._onChange,!1),window.onpagehide=this._onChange,window.onpageshow=this._onChange,window.onblur=this._onChange,window.onfocus=this._onChange},b.Stage.prototype.visibilityChange=function(a){return this.disableVisibilityChange?void 0:"pagehide"===a.type||"blur"===a.type||"pageshow"===a.type||"focus"===a.type?void("pagehide"===a.type||"blur"===a.type?this.game.focusLoss(a):("pageshow"===a.type||"focus"===a.type)&&this.game.focusGain(a)):void(document.hidden||document.mozHidden||document.msHidden||document.webkitHidden?this.game.gamePaused(a):this.game.gameResumed(a))},b.Stage.prototype.setBackgroundColor=function(a){this._backgroundColor=a||0,this.backgroundColorSplit=PIXI.hex2rgb(this.backgroundColor);var b=this._backgroundColor.toString(16);b="000000".substr(0,6-b.length)+b,this.backgroundColorString="#"+b},Object.defineProperty(b.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this._backgroundColor=a,this.game.transparent===!1&&("string"==typeof a&&(a=b.Color.hexToRGB(a)),this.setBackgroundColor(a))}}),Object.defineProperty(b.Stage.prototype,"smoothed",{get:function(){return!PIXI.scaleModes.LINEAR},set:function(a){PIXI.scaleModes.LINEAR=a?0:1}}),b.Group=function(a,c,d,e,f,g){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b.Physics.ARCADE),this.game=a,"undefined"==typeof c&&(c=a.world),this.name=d||"group",PIXI.DisplayObjectContainer.call(this),e?this.game.stage.addChild(this):c&&c.addChild(this),this.z=0,this.type=b.GROUP,this.alive=!0,this.exists=!0,this.scale=new b.Point(1,1),this.cursor=null,this.cameraOffset=new b.Point,this.enableBody=f,this.enableBodyDebug=!1,this.physicsBodyType=g,this._sortProperty="z",this._cache=[0,0,0,0,1,0,1,0,0,0]},b.Group.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),b.Group.prototype.constructor=b.Group,b.Group.RETURN_NONE=0,b.Group.RETURN_TOTAL=1,b.Group.RETURN_CHILD=2,b.Group.SORT_ASCENDING=-1,b.Group.SORT_DESCENDING=1,b.Group.prototype.add=function(a){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChild(a),a.z=this.children.length,a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.addAt=function(a,b){return a.parent!==this&&(this.enableBody&&this.game.physics.enable(a,this.physicsBodyType),this.addChildAt(a,b),this.updateZ(),a.events&&a.events.onAddedToGroup.dispatch(a,this),null===this.cursor&&(this.cursor=a)),a},b.Group.prototype.getAt=function(a){return 0>a||a>=this.children.length?-1:this.getChildAt(a)},b.Group.prototype.create=function(a,c,d,e,f){"undefined"==typeof f&&(f=!0);var g=new b.Sprite(this.game,a,c,d,e);return this.enableBody&&this.game.physics.enable(g,this.physicsBodyType),g.exists=f,g.visible=f,g.alive=f,this.addChild(g),g.z=this.children.length,g.events&&g.events.onAddedToGroup.dispatch(g,this),null===this.cursor&&(this.cursor=g),g},b.Group.prototype.createMultiple=function(a,b,c,d){"undefined"==typeof d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},b.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},b.Group.prototype.next=function(){return this.cursor?(this._cache[8]>=this.children.length-1?this._cache[8]=0:this._cache[8]++,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.previous=function(){return this.cursor?(0===this._cache[8]?this._cache[8]=this.children.length-1:this._cache[8]--,this.cursor=this.children[this._cache[8]],this.cursor):void 0},b.Group.prototype.swap=function(a,b){var c=this.swapChildren(a,b);return c&&this.updateZ(),c},b.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a),this.addAt(a,0)),a},b.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},b.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},b.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},b.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},b.Group.prototype.replace=function(a,c){var d=this.getIndex(a);if(-1!==d){void 0!==c.parent&&(c.events.onRemovedFromGroup.dispatch(c,this),c.parent.removeChild(c),c.parent instanceof b.Group&&c.parent.updateZ());var e=a;return this.remove(e),this.addAt(c,d),e}},b.Group.prototype.setProperty=function(a,b,c,d){d=d||0;var e=b.length;1==e?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2==e?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3==e?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4==e&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c))},b.Group.prototype.set=function(a,b,c,d,e,f){b=b.split("."),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)&&this.setProperty(a,b,c,f)},b.Group.prototype.setAll=function(a,b,c,d,e){a=a.split("."),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),e=e||0;for(var f=0,g=this.children.length;g>f;f++)(!c||c&&this.children[f].alive)&&(!d||d&&this.children[f].visible)&&this.setProperty(this.children[f],a,b,e)},b.Group.prototype.setAllChildren=function(a,c,d,e,f){"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1),f=f||0;for(var g=0,h=this.children.length;h>g;g++)(!d||d&&this.children[g].alive)&&(!e||e&&this.children[g].visible)&&(this.children[g]instanceof b.Group?this.children[g].setAllChildren(a,c,d,e,f):this.setProperty(this.children[g],a.split("."),c,f))},b.Group.prototype.addAll=function(a,b,c,d){this.setAll(a,b,c,d,1)},b.Group.prototype.subAll=function(a,b,c,d){this.setAll(a,b,c,d,2)},b.Group.prototype.multiplyAll=function(a,b,c,d){this.setAll(a,b,c,d,3)},b.Group.prototype.divideAll=function(a,b,c,d){this.setAll(a,b,c,d,4)},b.Group.prototype.callAllExists=function(a,b){for(var c=Array.prototype.splice.call(arguments,2),d=0,e=this.children.length;e>d;d++)this.children[d].exists===b&&this.children[d][a]&&this.children[d][a].apply(this.children[d],c)},b.Group.prototype.callbackFromArray=function(a,b,c){if(1==c){if(a[b[0]])return a[b[0]]}else if(2==c){if(a[b[0]][b[1]])return a[b[0]][b[1]]}else if(3==c){if(a[b[0]][b[1]][b[2]])return a[b[0]][b[1]][b[2]]}else if(4==c){if(a[b[0]][b[1]][b[2]][b[3]])return a[b[0]][b[1]][b[2]][b[3]]}else if(a[b])return a[b];return!1},b.Group.prototype.callAll=function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b||null===b||""===b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}for(var e=Array.prototype.splice.call(arguments,2),f=null,g=null,h=0,i=this.children.length;i>h;h++)f=this.callbackFromArray(this.children[h],a,c),b&&f?(g=this.callbackFromArray(this.children[h],b,d),f&&f.apply(g,e)):f&&f.apply(this.children[h],e)}},b.Group.prototype.preUpdate=function(){if(!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;for(var a=this.children.length;a--;)this.children[a].preUpdate();return!0},b.Group.prototype.update=function(){for(var a=this.children.length;a--;)this.children[a].update()},b.Group.prototype.postUpdate=function(){1===this._cache[7]&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=this.children.length;a--;)this.children[a].postUpdate()},b.Group.prototype.forEach=function(a,b,c){"undefined"==typeof c&&(c=!1);var d=Array.prototype.splice.call(arguments,3);d.unshift(null);for(var e=0,f=this.children.length;f>e;e++)(!c||c&&this.children[e].exists)&&(d[0]=this.children[e],a.apply(b,d))},b.Group.prototype.forEachExists=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("exists",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachAlive=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!0,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.forEachDead=function(a,c){var d=Array.prototype.splice.call(arguments,2);d.unshift(null),this.iterate("alive",!1,b.Group.RETURN_TOTAL,a,c,d)},b.Group.prototype.sort=function(a,c){this.children.length<2||("undefined"==typeof a&&(a="z"),"undefined"==typeof c&&(c=b.Group.SORT_ASCENDING),this._sortProperty=a,this.children.sort(c===b.Group.SORT_ASCENDING?this.ascendingSortHandler.bind(this):this.descendingSortHandler.bind(this)),this.updateZ())},b.Group.prototype.customSort=function(a,b){this.children.length<2||(this.children.sort(a.bind(b)),this.updateZ())},b.Group.prototype.ascendingSortHandler=function(a,b){return a[this._sortProperty]b[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},b.Group.prototype.iterate=function(a,c,d,e,f,g){if(d===b.Group.RETURN_TOTAL&&0===this.children.length)return 0;"undefined"==typeof e&&(e=!1);for(var h=0,i=0,j=this.children.length;j>i;i++)if(this.children[i][a]===c&&(h++,e&&(g[0]=this.children[i],e.apply(f,g)),d===b.Group.RETURN_CHILD))return this.children[i];return d===b.Group.RETURN_TOTAL?h:d===b.Group.RETURN_CHILD?null:void 0},b.Group.prototype.getFirstExists=function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstAlive=function(){return this.iterate("alive",!0,b.Group.RETURN_CHILD)},b.Group.prototype.getFirstDead=function(){return this.iterate("alive",!1,b.Group.RETURN_CHILD)},b.Group.prototype.getTop=function(){return this.children.length>0?this.children[this.children.length-1]:void 0},b.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},b.Group.prototype.countLiving=function(){return this.iterate("alive",!0,b.Group.RETURN_TOTAL)},b.Group.prototype.countDead=function(){return this.iterate("alive",!1,b.Group.RETURN_TOTAL)},b.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,this.game.math.getRandom(this.children,a,b))},b.Group.prototype.remove=function(a,b){if("undefined"==typeof b&&(b=!1),0===this.children.length)return!1;a.events&&a.events.onRemovedFromGroup.dispatch(a,this);var c=this.removeChild(a);return this.updateZ(),this.cursor===a&&this.next(),b&&c&&c.destroy(),!0},b.Group.prototype.removeAll=function(a){if("undefined"==typeof a&&(a=!1),0!==this.children.length){do{this.children[0].events&&this.children[0].events.onRemovedFromGroup.dispatch(this.children[0],this);var b=this.removeChild(this.children[0]);a&&b&&b.destroy()}while(this.children.length>0);this.cursor=null}},b.Group.prototype.removeBetween=function(a,b,c){if("undefined"==typeof b&&(b=this.children.length),"undefined"==typeof c&&(c=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var d=b;d>=a;){this.children[d].events&&this.children[d].events.onRemovedFromGroup.dispatch(this.children[d],this);var e=this.removeChild(this.children[d]);c&&e&&e.destroy(),this.cursor===this.children[d]&&(this.cursor=null),d--}this.updateZ()}},b.Group.prototype.destroy=function(a,b){null!==this.game&&("undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!1),this.removeAll(a),this.cursor=null,b||(this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(b.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,b.Group.RETURN_TOTAL)}}),Object.defineProperty(b.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(b.Group.prototype,"angle",{get:function(){return b.Math.radToDeg(this.rotation)},set:function(a){this.rotation=b.Math.degToRad(a)}}),Object.defineProperty(b.Group.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.World=function(a){b.Group.call(this,a,null,"__world",!1),this.bounds=new b.Rectangle(0,0,a.width,a.height),this.camera=null},b.World.prototype=Object.create(b.Group.prototype),b.World.prototype.constructor=b.World,b.World.prototype.boot=function(){this.camera=new b.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},b.World.prototype.setBounds=function(a,b,c,d){cwindow.outerHeight&&(this.orientation=90),this.scaleFactor=new b.Point(1,1),this.scaleFactorInversed=new b.Point(1,1),this.margin=new b.Point(0,0),this.aspectRatio=0,this.sourceAspectRatio=c/d,this.event=null,this.scaleMode=b.ScaleManager.NO_SCALE,this.fullScreenScaleMode=b.ScaleManager.NO_SCALE,this._startHeight=0,this._width=0,this._height=0;var e=this;window.addEventListener("orientationchange",function(a){return e.checkOrientation(a)},!1),window.addEventListener("resize",function(a){return e.checkResize(a)},!1),document.addEventListener("webkitfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("mozfullscreenchange",function(a){return e.fullScreenChange(a)},!1),document.addEventListener("fullscreenchange",function(a){return e.fullScreenChange(a)},!1)},b.ScaleManager.EXACT_FIT=0,b.ScaleManager.NO_SCALE=1,b.ScaleManager.SHOW_ALL=2,b.ScaleManager.prototype={startFullScreen:function(a){!this.isFullScreen&&this.game.device.fullscreen&&("undefined"!=typeof a&&this.game.renderType===b.CANVAS&&(this.game.stage.smoothed=a),this._width=this.width,this._height=this.height,this.game.device.fullscreenKeyboard?this.fullScreenTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT):this.fullScreenTarget[this.game.device.requestFullscreen]())},stopFullScreen:function(){this.fullScreenTarget[this.game.device.cancelFullscreen]()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.fullScreenScaleMode===b.ScaleManager.EXACT_FIT?(this.fullScreenTarget.style.width="100%",this.fullScreenTarget.style.height="100%",this.width=window.outerWidth,this.height=window.outerHeight,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.checkResize()):this.fullScreenScaleMode===b.ScaleManager.SHOW_ALL&&(this.setShowAll(),this.refresh()),this.enterFullScreen.dispatch(this.width,this.height)):(this.fullScreenTarget.style.width=this.game.width+"px",this.fullScreenTarget.style.height=this.game.height+"px",this.width=this._width,this.height=this._height,this.game.input.scale.setTo(this.game.width/this.width,this.game.height/this.height),this.aspectRatio=this.width/this.height,this.scaleFactor.x=this.game.width/this.width,this.scaleFactor.y=this.game.height/this.height,this.leaveFullScreen.dispatch(this.width,this.height))},forceOrientation:function(a,c,d){"undefined"==typeof c&&(c=!1),this.forceLandscape=a,this.forcePortrait=c,"undefined"!=typeof d&&((null==d||this.game.cache.checkImageKey(d)===!1)&&(d="__default"),this.orientationSprite=new b.Image(this.game,this.game.width/2,this.game.height/2,PIXI.TextureCache[d]),this.orientationSprite.anchor.set(.5),this.checkOrientationState(),this.incorrectOrientation?(this.orientationSprite.visible=!0,this.game.world.visible=!1):(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.game.stage.addChild(this.orientationSprite))},checkOrientationState:function(){this.incorrectOrientation?(this.forceLandscape&&window.innerWidth>window.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.orientationSprite&&(this.orientationSprite.visible=!1,this.game.world.visible=!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh()):(this.forceLandscape&&window.innerWidthwindow.outerHeight?90:0,this.isLandscape?this.enterLandscape.dispatch(this.orientation,!0,!1):this.enterPortrait.dispatch(this.orientation,!1,!0),this.scaleMode!==b.ScaleManager.NO_SCALE&&this.refresh(),this.checkOrientationState()},refresh:function(){if(this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),null==this._check&&this.maxIterations>0){this._iterations=this.maxIterations;var a=this;this._check=window.setInterval(function(){return a.setScreenSize()},10),this.setScreenSize()}},setScreenSize:function(a){"undefined"==typeof a&&(a=!1),this.game.device.iPad===!1&&this.game.device.webApp===!1&&this.game.device.desktop===!1&&(this.game.device.android&&this.game.device.chrome===!1?window.scrollTo(0,1):window.scrollTo(0,0)),this._iterations--,(a||window.innerHeight>this._startHeight||this._iterations<0)&&(document.documentElement.style.minHeight=window.innerHeight+"px",this.incorrectOrientation===!0?this.setMaximum():this.isFullScreen?this.fullScreenScaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.fullScreenScaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll():this.scaleMode==b.ScaleManager.EXACT_FIT?this.setExactFit():this.scaleMode==b.ScaleManager.SHOW_ALL&&this.setShowAll(),this.setSize(),clearInterval(this._check),this._check=null)},setSize:function(){this.incorrectOrientation===!1&&(this.maxWidth&&this.width>this.maxWidth&&(this.width=this.maxWidth),this.maxHeight&&this.height>this.maxHeight&&(this.height=this.maxHeight),this.minWidth&&this.widththis.maxWidth?this.maxWidth:a,this.height=this.maxHeight&&b>this.maxHeight?this.maxHeight:b}},b.ScaleManager.prototype.constructor=b.ScaleManager,Object.defineProperty(b.ScaleManager.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(b.ScaleManager.prototype,"isPortrait",{get:function(){return 0===this.orientation||180==this.orientation}}),Object.defineProperty(b.ScaleManager.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),b.Game=function(a,c,d,e,f,g,h,i){this.id=b.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.transparent=!1,this.antialias=!0,this.renderer=null,this.renderType=b.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.rnd=null,this.device=null,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):("undefined"!=typeof a&&(this.width=a),"undefined"!=typeof c&&(this.height=c),"undefined"!=typeof d&&(this.renderer=d,this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new b.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new b.StateManager(this,f));var j=this;return this._onBoot=function(){return j.boot()},"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(this._onBoot,0):(document.addEventListener("DOMContentLoaded",this._onBoot,!1),window.addEventListener("load",this._onBoot,!1)),this},b.Game.prototype={parseConfig:function(a){this.config=a,a.width&&(this.width=b.Utils.parseDimension(a.width,0)),a.height&&(this.height=b.Utils.parseDimension(a.height,1)),a.renderer&&(this.renderer=a.renderer,this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var c=[(Date.now()*Math.random()).toString()];a.seed&&(c=a.seed),this.rnd=new b.RandomDataGenerator(c);var d=null;a.state&&(d=a.state),this.state=new b.StateManager(this,d)},boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new b.Signal,this.onResume=new b.Signal,this.onBlur=new b.Signal,this.onFocus=new b.Signal,this.isBooted=!0,this.device=new b.Device(this),this.math=b.Math,this.stage=new b.Stage(this,this.width,this.height),this.scale=new b.ScaleManager(this,this.width,this.height),this.setUpRenderer(),this.device.checkFullScreenSupport(),this.world=new b.World(this),this.add=new b.GameObjectFactory(this),this.make=new b.GameObjectCreator(this),this.cache=new b.Cache(this),this.load=new b.Loader(this),this.time=new b.Time(this),this.tweens=new b.TweenManager(this),this.input=new b.Input(this),this.sound=new b.SoundManager(this),this.physics=new b.Physics(this,this.physicsConfig),this.particles=new b.Particles(this),this.plugins=new b.PluginManager(this),this.net=new b.Net(this),this.debug=new b.Utils.Debug(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.debug.boot(),this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new b.RequestAnimationFrame(this,this.config.forceSetTimeOut):new b.RequestAnimationFrame(this,!1),this.raf.start()):window.setTimeout(this._onBoot,20)) +},showDebugHeader:function(){var a=b.DEV_VERSION,c="Canvas",d="HTML Audio",e=1;if(this.renderType===b.WEBGL?(c="WebGL",e++):this.renderType==b.HEADLESS&&(c="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" - "+c+" - "+d+" %c %c http://phaser.io %c %c ♥%c♥%c♥ ","background: #0cf300","background: #00bc17","color: #ffffff; background: #00711f;","background: #00bc17","background: #0cf300","background: #00bc17"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else console.log("Phaser v"+a+" - Renderer: "+c+" - Audio: "+d+" - http://phaser.io")},setUpRenderer:function(){if(this.device.trident&&(this.renderType=b.CANVAS),this.renderType===b.HEADLESS||this.renderType===b.CANVAS||this.renderType===b.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===b.AUTO&&(this.renderType=b.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,this.canvas,this.transparent),this.context=this.renderer.context}else this.renderType=b.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,this.canvas,this.transparent,this.antialias),this.context=null;this.renderType!==b.HEADLESS&&(this.stage.smoothed=this.antialias,b.Canvas.addToDOM(this.canvas,this.parent,!0),b.Canvas.setTouchAction(this.canvas))},update:function(a){this.time.update(a),this._paused||this.pendingStep?this.debug.preUpdate():(this.stepping&&(this.pendingStep=!0),this.debug.preUpdate(),this.physics.preUpdate(),this.state.preUpdate(),this.plugins.preUpdate(),this.stage.preUpdate(),this.state.update(),this.stage.update(),this.tweens.update(),this.sound.update(),this.input.update(),this.physics.update(),this.particles.update(),this.plugins.update(),this.stage.postUpdate(),this.plugins.postUpdate()),this.renderType!=b.HEADLESS&&(this.renderer.render(this.stage),this.plugins.render(),this.state.render(),this.plugins.postRender())},enableStep:function(){this.stepping=!0,this.pendingStep=!1,this.stepCount=0},disableStep:function(){this.stepping=!1,this.pendingStep=!1},step:function(){this.pendingStep=!1,this.stepCount++},destroy:function(){this.raf.stop(),this.input.destroy(),this.state.destroy(),this.physics.destroy(),this.state=null,this.cache=null,this.input=null,this.load=null,this.sound=null,this.stage=null,this.time=null,this.world=null,this.isBooted=!1},gamePaused:function(a){this._paused||(this._paused=!0,this.time.gamePaused(),this.sound.setMute(),this.onPause.dispatch(a))},gameResumed:function(a){this._paused&&!this._codePaused&&(this._paused=!1,this.time.gameResumed(),this.input.reset(),this.sound.unsetMute(),this.onResume.dispatch(a))},focusLoss:function(a){this.onBlur.dispatch(a),this.gamePaused(a)},focusGain:function(a){this.onFocus.dispatch(a),this.gameResumed(a)}},b.Game.prototype.constructor=b.Game,Object.defineProperty(b.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?this._paused===!1&&(this._paused=!0,this._codePaused=!0,this.sound.mute=!0,this.time.gamePaused(),this.onPause.dispatch(this)):this._paused&&(this._paused=!1,this._codePaused=!1,this.input.reset(),this.sound.mute=!1,this.time.gameResumed(),this.onResume.dispatch(this))}}),b.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null,this.moveCallback=null,this.moveCallbackContext=this,this.pollRate=0,this.disabled=!1,this.multiInputOverride=b.Input.MOUSE_TOUCH_COMBINE,this.position=null,this.speed=null,this.circle=null,this.scale=null,this.maxPointers=10,this.currentPointers=0,this.tapRate=200,this.doubleTapRate=300,this.holdRate=2e3,this.justPressedRate=200,this.justReleasedRate=200,this.recordPointerHistory=!1,this.recordRate=100,this.recordLimit=100,this.pointer1=null,this.pointer2=null,this.pointer3=null,this.pointer4=null,this.pointer5=null,this.pointer6=null,this.pointer7=null,this.pointer8=null,this.pointer9=null,this.pointer10=null,this.activePointer=null,this.mousePointer=null,this.mouse=null,this.keyboard=null,this.touch=null,this.mspointer=null,this.gamepad=null,this.resetLocked=!1,this.onDown=null,this.onUp=null,this.onTap=null,this.onHold=null,this.interactiveItems=new b.LinkedList,this._localPoint=new b.Point,this._pollCounter=0,this._oldPosition=null,this._x=0,this._y=0},b.Input.MOUSE_OVERRIDES_TOUCH=0,b.Input.TOUCH_OVERRIDES_MOUSE=1,b.Input.MOUSE_TOUCH_COMBINE=2,b.Input.prototype={boot:function(){this.mousePointer=new b.Pointer(this.game,0),this.pointer1=new b.Pointer(this.game,1),this.pointer2=new b.Pointer(this.game,2),this.mouse=new b.Mouse(this.game),this.keyboard=new b.Keyboard(this.game),this.touch=new b.Touch(this.game),this.mspointer=new b.MSPointer(this.game),this.gamepad=new b.Gamepad(this.game),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.scale=new b.Point(1,1),this.speed=new b.Point,this.position=new b.Point,this._oldPosition=new b.Point,this.circle=new b.Circle(0,0,44),this.activePointer=this.mousePointer,this.currentPointers=0,this.hitCanvas=document.createElement("canvas"),this.hitCanvas.width=1,this.hitCanvas.height=1,this.hitContext=this.hitCanvas.getContext("2d"),this.mouse.start(),this.keyboard.start(),this.touch.start(),this.mspointer.start(),this.mousePointer.active=!0},destroy:function(){this.mouse.stop(),this.keyboard.stop(),this.touch.stop(),this.mspointer.stop(),this.gamepad.stop(),this.moveCallback=null},setMoveCallback:function(a,b){this.moveCallback=a,this.moveCallbackContext=b},addPointer:function(){for(var a=0,c=10;c>0;c--)null===this["pointer"+c]&&(a=c);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new b.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.keyboard.update(),this.pollRate>0&&this._pollCounter=c;c++)this["pointer"+c]&&this["pointer"+c].reset();this.currentPointers=0,"none"!==this.game.canvas.style.cursor&&(this.game.canvas.style.cursor="inherit"),a&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new b.Signal,this.onUp=new b.Signal,this.onTap=new b.Signal,this.onHold=new b.Signal,this.interactiveItems.callAll("reset")),this._pollCounter=0}},resetSpeed:function(a,b){this._oldPosition.setTo(a,b),this.speed.setTo(0,0)},startPointer:function(a){if(this.maxPointers<10&&this.totalActivePointers==this.maxPointers)return null;if(this.pointer1.active===!1)return this.pointer1.start(a);if(this.pointer2.active===!1)return this.pointer2.start(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active===!1)return this["pointer"+b].start(a);return null},updatePointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.move(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.move(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].move(a);return null},stopPointer:function(a){if(this.pointer1.active&&this.pointer1.identifier==a.identifier)return this.pointer1.stop(a);if(this.pointer2.active&&this.pointer2.identifier==a.identifier)return this.pointer2.stop(a);for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active&&this["pointer"+b].identifier==a.identifier)return this["pointer"+b].stop(a);return null},getPointer:function(a){if(a=a||!1,this.pointer1.active==a)return this.pointer1;if(this.pointer2.active==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].active==a)return this["pointer"+b];return null},getPointerFromIdentifier:function(a){if(this.pointer1.identifier==a)return this.pointer1;if(this.pointer2.identifier==a)return this.pointer2;for(var b=3;10>=b;b++)if(this["pointer"+b]&&this["pointer"+b].identifier==a)return this["pointer"+b];return null},getLocalPosition:function(a,c,d){"undefined"==typeof d&&(d=new b.Point);var e=a.worldTransform,f=1/(e.a*e.d+e.b*-e.c);return d.setTo(e.d*f*c.x+-e.b*f*c.y+(e.ty*e.b-e.tx*e.d)*f,e.a*f*c.y+-e.c*f*c.x+(-e.ty*e.a+e.tx*e.c)*f)},hitTest:function(a,c,d){if(!a.worldVisible)return!1;if(this.getLocalPosition(a,c,this._localPoint),d.copyFrom(this._localPoint),a.hitArea&&a.hitArea.contains)return a.hitArea.contains(this._localPoint.x,this._localPoint.y)?!0:!1;if(a instanceof b.TileSprite){var e=a.width,f=a.height,g=-e*a.anchor.x;if(this._localPoint.x>g&&this._localPoint.xh&&this._localPoint.yg&&this._localPoint.xh&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],c,d))return!0;return!1}},b.Input.prototype.constructor=b.Input,Object.defineProperty(b.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(b.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounter=a;a++)this["pointer"+a]&&this["pointer"+a].active&&this.currentPointers++;return this.currentPointers}}),Object.defineProperty(b.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(b.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),b.Key=function(a,c){this.game=a,this.enabled=!0,this.event=null,this.isDown=!1,this.isUp=!0,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=-2500,this.repeats=0,this.keyCode=c,this.onDown=new b.Signal,this.onHoldCallback=null,this.onHoldContext=null,this.onUp=new b.Signal},b.Key.prototype={update:function(){this.enabled&&this.isDown&&(this.duration=this.game.time.now-this.timeDown,this.repeats++,this.onHoldCallback&&this.onHoldCallback.call(this.onHoldContext,this))},processKeyDown:function(a){this.enabled&&(this.event=a,this.isDown||(this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown=!0,this.isUp=!1,this.timeDown=this.game.time.now,this.duration=0,this.repeats=0,this.onDown.dispatch(this)))},processKeyUp:function(a){this.enabled&&(this.event=a,this.isUp||(this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.onUp.dispatch(this)))},reset:function(a){"undefined"==typeof a&&(a=!0),this.isDown=!1,this.isUp=!0,this.timeUp=this.game.time.now,this.duration=this.game.time.now-this.timeDown,this.enabled=!0,a&&(this.onDown.removeAll(),this.onUp.removeAll(),this.onHoldCallback=null,this.onHoldContext=null)},justPressed:function(a){return"undefined"==typeof a&&(a=2500),this.isDown&&this.duration=this.game.input.holdRate&&((this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.now>=this._nextDrop&&(this._nextDrop=this.game.time.now+this.game.input.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>this.game.input.recordLimit&&this._history.shift()))},move:function(a,c){if(!this.game.input.pollLocked){if("undefined"==typeof c&&(c=!1),"undefined"!=typeof a.button&&(this.button=a.button),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.x=(this.pageX-this.game.stage.offset.x)*this.game.input.scale.x,this.y=(this.pageY-this.game.stage.offset.y)*this.game.input.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.activePointer=this,this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.game.input.x,this.game.input.y),this.game.input.circle.x=this.game.input.x,this.game.input.circle.y=this.game.input.y),this.game.paused)return this;if(this.game.input.moveCallback&&this.game.input.moveCallback.call(this.game.input.moveCallbackContext,this,this.x,this.y),null!==this.targetObject&&this.targetObject.isDragged===!0)return this.targetObject.update(this)===!1&&(this.targetObject=null),this;if(this._highestRenderOrderID=Number.MAX_SAFE_INTEGER,this._highestRenderObject=null,this._highestInputPriorityID=-1,this.game.input.interactiveItems.total>0){var d=this.game.input.interactiveItems.next;do d.validForInput(this._highestInputPriorityID,this._highestRenderOrderID)&&(!c&&d.checkPointerOver(this)||c&&d.checkPointerDown(this))&&(this._highestRenderOrderID=d.sprite._cache[3],this._highestInputPriorityID=d.priorityID,this._highestRenderObject=d),d=d.next;while(null!=d)}return null===this._highestRenderObject?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=this._highestRenderObject,this._highestRenderObject._pointerOverHandler(this)):this.targetObject===this._highestRenderObject?this._highestRenderObject.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=this._highestRenderObject,this.targetObject._pointerOverHandler(this)),this}},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){if(this._stateReset)return void a.preventDefault();if(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride==b.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==b.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==b.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.currentPointers)&&(this.game.input.onUp.dispatch(this,a),this.duration>=0&&this.duration<=this.game.input.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=!1,this.isDown=!1,this.isUp=!0,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.total>0){var c=this.game.input.interactiveItems.next;do c&&c._releasedHandler(this),c=c.next;while(null!=c)}return this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null,this},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.now},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp===!0&&this.timeUp+a>this.game.time.now},reset:function(){this.isMouse===!1&&(this.active=!1),this.identifier=null,this.isDown=!1,this.isUp=!0,this.totalTouches=0,this._holdSent=!1,this._history.length=0,this._stateReset=!0,this.targetObject&&this.targetObject._releasedHandler(this),this.targetObject=null}},b.Pointer.prototype.constructor=b.Pointer,Object.defineProperty(b.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(b.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(b.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),b.Touch=function(a){this.game=a,this.disabled=!1,this.callbackContext=this.game,this.touchStartCallback=null,this.touchMoveCallback=null,this.touchEndCallback=null,this.touchEnterCallback=null,this.touchLeaveCallback=null,this.touchCancelCallback=null,this.preventDefault=!0,this.event=null,this._onTouchStart=null,this._onTouchMove=null,this._onTouchEnd=null,this._onTouchEnter=null,this._onTouchLeave=null,this._onTouchCancel=null,this._onTouchMove=null},b.Touch.prototype={start:function(){if(null===this._onTouchStart){var a=this;this.game.device.touch&&(this._onTouchStart=function(b){return a.onTouchStart(b)},this._onTouchMove=function(b){return a.onTouchMove(b)},this._onTouchEnd=function(b){return a.onTouchEnd(b)},this._onTouchEnter=function(b){return a.onTouchEnter(b)},this._onTouchLeave=function(b){return a.onTouchLeave(b)},this._onTouchCancel=function(b){return a.onTouchCancel(b)},this.game.canvas.addEventListener("touchstart",this._onTouchStart,!1),this.game.canvas.addEventListener("touchmove",this._onTouchMove,!1),this.game.canvas.addEventListener("touchend",this._onTouchEnd,!1),this.game.canvas.addEventListener("touchenter",this._onTouchEnter,!1),this.game.canvas.addEventListener("touchleave",this._onTouchLeave,!1),this.game.canvas.addEventListener("touchcancel",this._onTouchCancel,!1))}},consumeDocumentTouches:function(){this._documentTouchMove=function(a){a.preventDefault()},document.addEventListener("touchmove",this._documentTouchMove,!1)},onTouchStart:function(a){if(this.event=a,this.touchStartCallback&&this.touchStartCallback.call(this.callbackContext,a),!this.game.input.disabled&&!this.disabled){this.preventDefault&&a.preventDefault();for(var b=0;b0&&e>this.deadZone||0>e&&e<-this.deadZone?{axis:d,value:e}:{axis:d,value:0})}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this._connected;this._index=a.index,this._connected=!0,this._rawPad=a,this._rawButtons=a.buttons,this._axes=a.axes,b&&this._padParent.onConnectCallback&&this._padParent.onConnectCallback.call(this._padParent.callbackContext,this._index),b&&this.onConnectCallback&&this.onConnectCallback.call(this.callbackContext)},disconnect:function(){var a=this._connected;this._connected=!1,this._rawPad=void 0,this._rawButtons=[],this._buttons=[];var b=this._index;this._index=null,a&&this._padParent.onDisconnectCallback&&this._padParent.onDisconnectCallback.call(this._padParent.callbackContext,b),a&&this.onDisconnectCallback&&this.onDisconnectCallback.call(this.callbackContext)},processAxisChange:function(a){this.game.input.disabled||this.game.input.gamepad.disabled||this._axes[a.axis]!==a.value&&(this._axes[a.axis]=a.value,this._padParent.onAxisCallback&&this._padParent.onAxisCallback.call(this._padParent.callbackContext,a,this._index),this.onAxisCallback&&this.onAxisCallback.call(this.callbackContext,a))},processButtonDown:function(a,b){this.game.input.disabled||this.game.input.gamepad.disabled||(this._padParent.onDownCallback&&this._padParent.onDownCallback.call(this._padParent.callbackContext,a,b,this._index),this.onDownCallback&&this.onDownCallback.call(this.callbackContext,a,b),this._buttons[a]&&this._buttons[a].isDown?this._buttons[a].duration=this.game.time.now-this._buttons[a].timeDown:this._buttons[a]?(this._buttons[a].isDown=!0,this._buttons[a].timeDown=this.game.time.now,this._buttons[a].duration=0,this._buttons[a].value=b):this._buttons[a]={isDown:!0,timeDown:this.game.time.now,timeUp:0,duration:0,value:b},this._hotkeys[a]&&this._hotkeys[a].processButtonDown(b))},processButtonUp:function(a,b){this.game.input.disabled||this.game.input.gamepad.disabled||(this._padParent.onUpCallback&&this._padParent.onUpCallback.call(this._padParent.callbackContext,a,b,this._index),this.onUpCallback&&this.onUpCallback.call(this.callbackContext,a,b),this._hotkeys[a]&&this._hotkeys[a].processButtonUp(b),this._buttons[a]?(this._buttons[a].isDown=!1,this._buttons[a].timeUp=this.game.time.now,this._buttons[a].value=b):this._buttons[a]={isDown:!1,timeDown:this.game.time.now,timeUp:this.game.time.now,duration:0,value:b})},processButtonFloat:function(a,b){this.game.input.disabled||this.game.input.gamepad.disabled||(this._padParent.onFloatCallback&&this._padParent.onFloatCallback.call(this._padParent.callbackContext,a,b,this._index),this.onFloatCallback&&this.onFloatCallback.call(this.callbackContext,a,b),this._buttons[a]?this._buttons[a].value=b:this._buttons[a]={value:b},this._hotkeys[a]&&this._hotkeys[a].processButtonFloat(b))},axis:function(a){return this._axes[a]?this._axes[a]:!1},isDown:function(a){return this._buttons[a]?this._buttons[a].isDown:!1},justReleased:function(a,b){return"undefined"==typeof b&&(b=250),this._buttons[a]&&this._buttons[a].isDown===!1&&this.game.time.now-this._buttons[a].timeUpd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new b.Point,this.enabled=!0,this._wasEnabled=!0,this.sprite.events&&null===this.sprite.events.onInputOver&&(this.sprite.events.onInputOver=new b.Signal,this.sprite.events.onInputOut=new b.Signal,this.sprite.events.onInputDown=new b.Signal,this.sprite.events.onInputUp=new b.Signal,this.sprite.events.onDragStart=new b.Signal,this.sprite.events.onDragStop=new b.Signal)}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.sprite},addedToGroup:function(){this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1},reset:function(){this.enabled=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.enabled&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b){return 0===this.sprite.scale.x||0===this.sprite.scale.y?!1:this.pixelPerfectClick||this.pixelPerfectOver?!0:this.priorityID>a||this.priorityID===a&&this.sprite._cache[3]b;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if("undefined"!=typeof a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0:!1},checkPointerOver:function(a){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0:!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(this.game.input.hitContext.clearRect(0,0,1,1),null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID==a.id?this.updateDrag(a):this._pointerData[a.id].isOver===!0?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isOver===!1&&(this._pointerData[a.id].isOver=!0,this._pointerData[a.id].isOut=!1,this._pointerData[a.id].timeOver=this.game.time.now,this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!1),this.sprite.events.onInputOver.dispatch(this.sprite,a))},_pointerOutHandler:function(a){null!==this.sprite&&(this._pointerData[a.id].isOver=!1,this._pointerData[a.id].isOut=!0,this._pointerData[a.id].timeOut=this.game.time.now,this.useHandCursor&&this._pointerData[a.id].isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut.dispatch(this.sprite,a))},_touchedHandler:function(a){if(null!==this.sprite){if(this._pointerData[a.id].isDown===!1&&this._pointerData[a.id].isOver===!0){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;this._pointerData[a.id].isDown=!0,this._pointerData[a.id].isUp=!1,this._pointerData[a.id].timeDown=this.game.time.now,this.sprite.events.onInputDown.dispatch(this.sprite,a),this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){null!==this.sprite&&this._pointerData[a.id].isDown&&a.isUp&&(this._pointerData[a.id].isDown=!1,this._pointerData[a.id].isUp=!0,this._pointerData[a.id].timeUp=this.game.time.now,this._pointerData[a.id].downDuration=this._pointerData[a.id].timeUp-this._pointerData[a.id].timeDown,this.checkPointerOver(a)?this.sprite.events.onInputUp.dispatch(this.sprite,a,!0):(this.sprite.events.onInputUp.dispatch(this.sprite,a,!1),this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1)),this.draggable&&this.isDragged&&this._draggedPointerID==a.id&&this.stopDrag(a))},updateDrag:function(a){return a.isUp?(this.stopDrag(a),!1):(this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=a.x+this._dragPoint.x+this.dragOffset.x),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=a.y+this._dragPoint.y+this.dragOffset.y),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)):(this.allowHorizontalDrag&&(this.sprite.x=a.x+this._dragPoint.x+this.dragOffset.x),this.allowVerticalDrag&&(this.sprite.y=a.y+this._dragPoint.y+this.dragOffset.y),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),!0)},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1},startDrag:function(a){if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else if(this.dragFromCenter){var b=this.sprite.getBounds();this.sprite.x=a.x+(this.sprite.x-b.centerX),this.sprite.y=a.y+(this.sprite.y-b.centerY),this._dragPoint.setTo(this.sprite.x-a.x,this.sprite.y-a.y)}else this._dragPoint.setTo(this.sprite.x-a.x,this.sprite.y-a.y);this.updateDrag(a),this.bringToTop&&this.sprite.bringToTop(),this.sprite.events.onDragStart.dispatch(this.sprite,a)},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop.dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.xthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-this.sprite.width),this.sprite.ythis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-this.sprite.height))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.camerOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.camerOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.camerOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.camerOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.xthis.boundsSprite.x+this.boundsSprite.width&&(this.sprite.x=this.boundsSprite.x+this.boundsSprite.width-this.sprite.width),this.sprite.ythis.boundsSprite.y+this.boundsSprite.height&&(this.sprite.y=this.boundsSprite.y+this.boundsSprite.height-this.sprite.height))}},b.InputHandler.prototype.constructor=b.InputHandler,b.Events=function(a){this.parent=a,this.onAddedToGroup=new b.Signal,this.onRemovedFromGroup=new b.Signal,this.onKilled=new b.Signal,this.onRevived=new b.Signal,this.onOutOfBounds=new b.Signal,this.onEnterBounds=new b.Signal,this.onInputOver=null,this.onInputOut=null,this.onInputDown=null,this.onInputUp=null,this.onDragStart=null,this.onDragStop=null,this.onAnimationStart=null,this.onAnimationComplete=null,this.onAnimationLoop=null},b.Events.prototype={destroy:function(){this.parent=null,this.onAddedToGroup.dispose(),this.onRemovedFromGroup.dispose(),this.onKilled.dispose(),this.onRevived.dispose(),this.onOutOfBounds.dispose(),this.onInputOver&&(this.onInputOver.dispose(),this.onInputOut.dispose(),this.onInputDown.dispose(),this.onInputUp.dispose(),this.onDragStart.dispose(),this.onDragStop.dispose()),this.onAnimationStart&&(this.onAnimationStart.dispose(),this.onAnimationComplete.dispose(),this.onAnimationLoop.dispose())}},b.Events.prototype.constructor=b.Events,b.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},b.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Image(this.game,a,c,d,e))},sprite:function(a,b,c,d,e){return"undefined"==typeof e&&(e=this.world),e.create(a,b,c,d)},tween:function(a){return this.game.tweens.create(a)},group:function(a,c,d,e,f){return new b.Group(this.game,a,c,d,e,f)},physicsGroup:function(a,c,d,e){return new b.Group(this.game,c,d,e,!0,a)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g,h){return"undefined"==typeof h&&(h=this.world),h.add(new b.TileSprite(this.game,a,c,d,e,f,g))},text:function(a,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new b.Text(this.game,a,c,d,e))},button:function(a,c,d,e,f,g,h,i,j,k){return"undefined"==typeof k&&(k=this.world),k.add(new b.Button(this.game,a,c,d,e,f,g,h,i,j))},graphics:function(a,c,d){return"undefined"==typeof d&&(d=this.world),d.add(new b.Graphics(this.game,a,c))},emitter:function(a,c,d){return this.game.particles.add(new b.Particles.Arcade.Emitter(this.game,a,c,d))},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f,g){return"undefined"==typeof g&&(g=this.world),g.add(new b.BitmapText(this.game,a,c,d,e,f))},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectFactory.prototype.constructor=b.GameObjectFactory,b.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},b.GameObjectCreator.prototype={image:function(a,c,d,e){return new b.Image(this.game,a,c,d,e)},sprite:function(a,c,d,e){return new b.Sprite(this.game,a,c,d,e)},tween:function(a){return new b.Tween(a,this.game)},group:function(a,c,d,e,f){return new b.Group(this.game,null,c,d,e,f)},spriteBatch:function(a,c,d){return"undefined"==typeof c&&(c="group"),"undefined"==typeof d&&(d=!1),new b.SpriteBatch(this.game,a,c,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,c,d,e,f,g){return new b.TileSprite(this.game,a,c,d,e,f,g)},text:function(a,c,d,e){return new b.Text(this.game,a,c,d,e)},button:function(a,c,d,e,f,g,h,i,j){return new b.Button(this.game,a,c,d,e,f,g,h,i,j)},graphics:function(a,c){return new b.Graphics(this.game,a,c)},emitter:function(a,c,d){return new b.Particles.Arcade.Emitter(this.game,a,c,d)},retroFont:function(a,c,d,e,f,g,h,i,j){return new b.RetroFont(this.game,a,c,d,e,f,g,h,i,j)},bitmapText:function(a,c,d,e,f){return new b.BitmapText(this.game,a,c,d,e,f)},tilemap:function(a,c,d,e,f){return new b.Tilemap(this.game,a,c,d,e,f)},renderTexture:function(a,c,d,e){("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid()),"undefined"==typeof e&&(e=!1);var f=new b.RenderTexture(this.game,a,c,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,c,d,e){"undefined"==typeof e&&(e=!1),("undefined"==typeof d||""===d)&&(d=this.game.rnd.uuid());var f=new b.BitmapData(this.game,d,a,c);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var c=Array.prototype.splice.call(arguments,1),a=new b.Filter[a](this.game);return a.init.apply(a,c),a}},b.GameObjectCreator.prototype.constructor=b.GameObjectCreator,b.BitmapData=function(a,c,d,e){"undefined"==typeof d&&(d=100),"undefined"==typeof e&&(e=100),this.game=a,this.key=c,this.width=d,this.height=e,this.canvas=b.Canvas.create(d,e,"",!0),this.context=this.canvas.getContext("2d"),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.pixels=this.imageData.data.buffer?this.imageData.data.buffer:this.imageData.data,this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,d,e,"bitmapData",a.rnd.uuid()),this.type=b.BITMAPDATA,this.dirty=!1},b.BitmapData.prototype={add:function(a){if(Array.isArray(a))for(var b=0;b=0&&a<=this.width&&b>=0&&b<=this.height&&(this.pixels[b*this.width+a]=f<<24|e<<16|d<<8|c,this.context.putImageData(this.imageData,0,0),this.dirty=!0)},setPixel:function(a,b,c,d,e){this.setPixel32(a,b,c,d,e,255)},getPixel:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.data32[b*this.width+a]:void 0},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.data32[b*this.width+a]:void 0 },getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},copyPixels:function(a,b,c,d){"string"==typeof a&&(a=this.game.cache.getImage(a)),a&&this.context.drawImage(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height)},draw:function(a,b,c){"string"==typeof a&&(a=this.game.cache.getImage(a)),a&&this.context.drawImage(a,0,0,a.width,a.height,b,c,a.width,a.height)},alphaMask:function(a,b){var c=this.context.globalCompositeOperation;"string"==typeof b&&(b=this.game.cache.getImage(b)),b&&this.context.drawImage(b,0,0),this.context.globalCompositeOperation="source-atop","string"==typeof a&&(a=this.game.cache.getImage(a)),a&&this.context.drawImage(a,0,0),this.context.globalCompositeOperation=c},render:function(){this.game.renderType===b.WEBGL&&this.dirty&&(PIXI.updateWebGLTexture(this.baseTexture,this.game.renderer.gl),this.dirty=!1)}},b.BitmapData.prototype.constructor=b.BitmapData,b.Sprite=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.name="",this.type=b.SPRITE,this.z=0,this.events=new b.Events(this),this.animations=new b.AnimationManager(this),this.key=e,this._frame=0,this._frameName="",PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.loadTexture(e,f),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.body=null,this.health=1,this.lifespan=0,this.checkWorldBounds=!1,this.outOfBoundsKill=!1,this.debug=!1,this.cameraOffset=new b.Point,this._cache=[0,0,0,0,1,0,1,0],this._bounds=new b.Rectangle},b.Sprite.prototype=Object.create(PIXI.Sprite.prototype),b.Sprite.prototype.constructor=b.Sprite,b.Sprite.prototype.preUpdate=function(){if(1===this._cache[4]&&this.exists)return this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.body&&this.body.preUpdate(),this._cache[4]=0,!1;if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;if(this.lifespan>0&&(this.lifespan-=this.game.time.elapsed,this.lifespan<=0))return this.kill(),!1;if((this.autoCull||this.checkWorldBounds)&&this._bounds.copyFrom(this.getBounds()),this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this._bounds)),this.checkWorldBounds)if(1===this._cache[5]&&this.game.world.bounds.intersects(this._bounds))this._cache[5]=0,this.events.onEnterBounds.dispatch(this);else if(0===this._cache[5]&&!this.game.world.bounds.intersects(this._bounds)&&(this._cache[5]=1,this.events.onOutOfBounds.dispatch(this),this.outOfBoundsKill))return this.kill(),!1;this.world.setTo(this.game.camera.x+this.worldTransform.tx,this.game.camera.y+this.worldTransform.ty),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),this.animations.update(),this.body&&this.body.preUpdate();for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Sprite.prototype.update=function(){},b.Sprite.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Sprite.prototype.loadTexture=function(a,c){return c=c||0,a instanceof b.RenderTexture?(this.key=a.key,void this.setTexture(a)):a instanceof b.BitmapData?(this.key=a,void this.setTexture(a.texture)):a instanceof PIXI.Texture?(this.key=a,void this.setTexture(a)):null===a||"undefined"==typeof a?(this.key="__default",void this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?this.game.cache.isSpriteSheet(a)?(this.key=a,this.animations.loadFrameData(this.game.cache.getFrameData(a)),"string"==typeof c?this.frameName=c:this.frame=c,void 0):(this.key=a,void this.setTexture(PIXI.TextureCache[a])):(this.key="__missing",void this.setTexture(PIXI.TextureCache[this.key]))},b.Sprite.prototype.crop=function(a){if("undefined"==typeof a||null===a)this.texture.hasOwnProperty("sourceWidth")&&this.texture.setFrame(new b.Rectangle(0,0,this.texture.sourceWidth,this.texture.sourceHeight));else if(this.texture instanceof PIXI.Texture){var c={};b.Utils.extend(!0,c,this.texture),c.sourceWidth=c.width,c.sourceHeight=c.height,c.frame=a,c.width=a.width,c.height=a.height,this.texture=c,this.texture.updateFrame=!0,PIXI.Texture.frameUpdates.push(this.texture)}else this.texture.setFrame(a)},b.Sprite.prototype.revive=function(a){return"undefined"==typeof a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,this.health=a,this.events&&this.events.onRevived.dispatch(this),this},b.Sprite.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Sprite.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.input&&this.input.destroy(),this.animations&&this.animations.destroy(),this.body&&this.body.destroy(),this.events&&this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.Sprite.prototype.damage=function(a){return this.alive&&(this.health-=a,this.health<=0&&this.kill()),this},b.Sprite.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},b.Sprite.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},b.Sprite.prototype.play=function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0},b.Sprite.prototype.overlap=function(a){return b.Rectangle.intersects(this.getBounds(),a.getBounds())},Object.defineProperty(b.Sprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Sprite.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Sprite.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Sprite.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Sprite.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Sprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}}),Object.defineProperty(b.Sprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}),Object.defineProperty(b.Sprite.prototype,"renderOrderID",{get:function(){return this._cache[3]}}),Object.defineProperty(b.Sprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.Sprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&this.body.removeFromWorld(),this.visible=!1)}}),Object.defineProperty(b.Sprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.Sprite.prototype,"smoothed",{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}),Object.defineProperty(b.Sprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.Sprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),b.Image=function(a,c,d,e,f){c=c||0,d=d||0,e=e||null,f=f||null,this.game=a,this.exists=!0,this.name="",this.type=b.IMAGE,this.z=0,this.events=new b.Events(this),this.key=e,this._frame=0,this._frameName="",PIXI.Sprite.call(this,PIXI.TextureCache.__default),this.loadTexture(e,f),this.position.set(c,d),this.world=new b.Point(c,d),this.autoCull=!1,this.input=null,this.cameraOffset=new b.Point,this._cache=[0,0,0,0,1,0,1,0]},b.Image.prototype=Object.create(PIXI.Sprite.prototype),b.Image.prototype.constructor=b.Image,b.Image.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this._cache[3]=-1,!1;this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform[2],this.game.camera.y+this.worldTransform[5]),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Image.prototype.update=function(){},b.Image.prototype.postUpdate=function(){this.key instanceof b.BitmapData&&this.key.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,c=this.children.length;c>a;a++)this.children[a].postUpdate()},b.Image.prototype.loadTexture=function(a,c){if(c=c||0,a instanceof b.RenderTexture)return this.key=a.key,void this.setTexture(a);if(a instanceof b.BitmapData)return this.key=a,void this.setTexture(a.texture);if(a instanceof PIXI.Texture)return this.key=a,void this.setTexture(a);if(null===a||"undefined"==typeof a)return this.key="__default",void this.setTexture(PIXI.TextureCache[this.key]);if("string"==typeof a&&!this.game.cache.checkImageKey(a))return this.key="__missing",void this.setTexture(PIXI.TextureCache[this.key]);if(this.game.cache.isSpriteSheet(a)){this.key=a;var d=this.game.cache.getFrameData(a);return"string"==typeof c?(this._frame=0,this._frameName=c,void this.setTexture(PIXI.TextureCache[d.getFrameByName(c).uuid])):(this._frame=c,this._frameName="",void this.setTexture(PIXI.TextureCache[d.getFrame(c).uuid]))}return this.key=a,void this.setTexture(PIXI.TextureCache[a])},b.Image.prototype.crop=function(a){if("undefined"==typeof a||null===a)this.texture.hasOwnProperty("sourceWidth")&&this.texture.setFrame(new b.Rectangle(0,0,this.texture.sourceWidth,this.texture.sourceHeight));else if(this.texture instanceof PIXI.Texture){var c={};b.Utils.extend(!0,c,this.texture),c.sourceWidth=c.width,c.sourceHeight=c.height,c.frame=a,c.width=a.width,c.height=a.height,this.texture=c,this.texture.updateFrame=!0,PIXI.Texture.frameUpdates.push(this.texture)}else this.texture.setFrame(a)},b.Image.prototype.revive=function(){return this.alive=!0,this.exists=!0,this.visible=!0,this.events&&this.events.onRevived.dispatch(this),this},b.Image.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},b.Image.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.events&&this.events.destroy(),this.input&&this.input.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.alive=!1,this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.Image.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this},b.Image.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},Object.defineProperty(b.Image.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.Image.prototype,"deltaX",{get:function(){return this.world.x-this._cache[0]}}),Object.defineProperty(b.Image.prototype,"deltaY",{get:function(){return this.world.y-this._cache[1]}}),Object.defineProperty(b.Image.prototype,"deltaZ",{get:function(){return this.rotation-this._cache[2]}}),Object.defineProperty(b.Image.prototype,"inWorld",{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"inCamera",{get:function(){return this.game.world.camera.screenView.intersects(this.getBounds())}}),Object.defineProperty(b.Image.prototype,"frame",{get:function(){return this._frame},set:function(a){if(a!==this.frame&&this.game.cache.isSpriteSheet(this.key)){var b=this.game.cache.getFrameData(this.key);b&&aa;a++)this.children[a].preUpdate();return!0},b.TileSprite.prototype.update=function(){},b.TileSprite.prototype.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate(),1===this._cache[7]&&(this.position.x=this.game.camera.view.x+this.cameraOffset.x,this.position.y=this.game.camera.view.y+this.cameraOffset.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},b.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},b.TileSprite.prototype.loadTexture=function(a,c){return c=c||0,a instanceof b.RenderTexture?(this.key=a.key,void this.setTexture(a)):a instanceof b.BitmapData?(this.key=a,void this.setTexture(a.texture)):a instanceof PIXI.Texture?(this.key=a,void this.setTexture(a)):null===a||"undefined"==typeof a?(this.key="__default",void this.setTexture(PIXI.TextureCache[this.key])):"string"!=typeof a||this.game.cache.checkImageKey(a)?this.game.cache.isSpriteSheet(a)?(this.key=a,this.animations.loadFrameData(this.game.cache.getFrameData(a)),"string"==typeof c?this.frameName=c:this.frame=c,void 0):(this.key=a,void this.setTexture(PIXI.TextureCache[a])):(this.key="__missing",void this.setTexture(PIXI.TextureCache[this.key]))},b.TileSprite.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.filters&&(this.filters=null),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.animations.destroy(),this.events.destroy();var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.TileSprite.prototype.play=function(a,b,c,d){return this.animations.play(a,b,c,d)},b.TileSprite.prototype.reset=function(a,b){return this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.tilePosition.x=0,this.tilePosition.y=0,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this},Object.defineProperty(b.TileSprite.prototype,"angle",{get:function(){return b.Math.wrapAngle(b.Math.radToDeg(this.rotation))},set:function(a){this.rotation=b.Math.degToRad(b.Math.wrapAngle(a))}}),Object.defineProperty(b.TileSprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){a!==this.animations.frame&&(this.animations.frame=a)}}),Object.defineProperty(b.TileSprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){a!==this.animations.frameName&&(this.animations.frameName=a)}}),Object.defineProperty(b.TileSprite.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),Object.defineProperty(b.TileSprite.prototype,"exists",{get:function(){return!!this._cache[6]},set:function(a){a?(this._cache[6]=1,this.body&&this.body.type===b.Physics.P2JS&&this.body.addToWorld(),this.visible=!0):(this._cache[6]=0,this.body&&this.body.type===b.Physics.P2JS&&(this.body.safeRemove=!0),this.visible=!1)}}),Object.defineProperty(b.TileSprite.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.TileSprite.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),Object.defineProperty(b.TileSprite.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&this.body.type===b.Physics.ARCADE&&2===this.body.phase&&(this.body._reset=1)}}),b.Text=function(a,c,d,e,f){c=c||0,d=d||0,e=e||" ",f=f||{},e=0===e.length?" ":e.toString(),this.game=a,this.exists=!0,this.name="",this.type=b.TEXT,this.z=0,this.world=new b.Point(c,d),this._text=e,this._font="",this._fontSize=32,this._fontWeight="normal",this._lineSpacing=0,this.events=new b.Events(this),this.input=null,this.cameraOffset=new b.Point,this.setStyle(f),PIXI.Text.call(this,e,this.style),this.position.set(c,d),this._cache=[0,0,0,0,1,0,1,0]},b.Text.prototype=Object.create(PIXI.Text.prototype),b.Text.prototype.constructor=b.Text,b.Text.prototype.preUpdate=function(){if(this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,!this.exists||!this.parent.exists)return this.renderOrderID=-1,!1;this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform[2],this.game.camera.y+this.worldTransform[5]),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++);for(var a=0,b=this.children.length;b>a;a++)this.children[a].preUpdate();return!0},b.Text.prototype.update=function(){},b.Text.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y);for(var a=0,b=this.children.length;b>a;a++)this.children[a].postUpdate()},b.Text.prototype.destroy=function(a){if(null!==this.game){"undefined"==typeof a&&(a=!0),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this)),this.texture.destroy(),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null);var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.filters=null,this.mask=null,this.game=null}},b.Text.prototype.setShadow=function(a,b,c,d){this.style.shadowOffsetX=a||0,this.style.shadowOffsetY=b||0,this.style.shadowColor=c||"rgba(0,0,0,0)",this.style.shadowBlur=d||0,this.dirty=!0},b.Text.prototype.setStyle=function(a){a=a||{},a.font=a.font||"bold 20pt Arial",a.fill=a.fill||"black",a.align=a.align||"left",a.stroke=a.stroke||"black",a.strokeThickness=a.strokeThickness||0,a.wordWrap=a.wordWrap||!1,a.wordWrapWidth=a.wordWrapWidth||100,a.shadowOffsetX=a.shadowOffsetX||0,a.shadowOffsetY=a.shadowOffsetY||0,a.shadowColor=a.shadowColor||"rgba(0,0,0,0)",a.shadowBlur=a.shadowBlur||0,this.style=a,this.dirty=!0},b.Text.prototype.updateText=function(){this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.runWordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),c=[],d=0,e=0;ee?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}d?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.resize=function(a,b){if(this.width=a,this.height=b,this.frame.width=this.width,this.frame.height=this.height,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.renderer.type===PIXI.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var c=this.renderer.gl;c.bindTexture(c.TEXTURE_2D,this.baseTexture._glTextures[c.id]),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,this.width,this.height,0,c.RGBA,c.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);PIXI.Texture.frameUpdates.push(this)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY),this.textureBuffer.clear();for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight),this.textureBuffer.clear(),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c,d){if("undefined"==typeof d&&(d=!1),a=a||256,b=b||256,d)var e=document.createElement("canvas");else var e=document.createElement(navigator.isCocoonJS?"screencanvas":"canvas");return"string"==typeof c&&""!==c&&(e.id=c),e.width=a,e.height=b,e.style.display="block",e},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.ejecta=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures(),this._checkOS()},b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0,this.typedArray=!0):(this.littleEndian=!1,this.typedArray=!1),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(this.vibration=!0)},_checkCSS3D:function(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),this.css3D=void 0!==a&&a.length>0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},nearestAngleBetween:function(a,b,c){"undefined"==typeof c&&(c=!0);var d=c?Math.PI:180;return a=this.normalizeAngle(a,c),b=this.normalizeAngle(b,c),-d/2>a&&b>d/2&&(a+=2*d),-d/2>b&&a>d/2&&(b+=2*d),b-a},interpolateAngles:function(a,b,c,d,e){return"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=null),a=this.normalizeAngle(a,d),b=this.normalizeAngleToAnother(b,a,d),"function"==typeof e?e(c,a,b-a,1):this.interpolateFloat(a,b,c)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},maxAdd:function(a,b,c){return a+=b,a>c&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*(3-2*a))},smootherstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*a*(a*(6*a-15)+10))},sign:function(a){return 0>a?-1:a>0?1:0},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.round(this.realInRange(a,b))},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this.reset(a,b,c,d,e,f,g) -},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.level++,this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){var b=this.objects,c=this.getIndex(a.body);return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;aa;)this._tweens[a].update(this.game.time.now)?a++:(this._tweens.splice(a,1),b--);return this._add.length>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Linear.None,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1;var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):("string"==typeof l&&(l=k+parseFloat(l,10)),"number"==typeof l&&(j[c]=k+(l-k)*i))}g.push(j),d+=f}if(this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g,this._reversed=!this._reversed}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Time=function(a){this.game=a,this.time=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;a0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},update:function(a){if(this.paused)return!0;for(this._now=a,this._len=this.events.length,this._i=0;this._i=this.nextTick&&this._len>0){for(this._i=0;this._i=this.events[this._i].tick;){var b=this._now-this.events[this._i].tick,c=this._now+this.events[this._i].delay-b;0>c&&(c=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=c,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=c,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args),this.events.splice(this._i,1),this._len--),this._i++}this.events.length>0?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0,this._codePaused=!0)},_pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0)},resume:function(){if(this.running&&!this.expired){var a=this.game.time.now-this._pauseStarted;this._pauseTotal+=a;for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this._now-this._started-this._pauseTotal}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return.001*this.ms}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a){this._frameData=a,this.frame=0,this.isLoaded=!0},add:function(a,c,d,e,f){return null==this._frameData?void console.warn("No FrameData available for Phaser.Animation "+a):(c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null==this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1),this._anims[a])},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a]){if(this.currentAnim!=this._anims[a])return this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentAnim.play(b,c,d);if(this.currentAnim.isPlaying===!1)return this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)}},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData?this._frameData.total:-1}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart.dispatch(this._parent,this)},stop:function(a,b){"undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,a&&(this.currentFrame=this._frameData.getFrame(this._frames[0])),b&&(this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this))},onPause:function(){this.isPlaying&&(this._frameDiff=this._timeNextFrame-this.game.time.now)},onResume:function(){this.isPlaying&&(this._timeNextFrame=this.game.time.now+this._frameDiff)},update:function(){return this.isPaused?!1:this.isPlaying===!0&&this.game.time.now>=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete():(this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1))),!0):!1},destroy:function(){this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.destroy(),this.onLoop.destroy(),this.onComplete.destroy(),this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this)},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.width=b,this.height=c,this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},getFrameRange:function(a,b,c){"undefined"==typeof c&&(c=[]);for(var d=a;b>=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.onLoadComplete.dispatch()))},loadFile:function(){if(!this._fileList[this._fileIndex])return void console.warn("Phaser.Loader loadFile invalid index "+this._fileIndex);var a=this._fileList[this._fileIndex],c=this;switch(a.type){case"image":case"spritesheet":case"textureatlas":case"bitmapfont":a.data=new Image,a.data.name=a.key,a.data.onload=function(){return c.fileComplete(c._fileIndex)},a.data.onerror=function(){return c.fileError(c._fileIndex)},this.crossOrigin&&(a.data.crossOrigin=this.crossOrigin),a.data.src=this.baseURL+a.url;break;case"audio":a.url=this.getAudioURL(a.url),null!==a.url?this.game.sound.usingWebAudio?(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()):this.game.sound.usingAudioTag&&(this.game.sound.touchLocked?(a.data=new Audio,a.data.name=a.key,a.data.preload="auto",a.data.src=this.baseURL+a.url,this.fileComplete(this._fileIndex)):(a.data=new Audio,a.data.name=a.key,a.data.onerror=function(){return c.fileError(c._fileIndex)},a.data.preload="auto",a.data.src=this.baseURL+a.url,a.data.addEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete(this._fileIndex),!1),a.data.load())):this.fileError(this._fileIndex);break;case"json":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)},this._xhr.send();break;case"tilemap":if(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",a.format===b.Tilemap.TILED_JSON)this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)};else{if(a.format!==b.Tilemap.CSV)throw new Error("Phaser.Loader. Invalid Tilemap format: "+a.format);this._xhr.onload=function(){return c.csvLoadComplete(c._fileIndex)}}this._xhr.onerror=function(){return c.dataLoadError(c._fileIndex)},this._xhr.send();break;case"text":case"script":case"physics":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send();break;case"binary":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()}},getAudioURL:function(a){var b;"string"==typeof a&&(a=[a]);for(var c=0;c100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?(this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect)):(this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect))),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying!==!0||e!==!1||this.override!==!1){if(this.isPlaying&&this.override&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return void console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist");this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null==this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0}},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.stop(),this.isPlaying=!1,this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this))},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){this.isPlaying&&this._sound&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.isPlaying=!1;var a=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.onStop.dispatch(this,a)},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a&&this.game.sound.remove(this),this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose()}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a)}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32 -},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a255)return b.Color.getColor(255,255,255);if(a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a}},getWebRGB:function(a){var b=(a>>>24)/255,c=a>>16&255,d=a>>8&255,e=255&a;return"rgba("+c.toString()+","+d.toString()+","+e.toString()+","+b.toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=5,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else{if(a===b.Physics.BOX2D&&null===this.box2d)throw new Error("The Box2D physics system has not been implemented yet.");if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")}},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja&&this.ninja.enableAABB(a)},preUpdate:function(){this.p2&&this.p2.preUpdate()},update:function(){this.p2&&this.p2.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.arcade=null,this.ninja=null,this.p2=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length)for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateTile:function(a,b,c){if(!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0 -},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1},postUpdate:function(){this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){c=c||this.offset.x,d=d||this.offset.y,this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof c&&(c=!0),d=d||"rgba(0,255,0,0.4)",c?(a.fillStyle=d,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=d,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.width=1,this.height=1,this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)"object"==typeof a&&(h=this.game.rnd.pick(a)),"object"==typeof b&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):this.minParticleScale!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.width=a,this.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;c=a}if("string"==typeof a&&(a=this.getTilesetIndex(a)),this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i=[],j=0;d>j;j++){h=[];for(var k=0;c>k;k++)h.push(null);i.push(h)}var l={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:i};this.layers.push(l),this.currentLayer=this.layers.length-1;var m=l.widthInPixels,n=l.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var i=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return i.name=a,g.add(i)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hd;d++)this.setCollisionByIndex(a[d],b,c,!1);this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d){if("undefined"==typeof c&&(c=!0),d=this.getLayer(d),!(a>b)){for(var e=a;b>=e;e++)this.setCollisionByIndex(e,c,d,!1);this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c){"undefined"==typeof b&&(b=!0),c=this.getLayer(c);for(var d=0,e=this.tiles.length;e>d;d++)-1===a.indexOf(d)&&this.setCollisionByIndex(d,b,c,!1);this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b=0&&a=0&&b=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},getTile:function(a,b,c){return c=this.getLayer(c),a>=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gthis.layer.width&&(this._mc.maxX=this.layer.width),this._mc.maxY>this.layer.height&&(this._mc.maxY=this.layer.height)),this.dirty=!0},b.TilemapLayer.prototype.render=function(){if(this.layer.dirty&&(this.dirty=!0),this.dirty&&this.visible){this._mc.prevX=this._mc.dx,this._mc.prevY=this._mc.dy,this._mc.dx=-(this._mc.x-this._mc.startX*this.map.tileWidth),this._mc.dy=-(this._mc.y-this._mc.startY*this.map.tileHeight),this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.fillStyle=this.tileColor;var a,c;this.debug&&(this.context.globalAlpha=this.debugAlpha); +}}),Object.defineProperty(b.BitmapText.prototype,"inputEnabled",{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new b.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}),Object.defineProperty(b.BitmapText.prototype,"fixedToCamera",{get:function(){return!!this._cache[7]},set:function(a){a?(this._cache[7]=1,this.cameraOffset.set(this.x,this.y)):this._cache[7]=0}}),b.Button=function(a,c,d,e,f,g,h,i,j,k){c=c||0,d=d||0,e=e||null,f=f||null,g=g||this,b.Image.call(this,a,c,d,e,i),this.type=b.BUTTON,this._onOverFrameName=null,this._onOutFrameName=null,this._onDownFrameName=null,this._onUpFrameName=null,this._onOverFrameID=null,this._onOutFrameID=null,this._onDownFrameID=null,this._onUpFrameID=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new b.Signal,this.onInputOut=new b.Signal,this.onInputDown=new b.Signal,this.onInputUp=new b.Signal,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this)},b.Button.prototype=Object.create(b.Image.prototype),b.Button.prototype.constructor=b.Button,b.Button.prototype.clearFrames=function(){this._onOverFrameName=null,this._onOverFrameID=null,this._onOutFrameName=null,this._onOutFrameID=null,this._onDownFrameName=null,this._onDownFrameID=null,this._onUpFrameName=null,this._onUpFrameID=null},b.Button.prototype.setFrames=function(a,b,c,d){this.clearFrames(),null!==a&&("string"==typeof a?(this._onOverFrameName=a,this.input.pointerOver()&&(this.frameName=a)):(this._onOverFrameID=a,this.input.pointerOver()&&(this.frame=a))),null!==b&&("string"==typeof b?(this._onOutFrameName=b,this.input.pointerOver()===!1&&(this.frameName=b)):(this._onOutFrameID=b,this.input.pointerOver()===!1&&(this.frame=b))),null!==c&&("string"==typeof c?(this._onDownFrameName=c,this.input.pointerDown()&&(this.frameName=c)):(this._onDownFrameID=c,this.input.pointerDown()&&(this.frame=c))),null!==d&&("string"==typeof d?(this._onUpFrameName=d,this.input.pointerUp()&&(this.frameName=d)):(this._onUpFrameID=d,this.input.pointerUp()&&(this.frame=d)))},b.Button.prototype.setSounds=function(a,b,c,d,e,f,g,h){this.setOverSound(a,b),this.setOutSound(e,f),this.setDownSound(c,d),this.setUpSound(g,h)},b.Button.prototype.setOverSound=function(a,c){this.onOverSound=null,this.onOverSoundMarker="",a instanceof b.Sound&&(this.onOverSound=a),"string"==typeof c&&(this.onOverSoundMarker=c)},b.Button.prototype.setOutSound=function(a,c){this.onOutSound=null,this.onOutSoundMarker="",a instanceof b.Sound&&(this.onOutSound=a),"string"==typeof c&&(this.onOutSoundMarker=c)},b.Button.prototype.setDownSound=function(a,c){this.onDownSound=null,this.onDownSoundMarker="",a instanceof b.Sound&&(this.onDownSound=a),"string"==typeof c&&(this.onDownSoundMarker=c)},b.Button.prototype.setUpSound=function(a,c){this.onUpSound=null,this.onUpSoundMarker="",a instanceof b.Sound&&(this.onUpSound=a),"string"==typeof c&&(this.onUpSoundMarker=c)},b.Button.prototype.onInputOverHandler=function(a,b){this.freezeFrames===!1&&this.setState(1),this.onOverSound&&this.onOverSound.play(this.onOverSoundMarker),this.onInputOver&&this.onInputOver.dispatch(this,b)},b.Button.prototype.onInputOutHandler=function(a,b){this.freezeFrames===!1&&this.setState(2),this.onOutSound&&this.onOutSound.play(this.onOutSoundMarker),this.onInputOut&&this.onInputOut.dispatch(this,b)},b.Button.prototype.onInputDownHandler=function(a,b){this.freezeFrames===!1&&this.setState(3),this.onDownSound&&this.onDownSound.play(this.onDownSoundMarker),this.onInputDown&&this.onInputDown.dispatch(this,b)},b.Button.prototype.onInputUpHandler=function(a,b,c){this.onUpSound&&this.onUpSound.play(this.onUpSoundMarker),this.onInputUp&&this.onInputUp.dispatch(this,b,c),this.freezeFrames||this.setState(this.forceOut?2:null!==this._onUpFrameName||null!==this._onUpFrameID?4:c?1:2)},b.Button.prototype.setState=function(a){1===a?null!=this._onOverFrameName?this.frameName=this._onOverFrameName:null!=this._onOverFrameID&&(this.frame=this._onOverFrameID):2===a?null!=this._onOutFrameName?this.frameName=this._onOutFrameName:null!=this._onOutFrameID&&(this.frame=this._onOutFrameID):3===a?null!=this._onDownFrameName?this.frameName=this._onDownFrameName:null!=this._onDownFrameID&&(this.frame=this._onDownFrameID):4===a&&(null!=this._onUpFrameName?this.frameName=this._onUpFrameName:null!=this._onUpFrameID&&(this.frame=this._onUpFrameID))},b.Graphics=function(a,c,d){c=c||0,d=d||0,this.game=a,this.exists=!0,this.name="",this.type=b.GRAPHICS,this.z=0,this.world=new b.Point(c,d),this.cameraOffset=new b.Point,PIXI.Graphics.call(this),this.position.set(c,d),this._cache=[0,0,0,0,1,0,1,0]},b.Graphics.prototype=Object.create(PIXI.Graphics.prototype),b.Graphics.prototype.constructor=b.Graphics,b.Graphics.prototype.preUpdate=function(){return this._cache[0]=this.world.x,this._cache[1]=this.world.y,this._cache[2]=this.rotation,this.exists&&this.parent.exists?(this.autoCull&&(this.renderable=this.game.world.camera.screenView.intersects(this.getBounds())),this.world.setTo(this.game.camera.x+this.worldTransform[2],this.game.camera.y+this.worldTransform[5]),this.visible&&(this._cache[3]=this.game.stage.currentRenderOrderID++),!0):(this.renderOrderID=-1,!1)},b.Graphics.prototype.update=function(){},b.Graphics.prototype.postUpdate=function(){1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.Graphics.prototype.destroy=function(a){"undefined"==typeof a&&(a=!0),this.clear(),this.parent&&(this.parent instanceof b.Group?this.parent.remove(this):this.parent.removeChild(this));var c=this.children.length;if(a)for(;c--;)this.children[c].destroy(a);else for(;c--;)this.removeChild(this.children[c]);this.exists=!1,this.visible=!1,this.game=null},b.Graphics.prototype.drawPolygon=function(a){this.moveTo(a.points[0].x,a.points[0].y);for(var b=1;b?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",b.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",b.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",b.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",b.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",b.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",b.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",b.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",b.RetroFont.prototype.setFixedWidth=function(a,b){"undefined"==typeof b&&(b="left"),this.fixedWidth=a,this.align=b},b.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},b.RetroFont.prototype.resize=function(a,b){if(this.width=a,this.height=b,this.frame.width=this.width,this.frame.height=this.height,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.renderer.type===PIXI.WEBGL_RENDERER){this.projection.x=this.width/2,this.projection.y=-this.height/2;var c=this.renderer.gl;c.bindTexture(c.TEXTURE_2D,this.baseTexture._glTextures[c.id]),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,this.width,this.height,0,c.RGBA,c.UNSIGNED_BYTE,null)}else this.textureBuffer.resize(this.width,this.height);PIXI.Texture.frameUpdates.push(this)},b.RetroFont.prototype.buildRetroFontText=function(){var a=0,c=0;if(this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY),this.textureBuffer.clear();for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,c,this.customSpacingX),c+=this.characterHeight+this.customSpacingY}}else{switch(this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight),this.textureBuffer.clear(),this.align){case b.RetroFont.ALIGN_LEFT:a=0;break;case b.RetroFont.ALIGN_RIGHT:a=this.width-this._text.length*(this.characterWidth+this.customSpacingX);break;case b.RetroFont.ALIGN_CENTER:a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2}this.pasteLine(this._text,a,0,this.customSpacingX)}},b.RetroFont.prototype.pasteLine=function(a,c,d,e){for(var f=new b.Point,g=0;g=0&&(this.stamp.frame=this.grabData[a.charCodeAt(g)],f.set(c,d),this.render(this.stamp,f,!1),c+=this.characterWidth+e,c>this.width))break},b.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},b.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},Object.defineProperty(b.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),b.Particle=function(a,c,d,e,f){b.Sprite.call(this,a,c,d,e,f),this.autoScale=!1,this.scaleData=null,this._s=0,this.autoAlpha=!1,this.alphaData=null,this._a=0},b.Particle.prototype=Object.create(b.Sprite.prototype),b.Particle.prototype.constructor=b.Particle,b.Particle.prototype.update=function(){this.autoScale&&(this._s--,this._s?this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y):this.autoScale=!1),this.autoAlpha&&(this._a--,this._a?this.alpha=this.alphaData[this._a].v:this.autoAlpha=!1)},b.Particle.prototype.onEmit=function(){},b.Particle.prototype.setAlphaData=function(a){this.alphaData=a,this._a=a.length-1,this.alpha=this.alphaData[this._a].v,this.autoAlpha=!0},b.Particle.prototype.setScaleData=function(a){this.scaleData=a,this._s=a.length-1,this.scale.set(this.scaleData[this._s].x,this.scaleData[this._s].y),this.autoScale=!0},b.Particle.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.world.setTo(a,b),this.position.x=a,this.position.y=b,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(a,b,!1,!1),this._cache[4]=1,this.alpha=1,this.scale.set(1),this.autoScale=!1,this.autoAlpha=!1,this},b.Canvas={create:function(a,b,c,d){if("undefined"==typeof d&&(d=!1),a=a||256,b=b||256,d)var e=document.createElement("canvas");else var e=document.createElement(navigator.isCocoonJS?"screencanvas":"canvas");return"string"==typeof c&&""!==c&&(e.id=c),e.width=a,e.height=b,e.style.display="block",e},getOffset:function(a,c){c=c||new b.Point;var d=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=0,h=0;return"CSS1Compat"===document.compatMode?(g=window.pageYOffset||document.documentElement.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||a.scrollLeft||0):(g=window.pageYOffset||document.body.scrollTop||a.scrollTop||0,h=window.pageXOffset||document.body.scrollLeft||a.scrollLeft||0),c.x=d.left+h-f,c.y=d.top+g-e,c},getAspectRatio:function(a){return a.width/a.height},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return"undefined"==typeof c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){return a.imageSmoothingEnabled=b,a.mozImageSmoothingEnabled=b,a.oImageSmoothingEnabled=b,a.webkitImageSmoothingEnabled=b,a.msImageSmoothingEnabled=b,a},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},b.Device=function(a){this.game=a,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.webGL=!1,this.worker=!1,this.touch=!1,this.mspointer=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!1,this.quirksMode=!1,this.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1,this._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures(),this._checkOS()},b.Device.prototype={_checkOS:function(){var a=navigator.userAgent;/Android/.test(a)?this.android=!0:/CrOS/.test(a)?this.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?this.iOS=!0:/Linux/.test(a)?this.linux=!0:/Mac OS/.test(a)?this.macOS=!0:/Windows/.test(a)&&(this.windows=!0,/Windows Phone/i.test(a)&&(this.windowsPhone=!0)),(this.windows||this.macOS||this.linux&&this.silk===!1)&&(this.desktop=!0),(this.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(this.desktop=!1)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D||this.cocoonJS;try{this.localStorage=!!localStorage.getItem}catch(a){this.localStorage=!1}this.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),this.fileSystem=!!window.requestFileSystem,this.webGL=function(){try{var a=document.createElement("canvas");return!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),this.webGL=null===this.webGL||this.webGL===!1?!1:!0,this.worker=!!window.Worker,("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>1)&&(this.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(this.mspointer=!0),this.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,this.quirksMode="CSS1Compat"===document.compatMode?!1:!0,this.getUserMedia=!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)},checkFullScreenSupport:function(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=0;b0,this.typedArray=!0):(this.littleEndian=!1,this.typedArray=!1),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(this.vibration=!0)},_checkCSS3D:function(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),this.css3D=void 0!==a&&a.length>0&&"none"!==a},canPlayAudio:function(a){return"mp3"==a&&this.mp3?!0:"ogg"==a&&(this.ogg||this.opus)?!0:"m4a"==a&&this.m4a?!0:"wav"==a&&this.wav?!0:"webm"==a&&this.webm?!0:!1},isConsoleOpen:function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1}},b.Device.prototype.constructor=b.Device,b.RequestAnimationFrame=function(a,b){"undefined"==typeof b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return"undefined"==typeof b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=[],b=0;b0?Math.floor(a):Math.ceil(a)},shear:function(a){return a%1},snapTo:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return"undefined"==typeof c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},snapToInArray:function(a,b,c){if("undefined"==typeof c&&(c=!0),c&&b.sort(),a=f-a?f:e},roundTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},interpolateFloat:function(a,b,c){return(b-a)*c+a},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},normalizeLatitude:function(a){return Math.max(-90,Math.min(90,a))},normalizeLongitude:function(a){return a%360==180?180:(a%=360,-180>a?a+360:a>180?a-360:a)},nearestAngleBetween:function(a,b,c){"undefined"==typeof c&&(c=!0);var d=c?Math.PI:180;return a=this.normalizeAngle(a,c),b=this.normalizeAngle(b,c),-d/2>a&&b>d/2&&(a+=2*d),-d/2>b&&a>d/2&&(b+=2*d),b-a},interpolateAngles:function(a,b,c,d,e){return"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=null),a=this.normalizeAngle(a,d),b=this.normalizeAngleToAnother(b,a,d),"function"==typeof e?e(c,a,b-a,1):this.interpolateFloat(a,b,c)},chanceRoll:function(a){return"undefined"==typeof a&&(a=50),0>=a?!1:a>=100?!0:100*Math.random()>=a?!1:!0},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},maxAdd:function(a,b,c){return a+=b,a>c&&(a=c),a},minSub:function(a,b,c){return a-=b,c>a&&(a=c),a},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},randomSign:function(){return Math.random()>.5?1:-1},isOdd:function(a){return 1&a},isEven:function(a){return 1&a?!1:!0},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){var c=b?Math.PI/180:1;return this.wrap(a,-180*c,180*c)},angleLimit:function(a,b,c){var d=a;return a>c?d=c:b>a&&(d=b),d},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},getRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0)return a[b+Math.floor(Math.random()*d)]}return null},removeRandom:function(a,b,c){if("undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),null!=a){var d=c;if((0===d||d>a.length-b)&&(d=a.length-b),d>0){var e=b+Math.floor(Math.random()*d),f=a.splice(e,1);return f[0]}}return null},floor:function(a){var b=0|a;return a>0?b:b!=a?b-1:b},ceil:function(a){var b=0|a;return a>0&&b!=a?b+1:b},sinCosGenerator:function(a,b,c,d){"undefined"==typeof b&&(b=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},shift:function(a){var b=a.shift();return a.push(b),b},shuffleArray:function(a){for(var b=a.length-1;b>0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distancePow:function(a,b,c,d,e){return"undefined"==typeof e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},distanceRounded:function(a,c,d,e){return Math.round(b.Math.distance(a,c,d,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*(3-2*a))},smootherstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*a*(a*(6*a-15)+10))},sign:function(a){return 0>a?-1:a>0?1:0},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}()},b.RandomDataGenerator=function(a){"undefined"==typeof a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},b.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){"undefined"==typeof a&&(a=[]),this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1;for(var b,c=0;b=a[c++];)this.s0-=this.hash(b),this.s0+=~~(this.s0<0),this.s1-=this.hash(b),this.s1+=~~(this.s1<0),this.s2-=this.hash(b),this.s2+=~~(this.s2<0)},hash:function(a){var b,c,d;for(d=4022871197,a=a.toString(),c=0;c>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.round(this.realInRange(a,b))},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1))]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},b.RandomDataGenerator.prototype.constructor=b.RandomDataGenerator,b.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this.reset(a,b,c,d,e,f,g) +},b.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.level++,this.nodes[0]=new b.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[1]=new b.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[2]=new b.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[3]=new b.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){var b=this.objects,c=this.getIndex(a.body);return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},b.QuadTree.prototype.constructor=b.QuadTree,b.Net=function(a){this.game=a},b.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){"undefined"==typeof c&&(c=!1),("undefined"==typeof d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){"undefined"==typeof a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},b.Net.prototype.constructor=b.Net,b.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},b.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;aa;)this._tweens[a].update(this.game.time.now)?a++:(this._tweens.splice(a,1),b--);return this._add.length>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b._object===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},b.TweenManager.prototype.constructor=b.TweenManager,b.Tween=function(a,c,d){this._object=a,this.game=c,this._manager=d,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._yoyo=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=b.Easing.Linear.None,this._interpolationFunction=b.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._paused=!1,this._pausedTime=0,this._codePaused=!1,this.pendingDelete=!1,this.onStart=new b.Signal,this.onLoop=new b.Signal,this.onComplete=new b.Signal,this.isRunning=!1},b.Tween.prototype={to:function(a,b,c,d,e,f,g){b=b||1e3,c=c||null,d=d||!1,e=e||0,f=f||0,g=g||!1;var h;return this._parent?(h=this._manager.create(this._object),this._lastChild.chain(h),this._lastChild=h):(h=this,this._parent=this,this._lastChild=this),h._repeat=f,h._duration=b,h._valuesEnd=a,null!==c&&(h._easingFunction=c),e>0&&(h._delayTime=e),h._yoyo=g,d?this.start():this},start:function(){if(null!==this.game&&null!==this._object){this._manager.add(this),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(Array.isArray(this._valuesEnd[a])){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],Array.isArray(this._valuesStart[a])||(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},generateData:function(a,b){if(null===this.game||null===this._object)return null;this._startTime=0;for(var c in this._valuesEnd){if(Array.isArray(this._valuesEnd[c])){if(0===this._valuesEnd[c].length)continue;this._valuesEnd[c]=[this._object[c]].concat(this._valuesEnd[c])}this._valuesStart[c]=this._object[c],Array.isArray(this._valuesStart[c])||(this._valuesStart[c]*=1),this._valuesStartRepeat[c]=this._valuesStart[c]||0}for(var d=0,e=Math.floor(a*(this._duration/1e3)),f=this._duration/e,g=[];e--;){var c,h=(d-this._startTime)/this._duration;h=h>1?1:h;var i=this._easingFunction(h),j={};for(c in this._valuesEnd){var k=this._valuesStart[c]||0,l=this._valuesEnd[c];l instanceof Array?j[c]=this._interpolationFunction(l,i):("string"==typeof l&&(l=k+parseFloat(l,10)),"number"==typeof l&&(j[c]=k+(l-k)*i))}g.push(j),d+=f}if(this._yoyo){var m=g.slice();m.reverse(),g=g.concat(m)}return"undefined"!=typeof b?b=b.concat(g):g},stop:function(){return this.isRunning=!1,this._onUpdateCallback=null,this._manager.remove(this),this},delay:function(a){return this._delayTime=a,this},repeat:function(a){return this._repeat=a,this},yoyo:function(a){return this._yoyo=a,this},easing:function(a){return this._easingFunction=a,this},interpolation:function(a){return this._interpolationFunction=a,this},chain:function(){return this._chainedTweens=arguments,this},loop:function(){return this._lastChild.chain(this),this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this._codePaused=!0,this._paused=!0,this._pausedTime=this.game.time.now},_pause:function(){this._codePaused||(this._paused=!0,this._pausedTime=this.game.time.now)},resume:function(){this._paused&&(this._paused=!1,this._codePaused=!1,this._startTime+=this.game.time.now-this._pausedTime)},_resume:function(){this._codePaused||(this._startTime+=this.game.time.pauseDuration,this._paused=!1)},update:function(a){if(this.pendingDelete)return!1;if(this._paused||a1?1:c;var d=this._easingFunction(c);for(b in this._valuesEnd){var e=this._valuesStart[b]||0,f=this._valuesEnd[b];f instanceof Array?this._object[b]=this._interpolationFunction(f,d):("string"==typeof f&&(f=e+parseFloat(f,10)),"number"==typeof f&&(this._object[b]=e+(f-e)*d))}if(null!==this._onUpdateCallback&&this._onUpdateCallback.call(this._onUpdateCallbackContext,this,d),1==c){if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(b in this._valuesStartRepeat){if("string"==typeof this._valuesEnd[b]&&(this._valuesStartRepeat[b]=this._valuesStartRepeat[b]+parseFloat(this._valuesEnd[b],10)),this._yoyo){var g=this._valuesStartRepeat[b];this._valuesStartRepeat[b]=this._valuesEnd[b],this._valuesEnd[b]=g,this._reversed=!this._reversed}this._valuesStart[b]=this._valuesStartRepeat[b]}return this._startTime=a+this._delayTime,this.onLoop.dispatch(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},b.Tween.prototype.constructor=b.Tween,b.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-b.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*b.Easing.Bounce.In(2*a):.5*b.Easing.Bounce.Out(2*a-1)+.5}}},b.Time=function(a){this.game=a,this.time=0,this.now=0,this.elapsed=0,this.pausedTime=0,this.advancedTiming=!1,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.physicsElapsed=0,this.deltaCap=0,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.events=new b.Timer(this.game,!1),this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[],this._len=0,this._i=0},b.Time.prototype={boot:function(){this._started=Date.now(),this.events.start()},create:function(a){"undefined"==typeof a&&(a=!0);var c=new b.Timer(this.game,a);return this._timers.push(c),c},removeAll:function(){for(var a=0;a0&&this.physicsElapsed>this.deltaCap&&(this.physicsElapsed=this.deltaCap),this.advancedTiming&&(this.msMin=this.game.math.min(this.msMin,this.elapsed),this.msMax=this.game.math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=this.game.math.min(this.fpsMin,this.fps),this.fpsMax=this.game.math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)),this.time=this.now,this.lastTime=a+this.timeToCall,!this.game.paused)for(this.events.update(this.now),this._i=0,this._len=this._timers.length;this._i0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this._now=a,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args),this.events[this._i].pendingDelete=!0),this._i++;this.events.length>0?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0,this._codePaused=!0)},_pause:function(){this.running&&!this.expired&&(this._pauseStarted=this.game.time.now,this.paused=!0)},resume:function(){if(this.running&&!this.expired){var a=this.game.time.now-this._pauseStarted;this._pauseTotal+=a;for(var b=0;bthis._now?this.nextTick-this._now:0}}),Object.defineProperty(b.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(b.Timer.prototype,"ms",{get:function(){return this._now-this._started-this._pauseTotal}}),Object.defineProperty(b.Timer.prototype,"seconds",{get:function(){return.001*this.ms}}),b.Timer.prototype.constructor=b.Timer,b.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},b.TimerEvent.prototype.constructor=b.TimerEvent,b.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},b.AnimationManager.prototype={loadFrameData:function(a){this._frameData=a,this.frame=0,this.isLoaded=!0},add:function(a,c,d,e,f){return null==this._frameData?void console.warn("No FrameData available for Phaser.Animation "+a):(c=c||[],d=d||60,"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=c&&"number"==typeof c[0]?!0:!1),null==this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new b.Signal,this.sprite.events.onAnimationComplete=new b.Signal,this.sprite.events.onAnimationLoop=new b.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(c,f,this._outputFrames),this._anims[a]=new b.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1),this._anims[a])},validateFrames:function(a,b){"undefined"==typeof b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){if(this._anims[a]){if(this.currentAnim!==this._anims[a])return this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentAnim.play(b,c,d);if(this.currentAnim.isPlaying===!1)return this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)}},stop:function(a,b){"undefined"==typeof b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},b.AnimationManager.prototype.constructor=b.AnimationManager,Object.defineProperty(b.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(b.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData?this._frameData.total:-1}}),Object.defineProperty(b.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(b.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this._frameIndex:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&(this._frameIndex=a,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1)))}}),Object.defineProperty(b.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this.sprite.__tilePattern&&(this.__tilePattern=!1,this.tilingTexture=!1))):console.warn("Cannot set frameName: "+a)}}),b.Animation=function(a,c,d,e,f,g,h){this.game=a,this._parent=c,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new b.Signal,this.onComplete=new b.Signal,this.onLoop=new b.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},b.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1),this._parent.events.onAnimationStart.dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.now,this._timeNextFrame=this.game.time.now+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart.dispatch(this._parent,this)},stop:function(a,b){"undefined"==typeof a&&(a=!1),"undefined"==typeof b&&(b=!1),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,a&&(this.currentFrame=this._frameData.getFrame(this._frames[0])),b&&(this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this))},onPause:function(){this.isPlaying&&(this._frameDiff=this._timeNextFrame-this.game.time.now)},onResume:function(){this.isPlaying&&(this._timeNextFrame=this.game.time.now+this._frameDiff)},update:function(){return this.isPaused?!1:this.isPlaying===!0&&this.game.time.now>=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.now-this._timeNextFrame,this._timeLastFrame=this.game.time.now,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.now+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1)),this.loopCount++,this._parent.events.onAnimationLoop.dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this)):this.complete():(this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]),this._parent.__tilePattern&&(this._parent.__tilePattern=!1,this._parent.tilingTexture=!1))),!0):!1},destroy:function(){this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this)},complete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},b.Animation.prototype.constructor=b.Animation,Object.defineProperty(b.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.now:this.isPlaying&&(this._timeNextFrame=this.game.time.now+this.delay)}}),Object.defineProperty(b.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(b.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setTexture(PIXI.TextureCache[this.currentFrame.uuid]))}}),Object.defineProperty(b.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),b.Animation.generateFrameNames=function(a,c,d,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(d>c)for(var i=c;d>=i;i++)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=c;i>=d;i--)h="number"==typeof f?b.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},b.Frame=function(a,c,d,e,f,g,h){this.index=a,this.x=c,this.y=d,this.width=e,this.height=f,this.name=g,this.uuid=h,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=b.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0},b.Frame.prototype={setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.width=b,this.height=c,this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},getRect:function(a){return"undefined"==typeof a?a=new b.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},b.Frame.prototype.constructor=b.Frame,b.FrameData=function(){this._frames=[],this._frameNames=[]},b.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},getFrameRange:function(a,b,c){"undefined"==typeof c&&(c=[]);for(var d=a;b>=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0;dd;d++)c.push(b?this.getFrame(a[d]):this.getFrameByName(a[d]));return c},getFrameIndexes:function(a,b,c){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=[]),"undefined"==typeof a||0===a.length)for(var d=0,e=this._frames.length;e>d;d++)c.push(this._frames[d].index);else for(var d=0,e=a.length;e>d;d++)b?c.push(a[d]):this.getFrameByName(a[d])&&c.push(this.getFrameByName(a[d]).index);return c}},b.FrameData.prototype.constructor=b.FrameData,Object.defineProperty(b.FrameData.prototype,"total",{get:function(){return this._frames.length}}),b.AnimationParser={spriteSheet:function(a,c,d,e,f,g,h){var i=a.cache.getImage(c);if(null==i)return null;var j=i.width,k=i.height;0>=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new b.FrameData,p=g,q=g,r=0;n>r;r++){var s=a.rnd.uuid();o.addFrame(new b.Frame(r,p,q,d,e,"",s)),PIXI.TextureCache[s]=new PIXI.Texture(PIXI.BaseTextureCache[c],{x:p,y:q,width:d,height:e}),p+=d+h,p+d>j&&(p=g,q+=e+h)}return o},JSONData:function(a,c,d){if(!c.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(c);for(var e,f=new b.FrameData,g=c.frames,h=0;h tag");for(var e,f,g,h,i,j,k,l,m,n,o,p,q=new b.FrameData,r=c.getElementsByTagName("SubTexture"),s=0;s0)for(var c=0;c0)for(var c=0;c0)for(var c=0;c0?(this._fileIndex=0,this._progressChunk=100/this._fileList.length,this.loadFile()):(this.progress=100,this.progressFloat=100,this.hasLoaded=!0,this.onLoadComplete.dispatch()))},loadFile:function(){if(!this._fileList[this._fileIndex])return void console.warn("Phaser.Loader loadFile invalid index "+this._fileIndex);var a=this._fileList[this._fileIndex],c=this;switch(this.onFileStart.dispatch(this.progress,a.key),a.type){case"image":case"spritesheet":case"textureatlas":case"bitmapfont":a.data=new Image,a.data.name=a.key,a.data.onload=function(){return c.fileComplete(c._fileIndex)},a.data.onerror=function(){return c.fileError(c._fileIndex)},this.crossOrigin&&(a.data.crossOrigin=this.crossOrigin),a.data.src=this.baseURL+a.url;break;case"audio":a.url=this.getAudioURL(a.url),null!==a.url?this.game.sound.usingWebAudio?(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()):this.game.sound.usingAudioTag&&(this.game.sound.touchLocked?(a.data=new Audio,a.data.name=a.key,a.data.preload="auto",a.data.src=this.baseURL+a.url,this.fileComplete(this._fileIndex)):(a.data=new Audio,a.data.name=a.key,a.data.onerror=function(){return c.fileError(c._fileIndex)},a.data.preload="auto",a.data.src=this.baseURL+a.url,a.data.addEventListener("canplaythrough",b.GAMES[this.game.id].load.fileComplete(this._fileIndex),!1),a.data.load())):this.fileError(this._fileIndex);break;case"json":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)},this._xhr.send();break;case"tilemap":if(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",a.format===b.Tilemap.TILED_JSON)this._xhr.onload=function(){return c.jsonLoadComplete(c._fileIndex)};else{if(a.format!==b.Tilemap.CSV)throw new Error("Phaser.Loader. Invalid Tilemap format: "+a.format);this._xhr.onload=function(){return c.csvLoadComplete(c._fileIndex)}}this._xhr.onerror=function(){return c.dataLoadError(c._fileIndex)},this._xhr.send();break;case"text":case"script":case"physics":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send();break;case"binary":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="arraybuffer",this._xhr.onload=function(){return c.fileComplete(c._fileIndex)},this._xhr.onerror=function(){return c.fileError(c._fileIndex)},this._xhr.send()}},getAudioURL:function(a){var b;"string"==typeof a&&(a=[a]);for(var c=0;c100&&(this.progress=100),null!==this.preloadSprite&&(0===this.preloadSprite.direction?(this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect)):(this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.crop(this.preloadSprite.rect))),this.onFileComplete.dispatch(this.progress,this._fileList[a].key,b,this.totalLoadedFiles(),this._fileList.length),this.totalQueuedFiles()>0?(this._fileIndex++,this.loadFile()):(this.hasLoaded=!0,this.isLoading=!1,this.removeAll(),this.onLoadComplete.dispatch())},totalLoadedFiles:function(){for(var a=0,b=0;b=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop()))},play:function(a,b,c,d,e){if("undefined"==typeof a&&(a=""),"undefined"==typeof e&&(e=!0),this.isPlaying!==!0||e!==!1||this.override!==!1){if(this.isPlaying&&this.override&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.currentMarker=a,""!==a){if(!this.markers[a])return void console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist");this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(null==this._buffer&&(this._buffer=this.game.cache.getSoundData(this.key)),this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this.loop&&""===a&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.now,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0}},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,"undefined"==typeof d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.stop(),this.isPlaying=!1,this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.now,this.onPause.dispatch(this))},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode.input:this.gainNode),this.loop&&(this._sound.loop=!0),"undefined"==typeof this._sound.start?this._sound.noteGrainOn(0,a,this.duration):this._sound.start(0,a,this.duration)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.now-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){this.isPlaying&&this._sound&&(this.usingWebAudio?"undefined"==typeof this._sound.stop?this._sound.noteOff(0):this._sound.stop(0):this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0)),this.isPlaying=!1;var a=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",this.onStop.dispatch(this,a)},destroy:function(a){"undefined"==typeof a&&(a=!0),this.stop(),a&&this.game.sound.remove(this),this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose()}},b.Sound.prototype.constructor=b.Sound,Object.defineProperty(b.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(b.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(b.Sound.prototype,"mute",{get:function(){return this._muted},set:function(a){a=a||null,a?(this._muted=!0,this.usingWebAudio?(this._muteVolume=this.gainNode.gain.value,this.gainNode.gain.value=0):this.usingAudioTag&&this._sound&&(this._muteVolume=this._sound.volume,this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this)}}),Object.defineProperty(b.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){this.usingWebAudio?(this._volume=a,this.gainNode.gain.value=a):this.usingAudioTag&&this._sound&&a>=0&&1>=a&&(this._volume=a,this._sound.volume=a) +}}),b.SoundManager=function(a){this.game=a,this.onSoundDecode=new b.Signal,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this.context=null,this.usingWebAudio=!0,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32},b.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?(this.game.input.touch.callbackContext=this,this.game.input.touch.touchStartCallback=this.unlock,this.game.input.mouse.callbackContext=this,this.game.input.mouse.mouseDownCallback=this.unlock,this.touchLocked=!0):this.touchLocked=!1,window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.usingWebAudio=!1,void(this.noAudio=!0);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,void(this.noAudio=!1)}if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.noAudio=!0}window.Audio&&null===this.context&&(this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1),null!==this.context&&(this.masterGain="undefined"==typeof this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination))},unlock:function(){if(this.touchLocked!==!1)if(this.game.device.webAudio===!1||window.PhaserGlobal&&window.PhaserGlobal.disableWebAudio===!0)this.touchLocked=!1,this._unlockSource=null,this.game.input.touch.callbackContext=null,this.game.input.touch.touchStartCallback=null,this.game.input.mouse.callbackContext=null,this.game.input.mouse.mouseDownCallback=null;else{var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),this._unlockSource.noteOn(0)}},stopAll:function(){for(var a=0;a255)return b.Color.getColor(255,255,255);if(a>c)return b.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(c-a)),f=a+Math.round(Math.random()*(c-a)),g=a+Math.round(Math.random()*(c-a));return b.Color.getColor32(d,e,f,g)},getRGB:function(a){return{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a}},getWebRGB:function(a){var b=(a>>>24)/255,c=a>>16&255,d=a>>8&255,e=255&a;return"rgba("+c.toString()+","+d.toString()+","+e.toString()+","+b.toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a}},b.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.parseConfig()},b.Physics.ARCADE=0,b.Physics.P2JS=1,b.Physics.NINJA=2,b.Physics.BOX2D=3,b.Physics.CHIPMUNK=5,b.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!b.Physics.hasOwnProperty("Arcade")||(this.arcade=new b.Physics.Arcade(this.game),this.game.time.deltaCap=.2),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&b.Physics.hasOwnProperty("Ninja")&&(this.ninja=new b.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&b.Physics.hasOwnProperty("P2")&&(this.p2=new b.Physics.P2(this.game,this.config))},startSystem:function(a){if(a===b.Physics.ARCADE?this.arcade=new b.Physics.Arcade(this.game):a===b.Physics.P2JS&&(this.p2=new b.Physics.P2(this.game,this.config)),a===b.Physics.NINJA)this.ninja=new b.Physics.Ninja(this.game);else{if(a===b.Physics.BOX2D&&null===this.box2d)throw new Error("The Box2D physics system has not been implemented yet.");if(a===b.Physics.CHIPMUNK&&null===this.chipmunk)throw new Error("The Chipmunk physics system has not been implemented yet.")}},enable:function(a,c,d){"undefined"==typeof c&&(c=b.Physics.ARCADE),"undefined"==typeof d&&(d=!1),c===b.Physics.ARCADE?this.arcade.enable(a):c===b.Physics.P2JS&&this.p2?this.p2.enable(a,d):c===b.Physics.NINJA&&this.ninja&&this.ninja.enableAABB(a)},preUpdate:function(){this.p2&&this.p2.preUpdate()},update:function(){this.p2&&this.p2.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear()},destroy:function(){this.p2&&this.p2.destroy(),this.arcade=null,this.ninja=null,this.p2=null}},b.Physics.prototype.constructor=b.Physics,b.Physics.Arcade=function(a){this.game=a,this.gravity=new b.Point,this.bounds=new b.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.TILE_BIAS=16,this.forceX=!1,this.quadTree=new b.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0},b.Physics.Arcade.prototype.constructor=b.Physics.Arcade,b.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},enable:function(a,c){"undefined"==typeof c&&(c=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof b.Group?this.enable(a[d].children,c):(this.enableBody(a[d]),c&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof b.Group?this.enable(a.children,c):(this.enableBody(a),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new b.Physics.Arcade.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2==a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,c,d,e,f,g){return"undefined"!=typeof c||a.type!==b.GROUP&&a.type!==b.EMITTER?void(a&&c&&a.exists&&c.exists&&(a.type==b.SPRITE||a.type==b.TILESPRITE?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsSprite(a,c,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideSpriteVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,c,d,e,f):a.type==b.GROUP?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f):a.type==b.TILEMAPLAYER?c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsTilemapLayer(c,a,d,e,f):(c.type==b.GROUP||c.type==b.EMITTER)&&this.collideGroupVsTilemapLayer(c,a,d,e,f):a.type==b.EMITTER&&(c.type==b.SPRITE||c.type==b.TILESPRITE?this.collideSpriteVsGroup(c,a,d,e,f,g):c.type==b.GROUP||c.type==b.EMITTER?this.collideGroupVsGroup(a,c,d,e,f,g):c.type==b.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,c,d,e,f)))):void this.collideGroupVsSelf(a,d,e,f,g)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)}},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(this._mapData=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1),0!==this._mapData.length)for(var f=0;ff;f++)a.children[f].exists&&this.collideSpriteVsTilemapLayer(a.children[f],b,c,d,e)},separate:function(a,b,c,d,e){return this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.right-b.x,this._overlap>this._maxOverlap||a.checkCollision.right===!1||b.checkCollision.left===!1?this._overlap=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.checkCollision.left===!1||b.checkCollision.right===!1?this._overlap=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.bottom-b.y,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y,a.moves&&(b.x+=a.x-a.prev.x)):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y,b.moves&&(a.x+=b.x-b.prev.x)):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateTile:function(a,b,c){if(!c.intersects(b.position.x,b.position.y,b.right,b.bottom))return!1;if(c.collisionCallback&&!c.collisionCallback.call(c.collisionCallbackContext,b.sprite,c))return!1;if(c.layer.callbacks[c.index]&&!c.layer.callbacks[c.index].callback.call(c.layer.callbacks[c.index].callbackContext,b.sprite,c))return!1;if(!(c.faceLeft||c.faceRight||c.faceTop||c.faceBottom))return!1;var d=0,e=0,f=0,g=1;if(b.deltaAbsX()>b.deltaAbsY()?f=-1:b.deltaAbsX()f){if((c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c),0!==d&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(e=this.tileCheckY(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(d=this.tileCheckX(b,c))}return 0!==d||0!==e},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationX(a,c),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&this.processTileSeparationY(a,c),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y},moveToObject:function(a,b,c,d){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=0),this._angle=Math.atan2(b.y-a.y,b.x-a.x),d>0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*c,a.body.velocity.y=Math.sin(this._angle)*c,this._angle},moveToPointer:function(a,b,c,d){return"undefined"==typeof b&&(b=60),c=c||this.game.input.activePointer,"undefined"==typeof d&&(d=0),this._angle=this.angleToPointer(a,c),d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(this._angle)*b,a.body.velocity.y=Math.sin(this._angle)*b,this._angle},moveToXY:function(a,b,c,d,e){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=0),this._angle=Math.atan2(c-a.y,b-a.x),e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(this._angle)*d,a.body.velocity.y=Math.sin(this._angle)*d,this._angle},velocityFromAngle:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*c,Math.sin(this.game.math.degToRad(a))*c)},velocityFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerationFromRotation:function(a,c,d){return"undefined"==typeof c&&(c=60),d=d||new b.Point,d.setTo(Math.cos(a)*c,Math.sin(a)*c)},accelerateToObject:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleBetween(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToPointer:function(a,b,c,d,e){return"undefined"==typeof c&&(c=60),"undefined"==typeof b&&(b=this.game.input.activePointer),"undefined"==typeof d&&(d=1e3),"undefined"==typeof e&&(e=1e3),this._angle=this.angleToPointer(a,b),a.body.acceleration.setTo(Math.cos(this._angle)*c,Math.sin(this._angle)*c),a.body.maxVelocity.setTo(d,e),this._angle},accelerateToXY:function(a,b,c,d,e,f){return"undefined"==typeof d&&(d=60),"undefined"==typeof e&&(e=1e3),"undefined"==typeof f&&(f=1e3),this._angle=this.angleToXY(a,b,c),a.body.acceleration.setTo(Math.cos(this._angle)*d,Math.sin(this._angle)*d),a.body.maxVelocity.setTo(e,f),this._angle},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=a.x-b.x,this._dy=a.y-b.y,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},angleBetween:function(a,b){return this._dx=b.x-a.x,this._dy=b.y-a.y,Math.atan2(this._dy,this._dx)},angleToXY:function(a,b,c){return this._dx=b-a.x,this._dy=c-a.y,Math.atan2(this._dy,this._dx)},angleToPointer:function(a,b){return b=b||this.game.input.activePointer,this._dx=b.worldX-a.x,this._dy=b.worldY-a.y,Math.atan2(this._dy,this._dx)}},b.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=b.Physics.ARCADE,this.offset=new b.Point,this.position=new b.Point(a.x,a.y),this.prev=new b.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.width=a.width,this.height=a.height,this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new b.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new b.Point,this.newVelocity=new b.Point(0,0),this.deltaMax=new b.Point(0,0),this.acceleration=new b.Point,this.drag=new b.Point,this.allowGravity=!0,this.gravity=new b.Point(0,0),this.bounce=new b.Point,this.maxVelocity=new b.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=b.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new b.Point,this.phase=0,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0 +},b.Physics.Arcade.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.width=this.sourceWidth*a,this.height=this.sourceHeight*b,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this._reset=!0)},preUpdate:function(){this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1},postUpdate:function(){2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=b.LEFT:this.deltaX()>0&&(this.facing=b.RIGHT),this.deltaY()<0?this.facing=b.UP:this.deltaY()>0&&(this.facing=b.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.x+=this._dx,this.sprite.y+=this._dy),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.arcade.bounds.right&&this.game.physics.arcade.checkCollision.right&&(this.position.x=this.game.physics.arcade.bounds.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),this.position.ythis.game.physics.arcade.bounds.bottom&&this.game.physics.arcade.checkCollision.down&&(this.position.y=this.game.physics.arcade.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){c=c||this.offset.x,d=d||this.offset.y,this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,c){return b.Rectangle.contains(this,a,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(b.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(b.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),b.Physics.Arcade.Body.render=function(a,b,c,d){"undefined"==typeof c&&(c=!0),d=d||"rgba(0,255,0,0.4)",c?(a.fillStyle=d,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=d,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},b.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},b.Physics.Arcade.Body.prototype.constructor=b.Physics.Arcade.Body,b.Particles=function(a){this.game=a,this.emitters={},this.ID=0},b.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},b.Particles.prototype.constructor=b.Particles,b.Particles.Arcade={},b.Particles.Arcade.Emitter=function(a,c,d,e){this.maxParticles=e||50,b.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=b.EMITTER,this.width=1,this.height=1,this.minParticleSpeed=new b.Point(-100,-100),this.maxParticleSpeed=new b.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.scaleData=null,this.minRotation=-360,this.maxRotation=360,this.minParticleAlpha=1,this.maxParticleAlpha=1,this.alphaData=null,this.gravity=100,this.particleClass=b.Particle,this.particleDrag=new b.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new b.Point,this.on=!1,this.particleAnchor=new b.Point(.5,.5),this.blendMode=b.blendModes.NORMAL,this.emitX=c,this.emitY=d,this.autoScale=!1,this.autoAlpha=!1,this.particleBringToTop=!1,this.particleSendToBack=!1,this._minParticleScale=new b.Point(1,1),this._maxParticleScale=new b.Point(1,1),this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this._frames=null},b.Particles.Arcade.Emitter.prototype=Object.create(b.Group.prototype),b.Particles.Arcade.Emitter.prototype.constructor=b.Particles.Arcade.Emitter,b.Particles.Arcade.Emitter.prototype.update=function(){if(this.on)if(this._explode){this._counter=0;do this.emitParticle(),this._counter++;while(this._counter=this._timer&&(this.emitParticle(),this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1),this._timer=this.game.time.now+this.frequency);for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},b.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=this.maxParticles),"undefined"==typeof d&&(d=!1),"undefined"==typeof e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b;c>g;)"object"==typeof a&&(h=this.game.rnd.pick(a)),"object"==typeof b&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},b.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},b.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},b.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d){"undefined"==typeof a&&(a=!0),"undefined"==typeof b&&(b=0),("undefined"==typeof c||null===c)&&(c=250),"undefined"==typeof d&&(d=0),this.revive(),this.visible=!0,this.on=!0,this._explode=a,this.lifespan=b,this.frequency=c,a?this._quantity=d:this._quantity+=d,this._counter=0,this._timer=this.game.time.now+c},b.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);null!==a&&(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):this.minParticleScale!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.integerInRange(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit())},b.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.width=a,this.height=b},b.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},b.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},b.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},b.Particles.Arcade.Emitter.prototype.setAlpha=function(a,c,d,e,f){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=b.Easing.Linear.None),"undefined"==typeof f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=c,this.autoAlpha=!1,d>0&&a!==c){var g={v:a},h=this.game.make.tween(g).to({v:c},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},b.Particles.Arcade.Emitter.prototype.setScale=function(a,c,d,e,f,g,h){if("undefined"==typeof a&&(a=1),"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=1),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=b.Easing.Linear.None),"undefined"==typeof h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(c,e),this.autoScale=!1,f>0&&a!==c||d!==e){var i={x:a,y:d},j=this.game.make.tween(i).to({x:c,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},b.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.width/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.height/2)}}),Object.defineProperty(b.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.height/2)}}),b.Tile=function(a,b,c,d,e,f){this.layer=a,this.index=b,this.x=c,this.y=d,this.worldX=c*e,this.worldY=d*f,this.width=e,this.height=f,this.centerX=Math.abs(e/2),this.centerY=Math.abs(f/2),this.alpha=1,this.properties={},this.scanned=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.collisionCallback=null,this.collisionCallbackContext=this},b.Tile.prototype={containsPoint:function(a,b){return!(athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},b.Tile.prototype.constructor=b.Tile,Object.defineProperty(b.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(b.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(b.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(b.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(b.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(b.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),b.Tilemap=function(a,c,d,e,f,g){this.game=a,this.key=c;var h=b.TilemapParser.parse(this.game,c,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},b.Tilemap.CSV=0,b.Tilemap.TILED_JSON=1,b.Tilemap.prototype={create:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,c,d,e,f,g,h){if("undefined"==typeof d&&(d=this.tileWidth),"undefined"==typeof e&&(e=this.tileHeight),"undefined"==typeof f&&(f=0),"undefined"==typeof g&&(g=0),"undefined"==typeof h&&(h=0),0===d&&(d=32),0===e&&(e=32),"undefined"==typeof c){if("string"!=typeof a)return null;c=a}if("string"==typeof a&&(a=this.getTilesetIndex(a)),this.tilesets[a])return this.tilesets[a].setImage(this.game.cache.getImage(c)),this.tilesets[a];var i=new b.Tileset(c,h,d,e,f,g,{});i.setImage(this.game.cache.getImage(c)),this.tilesets.push(i);for(var j=this.tilesets.length-1,k=f,l=f,m=0,n=0,o=0,p=h;pl;l++)if(this.objects[a][l].gid===c){k=new i(this.game,this.objects[a][l].x,this.objects[a][l].y,d,e),k.name=this.objects[a][l].name,k.visible=this.objects[a][l].visible,k.autoCull=g,k.exists=f,j&&(k.y-=k.height),h.add(k);for(var n in this.objects[a][l].properties)h.set(k,n,this.objects[a][l].properties[n],!1,!1,0)}},createLayer:function(a,c,d,e){"undefined"==typeof c&&(c=this.game.width),"undefined"==typeof d&&(d=this.game.height),"undefined"==typeof e&&(e=this.game.world);var f=a;return"string"==typeof a&&(f=this.getLayerIndex(a)),null===f||f>this.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new b.TilemapLayer(this.game,this,f,c,d))},createBlankLayer:function(a,c,d,e,f,g){if("undefined"==typeof g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i=[],j=0;d>j;j++){h=[];for(var k=0;c>k;k++)h.push(null);i.push(h)}var l={name:a,x:0,y:0,width:c,height:d,widthInPixels:c*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:i};this.layers.push(l),this.currentLayer=this.layers.length-1;var m=l.widthInPixels,n=l.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var i=new b.TilemapLayer(this.game,this,this.layers.length-1,m,n);return i.name=a,g.add(i)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hd;d++)this.setCollisionByIndex(a[d],b,c,!1);this.calculateFaces(c)},setCollisionBetween:function(a,b,c,d){if("undefined"==typeof c&&(c=!0),d=this.getLayer(d),!(a>b)){for(var e=a;b>=e;e++)this.setCollisionByIndex(e,c,d,!1);this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c){"undefined"==typeof b&&(b=!0),c=this.getLayer(c);for(var d=0,e=this.tiles.length;e>d;d++)-1===a.indexOf(d)&&this.setCollisionByIndex(d,b,c,!1);this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if("undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=this.currentLayer),"undefined"==typeof d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b=0&&a=0&&b=0&&c=0&&d-1?this.layers[e].data[d][c].setCollision(!0,!0,!0,!0):this.layers[e].data[d][c].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][c]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},getTile:function(a,b,c){return c=this.getLayer(c),a>=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if("undefined"==typeof a&&(a=0),"undefined"==typeof b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=c[1].x-a,f=c[1].y-b,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},b.Tilemap.prototype.constructor=b.Tilemap,b.TilemapLayer=function(a,c,d,e,f){this.game=a,this.map=c,this.index=d,this.layer=c.layers[d],this.canvas=b.Canvas.create(e,f,"",!0),this.context=this.canvas.getContext("2d"),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new b.Frame(0,0,0,e,f,"tilemapLayer",a.rnd.uuid()),b.Image.call(this,this.game,0,0,this.texture,this.textureFrame),this.name="",this.type=b.TILEMAPLAYER,this.fixedToCamera=!0,this.cameraOffset=new b.Point(0,0),this.tileColor="rgb(255, 255, 255)",this.debug=!1,this.debugAlpha=.5,this.debugColor="rgba(0, 255, 0, 1)",this.debugFill=!1,this.debugFillColor="rgba(0, 255, 0, 0.2)",this.debugCallbackColor="rgba(255, 0, 0, 1)",this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._mc={cw:c.tileWidth,ch:c.tileHeight,ga:1,dx:0,dy:0,dw:0,dh:0,tx:0,ty:0,tw:0,th:0,tl:0,maxX:0,maxY:0,startX:0,startY:0,x:0,y:0,prevX:0,prevY:0},this._results=[],this.updateMax()},b.TilemapLayer.prototype=Object.create(b.Image.prototype),b.TilemapLayer.prototype.constructor=b.TilemapLayer,b.TilemapLayer.prototype.postUpdate=function(){b.Image.prototype.postUpdate.call(this),this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render(),1===this._cache[7]&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y)},b.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels,this.layer.heightInPixels)},b.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._mc.x+(a-this._mc.x/this.scrollFactorX)},b.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._mc.x/this.scrollFactorX+(a-this._mc.x)},b.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._mc.y+(a-this._mc.y/this.scrollFactorY)},b.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._mc.y/this.scrollFactorY+(a-this._mc.y)},b.TilemapLayer.prototype.getTileX=function(a){return this.game.math.snapToFloor(this._fixX(a),this.map.tileWidth)/this.map.tileWidth},b.TilemapLayer.prototype.getTileY=function(a){return this.game.math.snapToFloor(this._fixY(a),this.map.tileHeight)/this.map.tileHeight},b.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},b.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){("undefined"==typeof b||null===b)&&(b=this.rayStepRate),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=f.length,h=[],i=0;ij;j++)if(e[i].containsPoint(f[j][0],f[j][1])){h.push(e[i]);break}return h},b.TilemapLayer.prototype.getTiles=function(a,b,c,d,e,f){"undefined"==typeof e&&(e=!1),"undefined"==typeof f&&(f=!1),a=this._fixX(a),b=this._fixY(b),c>this.layer.widthInPixels&&(c=this.layer.widthInPixels),d>this.layer.heightInPixels&&(d=this.layer.heightInPixels),this._mc.tx=this.game.math.snapToFloor(a,this._mc.cw)/this._mc.cw,this._mc.ty=this.game.math.snapToFloor(b,this._mc.ch)/this._mc.ch,this._mc.tw=(this.game.math.snapToCeil(c,this._mc.cw)+this._mc.cw)/this._mc.cw,this._mc.th=(this.game.math.snapToCeil(d,this._mc.ch)+this._mc.ch)/this._mc.ch,this._results.length=0;for(var g=this._mc.ty;gthis.layer.width&&(this._mc.maxX=this.layer.width),this._mc.maxY>this.layer.height&&(this._mc.maxY=this.layer.height)),this.dirty=!0},b.TilemapLayer.prototype.render=function(){if(this.layer.dirty&&(this.dirty=!0),this.dirty&&this.visible){this._mc.prevX=this._mc.dx,this._mc.prevY=this._mc.dy,this._mc.dx=-(this._mc.x-this._mc.startX*this.map.tileWidth),this._mc.dy=-(this._mc.y-this._mc.startY*this.map.tileHeight),this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.fillStyle=this.tileColor;var a,c;this.debug&&(this.context.globalAlpha=this.debugAlpha); for(var d=this._mc.startY,e=this._mc.startY+this._mc.maxY;e>d;d++){this._column=this.layer.data[d];for(var f=this._mc.startX,g=this._mc.startX+this._mc.maxX;g>f;f++)this._column[f]&&(a=this._column[f],c=this.map.tilesets[this.map.tiles[a.index][2]],this.debug===!1&&a.alpha!==this.context.globalAlpha&&(this.context.globalAlpha=a.alpha),c.draw(this.context,Math.floor(this._mc.tx),Math.floor(this._mc.ty),a.index),a.debug&&(this.context.fillStyle="rgba(0, 255, 0, 0.4)",this.context.fillRect(Math.floor(this._mc.tx),Math.floor(this._mc.ty),this.map.tileWidth,this.map.tileHeight))),this._mc.tx+=this.map.tileWidth;this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}return this.debug&&(this.context.globalAlpha=1,this.renderDebug()),this.game.renderType===b.WEBGL&&PIXI.updateWebGLTexture(this.baseTexture,this.game.renderer.gl),this.dirty=!1,this.layer.dirty=!1,!0}},b.TilemapLayer.prototype.renderDebug=function(){this._mc.tx=this._mc.dx,this._mc.ty=this._mc.dy,this.context.strokeStyle=this.debugColor,this.context.fillStyle=this.debugFillColor;for(var a=this._mc.startY,b=this._mc.startY+this._mc.maxY;b>a;a++){this._column=this.layer.data[a];for(var c=this._mc.startX,d=this._mc.startX+this._mc.maxX;d>c;c++){var e=this._column[c];e&&(e.faceTop||e.faceBottom||e.faceLeft||e.faceRight)&&(this._mc.tx=Math.floor(this._mc.tx),this.debugFill&&this.context.fillRect(this._mc.tx,this._mc.ty,this._mc.cw,this._mc.ch),this.context.beginPath(),e.faceTop&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty)),e.faceBottom&&(this.context.moveTo(this._mc.tx,this._mc.ty+this._mc.ch),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),e.faceLeft&&(this.context.moveTo(this._mc.tx,this._mc.ty),this.context.lineTo(this._mc.tx,this._mc.ty+this._mc.ch)),e.faceRight&&(this.context.moveTo(this._mc.tx+this._mc.cw,this._mc.ty),this.context.lineTo(this._mc.tx+this._mc.cw,this._mc.ty+this._mc.ch)),this.context.stroke()),this._mc.tx+=this.map.tileWidth}this._mc.tx=this._mc.dx,this._mc.ty+=this.map.tileHeight}},Object.defineProperty(b.TilemapLayer.prototype,"scrollX",{get:function(){return this._mc.x},set:function(a){a!==this._mc.x&&a>=0&&this.layer.widthInPixels>this.width&&(this._mc.x=a,this._mc.x>this.layer.widthInPixels-this.width&&(this._mc.x=this.layer.widthInPixels-this.width),this._mc.startX=this.game.math.floor(this._mc.x/this.map.tileWidth),this._mc.startX<0&&(this._mc.startX=0),this._mc.startX+this._mc.maxX>this.layer.width&&(this._mc.startX=this.layer.width-this._mc.maxX),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"scrollY",{get:function(){return this._mc.y},set:function(a){a!==this._mc.y&&a>=0&&this.layer.heightInPixels>this.height&&(this._mc.y=a,this._mc.y>this.layer.heightInPixels-this.height&&(this._mc.y=this.layer.heightInPixels-this.height),this._mc.startY=this.game.math.floor(this._mc.y/this.map.tileHeight),this._mc.startY<0&&(this._mc.startY=0),this._mc.startY+this._mc.maxY>this.layer.height&&(this._mc.startY=this.layer.height-this._mc.maxY),this.dirty=!0)}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=a,this.dirty=!0}}),Object.defineProperty(b.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=a,this.dirty=!0}}),b.TilemapParser={parse:function(a,c,d,e,f,g){if("undefined"==typeof d&&(d=32),"undefined"==typeof e&&(e=32),"undefined"==typeof f&&(f=10),"undefined"==typeof g&&(g=10),"undefined"==typeof c)return this.getEmptyData();if(null===c)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(c);if(h){if(h.format===b.Tilemap.CSV)return this.parseCSV(c,h.data,d,e);if(!h.format||h.format===b.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+c)},parseCSV:function(a,c,d,e){var f=this.getEmptyData();c=c.trim();for(var g=[],h=c.split("\n"),i=h.length,j=0,k=0;kj;j++)h.push(a.layers[e].data[j]>0?new b.Tile(f,a.layers[e].data[j],g,i.length,a.tilewidth,a.tileheight):null),g++,g===a.layers[e].width&&(i.push(h),g=0,h=[]);f.data=i,d.push(f)}c.layers=d;for(var l=[],e=0;es;s++)if(a.layers[e].objects[s].gid){var t={gid:a.layers[e].objects[s].gid,name:a.layers[e].objects[s].name,x:a.layers[e].objects[s].x,y:a.layers[e].objects[s].y,visible:a.layers[e].objects[s].visible,properties:a.layers[e].objects[s].properties};q[a.layers[e].name].push(t)}else if(a.layers[e].objects[s].polyline){var t={name:a.layers[e].objects[s].name,x:a.layers[e].objects[s].x,y:a.layers[e].objects[s].y,width:a.layers[e].objects[s].width,height:a.layers[e].objects[s].height,visible:a.layers[e].objects[s].visible,properties:a.layers[e].objects[s].properties};t.polyline=[];for(var u=0;u=c)&&(c=32),("undefined"==typeof d||0>=d)&&(d=32),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=0),this.name=a,this.firstgid=b,this.tileWidth=c,this.tileHeight=d,this.tileMargin=e,this.tileSpacing=f,this.properties=g,this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},b.Tileset.prototype={draw:function(a,b,c,d){this.image&&this.drawCoords[d]&&a.drawImage(this.image,this.drawCoords[d][0],this.drawCoords[d][1],this.tileWidth,this.tileHeight,b,c,this.tileWidth,this.tileHeight)},setImage:function(a){this.image=a,this.rows=Math.round((a.height-this.tileMargin)/(this.tileHeight+this.tileSpacing)),this.columns=Math.round((a.width-this.tileMargin)/(this.tileWidth+this.tileSpacing)),this.total=this.rows*this.columns,this.drawCoords.length=0;for(var b=this.tileMargin,c=this.tileMargin,d=this.firstgid,e=0;e0&&this.enable(a[f],b,c,d,!0));else a instanceof Phaser.Group?this.enable(a.children,b,c,d,e):(this.enableBody(a,b,c,d),e&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,c,d,!0))},enableBody:function(a,b,c,d){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Physics.Ninja.Body(this,a,b,c,d),a.anchor.set(.5))},setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.setTo(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height)},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=[]},convertTilemap:function(a,b,c){b=a.getLayer(b),this.clearTilemapLayerBodies(a,b);for(var d=0,e=a.layers[b].height;e>d;d++)for(var f=0,g=a.layers[b].width;g>f;f++){var h=a.layers[b].data[d][f];if(h&&c.hasOwnProperty(h.index)){var i=new Phaser.Physics.Ninja.Body(this,null,3,c[h.index],0,h.worldX+h.centerX,h.worldY+h.centerY,h.width,h.height);a.layers[b].bodies.push(i)}}return a.layers[b].bodies},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return"undefined"!=typeof b||a.type!==Phaser.GROUP&&a.type!==Phaser.EMITTER?void(a&&b&&a.exists&&b.exists&&(a.type==Phaser.SPRITE||a.type==Phaser.TILESPRITE?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideSpriteVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,c,d,e):a.type==Phaser.GROUP?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideGroupVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,c,d,e):a.type==Phaser.TILEMAPLAYER?b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsTilemapLayer(b,a,c,d,e):(b.type==Phaser.GROUP||b.type==Phaser.EMITTER)&&this.collideGroupVsTilemapLayer(b,a,c,d,e):a.type==Phaser.EMITTER&&(b.type==Phaser.SPRITE||b.type==Phaser.TILESPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type==Phaser.GROUP||b.type==Phaser.EMITTER?this.collideGroupVsGroup(a,b,c,d,e,f):b.type==Phaser.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,c,d,e)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++)},collideSpriteVsGroup:function(a,b,c,d,e,f){if(0!==b.length)for(var g=0,h=b.children.length;h>g;g++)b.children[g].exists&&b.children[g].body&&this.separate(a.body,b.children[g].body,d,e,f)&&(c&&c.call(e,a,b.children[g]),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b){return a.type!==Phaser.Physics.NINJA||b.type!==Phaser.Physics.NINJA?!1:a.aabb&&b.aabb?a.aabb.collideAABBVsAABB(b.aabb):a.aabb&&b.tile?a.aabb.collideAABBVsTile(b.tile):a.tile&&b.aabb?b.aabb.collideAABBVsTile(a.tile):a.circle&&b.tile?a.circle.collideCircleVsTile(b.tile):a.tile&&b.circle?b.circle.collideCircleVsTile(a.tile):void 0}},Phaser.Physics.Ninja.Body=function(a,b,c,d,e,f,g,h,i){b=b||null,"undefined"==typeof c&&(c=1),"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=16),this.sprite=b,this.game=a.game,this.type=Phaser.Physics.NINJA,this.system=a,this.aabb=null,this.tile=null,this.circle=null,this.shape=null,this.drag=1,this.friction=.05,this.gravityScale=1,this.bounce=.3,this.velocity=new Phaser.Point,this.facing=Phaser.NONE,this.immovable=!1,this.collideWorldBounds=!0,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.maxSpeed=8,b&&(f=b.x,g=b.y,h=b.width,i=b.height,0===b.anchor.x&&(f+=.5*b.width),0===b.anchor.y&&(g+=.5*b.height)),1===c?(this.aabb=new Phaser.Physics.Ninja.AABB(this,f,g,h,i),this.shape=this.aabb):2===c?(this.circle=new Phaser.Physics.Ninja.Circle(this,f,g,e),this.shape=this.circle):3===c&&(this.tile=new Phaser.Physics.Ninja.Tile(this,f,g,h,i,d),this.shape=this.tile)},Phaser.Physics.Ninja.Body.prototype={preUpdate:function(){this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.shape.integrate(),this.collideWorldBounds&&this.shape.collideWorldBounds()},postUpdate:function(){this.sprite&&(this.sprite.type===Phaser.TILESPRITE?(this.sprite.x=this.shape.pos.x-this.shape.xw,this.sprite.y=this.shape.pos.y-this.shape.yw):(this.sprite.x=this.shape.pos.x,this.sprite.y=this.shape.pos.y)),this.velocity.x<0?this.facing=Phaser.LEFT:this.velocity.x>0&&(this.facing=Phaser.RIGHT),this.velocity.y<0?this.facing=Phaser.UP:this.velocity.y>0&&(this.facing=Phaser.DOWN)},setZeroVelocity:function(){this.shape.oldpos.x=this.shape.pos.x,this.shape.oldpos.y=this.shape.pos.y},moveTo:function(a,b){var c=a*this.game.time.physicsElapsed,b=this.game.math.degToRad(b);this.shape.pos.x=this.shape.oldpos.x+c*Math.cos(b),this.shape.pos.y=this.shape.oldpos.y+c*Math.sin(b)},moveFrom:function(a,b){var c=-a*this.game.time.physicsElapsed,b=this.game.math.degToRad(b);this.shape.pos.x=this.shape.oldpos.x+c*Math.cos(b),this.shape.pos.y=this.shape.oldpos.y+c*Math.sin(b)},moveLeft:function(a){var b=-a*this.game.time.physicsElapsed;this.shape.pos.x=this.shape.oldpos.x+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.x-this.shape.oldpos.x+b))},moveRight:function(a){var b=a*this.game.time.physicsElapsed;this.shape.pos.x=this.shape.oldpos.x+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.x-this.shape.oldpos.x+b))},moveUp:function(a){var b=-a*this.game.time.physicsElapsed;this.shape.pos.y=this.shape.oldpos.y+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.y-this.shape.oldpos.y+b))},moveDown:function(a){var b=a*this.game.time.physicsElapsed;this.shape.pos.y=this.shape.oldpos.y+Math.min(this.maxSpeed,Math.max(-this.maxSpeed,this.shape.pos.y-this.shape.oldpos.y+b))},reset:function(){this.velocity.set(0),this.shape.pos.x=this.sprite.x,this.shape.pos.y=this.sprite.y,this.shape.oldpos.copyFrom(this.shape.pos)},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.shape.pos.x-this.shape.oldpos.x},deltaY:function(){return this.shape.pos.y-this.shape.oldpos.y},destroy:function(){this.sprite=null,this.system=null,this.aabb=null,this.tile=null,this.circle=null,this.shape.destroy(),this.shape=null}},Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"x",{get:function(){return this.shape.pos.x},set:function(a){this.shape.pos.x=a}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"y",{get:function(){return this.shape.pos.y},set:function(a){this.shape.pos.y=a}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"width",{get:function(){return this.shape.width}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"height",{get:function(){return this.shape.height}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"bottom",{get:function(){return this.shape.pos.y+this.shape.yw}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"right",{get:function(){return this.shape.pos.x+this.shape.xw}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"speed",{get:function(){return Math.sqrt(this.shape.velocity.x*this.shape.velocity.x+this.shape.velocity.y*this.shape.velocity.y)}}),Object.defineProperty(Phaser.Physics.Ninja.Body.prototype,"angle",{get:function(){return Math.atan2(this.shape.velocity.y,this.shape.velocity.x)}}),Phaser.Physics.Ninja.AABB=function(a,b,c,d,e){this.body=a,this.system=a.system,this.pos=new Phaser.Point(b,c),this.oldpos=new Phaser.Point(b,c),this.xw=Math.abs(d/2),this.yw=Math.abs(e/2),this.width=d,this.height=e,this.oH=0,this.oV=0,this.velocity=new Phaser.Point,this.aabbTileProjections={},this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_FULL]=this.projAABB_Full,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_45DEG]=this.projAABB_45Deg,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_CONCAVE]=this.projAABB_Concave,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_CONVEX]=this.projAABB_Convex,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_22DEGs]=this.projAABB_22DegS,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_22DEGb]=this.projAABB_22DegB,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_67DEGs]=this.projAABB_67DegS,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_67DEGb]=this.projAABB_67DegB,this.aabbTileProjections[Phaser.Physics.Ninja.Tile.TYPE_HALF]=this.projAABB_Half},Phaser.Physics.Ninja.AABB.prototype.constructor=Phaser.Physics.Ninja.AABB,Phaser.Physics.Ninja.AABB.COL_NONE=0,Phaser.Physics.Ninja.AABB.COL_AXIS=1,Phaser.Physics.Ninja.AABB.COL_OTHER=2,Phaser.Physics.Ninja.AABB.prototype={integrate:function(){var a=this.pos.x,b=this.pos.y;this.pos.x+=this.body.drag*this.pos.x-this.body.drag*this.oldpos.x,this.pos.y+=this.body.drag*this.pos.y-this.body.drag*this.oldpos.y+this.system.gravity*this.body.gravityScale,this.velocity.set(this.pos.x-a,this.pos.y-b),this.oldpos.set(a,b)},reportCollisionVsWorld:function(a,b,c,d){var e,f,g,h,i,j=this.pos,k=this.oldpos,l=j.x-k.x,m=j.y-k.y,n=l*c+m*d,o=n*c,p=n*d,q=l-o,r=m-p;0>n?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},reverse:function(){var a=this.pos.x-this.oldpos.x,b=this.pos.y-this.oldpos.y;this.oldpos.xthis.pos.x&&(this.oldpos.x=this.pos.x-a),this.oldpos.ythis.pos.y&&(this.oldpos.y=this.pos.y-b)},reportCollisionVsBody:function(a,b,c,d,e){var f=this.pos.x-this.oldpos.x,g=this.pos.y-this.oldpos.y,h=f*c+g*d;return this.body.immovable&&e.body.immovable?(a*=.5,b*=.5,this.pos.add(a,b),this.oldpos.set(this.pos.x,this.pos.y),e.pos.subtract(a,b),void e.oldpos.set(e.pos.x,e.pos.y)):void(this.body.immovable||e.body.immovable?this.body.immovable?e.body.immovable||(e.pos.subtract(a,b),0>h&&e.reverse()):(this.pos.subtract(a,b),0>h&&this.reverse()):(a*=.5,b*=.5,this.pos.add(a,b),e.pos.subtract(a,b),0>h&&(this.reverse(),e.reverse())))},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.xw);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.xw-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.yw);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.yw-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},collideAABBVsAABB:function(a){var b=this.pos,c=a,d=c.pos.x,e=c.pos.y,f=c.xw,g=c.yw,h=b.x-d,i=f+this.xw-Math.abs(h);if(i>0){var j=b.y-e,k=g+this.yw-Math.abs(j);if(k>0){k>i?0>h?(i*=-1,k=0):k=0:0>j?(i=0,k*=-1):i=0;var l=Math.sqrt(i*i+k*k);return this.reportCollisionVsBody(i,k,i/l,k/l,c),Phaser.Physics.Ninja.AABB.COL_AXIS}}return!1},collideAABBVsTile:function(a){var b=this.pos.x-a.pos.x,c=a.xw+this.xw-Math.abs(b);if(c>0){var d=this.pos.y-a.pos.y,e=a.yw+this.yw-Math.abs(d);if(e>0)return e>c?0>b?(c*=-1,e=0):e=0:0>d?(c=0,e*=-1):c=0,this.resolveTile(c,e,this,a)}return!1},resolveTile:function(a,b,c,d){return 0i){e*=-i,f*=-i;var j=Math.sqrt(e*e+f*f),k=Math.sqrt(a*a+b*b);return j>k?(c.reportCollisionVsWorld(a,b,a/k,b/k,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(e,f,d.signx,d.signy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_45Deg:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-d.pos.x,h=c.pos.y-f*c.yw-d.pos.y,i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_22DegS:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.y-f*c.yw,h=d.pos.y-g;if(h*f>0){var i=c.pos.x-e*c.xw-(d.pos.x+e*d.xw),j=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),k=d.sx,l=d.sy,m=i*k+j*l;if(0>m){k*=-m,l*=-m;var n=Math.sqrt(k*k+l*l),o=Math.sqrt(a*a+b*b),p=Math.abs(h);return n>o?o>p?(c.reportCollisionVsWorld(0,h,0,h/p,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(a,b,a/o,b/o,d),Phaser.Physics.Ninja.AABB.COL_AXIS):n>p?(c.reportCollisionVsWorld(0,h,0,h/p,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(k,l,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_22DegB:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y+f*d.yw),i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_67DegS:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw,h=d.pos.x-g;if(h*e>0){var i=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),j=c.pos.y-f*c.yw-(d.pos.y+f*d.yw),k=d.sx,l=d.sy,m=i*k+j*l;if(0>m){k*=-m,l*=-m;var n=Math.sqrt(k*k+l*l),o=Math.sqrt(a*a+b*b),p=Math.abs(h);return n>o?o>p?(c.reportCollisionVsWorld(h,0,h/p,0,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(a,b,a/o,b/o,d),Phaser.Physics.Ninja.AABB.COL_AXIS):n>p?(c.reportCollisionVsWorld(h,0,h/p,0,d),Phaser.Physics.Ninja.AABB.COL_OTHER):(c.reportCollisionVsWorld(k,l,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_67DegB:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x+e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),i=d.sx,j=d.sy,k=g*i+h*j;if(0>k){i*=-k,j*=-k;var l=Math.sqrt(i*i+j*j),m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(c.reportCollisionVsWorld(i,j,d.sx,d.sy,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_Convex:function(a,b,c,d){var e=d.signx,f=d.signy,g=c.pos.x-e*c.xw-(d.pos.x-e*d.xw),h=c.pos.y-f*c.yw-(d.pos.y-f*d.yw),i=Math.sqrt(g*g+h*h),j=2*d.xw,k=Math.sqrt(j*j+0),l=k-i;if(0>e*g||0>f*h){var m=Math.sqrt(a*a+b*b);return c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS}return l>0?(g/=i,h/=i,c.reportCollisionVsWorld(g*l,h*l,g,h,d),Phaser.Physics.Ninja.AABB.COL_OTHER):Phaser.Physics.Ninja.AABB.COL_NONE},projAABB_Concave:function(a,b,c,d){var e=d.signx,f=d.signy,g=d.pos.x+e*d.xw-(c.pos.x-e*c.xw),h=d.pos.y+f*d.yw-(c.pos.y-f*c.yw),i=2*d.xw,j=Math.sqrt(i*i+0),k=Math.sqrt(g*g+h*h),l=k-j;if(l>0){var m=Math.sqrt(a*a+b*b);return l>m?(c.reportCollisionVsWorld(a,b,a/m,b/m,d),Phaser.Physics.Ninja.AABB.COL_AXIS):(g/=k,h/=k,c.reportCollisionVsWorld(g*l,h*l,g,h,d),Phaser.Physics.Ninja.AABB.COL_OTHER)}return Phaser.Physics.Ninja.AABB.COL_NONE},destroy:function(){this.body=null,this.system=null}},Phaser.Physics.Ninja.Tile=function(a,b,c,d,e,f){"undefined"==typeof f&&(f=Phaser.Physics.Ninja.Tile.EMPTY),this.body=a,this.system=a.system,this.id=f,this.type=Phaser.Physics.Ninja.Tile.TYPE_EMPTY,this.pos=new Phaser.Point(b,c),this.oldpos=new Phaser.Point(b,c),this.id>1&&this.id<30&&(e=d),this.xw=Math.abs(d/2),this.yw=Math.abs(e/2),this.width=d,this.height=e,this.velocity=new Phaser.Point,this.signx=0,this.signy=0,this.sx=0,this.sy=0,this.body.gravityScale=0,this.body.collideWorldBounds=!1,this.id>0&&this.setType(this.id)},Phaser.Physics.Ninja.Tile.prototype.constructor=Phaser.Physics.Ninja.Tile,Phaser.Physics.Ninja.Tile.prototype={integrate:function(){var a=this.pos.x,b=this.pos.y;this.pos.x+=this.body.drag*this.pos.x-this.body.drag*this.oldpos.x,this.pos.y+=this.body.drag*this.pos.y-this.body.drag*this.oldpos.y+this.system.gravity*this.body.gravityScale,this.velocity.set(this.pos.x-a,this.pos.y-b),this.oldpos.set(a,b)},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.xw);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.xw-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.yw);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.yw-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},reportCollisionVsWorld:function(a,b,c,d){var e,f,g,h,i,j=this.pos,k=this.oldpos,l=j.x-k.x,m=j.y-k.y,n=l*c+m*d,o=n*c,p=n*d,q=l-o,r=m-p;0>n?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},setType:function(a){return a===Phaser.Physics.Ninja.Tile.EMPTY?this.clear():(this.id=a,this.updateType()),this},clear:function(){this.id=Phaser.Physics.Ninja.Tile.EMPTY,this.updateType()},destroy:function(){this.body=null,this.system=null},updateType:function(){if(0===this.id)return this.type=Phaser.Physics.Ninja.Tile.TYPE_EMPTY,this.signx=0,this.signy=0,this.sx=0,this.sy=0,!0;if(this.idn?(h=q*this.body.friction,i=r*this.body.friction,e=1+this.body.bounce,f=o*e,g=p*e,1===c?this.body.touching.left=!0:-1===c&&(this.body.touching.right=!0),1===d?this.body.touching.up=!0:-1===d&&(this.body.touching.down=!0)):f=g=h=i=0,j.x+=a,j.y+=b,k.x+=a+f+h,k.y+=b+g+i},collideWorldBounds:function(){var a=this.system.bounds.x-(this.pos.x-this.radius);a>0?this.reportCollisionVsWorld(a,0,1,0,null):(a=this.pos.x+this.radius-this.system.bounds.right,a>0&&this.reportCollisionVsWorld(-a,0,-1,0,null));var b=this.system.bounds.y-(this.pos.y-this.radius);b>0?this.reportCollisionVsWorld(0,b,0,1,null):(b=this.pos.y+this.radius-this.system.bounds.bottom,b>0&&this.reportCollisionVsWorld(0,-b,0,-1,null))},collideCircleVsTile:function(a){var b=this.pos,c=this.radius,d=a,e=d.pos.x,f=d.pos.y,g=d.xw,h=d.yw,i=b.x-e,j=g+c-Math.abs(i);if(j>0){var k=b.y-f,l=h+c-Math.abs(k);if(l>0)return this.oH=0,this.oV=0,-g>i?this.oH=-1:i>g&&(this.oH=1),-h>k?this.oV=-1:k>h&&(this.oV=1),this.resolveCircleTile(j,l,this.oH,this.oV,this,d)}},resolveCircleTile:function(a,b,c,d,e,f){return 0a){var g=e.pos.x-f.pos.x;return 0>g?(e.reportCollisionVsWorld(-a,0,-1,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(a,0,1,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS)}var h=e.pos.y-f.pos.y;return 0>h?(e.reportCollisionVsWorld(0,-b,0,-1,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(0,b,0,1,f),Phaser.Physics.Ninja.Circle.COL_AXIS)}return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS}if(0===d)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var i=f.pos.x+c*f.xw,j=f.pos.y+d*f.yw,g=e.pos.x-i,h=e.pos.y-j,k=Math.sqrt(g*g+h*h),l=e.radius-k;return l>0?(0===k?(g=c/Math.SQRT2,h=d/Math.SQRT2):(g/=k,h/=k),e.reportCollisionVsWorld(g*l,h*l,g,h,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_45Deg:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=f.sx,k=f.sy,l=e.pos.x-j*e.radius-f.pos.x,m=e.pos.y-k*e.radius-f.pos.y,n=l*j+m*k;if(0>n){j*=-n,k*=-n,b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1));var o=Math.sqrt(j*j+k*k);return o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.pos.x-(f.pos.x-h*f.xw),m=e.pos.y-(f.pos.y+d*f.yw),p=l*-k+m*j;if(p*h*i>0){var q=Math.sqrt(l*l+m*m),r=e.radius-q;if(r>0)return l/=q,m/=q,e.reportCollisionVsWorld(l*r,m*r,l,m,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var n=l*j+m*k,r=e.radius-Math.abs(n);if(r>0)return e.reportCollisionVsWorld(j*r,k*r,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.pos.x-(f.pos.x+c*f.xw),m=e.pos.y-(f.pos.y-i*f.yw),p=l*-k+m*j;if(0>p*h*i){var q=Math.sqrt(l*l+m*m),r=e.radius-q;if(r>0)return l/=q,m/=q,e.reportCollisionVsWorld(l*r,m*r,l,m,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var n=l*j+m*k,r=e.radius-Math.abs(n);if(r>0)return e.reportCollisionVsWorld(j*r,k*r,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(h*c+i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;var s=f.pos.x+c*f.xw,t=f.pos.y+d*f.yw,u=e.pos.x-s,v=e.pos.y-t,q=Math.sqrt(u*u+v*v),r=e.radius-q;if(r>0)return 0===q?(u=c/Math.SQRT2,v=d/Math.SQRT2):(u/=q,v/=q),e.reportCollisionVsWorld(u*r,v*r,u,v,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Concave:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c){if(0===d){var j=f.pos.x+h*f.xw-e.pos.x,k=f.pos.y+i*f.yw-e.pos.y,l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=n+e.radius-m;return o>0?(b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER)):Phaser.Physics.Ninja.Circle.COL_NONE}if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=f.pos.x-h*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=0,s=d):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=f.pos.x+c*f.xw,q=f.pos.y-i*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c,s=0):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{if(h*c+i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;var p=f.pos.x+c*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Convex:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),o>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(h*c+i*d>0){var j=e.pos.x-(f.pos.x-h*f.xw),k=e.pos.y-(f.pos.y-i*f.yw),l=2*f.xw,m=Math.sqrt(l*l+0),n=Math.sqrt(j*j+k*k),o=m+e.radius-n;if(o>0)return j/=n,k/=n,e.reportCollisionVsWorld(j*o,k*o,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var p=f.pos.x+c*f.xw,q=f.pos.y+d*f.yw,r=e.pos.x-p,s=e.pos.y-q,n=Math.sqrt(r*r+s*s),o=e.radius-n;if(o>0)return 0===n?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=n,s/=n),e.reportCollisionVsWorld(r*o,s*o,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_Half:function(a,b,c,d,e,f){var g=f.signx,h=f.signy,i=c*g+d*h;if(i>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c)if(0===d){var j=e.radius,k=e.pos.x-g*j-f.pos.x,l=e.pos.y-h*j-f.pos.y,m=g,n=h,o=k*m+l*n;if(0>o){m*=-o,n*=-o;var p=Math.sqrt(m*m+n*n),q=Math.sqrt(a*a+b*b);return p>q?(e.reportCollisionVsWorld(a,b,a/q,b/q,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(m,n,f.signx,f.signy),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0!==i)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var r=e.pos.x-f.pos.x;if(0>r*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var s=e.pos.y-(f.pos.y+d*f.yw),t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=g/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else if(0===d){if(0!==i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var s=e.pos.y-f.pos.y;if(0>s*h)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var r=e.pos.x-(f.pos.x+c*f.xw),t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=g/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var v=f.pos.x+c*f.xw,w=f.pos.y+d*f.yw,r=e.pos.x-v,s=e.pos.y-w,t=Math.sqrt(r*r+s*s),u=e.radius-t;if(u>0)return 0===t?(r=c/Math.SQRT2,s=d/Math.SQRT2):(r/=t,s/=t),e.reportCollisionVsWorld(r*u,s*u,r,s,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_22DegS:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(i*d>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c){if(0!==d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-(f.pos.x-h*f.xw),n=e.pos.y-f.pos.y,o=m*-k+n*j;if(o*h*i>0){var p=Math.sqrt(m*m+n*n),q=l-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{m-=l*j,n-=l*k;var r=m*j+n*k;if(0>r){j*=-r,k*=-r;var s=Math.sqrt(j*j+k*k);return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),s>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}}else if(0===d)if(0>h*c){var t=f.pos.x-h*f.xw,u=f.pos.y,v=e.pos.x-t,w=e.pos.y-u;if(0>w*i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x+c*f.xw),n=e.pos.y-(f.pos.y-i*f.yw),o=m*-k+n*j;if(0>o*h*i){var p=Math.sqrt(m*m+n*n),q=e.radius-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var r=m*j+n*k,q=e.radius-Math.abs(r);if(q>0)return e.reportCollisionVsWorld(j*q,k*q,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{var t=f.pos.x+c*f.xw,u=f.pos.y+d*f.yw,v=e.pos.x-t,w=e.pos.y-u,p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_22DegB:function(a,b,c,d,e,f){var g,h=f.signx,i=f.signy;if(0===c)if(0===d){var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x-h*f.xw),n=e.pos.y-k*l-(f.pos.y+i*f.yw),o=m*j+n*k;if(0>o){j*=-o,k*=-o;var p=Math.sqrt(j*j+k*k);return b>a?(g=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(g=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),p>g?(e.reportCollisionVsWorld(a,b,a/g,b/g,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>i*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x-h*f.xw),n=e.pos.y-(f.pos.y+i*f.yw),q=m*-k+n*j;if(q*h*i>0){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>h*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var m=e.pos.x-(f.pos.x+h*f.xw),n=e.pos.y-f.pos.y;if(0>n*i)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,q=m*-k+n*j;if(0>q*h*i){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(h*c+i*d>0){var t=Math.sqrt(5),j=1*h/t,k=2*i/t,l=e.radius,m=e.pos.x-j*l-(f.pos.x-h*f.xw),n=e.pos.y-k*l-(f.pos.y+i*f.yw),o=m*j+n*k;return 0>o?(e.reportCollisionVsWorld(-j*o,-k*o,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE}var u=f.pos.x+c*f.xw,v=f.pos.y+d*f.yw,w=e.pos.x-u,x=e.pos.y-v,r=Math.sqrt(w*w+x*x),s=e.radius-r;if(s>0)return 0===r?(w=c/Math.SQRT2,x=d/Math.SQRT2):(w/=r,x/=r),e.reportCollisionVsWorld(w*s,x*s,w,x,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_67DegS:function(a,b,c,d,e,f){var g=f.signx,h=f.signy;if(g*c>0)return Phaser.Physics.Ninja.Circle.COL_NONE;if(0===c)if(0===d){var i,j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-f.pos.x,n=e.pos.y-(f.pos.y-h*f.yw),o=m*-k+n*j;if(0>o*g*h){var p=Math.sqrt(m*m+n*n),q=l-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{m-=l*j,n-=l*k;var r=m*j+n*k;if(0>r){j*=-r,k*=-r;var s=Math.sqrt(j*j+k*k);return b>a?(i=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(i=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),s>i?(e.reportCollisionVsWorld(a,b,a/i,b/i,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}}else if(0>h*d){var t=f.pos.x,u=f.pos.y-h*f.yw,v=e.pos.x-t,w=e.pos.y-u;if(0>v*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var j=f.sx,k=f.sy,m=e.pos.x-(f.pos.x-g*f.xw),n=e.pos.y-(f.pos.y+d*f.yw),o=m*-k+n*j;if(o*g*h>0){var p=Math.sqrt(m*m+n*n),q=e.radius-p;if(q>0)return m/=p,n/=p,e.reportCollisionVsWorld(m*q,n*q,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var r=m*j+n*k,q=e.radius-Math.abs(r);if(q>0)return e.reportCollisionVsWorld(j*q,k*q,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(0===d)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var t=f.pos.x+c*f.xw,u=f.pos.y+d*f.yw,v=e.pos.x-t,w=e.pos.y-u,p=Math.sqrt(v*v+w*w),q=e.radius-p;if(q>0)return 0===p?(v=c/Math.SQRT2,w=d/Math.SQRT2):(v/=p,w/=p),e.reportCollisionVsWorld(v*q,w*q,v,w,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},projCircle_67DegB:function(a,b,c,d,e,f){var g=f.signx,h=f.signy;if(0===c)if(0===d){var i,j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x+g*f.xw),n=e.pos.y-k*l-(f.pos.y-h*f.yw),o=m*j+n*k;if(0>o){j*=-o,k*=-o;var p=Math.sqrt(j*j+k*k);return b>a?(i=a,b=0,e.pos.x-f.pos.x<0&&(a*=-1)):(i=b,a=0,e.pos.y-f.pos.y<0&&(b*=-1)),p>i?(e.reportCollisionVsWorld(a,b,a/i,b/i,f),Phaser.Physics.Ninja.Circle.COL_AXIS):(e.reportCollisionVsWorld(j,k,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER)}}else{if(0>h*d)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var m=e.pos.x-f.pos.x,n=e.pos.y-(f.pos.y+h*f.yw);if(0>m*g)return e.reportCollisionVsWorld(0,b*d,0,d,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var j=f.sx,k=f.sy,q=m*-k+n*j;if(q*g*h>0){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,j,k,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else if(0===d){if(0>g*c)return e.reportCollisionVsWorld(a*c,0,c,0,f),Phaser.Physics.Ninja.Circle.COL_AXIS;var t=Math.sqrt(5),j=2*g/t,k=1*h/t,m=e.pos.x-(f.pos.x+g*f.xw),n=e.pos.y-(f.pos.y-h*f.yw),q=m*-k+n*j;if(0>q*g*h){var r=Math.sqrt(m*m+n*n),s=e.radius-r;if(s>0)return m/=r,n/=r,e.reportCollisionVsWorld(m*s,n*s,m,n,f),Phaser.Physics.Ninja.Circle.COL_OTHER}else{var o=m*j+n*k,s=e.radius-Math.abs(o);if(s>0)return e.reportCollisionVsWorld(j*s,k*s,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER}}else{if(g*c+h*d>0){var j=f.sx,k=f.sy,l=e.radius,m=e.pos.x-j*l-(f.pos.x+g*f.xw),n=e.pos.y-k*l-(f.pos.y-h*f.yw),o=m*j+n*k;return 0>o?(e.reportCollisionVsWorld(-j*o,-k*o,f.sx,f.sy,f),Phaser.Physics.Ninja.Circle.COL_OTHER):Phaser.Physics.Ninja.Circle.COL_NONE}var u=f.pos.x+c*f.xw,v=f.pos.y+d*f.yw,w=e.pos.x-u,x=e.pos.y-v,r=Math.sqrt(w*w+x*x),s=e.radius-r;if(s>0)return 0===r?(w=c/Math.SQRT2,x=d/Math.SQRT2):(w/=r,x/=r),e.reportCollisionVsWorld(w*s,x*s,w,x,f),Phaser.Physics.Ninja.Circle.COL_OTHER}return Phaser.Physics.Ninja.Circle.COL_NONE},destroy:function(){this.body=null,this.system=null}},!function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define("p2",function(){return this.p2=a()}()):"undefined"!=typeof window?window.p2=a():"undefined"!=typeof global?self.p2=a():"undefined"!=typeof self&&(self.p2=a())}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},g.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},g.cross=function(a,b,c){var d=b[0]*c[1]-b[1]*c[0];return a[0]=a[1]=0,a[2]=d,a},g.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},g.transformMat2=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[2]*e,a[1]=c[1]*d+c[3]*e,a},g.transformMat2d=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[2]*e+c[4],a[1]=c[1]*d+c[3]*e+c[5],a},g.transformMat3=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[3]*e+c[6],a[1]=c[1]*d+c[4]*e+c[7],a},g.transformMat4=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[4]*e+c[12],a[1]=c[1]*d+c[5]*e+c[13],a},g.forEach=function(){var a=g.create();return function(b,c,d,e,f,g){var h,i;for(c||(c=2),d||(d=0),i=e?Math.min(e*c+d,b.length):b.length,h=d;i>h;h+=c)a[0]=b[h],a[1]=b[h+1],f(a,a,g),b[h]=a[0],b[h+1]=a[1];return b}}(),g.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},"undefined"!=typeof c&&(c.vec2=g)},{}],2:[function(a,b){function c(){}var d=a("./Scalar");b.exports=c,c.lineInt=function(a,b,c){c=c||0;var e,f,g,h,i,j,k,l=[0,0];return e=a[1][1]-a[0][1],f=a[0][0]-a[1][0],g=e*a[0][0]+f*a[0][1],h=b[1][1]-b[0][1],i=b[0][0]-b[1][0],j=h*b[0][0]+i*b[0][1],k=e*i-h*f,d.eq(k,0,c)||(l[0]=(i*g-f*j)/k,l[1]=(e*j-h*g)/k),l},c.segmentsIntersect=function(a,b,c,d){var e=b[0]-a[0],f=b[1]-a[1],g=d[0]-c[0],h=d[1]-c[1];if(g*f-h*e==0)return!1;var i=(e*(c[1]-a[1])+f*(a[0]-c[0]))/(g*f-h*e),j=(g*(a[1]-c[1])+h*(c[0]-a[0]))/(h*e-g*f);return i>=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":5}],3:[function(a,b){function c(){}b.exports=c,c.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},c.left=function(a,b,d){return c.area(a,b,d)>0},c.leftOn=function(a,b,d){return c.area(a,b,d)>=0},c.right=function(a,b,d){return c.area(a,b,d)<0},c.rightOn=function(a,b,d){return c.area(a,b,d)<=0};var d=[],e=[];c.collinear=function(a,b,f,g){if(g){var h=d,i=e;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=f[0]-b[0],i[1]=f[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==c.area(a,b,f)},c.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],4:[function(a,b){function c(){this.vertices=[]}function d(a,b,c,d,e){e=e||0;var f=b[1]-a[1],h=a[0]-b[0],i=f*a[0]+h*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*h;return g.eq(m,0,e)?[0,0]:[(k*i-h*l)/m,(f*l-j*i)/m]}var e=a("./Line"),f=a("./Point"),g=a("./Scalar");b.exports=c,c.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},c.prototype.first=function(){return this.vertices[0]},c.prototype.last=function(){return this.vertices[this.vertices.length-1]},c.prototype.clear=function(){this.vertices.length=0},c.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},c.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);f.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},c.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},c.prototype.isReflex=function(a){return f.right(this.at(a-1),this.at(a),this.at(a+1))};var h=[],i=[];c.prototype.canSee=function(a,b){var c,d,g=h,j=i;if(f.leftOn(this.at(a+1),this.at(a),this.at(b))&&f.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=f.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&f.leftOn(this.at(a),this.at(b),this.at(k+1))&&f.rightOn(this.at(a),this.at(b),this.at(k))&&(g[0]=this.at(a),g[1]=this.at(b),j[0]=this.at(k),j[1]=this.at(k+1),c=e.lineInt(g,j),f.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},c.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(e.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),f.left(v.at(x+1),v.at(x),v.at(y+1))&&f.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=d(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),f.left(v.at(x-1),v.at(x),l)&&(o=f.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,e.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)f.leftOn(v.at(x-1),v.at(x),v.at(y))&&f.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=f.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)f.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":2,"./Point":3,"./Scalar":5}],5:[function(a,b){function c(){}b.exports=c,c.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"~0.4.0","grunt-contrib-jshint":"~0.9.2","grunt-contrib-nodeunit":"~0.1.2","grunt-contrib-uglify":"~0.4.0","grunt-browserify":"~2.0.1","z-schema":"~2.4.6"},dependencies:{"poly-decomp":"git://github.com/schteppe/poly-decomp.js","gl-matrix":"2.1.0"}}},{}],8:[function(a,b){function c(a){this.lowerBound=d.create(),a&&a.lowerBound&&d.copy(this.lowerBound,a.lowerBound),this.upperBound=d.create(),a&&a.upperBound&&d.copy(this.upperBound,a.upperBound)}{var d=a("../math/vec2");a("../utils/Utils")}b.exports=c;var e=d.create();c.prototype.setFromPoints=function(a,b,c){var f=this.lowerBound,g=this.upperBound;d.set(f,Number.MAX_VALUE,Number.MAX_VALUE),d.set(g,-Number.MAX_VALUE,-Number.MAX_VALUE);for(var h=0;hj;j++)i[j]>g[j]&&(g[j]=i[j]),i[j]b;b++)a.lowerBound[b]this.upperBound[b]&&(this.upperBound[b]=a.upperBound[b])},c.prototype.overlaps=function(a){var b=this.lowerBound,c=this.upperBound,d=a.lowerBound,e=a.upperBound;return(d[0]<=c[0]&&c[0]<=e[0]||b[0]<=e[0]&&e[0]<=c[0])&&(d[1]<=c[1]&&c[1]<=e[1]||b[1]<=e[1]&&e[1]<=c[1])}},{"../math/vec2":30,"../utils/Utils":45}],9:[function(a,b){function c(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=c.AABB}var d=a("../math/vec2"),e=a("../objects/Body");b.exports=c,c.AABB=1,c.BOUNDING_CIRCLE=2,c.prototype.setWorld=function(a){this.world=a},c.prototype.getCollisionPairs=function(){throw new Error("getCollisionPairs must be implemented in a subclass!")};var f=d.create();c.boundingRadiusCheck=function(a,b){d.sub(f,a.position,b.position);var c=d.squaredLength(f),e=a.boundingRadius+b.boundingRadius;return e*e>=c},c.aabbCheck=function(a,b){return a.aabbNeedsUpdate&&a.updateAABB(),b.aabbNeedsUpdate&&b.updateAABB(),a.aabb.overlaps(b.aabb)},c.prototype.boundingVolumeCheck=function(a,b){var d;switch(this.boundingVolumeType){case c.BOUNDING_CIRCLE:d=c.boundingRadiusCheck(a,b);break;case c.AABB:d=c.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return d},c.canCollide=function(a,b){return a.motionState===e.STATIC&&b.motionState===e.STATIC?!1:a.motionState===e.KINEMATIC&&b.motionState===e.STATIC||a.motionState===e.STATIC&&b.motionState===e.KINEMATIC?!1:a.motionState===e.KINEMATIC&&b.motionState===e.KINEMATIC?!1:a.sleepState===e.SLEEPING&&b.sleepState===e.SLEEPING?!1:a.sleepState===e.SLEEPING&&b.motionState===e.STATIC||b.sleepState===e.SLEEPING&&a.motionState===e.STATIC?!1:!0},c.NAIVE=1,c.SAP=2},{"../math/vec2":30,"../objects/Body":31}],10:[function(a,b){function c(a){a=a||{},d.apply(this),e.extend(a,{xmin:-100,xmax:100,ymin:-100,ymax:100,nx:10,ny:10}),this.xmin=a.xmin,this.ymin=a.ymin,this.xmax=a.xmax,this.ymax=a.ymax,this.nx=a.nx,this.ny=a.ny,this.binsizeX=(this.xmax-this.xmin)/this.nx,this.binsizeY=(this.ymax-this.ymin)/this.ny}var d=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Particle"),a("../collision/Broadphase")),e=(a("../math/vec2"),a("../utils/Utils"));b.exports=c,c.prototype=new d,c.prototype.getCollisionPairs=function(a){for(var b=[],c=a.bodies,e=c.length,f=(this.binsizeX,this.binsizeY,this.nx),g=this.ny,h=this.xmin,i=this.ymin,j=this.xmax,k=this.ymax,l=[],m=f*g,n=0;m>n;n++)l.push([]);for(var o=f/(j-h),p=g/(k-i),n=0;n!==e;n++)for(var q=c[n],r=q.aabb,s=Math.max(r.lowerBound[0],h),t=Math.max(r.lowerBound[1],i),u=Math.min(r.upperBound[0],j),v=Math.min(r.upperBound[1],k),w=Math.floor(o*(s-h)),x=Math.floor(p*(t-i)),y=Math.floor(o*(u-h)),z=Math.floor(p*(v-i)),A=w;y>=A;A++)for(var B=x;z>=B;B++){var C=A,D=B,E=C*(g-1)+D;E>=0&&m>E&&l[E].push(q)}for(var n=0;n!==m;n++)for(var F=l[n],A=0,G=F.length;A!==G;A++)for(var q=F[A],B=0;B!==A;B++){var H=F[B];d.canCollide(q,H)&&this.boundingVolumeCheck(q,H)&&b.push(q,H)}return b}},{"../collision/Broadphase":9,"../math/vec2":30,"../shapes/Circle":35,"../shapes/Particle":39,"../shapes/Plane":40,"../utils/Utils":45}],11:[function(a,b){function c(){d.call(this,d.NAIVE)}{var d=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var e=0,f=b.length;e!==f;e++)for(var g=b[e],h=0;e>h;h++){var i=b[h];d.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c}},{"../collision/Broadphase":9,"../math/vec2":30,"../shapes/Circle":35,"../shapes/Particle":39,"../shapes/Plane":40,"../shapes/Shape":42}],12:[function(a,b){function c(){this.contactEquations=[],this.frictionEquations=[],this.enableFriction=!0,this.slipForce=10,this.frictionCoefficient=.3,this.surfaceVelocity=0,this.reuseObjects=!0,this.reusableContactEquations=[],this.reusableFrictionEquations=[],this.restitution=0,this.stiffness=1e7,this.relaxation=3,this.frictionStiffness=1e7,this.frictionRelaxation=3,this.collidingBodiesLastStep={keys:[]}}function d(a){for(var b=0,c=a.keys.length;c>b;b++)delete a[a.keys[b]];a.keys.length=0}function e(a,b){g.set(a.vertices[0],.5*-b.length,-b.radius),g.set(a.vertices[1],.5*b.length,-b.radius),g.set(a.vertices[2],.5*b.length,b.radius),g.set(a.vertices[3],.5*-b.length,b.radius)}function f(a,b,c,d){for(var e=P,f=Q,j=R,k=S,l=a,m=b.vertices,n=null,o=0;o!==m.length+1;o++){var p=m[o%m.length],q=m[(o+1)%m.length];g.rotate(e,p,d),g.rotate(f,q,d),i(e,e,c),i(f,f,c),h(j,e,l),h(k,f,l);var r=g.crossLength(j,k);if(null===n&&(n=r),0>=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=a("../utils/Utils"),l=a("../equations/ContactEquation"),m=a("../equations/FrictionEquation"),n=a("../shapes/Circle"),o=a("../shapes/Shape"),p=(a("../objects/Body"),a("../shapes/Rectangle"));b.exports=c;var q=g.fromValues(0,1),r=g.fromValues(0,0),s=g.fromValues(0,0),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=[];c.prototype.collidedLastStep=function(a,b){var c=a.id,d=b.id;if(c>d){var e=c;c=d,d=e}return!!this.collidingBodiesLastStep[c+" "+d]},c.prototype.reset=function(){d(this.collidingBodiesLastStep);for(var a=0;a!==this.contactEquations.length;a++){var b=this.contactEquations[a],c=b.bodyA.id,e=b.bodyB.id;if(c>e){var f=c;c=e,e=f}var g=c+" "+e;this.collidingBodiesLastStep[g]||(this.collidingBodiesLastStep[g]=!0,this.collidingBodiesLastStep.keys.push(g))}if(this.reuseObjects){var h=this.contactEquations,i=this.frictionEquations,j=this.reusableFrictionEquations,l=this.reusableContactEquations;k.appendArray(l,h),k.appendArray(j,i)}this.contactEquations.length=this.frictionEquations.length=0},c.prototype.createContactEquation=function(a,b,c,d){var e=this.reusableContactEquations.length?this.reusableContactEquations.pop():new l(a,b);return e.bodyA=a,e.bodyB=b,e.shapeA=c,e.shapeB=d,e.restitution=this.restitution,e.firstImpact=!this.collidedLastStep(a,b),e.stiffness=this.stiffness,e.relaxation=this.relaxation,e.needsUpdate=!0,e.enabled=!0,e},c.prototype.createFrictionEquation=function(a,b,c,d){var e=this.reusableFrictionEquations.length?this.reusableFrictionEquations.pop():new m(a,b);return e.bodyA=a,e.bodyB=b,e.shapeA=c,e.shapeB=d,e.setSlipForce(this.slipForce),e.frictionCoefficient=this.frictionCoefficient,e.relativeVelocity=this.surfaceVelocity,e.enabled=!0,e.needsUpdate=!0,e.stiffness=this.frictionStiffness,e.relaxation=this.frictionRelaxation,e},c.prototype.createFrictionFromContact=function(a){var b=this.createFrictionEquation(a.bodyA,a.bodyB,a.shapeA,a.shapeB);return g.copy(b.contactPointA,a.contactPointA),g.copy(b.contactPointB,a.contactPointB),g.rotate(b.t,a.normalA,-Math.PI/2),b.contactEquation=a,b},c.prototype[o.LINE|o.CONVEX]=c.prototype.convexLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},c.prototype[o.LINE|o.RECTANGLE]=c.prototype.lineRectangle=function(a,b,c,d,e,f,g,h,i){return i?!1:0};var K=new p(1,1),L=g.create();c.prototype[o.CAPSULE|o.CONVEX]=c.prototype[o.CAPSULE|o.RECTANGLE]=c.prototype.convexCapsule=function(a,b,c,d,f,h,i,j,k){var l=L;g.set(l,h.length/2,0),g.rotate(l,l,j),g.add(l,l,i);var m=this.circleConvex(f,h,l,j,a,b,c,d,k,h.radius);g.set(l,-h.length/2,0),g.rotate(l,l,j),g.add(l,l,i);var n=this.circleConvex(f,h,l,j,a,b,c,d,k,h.radius);if(k&&(m||n))return!0;var o=K;e(o,h);var p=this.convexConvex(a,b,c,d,f,o,i,j,k);return p+m+n},c.prototype[o.CAPSULE|o.LINE]=c.prototype.lineCapsule=function(a,b,c,d,e,f,g,h,i){return i?!1:0};var M=g.create(),N=g.create(),O=new p(1,1);c.prototype[o.CAPSULE|o.CAPSULE]=c.prototype.capsuleCapsule=function(a,b,c,d,f,h,i,j,k){for(var l=M,m=N,n=0,o=0;2>o;o++){g.set(l,(0==o?-1:1)*b.length/2,0),g.rotate(l,l,d),g.add(l,l,c);for(var p=0;2>p;p++){g.set(m,(0==p?-1:1)*h.length/2,0),g.rotate(m,m,j),g.add(m,m,i);var q=this.circleCircle(a,b,l,d,f,h,m,j,k,b.radius,h.radius);if(k&&q)return!0;n+=q}}var r=O;e(r,b);var s=this.convexCapsule(a,r,c,d,f,h,i,j,k);if(k&&s)return!0;n+=s,e(r,h);var t=this.convexCapsule(f,r,i,j,a,b,c,d,k);return k&&t?!0:n+=t},c.prototype[o.LINE|o.LINE]=c.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},c.prototype[o.PLANE|o.LINE]=c.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=r,o=s,p=t,A=u,B=v,C=w,D=x,E=y,F=z,G=J;numContacts=0,g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(A,o,l),i(p,p,k),i(A,A,k),g.copy(n,p),g.copy(o,A),h(B,o,n),g.normalize(C,B),g.rotate(F,C,-Math.PI/2),g.rotate(E,q,d),G[0]=n,G[1]=o;for(var H=0;HK){if(m)return!0;var L=this.createContactEquation(a,e,b,f);numContacts++,g.copy(L.normalA,E),g.normalize(L.normalA,L.normalA),g.scale(D,E,K),h(L.contactPointA,I,D),h(L.contactPointA,L.contactPointA,a.position),h(L.contactPointB,I,k),i(L.contactPointB,L.contactPointB,k),h(L.contactPointB,L.contactPointB,e.position),this.contactEquations.push(L),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(L))}}return numContacts},c.prototype[o.PARTICLE|o.CAPSULE]=c.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},c.prototype[o.CIRCLE|o.LINE]=c.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var p=f,q=l,F=e,G=k,H=c,I=a,K=b,n=n||0,o="undefined"!=typeof o?o:K.radius,L=r,M=s,N=t,O=u,P=v,Q=w,R=x,S=y,T=z,U=A,V=B,W=C,X=D,Y=E,Z=J;g.set(S,-p.length/2,0),g.set(T,p.length/2,0),g.rotate(U,S,q),g.rotate(V,T,q),i(U,U,G),i(V,V,G),g.copy(S,U),g.copy(T,V),h(Q,T,S),g.normalize(R,Q),g.rotate(P,R,-Math.PI/2),h(W,H,S);var $=j(W,P);if(h(O,S,G),h(X,H,G),Math.abs($)ab&&bb>_){if(m)return!0;var cb=this.createContactEquation(I,F,b,f);return g.scale(cb.normalA,L,-1),g.normalize(cb.normalA,cb.normalA),g.scale(cb.contactPointA,cb.normalA,o),i(cb.contactPointA,cb.contactPointA,H),h(cb.contactPointA,cb.contactPointA,I.position),h(cb.contactPointB,N,G),i(cb.contactPointB,cb.contactPointB,G),h(cb.contactPointB,cb.contactPointB,F.position),this.contactEquations.push(cb),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(cb)),1}}Z[0]=S,Z[1]=T;for(var db=0;dbW&&(g.copy(Q,O),S=W,g.scale(N,K,W),g.add(N,N,O),R=!0)}}if(R){if(m)return!0;var X=this.createContactEquation(y,q,b,j);return g.sub(X.normalA,Q,x),g.normalize(X.normalA,X.normalA),g.scale(X.contactPointA,X.normalA,n),i(X.contactPointA,X.contactPointA,x),h(X.contactPointA,X.contactPointA,y.position),h(X.contactPointB,N,w),i(X.contactPointB,X.contactPointB,w),h(X.contactPointB,X.contactPointB,q.position),this.contactEquations.push(X),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(X)),1}if(n>0)for(var T=0;TW&&(Q=W,g.scale(N,J,W),g.add(N,N,z),g.copy(P,J),R=!0)}if(R){var X=this.createContactEquation(B,q,b,k);return g.scale(X.normalA,P,-1),g.normalize(X.normalA,X.normalA),g.set(X.contactPointA,0,0),i(X.contactPointA,X.contactPointA,z),h(X.contactPointA,X.contactPointA,B.position),h(X.contactPointB,N,y),i(X.contactPointB,X.contactPointB,y),h(X.contactPointB,X.contactPointB,q.position),this.contactEquations.push(X),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(X)),1}return 0},c.prototype[o.CIRCLE]=c.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=a,p=b,q=c,s=e,t=f,u=j,v=r,m=m||p.radius,n=n||t.radius;h(v,c,j);var w=m+n;if(g.squaredLength(v)>w*w)return 0;if(l)return!0;var x=this.createContactEquation(o,s,b,f);return h(x.normalA,u,q),g.normalize(x.normalA,x.normalA),g.scale(x.contactPointA,x.normalA,m),g.scale(x.contactPointB,x.normalA,-n),i(x.contactPointA,x.contactPointA,q),h(x.contactPointA,x.contactPointA,o.position),i(x.contactPointB,x.contactPointB,u),h(x.contactPointB,x.contactPointB,s.position),this.contactEquations.push(x),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x)),1},c.prototype[o.PLANE|o.CONVEX]=c.prototype[o.PLANE|o.RECTANGLE]=c.prototype.planeConvex=function(a,b,d,e,f,k,l,m,n){var o=f,p=l,u=k,v=m,w=a,x=b,y=d,z=e,A=r,B=s,C=t,D=0;g.rotate(B,q,z);for(var E=0;E0)return 0;if(l)return!0;var x=this.createContactEquation(o,m,f,b);return g.copy(x.normalA,v),g.scale(u,x.normalA,w),h(x.contactPointA,n,u),h(x.contactPointA,x.contactPointA,o.position),h(x.contactPointB,n,m.position),this.contactEquations.push(x),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x)),1},c.prototype[o.CIRCLE|o.PARTICLE]=c.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=a,n=b,o=c,p=e,q=j,s=r;if(h(s,q,o),g.squaredLength(s)>n.radius*n.radius)return 0;if(l)return!0;var t=this.createContactEquation(m,p,b,f);return g.copy(t.normalA,s),g.normalize(t.normalA,t.normalA),g.scale(t.contactPointA,t.normalA,n.radius),i(t.contactPointA,t.contactPointA,o),h(t.contactPointA,t.contactPointA,m.position),h(t.contactPointB,q,p.position),this.contactEquations.push(t),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(t)),1};{var T=new n(1),U=g.create(),V=g.create();g.create()}c.prototype[o.PLANE|o.CAPSULE]=c.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=U,m=V,n=T;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o=this.circlePlane(e,n,l,0,a,b,c,d,k),p=this.circlePlane(e,n,m,0,a,b,c,d,k);return k?o||p:o+p},c.prototype.capsulePlane=function(a,b,c,d,e,f,g,h,i){return console.warn("Narrowphase.prototype.capsulePlane() is deprecated. Use .planeCapsule() instead!"),this.planeCapsule(e,f,g,h,a,b,c,d,i)},c.prototype[o.CIRCLE|o.PLANE]=c.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,u=e,v=k,w=l;w=w||0;var x=r,y=s,z=t;h(x,p,v),g.rotate(y,q,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(u,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,v),h(B.contactPointA,B.contactPointA,u.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},c.convexPrecision=1e-7,c.prototype[o.CONVEX]=c.prototype[o.CONVEX|o.RECTANGLE]=c.prototype[o.RECTANGLE]=c.prototype.convexConvex=function(a,b,d,e,f,k,l,m,n,o){var p=r,q=s,w=t,A=u,B=v,C=x,D=y,E=z,F=0,o=o||c.convexPrecision,G=c.findSeparatingAxis(b,d,e,k,l,m,p);if(!G)return 0;h(D,l,d),j(p,D)>0&&g.scale(p,p,-1);var H=c.getClosestEdge(b,e,p,!0),I=c.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=d,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(w,Z,Q),g.rotate(A,$,Q),i(w,w,O),i(A,A,O),h(B,A,w),g.rotate(E,B,-Math.PI/2),g.normalize(E,E),h(D,q,w);var _=j(E,D);o>=_&&X++}if(X>=3){if(n)return!0;var ab=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(w,Z,Q),g.rotate(A,$,Q),i(w,w,O),i(A,A,O),h(B,A,w),g.rotate(ab.normalA,B,-Math.PI/2),g.normalize(ab.normalA,ab.normalA),h(D,q,w);var _=j(ab.normalA,D);g.scale(C,ab.normalA,_),h(ab.contactPointA,q,O),h(ab.contactPointA,ab.contactPointA,C),i(ab.contactPointA,ab.contactPointA,O),h(ab.contactPointA,ab.contactPointA,S.position),h(ab.contactPointB,q,P),i(ab.contactPointB,ab.contactPointB,P),h(ab.contactPointB,ab.contactPointB,T.position),this.contactEquations.push(ab),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(ab))}}}return F};var W=g.fromValues(0,0);c.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=W;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var X=g.fromValues(0,0),Y=g.fromValues(0,0),Z=g.fromValues(0,0),$=g.fromValues(0,0),_=g.fromValues(0,0),ab=g.fromValues(0,0);c.findSeparatingAxis=function(a,b,d,e,f,i,j){for(var k=null,l=!1,m=!1,n=X,o=Y,p=Z,q=$,r=_,s=ab,t=0;2!==t;t++){var u=a,v=d;1===t&&(u=e,v=i);for(var w=0;w!==u.vertices.length;w++){g.rotate(o,u.vertices[w],v),g.rotate(p,u.vertices[(w+1)%u.vertices.length],v),h(n,p,o),g.rotate(q,n,-Math.PI/2),g.normalize(q,q),c.projectConvexOntoAxis(a,b,d,q,r),c.projectConvexOntoAxis(e,f,i,q,s);var x=r,y=s,z=!1;r[0]>s[0]&&(y=r,x=s,z=!0);var A=y[0]-x[1];l=A<=c.convexPrecision,(null===k||A>k)&&(g.copy(j,q),k=A,m=l)}}return m};var bb=g.fromValues(0,0),cb=g.fromValues(0,0),db=g.fromValues(0,0);c.getClosestEdge=function(a,b,c,d){var e=bb,f=cb,i=db;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=Math.PI/2,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate(i,f,-m),g.normalize(i,i);var o=j(i,e);(-1==k||o>maxDot)&&(k=n%l,maxDot=o)}return k};var eb=g.create(),fb=g.create(),gb=g.create(),hb=g.create(),ib=g.create(),jb=g.create(),kb=g.create();c.prototype[o.CIRCLE|o.HEIGHTFIELD]=c.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.data,m=m||b.radius,o=f.elementWidth,p=fb,q=eb,r=ib,s=kb,t=jb,u=gb,v=hb,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;c[1]+mA;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var D=g.dot(p,t);if(q[0]>=u[0]&&q[0]=D&&(C===!1||Math.abs(D)0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)b;b++){for(var d=a[b],e=b-1;e>=0&&!(a[e].aabb.lowerBound[0]<=d.aabb.lowerBound[0]);e--)a[e+1]=a[e];a[e+1]=d}return a},c.sortAxisListY=function(a){for(var b=1,c=a.length;c>b;b++){for(var d=a[b],e=b-1;e>=0&&!(a[e].aabb.lowerBound[1]<=d.aabb.lowerBound[1]);e--)a[e+1]=a[e];a[e+1]=d}return a};var f={keys:[]};c.prototype.getCollisionPairs=function(){{var a=this.axisListX,b=this.axisListY,d=this.result;this.axisIndex}d.length=0;for(var g=0;g!==a.length;g++){var h=a[g];h.aabbNeedsUpdate&&h.updateAABB()}c.sortAxisListX(a),c.sortAxisListY(b);for(var g=0,i=a.length;g!==i;g++)for(var j=a[g],k=g+1;i>k;k++){var l=a[k];if(!c.checkBounds(j,l,0))break;if(e.canCollide(j,l)){var m=j.idk;k++){var l=b[k];if(!c.checkBounds(j,l,1))break;if(e.canCollide(j,l)){var m=j.idc)g.scale(e.normalA,i,-1),g.sub(e.contactPointA,j,h.position),g.sub(e.contactPointB,k,o.position),g.scale(n,i,c),g.add(e.contactPointA,e.contactPointA,n),-1==a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!=u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)g.scale(f.normalA,i,1),g.sub(f.contactPointA,j,h.position),g.sub(f.contactPointB,k,o.position),g.scale(n,i,d),g.sub(f.contactPointB,f.contactPointB,n),-1==a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!=u&&a.splice(u,1)}},c.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},c.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b){function c(a,b,c,n,o){o=o||{},d.call(this,a,c,d.REVOLUTE,o);var p=this.maxForce="undefined"!=typeof o.maxForce?o.maxForce:Number.MAX_VALUE;this.pivotA=b,this.pivotB=n;var q=this.equations=[new e(a,c,-p,p),new e(a,c,-p,p)],r=q[0],s=q[1],t=this;r.computeGq=function(){return h.rotate(i,t.pivotA,a.angle),h.rotate(j,t.pivotB,c.angle),h.add(m,c.position,j),h.sub(m,m,a.position),h.sub(m,m,i),h.dot(m,k)},s.computeGq=function(){return h.rotate(i,t.pivotA,a.angle),h.rotate(j,t.pivotB,c.angle),h.add(m,c.position,j),h.sub(m,m,a.position),h.sub(m,m,i),h.dot(m,l)},s.minForce=r.minForce=-p,s.maxForce=r.maxForce=p,this.motorEquation=new f(a,c),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new g(a,c),this.lowerLimitEquation=new g(a,c),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var d=a("./Constraint"),e=a("../equations/Equation"),f=a("../equations/RotationalVelocityEquation"),g=a("../equations/RotationalLockEquation"),h=a("../math/vec2");b.exports=c;var i=h.create(),j=h.create(),k=h.fromValues(1,0),l=h.fromValues(0,1),m=h.create();c.prototype=new d,c.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],m=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>m)o.angle=m,-1==e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!=r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1==e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!=r&&e.splice(r,1)}h.rotate(i,c,a.angle),h.rotate(j,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-h.crossLength(i,k),f.G[3]=1,f.G[4]=0,f.G[5]=h.crossLength(j,k),g.G[0]=0,g.G[1]=-1,g.G[2]=-h.crossLength(i,l),g.G[3]=0,g.G[4]=1,g.G[5]=h.crossLength(j,l)},c.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},c.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},c.prototype.motorIsEnabled=function(){return!!this.motorEnabled},c.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},c.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}{var d=a("./Equation");a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},c.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},c.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b){function c(a,b){d.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=e.create(),this.penetrationVec=e.create(),this.contactPointB=e.create(),this.normalA=e.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var d=a("./Equation"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeB=function(a,b,c){var d=this.bodyA,f=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=f.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=e.crossLength(g,l),o=e.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,e.add(k,j,h),e.sub(k,k,i),e.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=e.dot(l,k),p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b){function c(a,b,d,e){this.minForce="undefined"==typeof d?-Number.MAX_VALUE:d,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=c.DEFAULT_STIFFNESS,this.relaxation=c.DEFAULT_RELAXATION,this.G=new h.ARRAY_TYPE(6);for(var f=0;6>f;f++)this.G[f]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}function d(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e}function e(a){return a.sleepState===i.SLEEPING?0:a.invMass}function f(a){return a.sleepState===i.SLEEPING?0:a.invInertia}b.exports=c;var g=a("../math/vec2"),h=a("../utils/Utils"),i=a("../objects/Body");c.prototype.constructor=c,c.DEFAULT_STIFFNESS=1e6,c.DEFAULT_RELAXATION=4,c.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},c.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var j=g.create(),k=g.create();c.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,e=(b.position,c.position,b.angle),f=c.angle;return d(a,j,e,k,f)+this.offset};g.create(),g.create();c.prototype.transformedGmult=function(a,b,c,e,f){return d(a,b,c,e,f)},c.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.transformedGmult(a,d,f,e,g)+this.relativeVelocity},c.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,e=b.vlambda,f=c.vlambda,g=b.wlambda,h=c.wlambda;return d(a,e,g,f,h)};var l=g.create(),m=g.create();c.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,h=b.force,i=b.angularForce,j=e(a),k=e(b),n=f(a),o=f(b),p=this.G;return g.scale(l,c,j),g.scale(m,h,k),this.transformedGmult(p,l,d*n,m,i*o)},c.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=e(a),d=e(b),g=f(a),h=f(b),i=this.G;return i[0]*i[0]*c+i[1]*i[1]*c+i[2]*i[2]*g+i[3]*i[3]*d+i[4]*i[4]*d+i[5]*i[5]*h};{var n=g.create(),o=g.create(),p=g.create();g.create(),g.create(),g.create()}c.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=n,h=o,i=p,j=e(b),k=e(c),l=f(b),m=f(c),q=this.G;h[0]=q[0],h[1]=q[1],i[0]=q[3],i[1]=q[4],g.scale(d,h,j*a),g.add(b.vlambda,b.vlambda,d),b.wlambda+=l*q[2]*a,g.scale(d,i,k*a),g.add(c.vlambda,c.vlambda,d),c.wlambda+=m*q[5]*a},c.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":45}],23:[function(a,b){function c(a,b,c){e.call(this,a,b,-c,c),this.contactPointA=d.create(),this.contactPointB=d.create(),this.t=d.create(),this.contactEquation=null,this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}{var d=a("../math/vec2"),e=a("./Equation");a("../utils/Utils")}b.exports=c,c.prototype=new e,c.prototype.constructor=c,c.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},c.prototype.getSlipForce=function(){return this.maxForce},c.prototype.computeB=function(a,b,c){var e=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-d.crossLength(e,g),h[3]=g[0],h[4]=g[1],h[5]=d.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":45,"./Equation":22}],24:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var e=this.G;e[2]=1,e[5]=-1}var d=a("./Equation"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c;var f=e.create(),g=e.create(),h=e.fromValues(1,0),i=e.fromValues(0,1);c.prototype.computeGq=function(){return e.rotate(f,h,this.bodyA.angle+this.angle),e.rotate(g,i,this.bodyB.angle),e.dot(f,g)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b){function c(a,b){d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}{var d=a("./Equation");a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b){var c=function(){};b.exports=c,c.prototype={constructor:c,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;return void 0!==c[a]&&-1!==c[a].indexOf(b)?!0:!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b){function c(a,b,f){if(f=f||{},!(a instanceof d&&b instanceof d))throw new Error("First two arguments must be Material instances.");this.id=c.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof f.friction?Number(f.friction):.3,this.restitution="undefined"!=typeof f.restitution?Number(f.restitution):0,this.stiffness="undefined"!=typeof f.stiffness?Number(f.stiffness):e.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof f.relaxation?Number(f.relaxation):e.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof f.frictionStiffness?Number(f.frictionStiffness):e.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof f.frictionRelaxation?Number(f.frictionRelaxation):e.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof f.surfaceVelocity?Number(f.surfaceVelocity):0}var d=a("./Material"),e=a("../equations/Equation");b.exports=c,c.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b){function c(){this.id=c.idCounter++}b.exports=c,c.idCounter=0},{}],29:[function(a,b){var c={};c.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},c.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var d=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(c._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&c._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return d.push(e[0],e[1],e[2]),d},c._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},c._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=c},{}],30:[function(a,b){var c=a("../../build/vec2").vec2;c.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},c.crossVZ=function(a,b,d){return c.rotate(a,b,-Math.PI/2),c.scale(a,a,d),a},c.crossZV=function(a,b,d){return c.rotate(a,d,Math.PI/2),c.scale(a,a,b),a},c.rotate=function(a,b,c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g},c.toLocalFrame=function(a,b,d,e){c.copy(a,b),c.sub(a,a,d),c.rotate(a,a,-e)},c.toGlobalFrame=function(a,b,d,e){c.copy(a,b),c.rotate(a,a,e),c.add(a,a,d)},c.centroid=function(a,b,d,e){return c.add(a,b,d),c.add(a,a,e),c.scale(a,a,1/3),a},b.exports=c},{"../../build/vec2":1}],31:[function(a,b){function c(a){a=a||{},h.call(this),this.id=++c._idCounter,this.world=null,this.shapes=[],this.shapeOffsets=[],this.shapeAngles=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.fixedRotation=!!a.fixedRotation||!1,this.position=d.fromValues(0,0),a.position&&d.copy(this.position,a.position),this.interpolatedPosition=d.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=d.fromValues(0,0),this.previousAngle=0,this.velocity=d.fromValues(0,0),a.velocity&&d.copy(this.velocity,a.velocity),this.vlambda=d.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=d.create(),a.force&&d.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.motionState=0===this.mass?c.STATIC:c.DYNAMIC,this.boundingRadius=0,this.aabb=new g,this.aabbNeedsUpdate=!0,this.allowSleep=!0,this.wantsToSleep=!1,this.sleepState=c.AWAKE,this.sleepSpeedLimit=.2,this.sleepTimeLimit=1,this.gravityScale=1,this.timeLastSleepy=0,this.concavePath=null,this.lastDampingScale=1,this.lastAngularDampingScale=1,this.lastDampingTimeStep=-1,this.updateMassProperties()}var d=a("../math/vec2"),e=a("poly-decomp"),f=a("../shapes/Convex"),g=a("../collision/AABB"),h=a("../events/EventEmitter");b.exports=c,c.prototype=new h,c._idCounter=0,c.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},c.prototype.getArea=function(){for(var a=0,b=0;be&&(e=h+i)}this.boundingRadius=e},c.prototype.addShape=function(a,b,c){c=c||0,b=b?d.fromValues(b[0],b[1]):d.fromValues(0,0),this.shapes.push(a),this.shapeOffsets.push(b),this.shapeAngles.push(c),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},c.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.shapeOffsets.splice(b,1),this.shapeAngles.splice(b,1),this.aabbNeedsUpdate=!0,!0):!1},c.prototype.updateMassProperties=function(){if(this.motionState===c.STATIC||this.motionState===c.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,e=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=d.squaredLength(this.shapeOffsets[g]),j=h.computeMomentOfInertia(e);f+=j+e*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass}};var k=d.create();c.prototype.applyForce=function(a,b){var c=k;d.sub(c,b,this.position),d.add(this.force,this.force,a);var e=d.crossLength(c,a);this.angularForce+=e},c.prototype.toLocalFrame=function(a,b){d.toLocalFrame(a,b,this.position,this.angle)},c.prototype.toWorldFrame=function(a,b){d.toGlobalFrame(a,b,this.position,this.angle)},c.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var g=new e.Polygon;if(g.vertices=a,g.makeCCW(),"number"==typeof b.removeCollinearPoints&&g.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!g.isSimple())return!1;this.concavePath=g.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=c.AWAKE):(this.idleTime+=e,this.sleepState=c.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},c.prototype.getVelocityFromPosition=function(a,b){return a=a||d.create(),d.sub(a,this.position,this.previousPosition),d.scale(a,a,1/b),a},c.prototype.getAngularVelocityFromPosition=function(a){return(this.angle-this.previousAngle)/a},c.sleepyEvent={type:"sleepy"},c.sleepEvent={type:"sleep"},c.wakeUpEvent={type:"wakeup"},c.DYNAMIC=1,c.STATIC=2,c.KINEMATIC=4,c.AWAKE=0,c.SLEEPY=1,c.SLEEPING=2},{"../collision/AABB":8,"../events/EventEmitter":26,"../math/vec2":30,"../shapes/Convex":36,"poly-decomp":6}],32:[function(a,b){function c(a,b,c){c=c||{},this.restLength="number"==typeof c.restLength?c.restLength:1,this.stiffness=c.stiffness||100,this.damping=c.damping||1,this.bodyA=a,this.bodyB=b,this.localAnchorA=d.fromValues(0,0),this.localAnchorB=d.fromValues(0,0),c.localAnchorA&&d.copy(this.localAnchorA,c.localAnchorA),c.localAnchorB&&d.copy(this.localAnchorB,c.localAnchorB),c.worldAnchorA&&this.setWorldAnchorA(c.worldAnchorA),c.worldAnchorB&&this.setWorldAnchorB(c.worldAnchorB)}var d=a("../math/vec2");b.exports=c,c.prototype.setWorldAnchorA=function(a){this.bodyA.toLocalFrame(this.localAnchorA,a)},c.prototype.setWorldAnchorB=function(a){this.bodyB.toLocalFrame(this.localAnchorB,a)},c.prototype.getWorldAnchorA=function(a){this.bodyA.toWorldFrame(a,this.localAnchorA)},c.prototype.getWorldAnchorB=function(a){this.bodyB.toWorldFrame(a,this.localAnchorB)};var e=d.create(),f=d.create(),g=d.create(),h=d.create(),i=d.create(),j=d.create(),k=d.create(),l=d.create(),m=d.create();c.prototype.applyForce=function(){var a=this.stiffness,b=this.damping,c=this.restLength,n=this.bodyA,o=this.bodyB,p=e,q=f,r=g,s=h,t=m,u=i,v=j,w=k,x=l;this.getWorldAnchorA(u),this.getWorldAnchorB(v),d.sub(w,u,n.position),d.sub(x,v,o.position),d.sub(p,v,u);var y=d.len(p);d.normalize(q,p),d.sub(r,o.velocity,n.velocity),d.crossZV(t,o.angularVelocity,x),d.add(r,r,t),d.crossZV(t,n.angularVelocity,w),d.sub(r,r,t),d.scale(s,q,-a*(y-c)-b*d.dot(r,q)),d.sub(n.force,n.force,s),d.add(o.force,o.force,s);var z=d.crossLength(w,s),A=d.crossLength(x,s);n.angularForce-=z,o.angularForce+=A}},{"../math/vec2":30}],33:[function(a,b){b.exports={AABB:a("./collision/AABB"),AngleLockEquation:a("./equations/AngleLockEquation"),Body:a("./objects/Body"),Broadphase:a("./collision/Broadphase"),Capsule:a("./shapes/Capsule"),Circle:a("./shapes/Circle"),Constraint:a("./constraints/Constraint"),ContactEquation:a("./equations/ContactEquation"),ContactMaterial:a("./material/ContactMaterial"),Convex:a("./shapes/Convex"),DistanceConstraint:a("./constraints/DistanceConstraint"),Equation:a("./equations/Equation"),EventEmitter:a("./events/EventEmitter"),FrictionEquation:a("./equations/FrictionEquation"),GearConstraint:a("./constraints/GearConstraint"),GridBroadphase:a("./collision/GridBroadphase"),GSSolver:a("./solver/GSSolver"),Heightfield:a("./shapes/Heightfield"),Line:a("./shapes/Line"),LockConstraint:a("./constraints/LockConstraint"),Material:a("./material/Material"),Narrowphase:a("./collision/Narrowphase"),NaiveBroadphase:a("./collision/NaiveBroadphase"),Particle:a("./shapes/Particle"),Plane:a("./shapes/Plane"),RevoluteConstraint:a("./constraints/RevoluteConstraint"),PrismaticConstraint:a("./constraints/PrismaticConstraint"),Rectangle:a("./shapes/Rectangle"),RotationalVelocityEquation:a("./equations/RotationalVelocityEquation"),SAPBroadphase:a("./collision/SAPBroadphase"),Shape:a("./shapes/Shape"),Solver:a("./solver/Solver"),Spring:a("./objects/Spring"),Utils:a("./utils/Utils"),World:a("./world/World"),vec2:a("./math/vec2"),version:a("../package.json").version}},{"../package.json":7,"./collision/AABB":8,"./collision/Broadphase":9,"./collision/GridBroadphase":10,"./collision/NaiveBroadphase":11,"./collision/Narrowphase":12,"./collision/SAPBroadphase":13,"./constraints/Constraint":14,"./constraints/DistanceConstraint":15,"./constraints/GearConstraint":16,"./constraints/LockConstraint":17,"./constraints/PrismaticConstraint":18,"./constraints/RevoluteConstraint":19,"./equations/AngleLockEquation":20,"./equations/ContactEquation":21,"./equations/Equation":22,"./equations/FrictionEquation":23,"./equations/RotationalVelocityEquation":25,"./events/EventEmitter":26,"./material/ContactMaterial":27,"./material/Material":28,"./math/vec2":30,"./objects/Body":31,"./objects/Spring":32,"./shapes/Capsule":34,"./shapes/Circle":35,"./shapes/Convex":36,"./shapes/Heightfield":37,"./shapes/Line":38,"./shapes/Particle":39,"./shapes/Plane":40,"./shapes/Rectangle":41,"./shapes/Shape":42,"./solver/GSSolver":43,"./solver/Solver":44,"./utils/Utils":45,"./world/World":49}],34:[function(a,b){function c(a,b){this.length=a||1,this.radius=b||1,d.call(this,d.CAPSULE)}var d=a("./Shape"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.computeMomentOfInertia=function(a){var b=this.radius,c=this.length+b,d=2*b;return a*(d*d+c*c)/12},c.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius+this.length/2},c.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius+2*this.radius*this.length};var f=e.create();c.prototype.computeAABB=function(a,b,c){var d=this.radius;e.set(f,this.length,0),e.rotate(f,f,c),e.set(a.upperBound,Math.max(f[0]+d,-f[0]+d),Math.max(f[1]+d,-f[1]+d)),e.set(a.lowerBound,Math.min(f[0]-d,-f[0]-d),Math.min(f[1]-d,-f[1]-d)),e.add(a.lowerBound,a.lowerBound,b),e.add(a.upperBound,a.upperBound,b)}},{"../math/vec2":30,"./Shape":42}],35:[function(a,b){function c(a){this.radius=a||1,d.call(this,d.CIRCLE)}var d=a("./Shape"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},c.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},c.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},c.prototype.computeAABB=function(a,b){var c=this.radius;e.set(a.upperBound,c,c),e.set(a.lowerBound,-c,-c),b&&(e.add(a.lowerBound,a.lowerBound,b),e.add(a.upperBound,a.upperBound,b))}},{"../math/vec2":30,"./Shape":42}],36:[function(a,b){function c(a){this.vertices=[];for(var b=0;bg;f=g,g++){var h=this.vertices[f],i=this.vertices[g],j=Math.abs(e.crossLength(h,i)),k=e.dot(i,i)+e.dot(i,h)+e.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},c.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=e.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},c.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},c.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,d=0;d!==a.length;d++){var e=a[d],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=c.triangleArea(f,g,h);this.area+=i}},c.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c)}},{"../math/polyk":29,"../math/vec2":30,"./Shape":42,"poly-decomp":6}],37:[function(a,b){function c(a,b,c){this.data=a,this.maxValue=b,this.elementWidth=c,d.call(this,d.HEIGHTFIELD)}{var d=a("./Shape");a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.computeMomentOfInertia=function(){return Number.MAX_VALUE},c.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},c.prototype.updateArea=function(){for(var a=this.data,b=0,c=0;c=v*v)break}for(w=0;w!==l;w++){var y=k[w];if(y instanceof h){var z=y.contactEquation.multiplier*y.frictionCoefficient;y.maxForce=z,y.minForce=-z}}}for(f=0;f!==i;f++){for(v=0,w=0;w!==l;w++){u=k[w];var x=c.iterateEquation(w,u,u.epsilon,s,r,q,p,a,f);v+=Math.abs(x)}if(this.usedIterations++,m>=v*v)break}for(t=0;t!==o;t++)n[t].addConstraintVelocity()}},c.iterateEquation=function(a,b,c,d,e,f,g,h){var i=d[a],j=e[a],k=f[a],l=b.computeGWlambda(),m=b.maxForce,n=b.minForce;g&&(i=0);var o=j*(i-l-c*k),p=k+o;return n*h>p?o=n*h-k:p>m*h&&(o=m*h-k),f[a]+=o,b.multiplier=f[a]/h,b.addToWlambda(o),o}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":45,"./Solver":44}],44:[function(a,b){function c(a,b){a=a||{},d.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var d=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=c,c.prototype=new d,c.prototype.solve=function(){throw new Error("Solver.solve should be implemented by subclasses!")};var e={bodies:[]};c.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),e.bodies.length=0,b.getBodies(e.bodies),e.bodies.length&&this.solve(a,e))},c.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},c.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},c.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},c.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},c.prototype.removeAllEquations=function(){this.equations.length=0},c.GS=1,c.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":45}],45:[function(a,b){function c(){}b.exports=c,c.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},c.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},c.ARRAY_TYPE=Float32Array||Array,c.extend=function(a,b){for(var c in b)a[c]=b[c]}},{}],46:[function(a,b){function c(){this.equations=[],this.bodies=[]}var d=a("../objects/Body");b.exports=c,c.prototype.reset=function(){this.equations.length=this.bodies.length=0};var e=[];c.prototype.getBodies=function(a){var b=a||[],c=this.equations;e.length=0;for(var d=0;d!==c.length;d++){var f=c[d];-1===e.indexOf(f.bodyA.id)&&(b.push(f.bodyA),e.push(f.bodyA.id)),-1===e.indexOf(f.bodyB.id)&&(b.push(f.bodyB),e.push(f.bodyB.id))}return b},c.prototype.wantsToSleep=function(){for(var a=0;ae;e++)this.internalStep(a);this.time+=b;for(var f=this.time%a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];h.motionState!==s.STATIC&&h.sleepState!==s.SLEEPING?(j.sub(N,h.position,h.previousPosition),j.scale(N,N,f/a),j.add(h.interpolatedPosition,h.position,N),h.interpolatedAngle=h.angle+(h.angle-h.previousAngle)*f/a):(j.copy(h.interpolatedPosition,h.position),h.interpolatedAngle=h.angle)}}},c.prototype.internalStep=function(a){this.stepping=!0;var b,d,e=this,f=this.doProfiling,g=this.springs.length,h=this.springs,i=this.bodies,k=this.gravity,l=this.solver,m=this.bodies.length,n=this.broadphase,o=this.narrowphase,p=this.constraints,q=K,r=(j.scale,j.add),t=(j.rotate,this.islandManager);if(this.lastTimeStep=a,f&&(b=performance.now()),this.useWorldGravityAsFrictionGravity){var u=j.length(this.gravity);0===u&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=u)}if(this.applyGravity)for(var v=0;v!==m;v++){var w=i[v],x=w.force;w.motionState===s.DYNAMIC&&w.sleepState!==s.SLEEPING&&(j.scale(q,k,w.mass*w.gravityScale),r(x,x,q))}if(this.applySpringForces)for(var v=0;v!==g;v++){var y=h[v];y.applyForce()}if(this.applyDamping)for(var v=0;v!==m;v++){var w=i[v];w.motionState===s.DYNAMIC&&w.applyDamping(a)}for(var z=n.getCollisionPairs(this),A=this.disabledBodyCollisionPairs,v=A.length-2;v>=0;v-=2)for(var B=z.length-2;B>=0;B-=2)(A[v]===z[B]&&A[v+1]===z[B+1]||A[v+1]===z[B]&&A[v]===z[B+1])&&z.splice(B,2);var C=p.length;for(v=0;v!==C;v++){var D=p[v];if(!D.collideConnected)for(var B=z.length-2;B>=0;B-=2)(D.bodyA===z[B]&&D.bodyB===z[B+1]||D.bodyB===z[B]&&D.bodyA===z[B+1])&&z.splice(B,2)}this.postBroadphaseEvent.pairs=z,this.emit(this.postBroadphaseEvent),o.reset(this);for(var v=0,E=z.length;v!==E;v+=2)for(var F=z[v],G=z[v+1],I=0,J=F.shapes.length;I!==J;I++)for(var L=F.shapes[I],M=F.shapeOffsets[I],N=F.shapeAngles[I],O=0,P=G.shapes.length;O!==P;O++){var Q=G.shapes[O],R=G.shapeOffsets[O],S=G.shapeAngles[O],T=this.defaultContactMaterial;if(L.material&&Q.material){var U=this.getContactMaterial(L.material,Q.material);U&&(T=U)}this.runNarrowphase(o,F,L,M,N,G,Q,R,S,T,this.frictionGravity)}for(var V=this.overlappingShapesLastState,v=0;v!==V.keys.length;v++){var W=V.keys[v];if(V[W]===!0&&!this.overlappingShapesCurrentState[W]){var X=this.endContactEvent;X.shapeA=V[W+"_shapeA"],X.shapeB=V[W+"_shapeB"],X.bodyA=V[W+"_bodyA"],X.bodyB=V[W+"_bodyB"],this.emit(X)}}for(var v=0;v!==V.keys.length;v++)delete V[V.keys[v]];V.keys.length=0;for(var Y=this.overlappingShapesCurrentState,v=0;v!==Y.keys.length;v++)V[Y.keys[v]]=Y[Y.keys[v]],V.keys.push(Y.keys[v]);for(var v=0;v!==Y.keys.length;v++)delete Y[Y.keys[v]];Y.keys.length=0;var Z=this.preSolveEvent;Z.contactEquations=o.contactEquations,Z.frictionEquations=o.frictionEquations,this.emit(Z);var C=p.length;for(v=0;v!==C;v++)p[v].update();if(o.contactEquations.length||o.frictionEquations.length||p.length)if(this.islandSplit){for(t.equations.length=0,H.appendArray(t.equations,o.contactEquations),H.appendArray(t.equations,o.frictionEquations),v=0;v!==C;v++)H.appendArray(t.equations,p[v].equations);t.split(this);for(var v=0;v!==t.islands.length;v++){var $=t.islands[v];$.equations.length&&l.solveIsland(a,$)}}else{for(l.addEquations(o.contactEquations),l.addEquations(o.frictionEquations),v=0;v!==C;v++)l.addEquations(p[v].equations);this.solveConstraints&&l.solve(a,this),l.removeAllEquations()}for(var v=0;v!==m;v++){var _=i[v];_.sleepState!==s.SLEEPING&&_.motionState!==s.STATIC&&c.integrateBody(_,a)}for(var v=0;v!==m;v++)i[v].setZeroForce();if(f&&(d=performance.now(),e.lastStepTime=d-b),this.emitImpactEvent)for(var ab=this.impactEvent,v=0;v!==o.contactEquations.length;v++){var bb=o.contactEquations[v];bb.firstImpact&&(ab.bodyA=bb.bodyA,ab.bodyB=bb.bodyB,ab.shapeA=bb.shapeA,ab.shapeB=bb.shapeB,ab.contactEquation=bb,this.emit(ab))}if(this.enableBodySleeping)for(v=0;v!==m;v++)i[v].sleepTick(this.time,!1,a);else if(this.enableIslandSleeping&&this.islandSplit){for(v=0;v!==m;v++)i[v].sleepTick(this.time,!0,a);for(var v=0;v0,a.frictionCoefficient=k.friction;var o;o=b.motionState===s.STATIC||b.motionState===s.KINEMATIC?f.mass:f.motionState===s.STATIC||f.motionState===s.KINEMATIC?b.mass:b.mass*f.mass/(b.mass+f.mass),a.slipForce=k.friction*l*o,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation;var p=a[c.type|g.type],q=0;if(p){var r=c.sensor||g.sensor,t=a.frictionEquations.length;q=c.type=2*A&&(v=!0),f.allowSleep&&f.motionState===s.DYNAMIC&&f.sleepState===s.SLEEPING&&b.sleepState===s.AWAKE&&b.motionState!==s.STATIC&&x>=2*y&&(w=!0),v&&b.wakeUp(),w&&f.wakeUp();var B=c.id1)for(var D=a.frictionEquations.length-u;D=0;b--)this.removeConstraint(a[b]);for(var d=this.bodies,b=d.length-1;b>=0;b--)this.removeBody(d[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);c.apply(this)},c.prototype.clone=function(){var a=new c;return a.fromJSON(this.toJSON()),a};var Q=j.create(),R=j.fromValues(0,0),S=j.fromValues(0,0);c.prototype.hitTest=function(a,b,c){c=c||0;var d=new s({position:a}),e=new q,f=a,g=0,h=Q,i=R,l=S;d.addShape(e);for(var n=this.narrowphase,r=[],t=0,u=b.length;t!==u;t++)for(var v=b[t],w=0,x=v.shapes.length;w!==x;w++){var y=v.shapes[w],z=v.shapeOffsets[w]||i,A=v.shapeAngles[w]||0;j.rotate(h,z,v.angle),j.add(h,h,v.position);var B=A+v.angle;(y instanceof k&&n.circleParticle(v,y,h,B,d,e,f,g,!0)||y instanceof m&&n.particleConvex(d,e,f,g,v,y,h,B,!0)||y instanceof o&&n.particlePlane(d,e,f,g,v,y,h,B,!0)||y instanceof p&&n.particleCapsule(d,e,f,g,v,y,h,B,!0)||y instanceof q&&j.squaredLength(j.sub(l,h,a))0&&this.enable(a[d],b,!0));else a instanceof Phaser.Group?this.enable(a.children,b,c):(this.enableBody(a,b),c&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback)for(var b=a.pairs.length;b-=2;)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2) -},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA,a.contactEquations)},endContactHandler:function(a){this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA)},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){var b=this.everythingCollisionGroup.mask;"undefined"==typeof a&&(b=this.boundsCollisionGroup.mask),this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b)},setBounds:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof e&&(e=!0),"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=!0),"undefined"==typeof h&&(h=!0),"undefined"==typeof i&&(i=!0),this.walls.left&&this.world.removeBody(this.walls.left),this.walls.right&&this.world.removeBody(this.walls.right),this.walls.top&&this.world.removeBody(this.walls.top),this.walls.bottom&&this.world.removeBody(this.walls.bottom),e&&(this.walls.left=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:1.5707963267948966}),this.walls.left.addShape(new p2.Plane),i&&(this.walls.left.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.left)),f&&(this.walls.right=new p2.Body({mass:0,position:[this.pxmi(a+c),this.pxmi(b)],angle:-1.5707963267948966}),this.walls.right.addShape(new p2.Plane),i&&(this.walls.right.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.right)),g&&(this.walls.top=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:-3.141592653589793}),this.walls.top.addShape(new p2.Plane),i&&(this.walls.top.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.top)),h&&(this.walls.bottom=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(d)]}),this.walls.bottom.addShape(new p2.Plane),i&&(this.walls.bottom.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.bottom))},update:function(){this.world.step(this.useElapsedTime?this.game.time.physicsElapsed:this.frameRate)},clear:function(){this.world.clear(),this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this._collisionGroupID=2,this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,c,d){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.DistanceConstraint(this,a,b,c,d)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,c,d){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.GearConstraint(this,a,b,c,d)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,c,d,e){return a=this.getBody(a),c=this.getBody(c),a&&c?this.addConstraint(new Phaser.Physics.P2.RevoluteConstraint(this,a,b,c,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,c,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.LockConstraint(this,a,b,c,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,c,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.PrismaticConstraint(this,a,b,c,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b.setMaterial(a)},createMaterial:function(a,b){a=a||"";var c=new Phaser.Physics.P2.Material(a);return this.materials.push(c),"undefined"!=typeof b&&b.setMaterial(c),c},createContactMaterial:function(a,b,c){"undefined"==typeof a&&(a=this.createMaterial()),"undefined"==typeof b&&(b=this.createMaterial());var d=new Phaser.Physics.P2.ContactMaterial(a,b,c);return this.addContactMaterial(d)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof Phaser.Physics.P2.Body?a.data:a.body&&a.body.type===Phaser.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b].parent);return a},hitTest:function(a,b,c,d){"undefined"==typeof b&&(b=this.world.bodies),"undefined"==typeof c&&(c=5),"undefined"==typeof d&&(d=!1);for(var e=[this.pxmi(a.x),this.pxmi(a.y)],f=[],g=b.length;g--;)b[g]instanceof Phaser.Physics.P2.Body&&(!d||b[g].data.motionState!==p2.Body.STATIC)?f.push(b[g].data):b[g]instanceof p2.Body&&b[g].parent&&(!d||b[g].motionState!==p2.Body.STATIC)?f.push(b[g]):b[g]instanceof Phaser.Sprite&&b[g].hasOwnProperty("body")&&(!d||b[g].body.data.motionState!==p2.Body.STATIC)&&f.push(b[g].body.data);return this.world.hitTest(e,f,c)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var c=new Phaser.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(c),a&&this.setCollisionGroup(a,c),c},setCollisionGroup:function(a,b){if(a instanceof Phaser.Group)for(var c=0;ce;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=[]},convertTilemap:function(a,b,c,d){b=a.getLayer(b),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(Phaser.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"defaultFriction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"defaultRestitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(Phaser.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"enableBodySleeping",{get:function(){return this.world.enableBodySleeping},set:function(a){this.world.enableBodySleeping=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),Phaser.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},Phaser.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},Phaser.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.PointProxy.prototype.constructor=Phaser.Physics.P2.PointProxy,Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=this.world.pxm(a)}}),Phaser.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.InversePointProxy.prototype.constructor=Phaser.Physics.P2.InversePointProxy,Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=this.world.pxm(-a)}}),Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=this.world.pxm(-a)}}),Phaser.Physics.P2.Body=function(a,b,c,d,e){b=b||null,c=c||0,d=d||0,"undefined"==typeof e&&(e=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=Phaser.Physics.P2JS,this.offset=new Phaser.Point,this.data=new p2.Body({position:[this.world.pxmi(c),this.world.pxmi(d)],mass:e}),this.data.parent=this,this.velocity=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new Phaser.Point,this.onBeginContact=new Phaser.Signal,this.onEndContact=new Phaser.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},Phaser.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbacksContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if("undefined"==typeof b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if("undefined"==typeof c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass()},applyDamping:function(a){this.data.applyDamping(a)},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxm(b),this.world.pxm(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0]),this.sprite.y=this.world.mpxi(this.data.position[1]),this.fixedRotation||(this.sprite.rotation=this.data.angle)},reset:function(a,b,c,d){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){this.data.world!==this.game.physics.p2.world&&this.game.physics.p2.addBody(this)},removeFromWorld:function(){this.data.world===this.game.physics.p2.world&&this.game.physics.p2.removeBodyNextStep(this)},destroy:function(){this.removeFromWorld(),this.clearShapes(),this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this.debugBody&&this.debugBody.destroy(),this.debugBody=null,this.sprite=null},clearShapes:function(){for(var a=this.data.shapes.length;a--;)this.data.removeShape(this.data.shapes[a]);this.shapeChanged()},addShape:function(a,b,c,d){return"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),"undefined"==typeof d&&(d=0),this.data.addShape(a,[this.world.pxmi(b),this.world.pxmi(c)],d),this.shapeChanged(),a},addCircle:function(a,b,c,d){var e=new p2.Circle(this.world.pxm(a));return this.addShape(e,b,c,d)},addRectangle:function(a,b,c,d,e){var f=new p2.Rectangle(this.world.pxm(a),this.world.pxm(b));return this.addShape(f,c,d,e)},addPlane:function(a,b,c){var d=new p2.Plane;return this.addShape(d,a,b,c)},addParticle:function(a,b,c){var d=new p2.Particle;return this.addShape(d,a,b,c)},addLine:function(a,b,c,d){var e=new p2.Line(this.world.pxm(a));return this.addShape(e,b,c,d)},addCapsule:function(a,b,c,d,e){var f=new p2.Capsule(this.world.pxm(a),b);return this.addShape(f,c,d,e)},addPolygon:function(a,b){a=a||{},b=Array.prototype.slice.call(arguments,1);var c=[];if(1===b.length&&Array.isArray(b[0]))c=b[0].slice(0);else if(Array.isArray(b[0]))c=b[0].slice(0);else if("number"==typeof b[0])for(var d=0,e=b.length;e>d;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;eg;g+=2)e.push([f.shape[g],f.shape[g+1]]);return this.addPolygon(c,e)}for(var i=p2.vec2.create(),g=0;g=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}else b instanceof p2.Plane?this.drawPlane(j,i[0]*this.ppu,-i[1]*this.ppu,c,f,5*g,10*g,10*g,100*this.ppu,a):b instanceof p2.Line?this.drawLine(j,b.length*this.ppu,f,g):b instanceof p2.Rectangle&&this.drawRectangle(j,i[0]*this.ppu,-i[1]*this.ppu,a,b.width*this.ppu,b.height*this.ppu,f,c,g);d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof i&&(i=1),"undefined"==typeof g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){"undefined"==typeof g&&(g=1),"undefined"==typeof f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){"undefined"==typeof d&&(d=1),"undefined"==typeof c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if("undefined"==typeof f&&(f=1),"undefined"==typeof d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0 +},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA,a.contactEquations)},endContactHandler:function(a){this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.shapeB,a.shapeA)},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){var b=this.everythingCollisionGroup.mask;"undefined"==typeof a&&(b=this.boundsCollisionGroup.mask),this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b)},setBounds:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof e&&(e=!0),"undefined"==typeof f&&(f=!0),"undefined"==typeof g&&(g=!0),"undefined"==typeof h&&(h=!0),"undefined"==typeof i&&(i=!0),this.walls.left&&this.world.removeBody(this.walls.left),this.walls.right&&this.world.removeBody(this.walls.right),this.walls.top&&this.world.removeBody(this.walls.top),this.walls.bottom&&this.world.removeBody(this.walls.bottom),e&&(this.walls.left=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:1.5707963267948966}),this.walls.left.addShape(new p2.Plane),i&&(this.walls.left.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.left)),f&&(this.walls.right=new p2.Body({mass:0,position:[this.pxmi(a+c),this.pxmi(b)],angle:-1.5707963267948966}),this.walls.right.addShape(new p2.Plane),i&&(this.walls.right.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.right)),g&&(this.walls.top=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:-3.141592653589793}),this.walls.top.addShape(new p2.Plane),i&&(this.walls.top.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.top)),h&&(this.walls.bottom=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(d)]}),this.walls.bottom.addShape(new p2.Plane),i&&(this.walls.bottom.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.bottom))},update:function(){this.world.step(this.useElapsedTime?this.game.time.physicsElapsed:this.frameRate)},clear:function(){this.world.clear(),this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this._collisionGroupID=2,this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,c,d){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.DistanceConstraint(this,a,b,c,d)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,c,d){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.GearConstraint(this,a,b,c,d)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,c,d,e){return a=this.getBody(a),c=this.getBody(c),a&&c?this.addConstraint(new Phaser.Physics.P2.RevoluteConstraint(this,a,b,c,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,c,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.LockConstraint(this,a,b,c,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,c,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new Phaser.Physics.P2.PrismaticConstraint(this,a,b,c,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b.setMaterial(a)},createMaterial:function(a,b){a=a||"";var c=new Phaser.Physics.P2.Material(a);return this.materials.push(c),"undefined"!=typeof b&&b.setMaterial(c),c},createContactMaterial:function(a,b,c){"undefined"==typeof a&&(a=this.createMaterial()),"undefined"==typeof b&&(b=this.createMaterial());var d=new Phaser.Physics.P2.ContactMaterial(a,b,c);return this.addContactMaterial(d)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof Phaser.Physics.P2.Body?a.data:a.body&&a.body.type===Phaser.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b].parent);return a},hitTest:function(a,b,c,d){"undefined"==typeof b&&(b=this.world.bodies),"undefined"==typeof c&&(c=5),"undefined"==typeof d&&(d=!1);for(var e=[this.pxmi(a.x),this.pxmi(a.y)],f=[],g=b.length;g--;)b[g]instanceof Phaser.Physics.P2.Body&&(!d||b[g].data.motionState!==p2.Body.STATIC)?f.push(b[g].data):b[g]instanceof p2.Body&&b[g].parent&&(!d||b[g].motionState!==p2.Body.STATIC)?f.push(b[g]):b[g]instanceof Phaser.Sprite&&b[g].hasOwnProperty("body")&&(!d||b[g].body.data.motionState!==p2.Body.STATIC)&&f.push(b[g].body.data);return this.world.hitTest(e,f,c)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var c=new Phaser.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(c),a&&this.setCollisionGroup(a,c),c},setCollisionGroup:function(a,b){if(a instanceof Phaser.Group)for(var c=0;ce;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=[]},convertTilemap:function(a,b,c,d){b=a.getLayer(b),"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(Phaser.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"defaultFriction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"defaultRestitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(Phaser.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"enableBodySleeping",{get:function(){return this.world.enableBodySleeping},set:function(a){this.world.enableBodySleeping=a}}),Object.defineProperty(Phaser.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),Phaser.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},Phaser.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},Phaser.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.PointProxy.prototype.constructor=Phaser.Physics.P2.PointProxy,Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=this.world.pxm(a)}}),Phaser.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},Phaser.Physics.P2.InversePointProxy.prototype.constructor=Phaser.Physics.P2.InversePointProxy,Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=this.world.pxm(-a)}}),Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=this.world.pxm(-a)}}),Phaser.Physics.P2.Body=function(a,b,c,d,e){b=b||null,c=c||0,d=d||0,"undefined"==typeof e&&(e=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=Phaser.Physics.P2JS,this.offset=new Phaser.Point,this.data=new p2.Body({position:[this.world.pxmi(c),this.world.pxmi(d)],mass:e}),this.data.parent=this,this.velocity=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new Phaser.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new Phaser.Point,this.onBeginContact=new Phaser.Signal,this.onEndContact=new Phaser.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},Phaser.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbacksContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if("undefined"==typeof b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if("undefined"==typeof c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass()},applyDamping:function(a){this.data.applyDamping(a)},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxm(b),this.world.pxm(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0]),this.sprite.y=this.world.mpxi(this.data.position[1]),this.fixedRotation||(this.sprite.rotation=this.data.angle)},reset:function(a,b,c,d){"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){this.data.world!==this.game.physics.p2.world&&this.game.physics.p2.addBody(this)},removeFromWorld:function(){this.data.world===this.game.physics.p2.world&&this.game.physics.p2.removeBodyNextStep(this)},destroy:function(){this.removeFromWorld(),this.clearShapes(),this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this.debugBody&&this.debugBody.destroy(),this.debugBody=null,this.sprite=null},clearShapes:function(){for(var a=this.data.shapes.length;a--;)this.data.removeShape(this.data.shapes[a]);this.shapeChanged()},addShape:function(a,b,c,d){return"undefined"==typeof b&&(b=0),"undefined"==typeof c&&(c=0),"undefined"==typeof d&&(d=0),this.data.addShape(a,[this.world.pxmi(b),this.world.pxmi(c)],d),this.shapeChanged(),a},addCircle:function(a,b,c,d){var e=new p2.Circle(this.world.pxm(a));return this.addShape(e,b,c,d)},addRectangle:function(a,b,c,d,e){var f=new p2.Rectangle(this.world.pxm(a),this.world.pxm(b));return this.addShape(f,c,d,e)},addPlane:function(a,b,c){var d=new p2.Plane;return this.addShape(d,a,b,c)},addParticle:function(a,b,c){var d=new p2.Particle;return this.addShape(d,a,b,c)},addLine:function(a,b,c,d){var e=new p2.Line(this.world.pxm(a));return this.addShape(e,b,c,d)},addCapsule:function(a,b,c,d,e){var f=new p2.Capsule(this.world.pxm(a),b);return this.addShape(f,c,d,e)},addPolygon:function(a,b){a=a||{},b=Array.prototype.slice.call(arguments,1);var c=[];if(1===b.length&&Array.isArray(b[0]))c=b[0].slice(0);else if(Array.isArray(b[0]))c=b[0].slice(0);else if("number"==typeof b[0])for(var d=0,e=b.length;e>d;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;eg;g+=2)e.push([f.shape[g],f.shape[g+1]]);return this.addPolygon(c,e)}for(var i=p2.vec2.create(),g=0;g=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}else b instanceof p2.Plane?this.drawPlane(j,i[0]*this.ppu,-i[1]*this.ppu,c,f,5*g,10*g,10*g,100*this.ppu,a):b instanceof p2.Line?this.drawLine(j,b.length*this.ppu,f,g):b instanceof p2.Rectangle&&this.drawRectangle(j,i[0]*this.ppu,-i[1]*this.ppu,a,b.width*this.ppu,b.height*this.ppu,f,c,g);d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){"undefined"==typeof i&&(i=1),"undefined"==typeof g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){"undefined"==typeof g&&(g=1),"undefined"==typeof f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){"undefined"==typeof d&&(d=1),"undefined"==typeof c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if("undefined"==typeof f&&(f=1),"undefined"==typeof d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0 },drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for("undefined"==typeof e&&(e=1),"undefined"==typeof c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;"undefined"==typeof f&&(f=1),"undefined"==typeof d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.len?b:b+"0"}}),Phaser.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,"undefined"==typeof d&&(d=1),"undefined"==typeof e&&(e=100),"undefined"==typeof f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),p2.Spring.call(this,b,c,k)},Phaser.Physics.P2.Spring.prototype=Object.create(p2.Spring.prototype),Phaser.Physics.P2.Spring.prototype.constructor=Phaser.Physics.P2.Spring,Phaser.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},Phaser.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),Phaser.Physics.P2.Material.prototype.constructor=Phaser.Physics.P2.Material,Phaser.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},Phaser.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),Phaser.Physics.P2.ContactMaterial.prototype.constructor=Phaser.Physics.P2.ContactMaterial,Phaser.Physics.P2.CollisionGroup=function(a){this.mask=a},Phaser.Physics.P2.DistanceConstraint=function(a,b,c,d,e){"undefined"==typeof d&&(d=100),this.game=a.game,this.world=a,d=a.pxm(d),p2.DistanceConstraint.call(this,b,c,d,e)},Phaser.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),Phaser.Physics.P2.DistanceConstraint.prototype.constructor=Phaser.Physics.P2.DistanceConstraint,Phaser.Physics.P2.GearConstraint=function(a,b,c,d,e){"undefined"==typeof d&&(d=0),"undefined"==typeof e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},Phaser.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),Phaser.Physics.P2.GearConstraint.prototype.constructor=Phaser.Physics.P2.GearConstraint,Phaser.Physics.P2.LockConstraint=function(a,b,c,d,e,f){"undefined"==typeof d&&(d=[0,0]),"undefined"==typeof e&&(e=0),"undefined"==typeof f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},Phaser.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),Phaser.Physics.P2.LockConstraint.prototype.constructor=Phaser.Physics.P2.LockConstraint,Phaser.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=[0,0]),"undefined"==typeof f&&(f=[0,0]),"undefined"==typeof g&&(g=[0,0]),"undefined"==typeof h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},Phaser.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),Phaser.Physics.P2.PrismaticConstraint.prototype.constructor=Phaser.Physics.P2.PrismaticConstraint,Phaser.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f){"undefined"==typeof f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],p2.RevoluteConstraint.call(this,b,c,d,e,f)},Phaser.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),Phaser.Physics.P2.RevoluteConstraint.prototype.constructor=Phaser.Physics.P2.RevoluteConstraint; //# sourceMappingURL=phaser.map \ No newline at end of file diff --git a/docs/AABB.js.html b/docs/AABB.js.html index 3d91c7da29..45b7df34ee 100644 --- a/docs/AABB.js.html +++ b/docs/AABB.js.html @@ -1544,7 +1544,7 @@

Source: physics/ninja/AABB.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Animation.js.html b/docs/Animation.js.html index 6066c4c7d3..8e39abefaa 100644 --- a/docs/Animation.js.html +++ b/docs/Animation.js.html @@ -665,7 +665,6 @@

Source: animation/Animation.js

* Plays this animation. * * @method Phaser.Animation#play - * @memberof Phaser.Animation * @param {number} [frameRate=null] - The framerate to play the animation at. The speed is given in frames per second. If not provided the previously set frameRate of the Animation is used. * @param {boolean} [loop=false] - Should the animation be looped after playback. If not provided the previously set loop value of the Animation is used. * @param {boolean} [killOnComplete=false] - If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. @@ -722,7 +721,6 @@

Source: animation/Animation.js

* Sets this animation back to the first frame and restarts the animation. * * @method Phaser.Animation#restart - * @memberof Phaser.Animation */ restart: function () { @@ -747,7 +745,6 @@

Source: animation/Animation.js

* If `dispatchComplete` is true it will dispatch the complete events, otherwise they'll be ignored. * * @method Phaser.Animation#stop - * @memberof Phaser.Animation * @param {boolean} [resetFrame=false] - If true after the animation stops the currentFrame value will be set to the first frame in this animation. * @param {boolean} [dispatchComplete=false] - Dispatch the Animation.onComplete and parent.onAnimationComplete events? */ @@ -777,7 +774,6 @@

Source: animation/Animation.js

* Called when the Game enters a paused state. * * @method Phaser.Animation#onPause - * @memberof Phaser.Animation */ onPause: function () { @@ -792,7 +788,6 @@

Source: animation/Animation.js

* Called when the Game resumes from a paused state. * * @method Phaser.Animation#onResume - * @memberof Phaser.Animation */ onResume: function () { @@ -807,7 +802,6 @@

Source: animation/Animation.js

* Updates this animation. Called automatically by the AnimationManager. * * @method Phaser.Animation#update - * @memberof Phaser.Animation */ update: function () { @@ -892,7 +886,6 @@

Source: animation/Animation.js

* Cleans up this animation ready for deletion. Nulls all values and references. * * @method Phaser.Animation#destroy - * @memberof Phaser.Animation */ destroy: function () { @@ -903,9 +896,9 @@

Source: animation/Animation.js

this.currentFrame = null; this.isPlaying = false; - this.onStart.destroy(); - this.onLoop.destroy(); - this.onComplete.destroy(); + this.onStart.dispose(); + this.onLoop.dispose(); + this.onComplete.dispose(); this.game.onPause.remove(this.onPause, this); this.game.onResume.remove(this.onResume, this); @@ -917,7 +910,6 @@

Source: animation/Animation.js

* Sets the isPlaying and isFinished states and dispatches the onAnimationComplete event if it exists on the parent and local onComplete event. * * @method Phaser.Animation#complete - * @memberof Phaser.Animation */ complete: function () { @@ -1125,7 +1117,7 @@

Source: animation/Animation.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/AnimationManager.js.html b/docs/AnimationManager.js.html index 9adad9518c..a7e972c0ca 100644 --- a/docs/AnimationManager.js.html +++ b/docs/AnimationManager.js.html @@ -712,7 +712,7 @@

Source: animation/AnimationManager.js

if (this._anims[name]) { - if (this.currentAnim == this._anims[name]) + if (this.currentAnim === this._anims[name]) { if (this.currentAnim.isPlaying === false) { @@ -722,6 +722,11 @@

Source: animation/AnimationManager.js

} else { + if (this.currentAnim && this.currentAnim.isPlaying) + { + this.currentAnim.stop(); + } + this.currentAnim = this._anims[name]; this.currentAnim.paused = false; return this.currentAnim.play(frameRate, loop, killOnComplete); @@ -823,12 +828,23 @@

Source: animation/AnimationManager.js

}, /** - * Destroys all references this AnimationManager contains. Sets the _anims to a new object and nulls the current animation. + * Destroys all references this AnimationManager contains. + * Iterates through the list of animations stored in this manager and calls destroy on each of them. * * @method Phaser.AnimationManager#destroy */ destroy: function () { + var anim = null; + + for (var anim in this._anims) + { + if (this._anims.hasOwnProperty(anim)) + { + this._anims[anim].destroy(); + } + } + this._anims = {}; this._frameData = null; this._frameIndex = 0; @@ -994,7 +1010,7 @@

Source: animation/AnimationManager.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/AnimationParser.js.html b/docs/AnimationParser.js.html index 679d5ef45e..f4bd44360b 100644 --- a/docs/AnimationParser.js.html +++ b/docs/AnimationParser.js.html @@ -851,7 +851,7 @@

Source: animation/AnimationParser.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/BitmapData.js.html b/docs/BitmapData.js.html index 0344640c65..3a0a2e457b 100644 --- a/docs/BitmapData.js.html +++ b/docs/BitmapData.js.html @@ -916,7 +916,7 @@

Source: gameobjects/BitmapData.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/BitmapText.js.html b/docs/BitmapText.js.html index 8e8f63106b..438ee0d4f7 100644 --- a/docs/BitmapText.js.html +++ b/docs/BitmapText.js.html @@ -1002,7 +1002,7 @@

Source: gameobjects/BitmapText.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Body.js.html b/docs/Body.js.html index 1c7070f9de..6cb05d4023 100644 --- a/docs/Body.js.html +++ b/docs/Body.js.html @@ -804,7 +804,7 @@

Source: physics/arcade/Body.js

this.tilePadding = new Phaser.Point(); /** - * @property {number} phaser - Is this Body in a preUpdate or postUpdate state? + * @property {number} phaser - Is this Body in a preUpdate (1) or postUpdate (2) state? */ this.phase = 0; @@ -951,6 +951,12 @@

Source: physics/arcade/Body.js

*/ postUpdate: function () { + // Only allow postUpdate to be called once per frame + if (this.phase === 2) + { + return; + } + this.phase = 2; if (this.deltaX() < 0) @@ -1339,7 +1345,7 @@

Source: physics/arcade/Body.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Body.js_.html b/docs/Body.js_.html index 4b44497a02..da7d091a8e 100644 --- a/docs/Body.js_.html +++ b/docs/Body.js_.html @@ -1084,7 +1084,7 @@

Source: physics/ninja/Body.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Body.js__.html b/docs/Body.js__.html index 27ee7f7532..c9d33046bd 100644 --- a/docs/Body.js__.html +++ b/docs/Body.js__.html @@ -2340,7 +2340,7 @@

Source: physics/p2/Body.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/BodyDebug.js.html b/docs/BodyDebug.js.html index a64f21fc44..10677b3e12 100644 --- a/docs/BodyDebug.js.html +++ b/docs/BodyDebug.js.html @@ -963,7 +963,7 @@

Source: physics/p2/BodyDebug.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Button.js.html b/docs/Button.js.html index 7f89f522e6..a4707026b5 100644 --- a/docs/Button.js.html +++ b/docs/Button.js.html @@ -1173,7 +1173,7 @@

Source: gameobjects/Button.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Cache.js.html b/docs/Cache.js.html index 765c9dd377..5348b61b04 100644 --- a/docs/Cache.js.html +++ b/docs/Cache.js.html @@ -1743,7 +1743,7 @@

Source: loader/Cache.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Camera.js.html b/docs/Camera.js.html index e426b272f4..a4875d0994 100644 --- a/docs/Camera.js.html +++ b/docs/Camera.js.html @@ -971,7 +971,7 @@

Source: core/Camera.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Canvas.js.html b/docs/Canvas.js.html index 23b1761c6a..b8f3830268 100644 --- a/docs/Canvas.js.html +++ b/docs/Canvas.js.html @@ -832,7 +832,7 @@

Source: system/Canvas.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Circle.js.html b/docs/Circle.js.html index 2de3d0d37b..7f8322c768 100644 --- a/docs/Circle.js.html +++ b/docs/Circle.js.html @@ -1072,7 +1072,7 @@

Source: geom/Circle.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Circle.js_.html b/docs/Circle.js_.html index 1e12e3357b..5e0719ea15 100644 --- a/docs/Circle.js_.html +++ b/docs/Circle.js_.html @@ -3160,7 +3160,7 @@

Source: physics/ninja/Circle.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/CollisionGroup.js.html b/docs/CollisionGroup.js.html index a6d1df5344..8854e45d0c 100644 --- a/docs/CollisionGroup.js.html +++ b/docs/CollisionGroup.js.html @@ -557,7 +557,7 @@

Source: physics/p2/CollisionGroup.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Color.js.html b/docs/Color.js.html index fd02543b9d..86870ddea8 100644 --- a/docs/Color.js.html +++ b/docs/Color.js.html @@ -887,7 +887,7 @@

Source: utils/Color.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/ContactMaterial.js.html b/docs/ContactMaterial.js.html index 8cb0763dd0..ea28f02ef7 100644 --- a/docs/ContactMaterial.js.html +++ b/docs/ContactMaterial.js.html @@ -600,7 +600,7 @@

Source: physics/p2/ContactMaterial.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Debug.js.html b/docs/Debug.js.html index 57066da1b8..8531ac2bca 100644 --- a/docs/Debug.js.html +++ b/docs/Debug.js.html @@ -1255,7 +1255,7 @@

Source: utils/Debug.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Device.js.html b/docs/Device.js.html index 404d09591a..925ad39942 100644 --- a/docs/Device.js.html +++ b/docs/Device.js.html @@ -556,11 +556,17 @@

Source: system/Device.js

this.cocoonJS = false; /** - * @property {boolean} ejecta - Is the game running under Ejecta? - * @default - */ + * @property {boolean} ejecta - Is the game running under Ejecta? + * @default + */ this.ejecta = false; + /** + * @property {boolean} crosswalk - Is the game running under the Intel Crosswalk XDK? + * @default + */ + this.crosswalk = false; + /** * @property {boolean} android - Is running on android? * @default @@ -1119,6 +1125,11 @@

Source: system/Device.js

this.ejecta = true; } + if (/Crosswalk/.test(ua)) + { + this.crosswalk = true; + } + }, /** @@ -1326,7 +1337,7 @@

Source: system/Device.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/DistanceConstraint.js.html b/docs/DistanceConstraint.js.html index 77f6538a81..6c351e87be 100644 --- a/docs/DistanceConstraint.js.html +++ b/docs/DistanceConstraint.js.html @@ -576,7 +576,7 @@

Source: physics/p2/DistanceConstraint.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Easing.js.html b/docs/Easing.js.html index 2fccf6b91e..592f98352a 100644 --- a/docs/Easing.js.html +++ b/docs/Easing.js.html @@ -1099,7 +1099,7 @@

Source: tween/Easing.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Ellipse.js.html b/docs/Ellipse.js.html index bd8f062c04..78d032a979 100644 --- a/docs/Ellipse.js.html +++ b/docs/Ellipse.js.html @@ -832,7 +832,7 @@

Source: geom/Ellipse.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Emitter.js.html b/docs/Emitter.js.html index fb0e0a4fac..68f4d92118 100644 --- a/docs/Emitter.js.html +++ b/docs/Emitter.js.html @@ -1315,7 +1315,7 @@

Source: particles/arcade/Emitter.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Events.js.html b/docs/Events.js.html index 4d0a42ab0e..b04ad68aa4 100644 --- a/docs/Events.js.html +++ b/docs/Events.js.html @@ -616,7 +616,7 @@

Source: gameobjects/Events.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Filter.js.html b/docs/Filter.js.html index d7cb1cbf8c..a6f29f53b7 100644 --- a/docs/Filter.js.html +++ b/docs/Filter.js.html @@ -701,7 +701,7 @@

Source: core/Filter.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/FixtureList.js.html b/docs/FixtureList.js.html index d253bd644c..01bed3d7d4 100644 --- a/docs/FixtureList.js.html +++ b/docs/FixtureList.js.html @@ -768,7 +768,7 @@

Source: physics/p2/FixtureList.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Frame.js.html b/docs/Frame.js.html index a64f61e9de..7927dd9270 100644 --- a/docs/Frame.js.html +++ b/docs/Frame.js.html @@ -720,7 +720,7 @@

Source: animation/Frame.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/FrameData.js.html b/docs/FrameData.js.html index 101bb5905d..61c720e30a 100644 --- a/docs/FrameData.js.html +++ b/docs/FrameData.js.html @@ -775,7 +775,7 @@

Source: animation/FrameData.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Game.js.html b/docs/Game.js.html index be343362a2..b1c51598e8 100644 --- a/docs/Game.js.html +++ b/docs/Game.js.html @@ -1358,7 +1358,7 @@

Source: core/Game.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/GameObjectCreator.js.html b/docs/GameObjectCreator.js.html index 3fd15de249..16604dcf34 100644 --- a/docs/GameObjectCreator.js.html +++ b/docs/GameObjectCreator.js.html @@ -902,7 +902,7 @@

Source: gameobjects/GameObjectCreator.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/GameObjectFactory.js.html b/docs/GameObjectFactory.js.html index 9abdb17a1c..425600bb84 100644 --- a/docs/GameObjectFactory.js.html +++ b/docs/GameObjectFactory.js.html @@ -954,7 +954,7 @@

Source: gameobjects/GameObjectFactory.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Gamepad.js.html b/docs/Gamepad.js.html index 81aebc1b90..0465db35fd 100644 --- a/docs/Gamepad.js.html +++ b/docs/Gamepad.js.html @@ -1121,7 +1121,7 @@

Source: input/Gamepad.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/GamepadButton.js.html b/docs/GamepadButton.js.html index fcf3337bcc..d806ff30df 100644 --- a/docs/GamepadButton.js.html +++ b/docs/GamepadButton.js.html @@ -711,7 +711,7 @@

Source: input/GamepadButton.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/GearConstraint.js.html b/docs/GearConstraint.js.html index 7ec94ae3ac..2ede402420 100644 --- a/docs/GearConstraint.js.html +++ b/docs/GearConstraint.js.html @@ -577,7 +577,7 @@

Source: physics/p2/GearConstraint.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Graphics.js.html b/docs/Graphics.js.html index 27d5ac5487..23bcfebdb6 100644 --- a/docs/Graphics.js.html +++ b/docs/Graphics.js.html @@ -792,7 +792,7 @@

Source: gameobjects/Graphics.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Group.js.html b/docs/Group.js.html index 1b854ccacc..a59f27fb85 100644 --- a/docs/Group.js.html +++ b/docs/Group.js.html @@ -1928,7 +1928,7 @@

Source: core/Group.js

child.events.onRemovedFromGroup.dispatch(child, this); } - this.removeChild(child); + var removed = this.removeChild(child); this.updateZ(); @@ -1937,9 +1937,9 @@

Source: core/Group.js

this.next(); } - if (destroy) + if (destroy && removed) { - child.destroy(); + removed.destroy(); } return true; @@ -1969,11 +1969,11 @@

Source: core/Group.js

this.children[0].events.onRemovedFromGroup.dispatch(this.children[0], this); } - this.removeChild(this.children[0]); + var removed = this.removeChild(this.children[0]); - if (destroy) + if (destroy && removed) { - this.children[0].destroy(); + removed.destroy(); } } while (this.children.length > 0); @@ -2014,11 +2014,11 @@

Source: core/Group.js

this.children[i].events.onRemovedFromGroup.dispatch(this.children[i], this); } - this.removeChild(this.children[i]); + var removed = this.removeChild(this.children[i]); - if (destroy) + if (destroy && removed) { - this.children[i].destroy(); + removed.destroy(); } if (this.cursor === this.children[i]) @@ -2047,24 +2047,7 @@

Source: core/Group.js

if (typeof destroyChildren === 'undefined') { destroyChildren = true; } if (typeof soft === 'undefined') { soft = false; } - if (destroyChildren) - { - if (this.children.length > 0) - { - do - { - if (this.children[0].parent) - { - this.children[0].destroy(destroyChildren); - } - } - while (this.children.length > 0); - } - } - else - { - this.removeAll(); - } + this.removeAll(destroyChildren); this.cursor = null; @@ -2211,7 +2194,7 @@

Source: core/Group.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Image.js.html b/docs/Image.js.html index 9ca74a72cd..6bb7ce8800 100644 --- a/docs/Image.js.html +++ b/docs/Image.js.html @@ -1306,7 +1306,7 @@

Source: gameobjects/Image.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Input.js.html b/docs/Input.js.html index fcfb80f7cb..1c12e1a2ea 100644 --- a/docs/Input.js.html +++ b/docs/Input.js.html @@ -758,6 +758,12 @@

Source: input/Input.js

*/ // this.gestures = null; + /** + * @property {boolean} resetLocked - If the Input Manager has been reset locked then all calls made to InputManager.reset, such as from a State change, are ignored. + * @default + */ + this.resetLocked = false; + /** * @property {Phaser.Signal} onDown - A Signal that is dispatched each time a pointer is pressed down. */ @@ -987,20 +993,23 @@

Source: input/Input.js

}, /** - * Reset all of the Pointers and Input states + * Reset all of the Pointers and Input states. The optional `hard` parameter will reset any events or callbacks that may be bound. + * Input.reset is called automatically during a State change or if a game loses focus / visibility. If you wish to control the reset + * directly yourself then set InputManager.resetLocked to `true`. + * * @method Phaser.Input#reset - * @param {boolean} hard - A soft reset (hard = false) won't reset any Signals that might be bound. A hard reset will. + * @param {boolean} [hard=false] - A soft reset won't reset any events or callbacks that are bound. A hard reset will. */ reset: function (hard) { - if (this.game.isBooted === false) + if (!this.game.isBooted || this.resetLocked) { return; } - if (typeof hard == 'undefined') { hard = false; } + if (typeof hard === 'undefined') { hard = false; } - this.keyboard.reset(); + this.keyboard.reset(hard); this.mousePointer.reset(); this.gamepad.reset(); @@ -1019,7 +1028,7 @@

Source: input/Input.js

this.game.canvas.style.cursor = 'inherit'; } - if (hard === true) + if (hard) { this.onDown.dispose(); this.onUp.dispose(); @@ -1442,7 +1451,7 @@

Source: input/Input.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/InputHandler.js.html b/docs/InputHandler.js.html index 7bacafa76a..0d99bb63b2 100644 --- a/docs/InputHandler.js.html +++ b/docs/InputHandler.js.html @@ -1912,7 +1912,7 @@

Source: input/InputHandler.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/InversePointProxy.js.html b/docs/InversePointProxy.js.html index 35e86fede0..5b0ec7f098 100644 --- a/docs/InversePointProxy.js.html +++ b/docs/InversePointProxy.js.html @@ -599,7 +599,7 @@

Source: physics/p2/InversePointProxy.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Key.js.html b/docs/Key.js.html index 1f8bbb0fe4..486bceba15 100644 --- a/docs/Key.js.html +++ b/docs/Key.js.html @@ -710,8 +710,11 @@

Source: input/Key.js

* associated with the onDown and onUp events and nulls the onHoldCallback if set. * * @method Phaser.Key#reset + * @param {boolean} [hard=true] - A soft reset won't reset any events or callbacks that are bound to this Key. A hard reset will. */ - reset: function () { + reset: function (hard) { + + if (typeof hard === 'undefined') { hard = true; } this.isDown = false; this.isUp = true; @@ -719,10 +722,13 @@

Source: input/Key.js

this.duration = this.game.time.now - this.timeDown; this.enabled = true; - this.onDown.removeAll(); - this.onUp.removeAll(); - this.onHoldCallback = null; - this.onHoldContext = null; + if (hard) + { + this.onDown.removeAll(); + this.onUp.removeAll(); + this.onHoldCallback = null; + this.onHoldContext = null; + } }, @@ -778,7 +784,7 @@

Source: input/Key.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Keyboard.js.html b/docs/Keyboard.js.html index 31326ae20b..6ab1561149 100644 --- a/docs/Keyboard.js.html +++ b/docs/Keyboard.js.html @@ -875,8 +875,11 @@

Source: input/Keyboard.js

* Resets all Keys. * * @method Phaser.Keyboard#reset + * @param {boolean} [hard=true] - A soft reset won't reset any events or callbacks that are bound to the Keys. A hard reset will. */ - reset: function () { + reset: function (hard) { + + if (typeof hard === 'undefined') { hard = true; } this.event = null; @@ -886,7 +889,7 @@

Source: input/Keyboard.js

{ if (this._keys[i]) { - this._keys[i].reset(); + this._keys[i].reset(hard); } } @@ -1075,7 +1078,7 @@

Source: input/Keyboard.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Line.js.html b/docs/Line.js.html index 53c7ee4b89..758ad0724b 100644 --- a/docs/Line.js.html +++ b/docs/Line.js.html @@ -724,7 +724,7 @@

Source: geom/Line.js

Object.defineProperty(Phaser.Line.prototype, "angle", { get: function () { - return Math.atan2(this.end.x - this.start.x, this.end.y - this.start.y); + return Math.atan2(this.end.y - this.start.y, this.end.x - this.start.x); } }); @@ -962,7 +962,7 @@

Source: geom/Line.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/LinkedList.js.html b/docs/LinkedList.js.html index 19611584c1..2b79dbbca3 100644 --- a/docs/LinkedList.js.html +++ b/docs/LinkedList.js.html @@ -692,7 +692,7 @@

Source: core/LinkedList.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Loader.js.html b/docs/Loader.js.html index d93e2117bb..b66fd135af 100644 --- a/docs/Loader.js.html +++ b/docs/Loader.js.html @@ -612,22 +612,27 @@

Source: loader/Loader.js

this.baseURL = ''; /** - * @property {Phaser.Signal} onFileComplete - Event signal. + * @property {Phaser.Signal} onLoadStart - This event is dispatched when the loading process starts, before the first file has been requested. */ - this.onFileComplete = new Phaser.Signal(); + this.onLoadStart = new Phaser.Signal(); /** - * @property {Phaser.Signal} onFileError - Event signal. + * @property {Phaser.Signal} onFileStart - This event is dispatched immediately before a file starts loading. It's possible the file may still error (404, etc) after this event is sent. */ - this.onFileError = new Phaser.Signal(); + this.onFileStart = new Phaser.Signal(); /** - * @property {Phaser.Signal} onLoadStart - Event signal. + * @property {Phaser.Signal} onFileComplete - This event is dispatched when a file completes loading successfully. */ - this.onLoadStart = new Phaser.Signal(); + this.onFileComplete = new Phaser.Signal(); /** - * @property {Phaser.Signal} onLoadComplete - Event signal. + * @property {Phaser.Signal} onFileError - This event is dispatched when a file errors as a result of the load request. + */ + this.onFileError = new Phaser.Signal(); + + /** + * @property {Phaser.Signal} onLoadComplete - This event is dispatched when the final file in the load queue has either loaded or failed. */ this.onLoadComplete = new Phaser.Signal(); @@ -1396,10 +1401,12 @@

Source: loader/Loader.js

console.warn('Phaser.Loader loadFile invalid index ' + this._fileIndex); return; } - + var file = this._fileList[this._fileIndex]; var _this = this; + this.onFileStart.dispatch(this.progress, file.key); + // Image or Data? switch (file.type) { @@ -2000,7 +2007,7 @@

Source: loader/Loader.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/LoaderParser.js.html b/docs/LoaderParser.js.html index 0a7d3dc228..eb78f88dcf 100644 --- a/docs/LoaderParser.js.html +++ b/docs/LoaderParser.js.html @@ -621,7 +621,7 @@

Source: loader/LoaderParser.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/LockConstraint.js.html b/docs/LockConstraint.js.html index 8882d42c54..e22b39c722 100644 --- a/docs/LockConstraint.js.html +++ b/docs/LockConstraint.js.html @@ -581,7 +581,7 @@

Source: physics/p2/LockConstraint.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/MSPointer.js.html b/docs/MSPointer.js.html index 0030e4afa5..59d9acff83 100644 --- a/docs/MSPointer.js.html +++ b/docs/MSPointer.js.html @@ -712,7 +712,7 @@

Source: input/MSPointer.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Material.js.html b/docs/Material.js.html index 192366db4e..e44a9e6653 100644 --- a/docs/Material.js.html +++ b/docs/Material.js.html @@ -563,7 +563,7 @@

Source: physics/p2/Material.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Math.js.html b/docs/Math.js.html index 9e4e3ef7e3..d9d9ac5452 100644 --- a/docs/Math.js.html +++ b/docs/Math.js.html @@ -853,7 +853,7 @@

Source: math/Math.js

* @return {number} */ angleBetween: function (x1, y1, x2, y2) { - return Math.atan2(x2 - x1, y2 - y1); + return Math.atan2(y2 - y1, x2 - x1); }, /** @@ -864,7 +864,7 @@

Source: math/Math.js

* @return {number} */ angleBetweenPoints: function (point1, point2) { - return Math.atan2(point2.x - point1.x, point2.y - point1.y); + return Math.atan2(point2.y - point1.y, point2.x - point1.x); }, /** @@ -1880,7 +1880,7 @@

Source: math/Math.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Mouse.js.html b/docs/Mouse.js.html index af0237fbd4..163e34ba31 100644 --- a/docs/Mouse.js.html +++ b/docs/Mouse.js.html @@ -873,7 +873,7 @@

Source: input/Mouse.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Net.js.html b/docs/Net.js.html index f11944eb9a..749a801c3b 100644 --- a/docs/Net.js.html +++ b/docs/Net.js.html @@ -702,7 +702,7 @@

Source: net/Net.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Particle.js.html b/docs/Particle.js.html index 203cd2ac39..058a446a2f 100644 --- a/docs/Particle.js.html +++ b/docs/Particle.js.html @@ -720,7 +720,7 @@

Source: gameobjects/Particle.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Particles.js.html b/docs/Particles.js.html index 4130129230..5a3070a735 100644 --- a/docs/Particles.js.html +++ b/docs/Particles.js.html @@ -617,7 +617,7 @@

Source: particles/Particles.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Animation.html b/docs/Phaser.Animation.html index 40c92afe9f..6b0f6bf5fc 100644 --- a/docs/Phaser.Animation.html +++ b/docs/Phaser.Animation.html @@ -1096,7 +1096,7 @@
Properties:
Source:
@@ -1198,7 +1198,7 @@
Properties:
Source:
@@ -2434,7 +2434,7 @@
Properties:
Source:
@@ -2536,7 +2536,7 @@
Properties:
Source:
@@ -2816,7 +2816,7 @@
Parameters:
Source:
@@ -2886,7 +2886,7 @@

completeSource:
@@ -2955,7 +2955,7 @@

destroySource:
@@ -3024,7 +3024,7 @@

onPauseSource:
@@ -3093,7 +3093,7 @@

onResumeSource:
@@ -3403,7 +3403,7 @@

restartSource:
@@ -3581,7 +3581,7 @@
Parameters:
Source:
@@ -3650,7 +3650,7 @@

updateSource:
@@ -3701,7 +3701,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.AnimationManager.html b/docs/Phaser.AnimationManager.html index 9569ef2a1c..bb2d3d4624 100644 --- a/docs/Phaser.AnimationManager.html +++ b/docs/Phaser.AnimationManager.html @@ -856,7 +856,7 @@

Properties:
Source:
@@ -958,7 +958,7 @@
Properties:
Source:
@@ -1060,7 +1060,7 @@
Properties:
Source:
@@ -1162,7 +1162,7 @@
Properties:
Source:
@@ -1471,7 +1471,7 @@
Properties:
Source:
@@ -2024,7 +2024,8 @@

destroy -

Destroys all references this AnimationManager contains. Sets the _anims to a new object and nulls the current animation.

+

Destroys all references this AnimationManager contains. +Iterates through the list of animations stored in this manager and calls destroy on each of them.

@@ -2057,7 +2058,7 @@

destroySource:
@@ -2175,7 +2176,7 @@
Parameters:
Source:
@@ -2542,7 +2543,7 @@

refreshFr
Source:
@@ -2720,7 +2721,7 @@

Parameters:
Source:
@@ -2789,7 +2790,7 @@

<protected>
Source:
@@ -3059,7 +3060,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:04 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.AnimationParser.html b/docs/Phaser.AnimationParser.html index c4755dc5a5..ef66be6838 100644 --- a/docs/Phaser.AnimationParser.html +++ b/docs/Phaser.AnimationParser.html @@ -1580,7 +1580,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:04 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:23 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.BitmapData.html b/docs/Phaser.BitmapData.html index 14237f5d87..57a4252ffa 100644 --- a/docs/Phaser.BitmapData.html +++ b/docs/Phaser.BitmapData.html @@ -4069,7 +4069,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:04 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:23 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.BitmapText.html b/docs/Phaser.BitmapText.html index f504f7b153..937ba98ce7 100644 --- a/docs/Phaser.BitmapText.html +++ b/docs/Phaser.BitmapText.html @@ -3105,7 +3105,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:04 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:23 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Button.html b/docs/Phaser.Button.html index 061b285c59..450de05ae0 100644 --- a/docs/Phaser.Button.html +++ b/docs/Phaser.Button.html @@ -8151,7 +8151,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:04 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:23 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Cache.html b/docs/Phaser.Cache.html index 669ec8129e..6971dc3c00 100644 --- a/docs/Phaser.Cache.html +++ b/docs/Phaser.Cache.html @@ -9398,7 +9398,7 @@

Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:05 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:23 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Camera.html b/docs/Phaser.Camera.html index fda6867083..0df80c128f 100644 --- a/docs/Phaser.Camera.html +++ b/docs/Phaser.Camera.html @@ -3706,7 +3706,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:05 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:24 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Canvas.html b/docs/Phaser.Canvas.html index 87b95147bc..2f24575864 100644 --- a/docs/Phaser.Canvas.html +++ b/docs/Phaser.Canvas.html @@ -2763,7 +2763,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:05 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:24 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Circle.html b/docs/Phaser.Circle.html index 0d1187055d..bbeb3f8b35 100644 --- a/docs/Phaser.Circle.html +++ b/docs/Phaser.Circle.html @@ -4402,7 +4402,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:05 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:24 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Color.html b/docs/Phaser.Color.html index ce78e61d80..833def3e6a 100644 --- a/docs/Phaser.Color.html +++ b/docs/Phaser.Color.html @@ -3711,7 +3711,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:06 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:24 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Device.html b/docs/Phaser.Device.html index 47c4d5f1cb..2da880a0c6 100644 --- a/docs/Phaser.Device.html +++ b/docs/Phaser.Device.html @@ -704,7 +704,7 @@
Properties:
Source:
@@ -809,7 +809,7 @@
Properties:
Source:
@@ -914,7 +914,7 @@
Properties:
Source:
@@ -1016,7 +1016,7 @@
Properties:
Source:
@@ -1121,7 +1121,7 @@
Properties:
Source:
@@ -1226,7 +1226,7 @@
Properties:
Source:
@@ -1331,7 +1331,7 @@
Properties:
Source:
@@ -1445,6 +1445,111 @@
Properties:
+ + + + + + + + +
+

crosswalk

+ + +
+
+ + + + + +
+ + +
Properties:
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
crosswalk + + +boolean + + + +

Is the game running under the Intel Crosswalk XDK?

+
+ + + + + + + + + + + + + + + + + + +
Default Value:
+
  • false
+ + + +
Source:
+
+ + + + + + +
@@ -1541,7 +1646,7 @@
Properties:
Source:
@@ -1856,7 +1961,7 @@
Properties:
Source:
@@ -1961,7 +2066,7 @@
Properties:
Source:
@@ -2066,7 +2171,7 @@
Properties:
Source:
@@ -2171,7 +2276,7 @@
Properties:
Source:
@@ -2276,7 +2381,7 @@
Properties:
Source:
@@ -2381,7 +2486,7 @@
Properties:
Source:
@@ -2588,7 +2693,7 @@
Properties:
Source:
@@ -2693,7 +2798,7 @@
Properties:
Source:
@@ -2798,7 +2903,7 @@
Properties:
Source:
@@ -3008,7 +3113,7 @@
Properties:
Source:
@@ -3113,7 +3218,7 @@
Properties:
Source:
@@ -3218,7 +3323,7 @@
Properties:
Source:
@@ -3323,7 +3428,7 @@
Properties:
Source:
@@ -3428,7 +3533,7 @@
Properties:
Source:
@@ -3533,7 +3638,7 @@
Properties:
Source:
@@ -3642,7 +3747,7 @@
Properties:
Source:
@@ -3747,7 +3852,7 @@
Properties:
Source:
@@ -3852,7 +3957,7 @@
Properties:
Source:
@@ -3957,7 +4062,7 @@
Properties:
Source:
@@ -4062,7 +4167,7 @@
Properties:
Source:
@@ -4167,7 +4272,7 @@
Properties:
Source:
@@ -4272,7 +4377,7 @@
Properties:
Source:
@@ -4377,7 +4482,7 @@
Properties:
Source:
@@ -4482,7 +4587,7 @@
Properties:
Source:
@@ -4587,7 +4692,7 @@
Properties:
Source:
@@ -4692,7 +4797,7 @@
Properties:
Source:
@@ -4797,7 +4902,7 @@
Properties:
Source:
@@ -4899,7 +5004,7 @@
Properties:
Source:
@@ -5004,7 +5109,7 @@
Properties:
Source:
@@ -5109,7 +5214,7 @@
Properties:
Source:
@@ -5214,7 +5319,7 @@
Properties:
Source:
@@ -5319,7 +5424,7 @@
Properties:
Source:
@@ -5424,7 +5529,7 @@
Properties:
Source:
@@ -5529,7 +5634,7 @@
Properties:
Source:
@@ -5634,7 +5739,7 @@
Properties:
Source:
@@ -5739,7 +5844,7 @@
Properties:
Source:
@@ -5844,7 +5949,7 @@
Properties:
Source:
@@ -5949,7 +6054,7 @@
Properties:
Source:
@@ -6054,7 +6159,7 @@
Properties:
Source:
@@ -6159,7 +6264,7 @@
Properties:
Source:
@@ -6264,7 +6369,7 @@
Properties:
Source:
@@ -6369,7 +6474,7 @@
Properties:
Source:
@@ -6474,7 +6579,7 @@
Properties:
Source:
@@ -6588,7 +6693,7 @@
Parameters:
Source:
@@ -6680,7 +6785,7 @@

Source:
@@ -6751,7 +6856,7 @@

isConsol
Source:
@@ -6825,7 +6930,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:06 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:24 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Back.html b/docs/Phaser.Easing.Back.html index b79533e958..fa6098268e 100644 --- a/docs/Phaser.Easing.Back.html +++ b/docs/Phaser.Easing.Back.html @@ -1063,7 +1063,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:06 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:25 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Bounce.html b/docs/Phaser.Easing.Bounce.html index b48a28faee..ea53129866 100644 --- a/docs/Phaser.Easing.Bounce.html +++ b/docs/Phaser.Easing.Bounce.html @@ -1063,7 +1063,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:06 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:25 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Circular.html b/docs/Phaser.Easing.Circular.html index d6ba5b1cd1..d1b6b371bd 100644 --- a/docs/Phaser.Easing.Circular.html +++ b/docs/Phaser.Easing.Circular.html @@ -1063,7 +1063,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:06 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:25 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Cubic.html b/docs/Phaser.Easing.Cubic.html index 6cb2963615..949ab77368 100644 --- a/docs/Phaser.Easing.Cubic.html +++ b/docs/Phaser.Easing.Cubic.html @@ -1063,7 +1063,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:07 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:25 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Elastic.html b/docs/Phaser.Easing.Elastic.html index b16aa23560..9eba10151d 100644 --- a/docs/Phaser.Easing.Elastic.html +++ b/docs/Phaser.Easing.Elastic.html @@ -1063,7 +1063,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:07 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:25 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Exponential.html b/docs/Phaser.Easing.Exponential.html index 3541ab66bd..74812847e8 100644 --- a/docs/Phaser.Easing.Exponential.html +++ b/docs/Phaser.Easing.Exponential.html @@ -1063,7 +1063,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:07 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:25 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Linear.html b/docs/Phaser.Easing.Linear.html index 3505c95a64..88baf924dd 100644 --- a/docs/Phaser.Easing.Linear.html +++ b/docs/Phaser.Easing.Linear.html @@ -781,7 +781,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:07 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:26 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Quadratic.html b/docs/Phaser.Easing.Quadratic.html index f9cc9ef298..504cdcb8f2 100644 --- a/docs/Phaser.Easing.Quadratic.html +++ b/docs/Phaser.Easing.Quadratic.html @@ -1063,7 +1063,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:07 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:26 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Quartic.html b/docs/Phaser.Easing.Quartic.html index 24187013eb..77908b786a 100644 --- a/docs/Phaser.Easing.Quartic.html +++ b/docs/Phaser.Easing.Quartic.html @@ -1063,7 +1063,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:07 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:26 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Quintic.html b/docs/Phaser.Easing.Quintic.html index 9055dc0dc0..a30a3aeedf 100644 --- a/docs/Phaser.Easing.Quintic.html +++ b/docs/Phaser.Easing.Quintic.html @@ -1063,7 +1063,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:08 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:26 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.Sinusoidal.html b/docs/Phaser.Easing.Sinusoidal.html index 56a903f45e..a1641e5744 100644 --- a/docs/Phaser.Easing.Sinusoidal.html +++ b/docs/Phaser.Easing.Sinusoidal.html @@ -1063,7 +1063,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:08 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:26 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Easing.html b/docs/Phaser.Easing.html index 17245da0f3..8331dcfb37 100644 --- a/docs/Phaser.Easing.html +++ b/docs/Phaser.Easing.html @@ -730,7 +730,7 @@

Classes

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:06 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:25 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Ellipse.html b/docs/Phaser.Ellipse.html index 307384ec55..1731f976a4 100644 --- a/docs/Phaser.Ellipse.html +++ b/docs/Phaser.Ellipse.html @@ -2910,7 +2910,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:08 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:26 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Events.html b/docs/Phaser.Events.html index 57e2fb80c0..d9c83f14f8 100644 --- a/docs/Phaser.Events.html +++ b/docs/Phaser.Events.html @@ -687,7 +687,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:08 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:26 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Filter.html b/docs/Phaser.Filter.html index e241c3a3ff..2210c64f38 100644 --- a/docs/Phaser.Filter.html +++ b/docs/Phaser.Filter.html @@ -1972,7 +1972,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:08 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:27 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Frame.html b/docs/Phaser.Frame.html index 0587b0e407..f23c06c657 100644 --- a/docs/Phaser.Frame.html +++ b/docs/Phaser.Frame.html @@ -3201,7 +3201,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:08 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:27 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.FrameData.html b/docs/Phaser.FrameData.html index 6bbd1c4698..c190a35ec0 100644 --- a/docs/Phaser.FrameData.html +++ b/docs/Phaser.FrameData.html @@ -1995,7 +1995,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:08 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:27 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Game.html b/docs/Phaser.Game.html index 5dafe49247..33c5faf2b9 100644 --- a/docs/Phaser.Game.html +++ b/docs/Phaser.Game.html @@ -6563,7 +6563,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:09 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:27 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.GameObjectCreator.html b/docs/Phaser.GameObjectCreator.html index a6c1bfb589..340699c011 100644 --- a/docs/Phaser.GameObjectCreator.html +++ b/docs/Phaser.GameObjectCreator.html @@ -5678,7 +5678,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:09 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:27 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.GameObjectFactory.html b/docs/Phaser.GameObjectFactory.html index 6287715309..b74d5fae4d 100644 --- a/docs/Phaser.GameObjectFactory.html +++ b/docs/Phaser.GameObjectFactory.html @@ -6489,7 +6489,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:09 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:27 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Gamepad.html b/docs/Phaser.Gamepad.html index a8800448ab..3ed3394663 100644 --- a/docs/Phaser.Gamepad.html +++ b/docs/Phaser.Gamepad.html @@ -3320,7 +3320,7 @@

stop Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:09 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:28 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.GamepadButton.html b/docs/Phaser.GamepadButton.html index 7f24a2fbb2..eef790312a 100644 --- a/docs/Phaser.GamepadButton.html +++ b/docs/Phaser.GamepadButton.html @@ -2640,7 +2640,7 @@

Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:09 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:28 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Graphics.html b/docs/Phaser.Graphics.html index c09d2d7859..8aeaa0529b 100644 --- a/docs/Phaser.Graphics.html +++ b/docs/Phaser.Graphics.html @@ -2089,7 +2089,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:10 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:28 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Group.html b/docs/Phaser.Group.html index 0a1ccaffb5..b380f4d000 100644 --- a/docs/Phaser.Group.html +++ b/docs/Phaser.Group.html @@ -1368,7 +1368,7 @@

Properties:
Source:
@@ -1475,7 +1475,7 @@
Properties:
Source:
@@ -2104,7 +2104,7 @@
Properties:
Source:
@@ -2308,7 +2308,7 @@
Properties:
Source:
@@ -2619,7 +2619,7 @@
Properties:
Source:
@@ -2823,7 +2823,7 @@
Properties:
Source:
@@ -3027,7 +3027,7 @@
Properties:
Source:
@@ -3134,7 +3134,7 @@
Properties:
Source:
@@ -3241,7 +3241,7 @@
Properties:
Source:
@@ -11700,7 +11700,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:10 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:28 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Image.html b/docs/Phaser.Image.html index 14201dac26..343f9d8f6b 100644 --- a/docs/Phaser.Image.html +++ b/docs/Phaser.Image.html @@ -4272,7 +4272,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:10 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:28 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Input.html b/docs/Phaser.Input.html index e57c1079c7..48f55630f4 100644 --- a/docs/Phaser.Input.html +++ b/docs/Phaser.Input.html @@ -709,7 +709,7 @@

Type:
Source:
@@ -769,7 +769,7 @@
Type:
Source:
@@ -829,7 +829,7 @@
Type:
Source:
@@ -1988,7 +1988,7 @@
Properties:
Source:
@@ -3119,7 +3119,7 @@
Properties:
Source:
@@ -3221,7 +3221,7 @@
Properties:
Source:
@@ -3323,7 +3323,7 @@
Properties:
Source:
@@ -3425,7 +3425,7 @@
Properties:
Source:
@@ -4547,7 +4547,7 @@
Properties:
Source:
@@ -5092,6 +5092,111 @@
Properties:
+ + + + + + + + +
+

resetLocked

+ + +
+
+ + + + + +
+ + +
Properties:
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
resetLocked + + +boolean + + + +

If the Input Manager has been reset locked then all calls made to InputManager.reset, such as from a State change, are ignored.

+
+ + + + + + + + + + + + + + + + + + +
Default Value:
+
  • false
+ + + +
Source:
+
+ + + + + + +
@@ -5498,7 +5603,7 @@
Properties:
Source:
@@ -5604,7 +5709,7 @@
Properties:
Source:
@@ -5812,7 +5917,7 @@
Properties:
Source:
@@ -5918,7 +6023,7 @@
Properties:
Source:
@@ -6024,7 +6129,7 @@
Properties:
Source:
@@ -6130,7 +6235,7 @@
Properties:
Source:
@@ -6196,7 +6301,7 @@

addPointer<
Source:
@@ -6288,7 +6393,7 @@

<protected> bo
Source:
@@ -6357,7 +6462,7 @@

destroySource:
@@ -6501,7 +6606,7 @@
Parameters:
Source:
@@ -6642,7 +6747,7 @@
Parameters:
Source:
@@ -6783,7 +6888,7 @@
Parameters:
Source:
@@ -6970,7 +7075,7 @@
Parameters:
Source:
@@ -6998,7 +7103,7 @@
Parameters:
-

reset(hard)

+

reset(hard)

@@ -7006,7 +7111,9 @@

reset -

Reset all of the Pointers and Input states

+

Reset all of the Pointers and Input states. The optional hard parameter will reset any events or callbacks that may be bound. +Input.reset is called automatically during a State change or if a game loses focus / visibility. If you wish to control the reset +directly yourself then set InputManager.resetLocked to true.

@@ -7028,8 +7135,12 @@
Parameters:
Type + Argument + + Default + Description @@ -7053,10 +7164,26 @@
Parameters:
+ + + <optional>
+ + + + + + + + + + false + + + -

A soft reset (hard = false) won't reset any Signals that might be bound. A hard reset will.

+

A soft reset won't reset any events or callbacks that are bound. A hard reset will.

@@ -7088,7 +7215,7 @@
Parameters:
Source:
@@ -7229,7 +7356,7 @@
Parameters:
Source:
@@ -7372,7 +7499,7 @@
Parameters:
Source:
@@ -7490,7 +7617,7 @@
Parameters:
Source:
@@ -7631,7 +7758,7 @@
Parameters:
Source:
@@ -7723,7 +7850,7 @@

<protected>
Source:
@@ -7841,7 +7968,7 @@

Parameters:
Source:
@@ -7915,7 +8042,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:10 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:29 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.InputHandler.html b/docs/Phaser.InputHandler.html index c582ed946b..2143b139ac 100644 --- a/docs/Phaser.InputHandler.html +++ b/docs/Phaser.InputHandler.html @@ -8229,7 +8229,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:11 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:29 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Key.html b/docs/Phaser.Key.html index f07b065255..c7be1b2e01 100644 --- a/docs/Phaser.Key.html +++ b/docs/Phaser.Key.html @@ -2564,7 +2564,7 @@
Parameters:
Source:
@@ -2725,7 +2725,7 @@
Parameters:
Source:
@@ -3012,7 +3012,7 @@
Parameters:
-

reset()

+

reset(hard)

@@ -3030,6 +3030,75 @@

resetParameters:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeArgumentDefaultDescription
hard + + +boolean + + + + + + <optional>
+ + + + + +
+ + true + +

A soft reset won't reset any events or callbacks that are bound to this Key. A hard reset will.

+ +
@@ -3105,7 +3174,7 @@

reset Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:11 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:29 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Keyboard.html b/docs/Phaser.Keyboard.html index 4c9d20bb59..1c1e0e2829 100644 --- a/docs/Phaser.Keyboard.html +++ b/docs/Phaser.Keyboard.html @@ -2083,7 +2083,7 @@

Parameters:
Source:
@@ -2279,7 +2279,7 @@
Parameters:
Source:
@@ -2475,7 +2475,7 @@
Parameters:
Source:
@@ -2998,7 +2998,7 @@
Parameters:
-

reset()

+

reset(hard)

@@ -3015,6 +3015,75 @@

resetParameters:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeArgumentDefaultDescription
hard + + +boolean + + + + + + <optional>
+ + + + + +
+ + true + +

A soft reset won't reset any events or callbacks that are bound to the Keys. A hard reset will.

+ +
@@ -3298,7 +3367,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:11 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:29 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Line.html b/docs/Phaser.Line.html index 62e5bdc398..e9100372fb 100644 --- a/docs/Phaser.Line.html +++ b/docs/Phaser.Line.html @@ -4168,7 +4168,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:11 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:29 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.LinkedList.html b/docs/Phaser.LinkedList.html index 02f9651add..d0389ced73 100644 --- a/docs/Phaser.LinkedList.html +++ b/docs/Phaser.LinkedList.html @@ -1549,7 +1549,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:11 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:30 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Loader.html b/docs/Phaser.Loader.html index 21bf12d133..747f726770 100644 --- a/docs/Phaser.Loader.html +++ b/docs/Phaser.Loader.html @@ -711,7 +711,7 @@
Type:
Source:
@@ -771,7 +771,7 @@
Type:
Source:
@@ -831,7 +831,7 @@
Type:
Source:
@@ -891,7 +891,7 @@
Type:
Source:
@@ -951,7 +951,7 @@
Type:
Source:
@@ -1552,7 +1552,7 @@
Properties:
-

Event signal.

+

This event is dispatched when a file completes loading successfully.

@@ -1581,7 +1581,7 @@
Properties:
Source:
@@ -1654,7 +1654,109 @@
Properties:
-

Event signal.

+

This event is dispatched when a file errors as a result of the load request.

+ + + + + +
+ + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + +
+

onFileStart

+ + +
+
+ + + + + +
+ + +
Properties:
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1756,7 +1858,7 @@
Properties:
- + @@ -1785,7 +1887,7 @@
Properties:
Source:
@@ -1858,7 +1960,7 @@
Properties:
- + @@ -1887,7 +1989,7 @@
Properties:
Source:
@@ -2393,7 +2495,7 @@
Parameters:
Source:
@@ -2651,7 +2753,7 @@
Parameters:
Source:
@@ -2899,7 +3001,7 @@
Parameters:
Source:
@@ -3147,7 +3249,7 @@
Parameters:
Source:
@@ -3395,7 +3497,7 @@
Parameters:
Source:
@@ -3585,7 +3687,7 @@
Parameters:
Source:
@@ -3835,7 +3937,7 @@
Parameters:
Source:
@@ -4179,7 +4281,7 @@
Parameters:
Source:
@@ -4343,7 +4445,7 @@
Parameters:
Source:
@@ -4484,7 +4586,7 @@
Parameters:
Source:
@@ -4602,7 +4704,7 @@
Parameters:
Source:
@@ -4720,7 +4822,7 @@
Parameters:
Source:
@@ -4838,7 +4940,7 @@
Parameters:
Source:
@@ -4979,7 +5081,7 @@
Parameters:
Source:
@@ -5143,7 +5245,7 @@
Parameters:
Source:
@@ -5374,7 +5476,7 @@
Parameters:
Source:
@@ -5605,7 +5707,7 @@
Parameters:
Source:
@@ -5746,7 +5848,7 @@
Parameters:
Source:
@@ -5994,7 +6096,7 @@
Parameters:
Source:
@@ -6086,7 +6188,7 @@

removeAllSource:
@@ -6227,7 +6329,7 @@
Parameters:
Source:
@@ -6414,7 +6516,7 @@
Parameters:
Source:
@@ -6483,7 +6585,7 @@

resetSource:
@@ -6709,7 +6811,7 @@
Parameters:
Source:
@@ -6910,7 +7012,7 @@
Parameters:
Source:
@@ -7266,7 +7368,7 @@
Parameters:
Source:
@@ -7358,7 +7460,7 @@

startSource:
@@ -7566,7 +7668,7 @@
Parameters:
Source:
@@ -7836,7 +7938,7 @@
Parameters:
Source:
@@ -7928,7 +8030,7 @@

total
Source:
@@ -8020,7 +8122,7 @@

total
Source:
@@ -8161,7 +8263,7 @@

Parameters:
Source:
@@ -8212,7 +8314,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:11 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:30 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.LoaderParser.html b/docs/Phaser.LoaderParser.html index bcece62446..7bfb9e9b4b 100644 --- a/docs/Phaser.LoaderParser.html +++ b/docs/Phaser.LoaderParser.html @@ -804,7 +804,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:12 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:30 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.MSPointer.html b/docs/Phaser.MSPointer.html index 5d043e0611..57c24dbc89 100644 --- a/docs/Phaser.MSPointer.html +++ b/docs/Phaser.MSPointer.html @@ -1499,7 +1499,7 @@

stop Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:12 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:30 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Math.html b/docs/Phaser.Math.html index 053f533f3b..f5ae9b4c3d 100644 --- a/docs/Phaser.Math.html +++ b/docs/Phaser.Math.html @@ -11532,7 +11532,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:12 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:30 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Mouse.html b/docs/Phaser.Mouse.html index 15230a17a0..7be137ba50 100644 --- a/docs/Phaser.Mouse.html +++ b/docs/Phaser.Mouse.html @@ -2816,7 +2816,7 @@

stop Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:12 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:30 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Net.html b/docs/Phaser.Net.html index 005c0f08fb..72f13d869d 100644 --- a/docs/Phaser.Net.html +++ b/docs/Phaser.Net.html @@ -1443,7 +1443,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:12 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:31 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Particle.html b/docs/Phaser.Particle.html index 546a93aab1..7f41f81b74 100644 --- a/docs/Phaser.Particle.html +++ b/docs/Phaser.Particle.html @@ -6753,7 +6753,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:13 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:31 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Particles.Arcade.Emitter.html b/docs/Phaser.Particles.Arcade.Emitter.html index cc94b48b84..ed0c8e07c6 100644 --- a/docs/Phaser.Particles.Arcade.Emitter.html +++ b/docs/Phaser.Particles.Arcade.Emitter.html @@ -1004,7 +1004,7 @@

Properties:
Source:
@@ -1218,7 +1218,7 @@
Properties:
Source:
@@ -2708,7 +2708,7 @@
Properties:
Source:
@@ -3339,7 +3339,7 @@
Properties:
Source:
@@ -5421,7 +5421,7 @@
Properties:
Source:
@@ -5839,7 +5839,7 @@
Properties:
Source:
@@ -6048,7 +6048,7 @@
Properties:
Source:
@@ -17332,7 +17332,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:13 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:31 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Particles.html b/docs/Phaser.Particles.html index 0933faac9b..2ab23a2f4a 100644 --- a/docs/Phaser.Particles.html +++ b/docs/Phaser.Particles.html @@ -1332,7 +1332,7 @@

<protected> Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:13 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:31 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.Arcade.Body.html b/docs/Phaser.Physics.Arcade.Body.html index 6bfaf7dec3..6aa3e28101 100644 --- a/docs/Phaser.Physics.Arcade.Body.html +++ b/docs/Phaser.Physics.Arcade.Body.html @@ -1587,7 +1587,7 @@

Properties:
Source:
@@ -4158,7 +4158,7 @@
Properties:
-

+ @@ -4595,7 +4595,7 @@
Properties:
Source:
@@ -5833,7 +5833,7 @@
Properties:
Source:
@@ -5935,7 +5935,7 @@
Properties:
Source:
@@ -6000,7 +6000,7 @@

<protecte
Source:
@@ -6069,7 +6069,7 @@

deltaAbsXSource:
@@ -6161,7 +6161,7 @@

deltaAbsYSource:
@@ -6253,7 +6253,7 @@

deltaXSource:
@@ -6345,7 +6345,7 @@

deltaYSource:
@@ -6437,7 +6437,7 @@

deltaZSource:
@@ -6529,7 +6529,7 @@

destroySource:
@@ -6670,7 +6670,7 @@
Parameters:
Source:
@@ -6762,7 +6762,7 @@

onFloorSource:
@@ -6854,7 +6854,7 @@

onWallSource:
@@ -7258,7 +7258,7 @@
Parameters:
Source:
@@ -7505,7 +7505,7 @@
Parameters:
Source:
@@ -7646,7 +7646,7 @@
Parameters:
Source:
@@ -7835,7 +7835,7 @@
Parameters:
Source:
@@ -7955,7 +7955,7 @@

<protected> < Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:14 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:32 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.Arcade.html b/docs/Phaser.Physics.Arcade.html index 4be9ae53d9..87a4edde2d 100644 --- a/docs/Phaser.Physics.Arcade.html +++ b/docs/Phaser.Physics.Arcade.html @@ -7191,7 +7191,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:14 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:31 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.AABB.html b/docs/Phaser.Physics.Ninja.AABB.html index 64a1c6d4b5..55a3545cdc 100644 --- a/docs/Phaser.Physics.Ninja.AABB.html +++ b/docs/Phaser.Physics.Ninja.AABB.html @@ -4771,7 +4771,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:14 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:32 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.Body.html b/docs/Phaser.Physics.Ninja.Body.html index 23e0b1da46..975eead291 100644 --- a/docs/Phaser.Physics.Ninja.Body.html +++ b/docs/Phaser.Physics.Ninja.Body.html @@ -4625,7 +4625,7 @@

setZer Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:14 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:32 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.Circle.html b/docs/Phaser.Physics.Ninja.Circle.html index 29c54d1fbf..b99415bacc 100644 --- a/docs/Phaser.Physics.Ninja.Circle.html +++ b/docs/Phaser.Physics.Ninja.Circle.html @@ -5005,7 +5005,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:15 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:32 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.Tile.html b/docs/Phaser.Physics.Ninja.Tile.html index 7145528c48..0a72f100bf 100644 --- a/docs/Phaser.Physics.Ninja.Tile.html +++ b/docs/Phaser.Physics.Ninja.Tile.html @@ -3028,7 +3028,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:15 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:33 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.html b/docs/Phaser.Physics.Ninja.html index cccf88683f..32b71810c7 100644 --- a/docs/Phaser.Physics.Ninja.html +++ b/docs/Phaser.Physics.Ninja.html @@ -3969,7 +3969,7 @@

setBo Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:14 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:32 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.Body.html b/docs/Phaser.Physics.P2.Body.html index 267b51e54a..71f86a3a8a 100644 --- a/docs/Phaser.Physics.P2.Body.html +++ b/docs/Phaser.Physics.P2.Body.html @@ -12951,7 +12951,7 @@

Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:15 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:33 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.BodyDebug.html b/docs/Phaser.Physics.P2.BodyDebug.html index f2a0e97d7d..7af492d365 100644 --- a/docs/Phaser.Physics.P2.BodyDebug.html +++ b/docs/Phaser.Physics.P2.BodyDebug.html @@ -919,7 +919,7 @@
Properties:
Source:
@@ -1031,7 +1031,7 @@
Properties:
Source:
@@ -1894,7 +1894,7 @@
Properties:
Source:
@@ -2108,7 +2108,7 @@
Properties:
Source:
@@ -2536,7 +2536,7 @@
Properties:
Source:
@@ -2750,7 +2750,7 @@
Properties:
Source:
@@ -2964,7 +2964,7 @@
Properties:
Source:
@@ -3076,7 +3076,7 @@
Properties:
Source:
@@ -3188,7 +3188,7 @@
Properties:
Source:
@@ -12666,7 +12666,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:15 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:33 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.CollisionGroup.html b/docs/Phaser.Physics.P2.CollisionGroup.html index ffba0e33e5..d607709034 100644 --- a/docs/Phaser.Physics.P2.CollisionGroup.html +++ b/docs/Phaser.Physics.P2.CollisionGroup.html @@ -744,7 +744,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:16 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:34 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.ContactMaterial.html b/docs/Phaser.Physics.P2.ContactMaterial.html index f8d687fac8..b953212cfa 100644 --- a/docs/Phaser.Physics.P2.ContactMaterial.html +++ b/docs/Phaser.Physics.P2.ContactMaterial.html @@ -761,7 +761,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:16 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:34 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.DistanceConstraint.html b/docs/Phaser.Physics.P2.DistanceConstraint.html index 1d0cdcd946..2cb6c2c5c9 100644 --- a/docs/Phaser.Physics.P2.DistanceConstraint.html +++ b/docs/Phaser.Physics.P2.DistanceConstraint.html @@ -1031,7 +1031,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:16 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:34 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.FixtureList.html b/docs/Phaser.Physics.P2.FixtureList.html index d30428d39e..c2d84a20d3 100644 --- a/docs/Phaser.Physics.P2.FixtureList.html +++ b/docs/Phaser.Physics.P2.FixtureList.html @@ -1850,7 +1850,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:16 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:34 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.GearConstraint.html b/docs/Phaser.Physics.P2.GearConstraint.html index 65aa8c4ff6..c1e67f6ffd 100644 --- a/docs/Phaser.Physics.P2.GearConstraint.html +++ b/docs/Phaser.Physics.P2.GearConstraint.html @@ -1059,7 +1059,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:16 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:34 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.InversePointProxy.html b/docs/Phaser.Physics.P2.InversePointProxy.html index 942ec8deaa..a073a31077 100644 --- a/docs/Phaser.Physics.P2.InversePointProxy.html +++ b/docs/Phaser.Physics.P2.InversePointProxy.html @@ -918,7 +918,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:16 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:34 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.LockConstraint.html b/docs/Phaser.Physics.P2.LockConstraint.html index 6c3e2e8cdd..40186c9f81 100644 --- a/docs/Phaser.Physics.P2.LockConstraint.html +++ b/docs/Phaser.Physics.P2.LockConstraint.html @@ -1094,7 +1094,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:17 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:34 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.Material.html b/docs/Phaser.Physics.P2.Material.html index 125e7db3ad..dee4ad0d9e 100644 --- a/docs/Phaser.Physics.P2.Material.html +++ b/docs/Phaser.Physics.P2.Material.html @@ -747,7 +747,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:17 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:34 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.PointProxy.html b/docs/Phaser.Physics.P2.PointProxy.html index d6f98f1ff3..bce08917c9 100644 --- a/docs/Phaser.Physics.P2.PointProxy.html +++ b/docs/Phaser.Physics.P2.PointProxy.html @@ -918,7 +918,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:17 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:35 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.PrismaticConstraint.html b/docs/Phaser.Physics.P2.PrismaticConstraint.html index 084a8223fe..92605b69e8 100644 --- a/docs/Phaser.Physics.P2.PrismaticConstraint.html +++ b/docs/Phaser.Physics.P2.PrismaticConstraint.html @@ -1168,7 +1168,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:17 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:35 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.RevoluteConstraint.html b/docs/Phaser.Physics.P2.RevoluteConstraint.html index 25d898a838..e2bff8c704 100644 --- a/docs/Phaser.Physics.P2.RevoluteConstraint.html +++ b/docs/Phaser.Physics.P2.RevoluteConstraint.html @@ -1091,7 +1091,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:17 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:35 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.Spring.html b/docs/Phaser.Physics.P2.Spring.html index f7d84adc91..eb4bae7c2d 100644 --- a/docs/Phaser.Physics.P2.Spring.html +++ b/docs/Phaser.Physics.P2.Spring.html @@ -1246,7 +1246,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:17 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:35 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.html b/docs/Phaser.Physics.P2.html index 4d3b13f334..e37f131ee4 100644 --- a/docs/Phaser.Physics.P2.html +++ b/docs/Phaser.Physics.P2.html @@ -13581,7 +13581,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:15 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:33 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Physics.html b/docs/Phaser.Physics.html index 813320f94d..426d2b8bbe 100644 --- a/docs/Phaser.Physics.html +++ b/docs/Phaser.Physics.html @@ -3143,7 +3143,7 @@

<protected> Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:13 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:31 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Plugin.html b/docs/Phaser.Plugin.html index 817502c65c..e8ac830388 100644 --- a/docs/Phaser.Plugin.html +++ b/docs/Phaser.Plugin.html @@ -2006,7 +2006,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:17 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:35 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.PluginManager.html b/docs/Phaser.PluginManager.html index 9a67dee88d..52478fcf04 100644 --- a/docs/Phaser.PluginManager.html +++ b/docs/Phaser.PluginManager.html @@ -1651,7 +1651,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:18 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:35 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Point.html b/docs/Phaser.Point.html index dada4ac4e9..1ec2a51023 100644 --- a/docs/Phaser.Point.html +++ b/docs/Phaser.Point.html @@ -5715,7 +5715,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:18 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:35 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Pointer.html b/docs/Phaser.Pointer.html index 91bd59e57b..d071c6eda4 100644 --- a/docs/Phaser.Pointer.html +++ b/docs/Phaser.Pointer.html @@ -4611,7 +4611,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:18 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:36 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Polygon.html b/docs/Phaser.Polygon.html index 159c6a9533..afa952d140 100644 --- a/docs/Phaser.Polygon.html +++ b/docs/Phaser.Polygon.html @@ -1164,7 +1164,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:18 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:36 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.QuadTree.html b/docs/Phaser.QuadTree.html index 6c5a793c1f..9b68c4aa4c 100644 --- a/docs/Phaser.QuadTree.html +++ b/docs/Phaser.QuadTree.html @@ -2694,7 +2694,7 @@

split Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:18 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:36 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.RandomDataGenerator.html b/docs/Phaser.RandomDataGenerator.html index a7085256e0..e68914773a 100644 --- a/docs/Phaser.RandomDataGenerator.html +++ b/docs/Phaser.RandomDataGenerator.html @@ -2137,7 +2137,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:18 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:36 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Rectangle.html b/docs/Phaser.Rectangle.html index 43fe6105d7..f7202cba49 100644 --- a/docs/Phaser.Rectangle.html +++ b/docs/Phaser.Rectangle.html @@ -7734,7 +7734,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:19 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:36 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.RenderTexture.html b/docs/Phaser.RenderTexture.html index 8d8d1c6a48..51b14393ce 100644 --- a/docs/Phaser.RenderTexture.html +++ b/docs/Phaser.RenderTexture.html @@ -1646,7 +1646,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:19 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:36 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.RequestAnimationFrame.html b/docs/Phaser.RequestAnimationFrame.html index a4f933cdcc..8dbf11ffd6 100644 --- a/docs/Phaser.RequestAnimationFrame.html +++ b/docs/Phaser.RequestAnimationFrame.html @@ -1511,7 +1511,7 @@

updat Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:19 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:37 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.RetroFont.html b/docs/Phaser.RetroFont.html index 31265144e8..a4af7bcdb5 100644 --- a/docs/Phaser.RetroFont.html +++ b/docs/Phaser.RetroFont.html @@ -5168,7 +5168,7 @@

Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:19 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:37 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.ScaleManager.html b/docs/Phaser.ScaleManager.html index 2eefd928f5..f0fd127fed 100644 --- a/docs/Phaser.ScaleManager.html +++ b/docs/Phaser.ScaleManager.html @@ -5602,7 +5602,7 @@

stopFul Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:19 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:37 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Signal.html b/docs/Phaser.Signal.html index e134bac28e..2ebaf0685f 100644 --- a/docs/Phaser.Signal.html +++ b/docs/Phaser.Signal.html @@ -2388,7 +2388,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:20 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:37 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.SignalBinding.html b/docs/Phaser.SignalBinding.html index 886832184f..9d2568cc66 100644 --- a/docs/Phaser.SignalBinding.html +++ b/docs/Phaser.SignalBinding.html @@ -1857,7 +1857,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:20 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:37 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.SinglePad.html b/docs/Phaser.SinglePad.html index 54121bbb60..94b7c30cd8 100644 --- a/docs/Phaser.SinglePad.html +++ b/docs/Phaser.SinglePad.html @@ -4017,7 +4017,7 @@

reset Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:20 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:37 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Sound.html b/docs/Phaser.Sound.html index 07c7ad23df..221ad36830 100644 --- a/docs/Phaser.Sound.html +++ b/docs/Phaser.Sound.html @@ -5813,7 +5813,7 @@

<protected> Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:20 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:37 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.SoundManager.html b/docs/Phaser.SoundManager.html index dbe8610419..03ce754b18 100644 --- a/docs/Phaser.SoundManager.html +++ b/docs/Phaser.SoundManager.html @@ -3201,7 +3201,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:20 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:38 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Sprite.html b/docs/Phaser.Sprite.html index 724727aec3..57b783fc1c 100644 --- a/docs/Phaser.Sprite.html +++ b/docs/Phaser.Sprite.html @@ -5927,7 +5927,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:20 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:38 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.SpriteBatch.html b/docs/Phaser.SpriteBatch.html index df1f7f3bb1..2ba590c816 100644 --- a/docs/Phaser.SpriteBatch.html +++ b/docs/Phaser.SpriteBatch.html @@ -1003,7 +1003,7 @@

Properties:
Source:
@@ -1115,7 +1115,7 @@
Properties:
Source:
@@ -1774,7 +1774,7 @@
Properties:
Source:
@@ -1988,7 +1988,7 @@
Properties:
Source:
@@ -2314,7 +2314,7 @@
Properties:
Source:
@@ -2528,7 +2528,7 @@
Properties:
Source:
@@ -2737,7 +2737,7 @@
Properties:
Source:
@@ -2849,7 +2849,7 @@
Properties:
Source:
@@ -2961,7 +2961,7 @@
Properties:
Source:
@@ -11685,7 +11685,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:21 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:38 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Stage.html b/docs/Phaser.Stage.html index 04e97a7051..e34e50d5e6 100644 --- a/docs/Phaser.Stage.html +++ b/docs/Phaser.Stage.html @@ -2209,7 +2209,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:21 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:38 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.State.html b/docs/Phaser.State.html index 14e93837b8..0f83763a8b 100644 --- a/docs/Phaser.State.html +++ b/docs/Phaser.State.html @@ -2935,7 +2935,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:21 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:38 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.StateManager.html b/docs/Phaser.StateManager.html index 2d0888b768..dae71dde03 100644 --- a/docs/Phaser.StateManager.html +++ b/docs/Phaser.StateManager.html @@ -3846,7 +3846,7 @@

<protected> Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:21 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:39 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Text.html b/docs/Phaser.Text.html index 68b369e825..f7e201b5fd 100644 --- a/docs/Phaser.Text.html +++ b/docs/Phaser.Text.html @@ -4601,7 +4601,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:21 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:39 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Tile.html b/docs/Phaser.Tile.html index c8b8fa9a63..0f50999392 100644 --- a/docs/Phaser.Tile.html +++ b/docs/Phaser.Tile.html @@ -1040,7 +1040,7 @@

Properties:
-

+ @@ -1069,7 +1069,7 @@
Properties:
Source:
@@ -1087,7 +1087,7 @@
Properties:
-

<readonly> canCollide

+

centerX

@@ -1126,13 +1126,13 @@
Properties:
- + + @@ -1171,7 +1171,7 @@
Properties:
Source:
@@ -1189,7 +1189,7 @@
Properties:
-

centerX

+

centerY

@@ -1228,7 +1228,7 @@
Properties:
- + + @@ -1273,7 +1273,7 @@
Properties:
Source:
@@ -1291,7 +1291,7 @@
Properties:
-

centerY

+

collideDown

@@ -1330,13 +1330,13 @@
Properties:
- + + @@ -1371,11 +1371,14 @@
Properties:
+
Default Value:
+
  • false
+
Source:
@@ -1393,7 +1396,7 @@
Properties:
-

collideDown

+

collideLeft

@@ -1432,7 +1435,7 @@
Properties:
- + + @@ -1480,7 +1483,7 @@
Properties:
Source:
@@ -1498,7 +1501,7 @@
Properties:
-

collideLeft

+

collideRight

@@ -1537,7 +1540,7 @@
Properties:
- + + @@ -1585,7 +1588,7 @@
Properties:
Source:
@@ -1603,7 +1606,7 @@
Properties:
-

collideRight

+

<readonly> collides

@@ -1642,7 +1645,7 @@
Properties:
- + + @@ -1683,14 +1686,11 @@
Properties:
-
Default Value:
-
  • false
-
Source:
@@ -4883,7 +4883,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:22 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:39 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.TileSprite.html b/docs/Phaser.TileSprite.html index bfd893ff33..4baffc408f 100644 --- a/docs/Phaser.TileSprite.html +++ b/docs/Phaser.TileSprite.html @@ -4139,7 +4139,7 @@

update Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:22 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:40 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Tilemap.html b/docs/Phaser.Tilemap.html index 64034c7581..1b6e9af079 100644 --- a/docs/Phaser.Tilemap.html +++ b/docs/Phaser.Tilemap.html @@ -12467,7 +12467,7 @@

Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:22 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:39 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.TilemapLayer.html b/docs/Phaser.TilemapLayer.html index 01042f4f5d..fd2996f884 100644 --- a/docs/Phaser.TilemapLayer.html +++ b/docs/Phaser.TilemapLayer.html @@ -5116,7 +5116,7 @@

updateMax Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:22 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:39 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.TilemapParser.html b/docs/Phaser.TilemapParser.html index 703711d102..6fd67ea902 100644 --- a/docs/Phaser.TilemapParser.html +++ b/docs/Phaser.TilemapParser.html @@ -1456,7 +1456,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:22 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:40 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Tileset.html b/docs/Phaser.Tileset.html index cef685dee8..9f436b8e2b 100644 --- a/docs/Phaser.Tileset.html +++ b/docs/Phaser.Tileset.html @@ -2530,7 +2530,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:22 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:40 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Time.html b/docs/Phaser.Time.html index f7d7d63a7d..d6a36889af 100644 --- a/docs/Phaser.Time.html +++ b/docs/Phaser.Time.html @@ -3397,7 +3397,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:23 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:40 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Timer.html b/docs/Phaser.Timer.html index 0b50cfb536..b0588ccd59 100644 --- a/docs/Phaser.Timer.html +++ b/docs/Phaser.Timer.html @@ -765,7 +765,7 @@
Type:
Source:
@@ -825,7 +825,7 @@
Type:
Source:
@@ -885,7 +885,7 @@
Type:
Source:
@@ -945,7 +945,7 @@
Type:
Source:
@@ -1149,7 +1149,7 @@
Properties:
Source:
@@ -1560,7 +1560,7 @@
Properties:
Source:
@@ -1662,7 +1662,7 @@
Properties:
Source:
@@ -1764,7 +1764,7 @@
Properties:
Source:
@@ -2280,7 +2280,7 @@
Properties:
Source:
@@ -2501,7 +2501,7 @@
Parameters:
Source:
@@ -2547,6 +2547,75 @@
Returns:
+ + + + +
+

clearPendingEvents()

+ + +
+
+ + +
+

Clears any events from the Timer which have pendingDelete set to true and then resets the private _len and _i values.

+
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + +
@@ -2594,7 +2663,7 @@

destroySource:
@@ -2820,7 +2889,7 @@
Parameters:
Source:
@@ -2912,7 +2981,7 @@

orderSource:
@@ -2981,7 +3050,7 @@

pauseSource:
@@ -3099,7 +3168,7 @@
Parameters:
Source:
@@ -3169,7 +3238,7 @@

removeAllSource:
@@ -3299,7 +3368,7 @@
Parameters:
-

+ @@ -3426,7 +3495,7 @@
Parameters:
Source:
@@ -3518,7 +3587,7 @@

resumeSource:
@@ -3587,7 +3656,7 @@

<protected> Source:
@@ -3725,7 +3794,7 @@
Parameters:
Source:
@@ -3863,7 +3932,7 @@
Parameters:
Source:
@@ -3981,7 +4050,7 @@
Parameters:
Source:
@@ -4055,7 +4124,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:23 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:40 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.TimerEvent.html b/docs/Phaser.TimerEvent.html index 7380e00541..f85de79555 100644 --- a/docs/Phaser.TimerEvent.html +++ b/docs/Phaser.TimerEvent.html @@ -1771,7 +1771,7 @@
Properties:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:23 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:40 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Touch.html b/docs/Phaser.Touch.html index 7d46fcf849..6c569f44a2 100644 --- a/docs/Phaser.Touch.html +++ b/docs/Phaser.Touch.html @@ -2741,7 +2741,7 @@

stop Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:23 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:40 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Tween.html b/docs/Phaser.Tween.html index 7707a3ef26..2fbf80d3b8 100644 --- a/docs/Phaser.Tween.html +++ b/docs/Phaser.Tween.html @@ -3453,7 +3453,7 @@

Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:23 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:41 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.TweenManager.html b/docs/Phaser.TweenManager.html index 1e7763a956..1b788c311a 100644 --- a/docs/Phaser.TweenManager.html +++ b/docs/Phaser.TweenManager.html @@ -1734,7 +1734,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:23 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:41 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Utils.Debug.html b/docs/Phaser.Utils.Debug.html index 20d017256f..4470247e6a 100644 --- a/docs/Phaser.Utils.Debug.html +++ b/docs/Phaser.Utils.Debug.html @@ -6758,7 +6758,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:24 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:41 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.Utils.html b/docs/Phaser.Utils.html index 4f36ee29ec..dec3444b1c 100644 --- a/docs/Phaser.Utils.html +++ b/docs/Phaser.Utils.html @@ -1533,7 +1533,7 @@
Returns:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:24 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:41 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.World.html b/docs/Phaser.World.html index 68f4053206..461568fbbd 100644 --- a/docs/Phaser.World.html +++ b/docs/Phaser.World.html @@ -874,7 +874,7 @@
Properties:
Source:
@@ -986,7 +986,7 @@
Properties:
Source:
@@ -2060,7 +2060,7 @@
Properties:
Source:
@@ -2376,7 +2376,7 @@
Properties:
Source:
@@ -2906,7 +2906,7 @@
Properties:
Source:
@@ -3120,7 +3120,7 @@
Properties:
Source:
@@ -3334,7 +3334,7 @@
Properties:
Source:
@@ -3548,7 +3548,7 @@
Properties:
Source:
@@ -3660,7 +3660,7 @@
Properties:
Source:
@@ -12709,7 +12709,7 @@
Parameters:
Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:24 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:41 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.html b/docs/Phaser.html index 817d183b29..a037e5b5cb 100644 --- a/docs/Phaser.html +++ b/docs/Phaser.html @@ -1234,7 +1234,7 @@

Classes

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Phaser.js.html b/docs/Phaser.js.html index 84398ce6f8..f86a8db7ba 100644 --- a/docs/Phaser.js.html +++ b/docs/Phaser.js.html @@ -528,7 +528,7 @@

Source: D:/wamp/www/phaser/src/Phaser.js

var Phaser = Phaser || { VERSION: '<%= version %>', - DEV_VERSION: '2.0.3', + DEV_VERSION: '2.0.4', GAMES: [], AUTO: 0, @@ -617,7 +617,7 @@

Source: D:/wamp/www/phaser/src/Phaser.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Physics.js.html b/docs/Physics.js.html index d714073e9d..e24cc5098c 100644 --- a/docs/Physics.js.html +++ b/docs/Physics.js.html @@ -826,7 +826,7 @@

Source: physics/Physics.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Plugin.js.html b/docs/Plugin.js.html index fa56932e39..bcc8679397 100644 --- a/docs/Plugin.js.html +++ b/docs/Plugin.js.html @@ -659,7 +659,7 @@

Source: core/Plugin.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/PluginManager.js.html b/docs/PluginManager.js.html index 191e0ea86f..12a2622c41 100644 --- a/docs/PluginManager.js.html +++ b/docs/PluginManager.js.html @@ -822,7 +822,7 @@

Source: core/PluginManager.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Point.js.html b/docs/Point.js.html index 105dd2a269..9815f0640f 100644 --- a/docs/Point.js.html +++ b/docs/Point.js.html @@ -1035,7 +1035,7 @@

Source: geom/Point.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/PointProxy.js.html b/docs/PointProxy.js.html index 87df2d0c26..5a1eb56640 100644 --- a/docs/PointProxy.js.html +++ b/docs/PointProxy.js.html @@ -599,7 +599,7 @@

Source: physics/p2/PointProxy.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Pointer.js.html b/docs/Pointer.js.html index 962f36e7d1..ac3d225179 100644 --- a/docs/Pointer.js.html +++ b/docs/Pointer.js.html @@ -1182,7 +1182,7 @@

Source: input/Pointer.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Polygon.js.html b/docs/Polygon.js.html index 209efad999..53b869e043 100644 --- a/docs/Polygon.js.html +++ b/docs/Polygon.js.html @@ -646,7 +646,7 @@

Source: geom/Polygon.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/PrismaticConstraint.js.html b/docs/PrismaticConstraint.js.html index e81aad843f..0b2031a9db 100644 --- a/docs/PrismaticConstraint.js.html +++ b/docs/PrismaticConstraint.js.html @@ -586,7 +586,7 @@

Source: physics/p2/PrismaticConstraint.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/QuadTree.js.html b/docs/QuadTree.js.html index e547d828f6..02e4517ed6 100644 --- a/docs/QuadTree.js.html +++ b/docs/QuadTree.js.html @@ -872,7 +872,7 @@

Source: math/QuadTree.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/RandomDataGenerator.js.html b/docs/RandomDataGenerator.js.html index 0ea78d265a..814000fd68 100644 --- a/docs/RandomDataGenerator.js.html +++ b/docs/RandomDataGenerator.js.html @@ -786,7 +786,7 @@

Source: math/RandomDataGenerator.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Rectangle.js.html b/docs/Rectangle.js.html index 807b5e672c..6fa1b233cf 100644 --- a/docs/Rectangle.js.html +++ b/docs/Rectangle.js.html @@ -1311,7 +1311,7 @@

Source: geom/Rectangle.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/RenderTexture.js.html b/docs/RenderTexture.js.html index 343a117a83..7802db4010 100644 --- a/docs/RenderTexture.js.html +++ b/docs/RenderTexture.js.html @@ -616,7 +616,7 @@

Source: gameobjects/RenderTexture.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/RequestAnimationFrame.js.html b/docs/RequestAnimationFrame.js.html index 50da206f0b..1ae4ffb0ca 100644 --- a/docs/RequestAnimationFrame.js.html +++ b/docs/RequestAnimationFrame.js.html @@ -702,7 +702,7 @@

Source: system/RequestAnimationFrame.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/RetroFont.js.html b/docs/RetroFont.js.html index 6190a37433..04f0fda7c4 100644 --- a/docs/RetroFont.js.html +++ b/docs/RetroFont.js.html @@ -1108,7 +1108,7 @@

Source: gameobjects/RetroFont.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/RevoluteConstraint.js.html b/docs/RevoluteConstraint.js.html index 8bf72697b4..8e35fb48cc 100644 --- a/docs/RevoluteConstraint.js.html +++ b/docs/RevoluteConstraint.js.html @@ -579,7 +579,7 @@

Source: physics/p2/RevoluteConstraint.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/ScaleManager.js.html b/docs/ScaleManager.js.html index 38fb87b768..d323f33af5 100644 --- a/docs/ScaleManager.js.html +++ b/docs/ScaleManager.js.html @@ -1325,7 +1325,7 @@

Source: core/ScaleManager.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Signal.js.html b/docs/Signal.js.html index ba89323837..d50a762d18 100644 --- a/docs/Signal.js.html +++ b/docs/Signal.js.html @@ -840,7 +840,7 @@

Source: core/Signal.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/SignalBinding.js.html b/docs/SignalBinding.js.html index 6a0e0945ca..a100d077f0 100644 --- a/docs/SignalBinding.js.html +++ b/docs/SignalBinding.js.html @@ -695,7 +695,7 @@

Source: core/SignalBinding.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/SinglePad.js.html b/docs/SinglePad.js.html index 8167a494b4..465ec39c9d 100644 --- a/docs/SinglePad.js.html +++ b/docs/SinglePad.js.html @@ -1105,7 +1105,7 @@

Source: input/SinglePad.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Sound.js.html b/docs/Sound.js.html index 590a9a321f..26745b4a29 100644 --- a/docs/Sound.js.html +++ b/docs/Sound.js.html @@ -1379,7 +1379,7 @@

Source: sound/Sound.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/SoundManager.js.html b/docs/SoundManager.js.html index 7e4f4dcf72..aab8491cf2 100644 --- a/docs/SoundManager.js.html +++ b/docs/SoundManager.js.html @@ -1119,7 +1119,7 @@

Source: sound/SoundManager.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Spring.js.html b/docs/Spring.js.html index a38cf3b415..2d9027bc37 100644 --- a/docs/Spring.js.html +++ b/docs/Spring.js.html @@ -609,7 +609,7 @@

Source: physics/p2/Spring.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Sprite.js.html b/docs/Sprite.js.html index 6dc4c4d9e3..f787616a51 100644 --- a/docs/Sprite.js.html +++ b/docs/Sprite.js.html @@ -1598,7 +1598,7 @@

Source: gameobjects/Sprite.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/SpriteBatch.js.html b/docs/SpriteBatch.js.html index a5db2d778f..8715f05a85 100644 --- a/docs/SpriteBatch.js.html +++ b/docs/SpriteBatch.js.html @@ -571,7 +571,7 @@

Source: gameobjects/SpriteBatch.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Stage.js.html b/docs/Stage.js.html index dc210c52b6..02ca1a806a 100644 --- a/docs/Stage.js.html +++ b/docs/Stage.js.html @@ -941,7 +941,7 @@

Source: core/Stage.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/State.js.html b/docs/State.js.html index 3919034ff0..9934e955b4 100644 --- a/docs/State.js.html +++ b/docs/State.js.html @@ -709,7 +709,7 @@

Source: core/State.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/StateManager.js.html b/docs/StateManager.js.html index 6362736797..d7f05e97f2 100644 --- a/docs/StateManager.js.html +++ b/docs/StateManager.js.html @@ -792,9 +792,9 @@

Source: core/StateManager.js

this._clearWorld = clearWorld; this._clearCache = clearCache; - if (arguments.length > 3) + if (arguments.length > 2) { - this._args = Array.prototype.splice.call(arguments, 3); + this._args = Array.prototype.splice.call(arguments, 2); } }, @@ -1145,7 +1145,7 @@

Source: core/StateManager.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Text.js.html b/docs/Text.js.html index 8a07425dbe..82b7f059ac 100644 --- a/docs/Text.js.html +++ b/docs/Text.js.html @@ -1424,7 +1424,7 @@

Source: gameobjects/Text.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Tile.js.html b/docs/Tile.js.html index 442f5cf654..3bfe4c3639 100644 --- a/docs/Tile.js.html +++ b/docs/Tile.js.html @@ -1308,7 +1308,7 @@

Source: physics/ninja/Tile.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Tile.js_.html b/docs/Tile.js_.html index 2f0a77cbad..c3c741b79c 100644 --- a/docs/Tile.js_.html +++ b/docs/Tile.js_.html @@ -832,8 +832,8 @@

Source: tilemap/Tile.js

Phaser.Tile.prototype.constructor = Phaser.Tile; /** -* @name Phaser.Tile#canCollide -* @property {boolean} canCollide - True if this tile can collide or has a collision callback. +* @name Phaser.Tile#collides +* @property {boolean} collides - True if this tile can collide on any of its faces. * @readonly */ Object.defineProperty(Phaser.Tile.prototype, "collides", { @@ -846,7 +846,7 @@

Source: tilemap/Tile.js

/** * @name Phaser.Tile#canCollide -* @property {boolean} canCollide - True if this tile can collide or has a collision callback. +* @property {boolean} canCollide - True if this tile can collide on any of its faces or has a collision callback set. * @readonly */ Object.defineProperty(Phaser.Tile.prototype, "canCollide", { @@ -929,7 +929,7 @@

Source: tilemap/Tile.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/TileSprite.js.html b/docs/TileSprite.js.html index b1df9253e7..757b0554ae 100644 --- a/docs/TileSprite.js.html +++ b/docs/TileSprite.js.html @@ -1283,7 +1283,7 @@

Source: gameobjects/TileSprite.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Tilemap.js.html b/docs/Tilemap.js.html index 5be200f247..cd2892ed18 100644 --- a/docs/Tilemap.js.html +++ b/docs/Tilemap.js.html @@ -2133,7 +2133,7 @@

Source: tilemap/Tilemap.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/TilemapLayer.js.html b/docs/TilemapLayer.js.html index 660c2b049b..0363b22101 100644 --- a/docs/TilemapLayer.js.html +++ b/docs/TilemapLayer.js.html @@ -1332,7 +1332,7 @@

Source: tilemap/TilemapLayer.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/TilemapParser.js.html b/docs/TilemapParser.js.html index ab0d95e358..190473f4f7 100644 --- a/docs/TilemapParser.js.html +++ b/docs/TilemapParser.js.html @@ -993,7 +993,7 @@

Source: tilemap/TilemapParser.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Tileset.js.html b/docs/Tileset.js.html index 7aea152c65..1bca79b118 100644 --- a/docs/Tileset.js.html +++ b/docs/Tileset.js.html @@ -713,7 +713,7 @@

Source: tilemap/Tileset.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Time.js.html b/docs/Time.js.html index 727b28d074..bfc414bd6e 100644 --- a/docs/Time.js.html +++ b/docs/Time.js.html @@ -911,7 +911,7 @@

Source: time/Time.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Timer.js.html b/docs/Timer.js.html index f83412a364..e5300c3607 100644 --- a/docs/Timer.js.html +++ b/docs/Timer.js.html @@ -626,6 +626,18 @@

Source: time/Timer.js

*/ this._i = 0; + /** + * @property {number} _diff - Internal cache var. + * @private + */ + this._diff = 0; + + /** + * @property {number} _newTick - Internal cache var. + * @private + */ + this._newTick = 0; + }; /** @@ -695,6 +707,7 @@

Source: time/Timer.js

* Adds a new Event to this Timer. The event will fire after the given amount of 'delay' in milliseconds has passed, once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#add * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. * @param {function} callback - The callback that will be called when the Timer event occurs. @@ -713,9 +726,10 @@

Source: time/Timer.js

* The event will fire after the given amount of 'delay' milliseconds has passed once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#repeat * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. - * @param {number} repeatCount - The number of times the event will repeat. + * @param {number} repeatCount - The number of times the event will repeat once is has finished playback. A repeatCount of 1 means it will repeat itself once, playing the event twice in total. * @param {function} callback - The callback that will be called when the Timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - The values to be sent to your callback function when it is called. @@ -732,6 +746,7 @@

Source: time/Timer.js

* The event will fire after the given amount of 'delay' milliseconds has passed once the Timer has started running. * Call Timer.start() once you have added all of the Events you require for this Timer. The delay is in relation to when the Timer starts, not the time it was added. * If the Timer is already running the delay will be calculated based on the timers current time. + * * @method Phaser.Timer#loop * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. * @param {function} callback - The callback that will be called when the Timer event occurs. @@ -842,6 +857,28 @@

Source: time/Timer.js

}, + /** + * Clears any events from the Timer which have pendingDelete set to true and then resets the private _len and _i values. + * + * @method Phaser.Timer#clearPendingEvents + */ + clearPendingEvents: function () { + + this._i = this.events.length; + + while (this._i--) + { + if (this.events[this._i].pendingDelete) + { + this.events.splice(this._i, 1); + } + } + + this._len = this.events.length; + this._i = 0; + + }, + /** * The main Timer update event, called automatically by the Game clock. * @method Phaser.Timer#update @@ -858,55 +895,38 @@

Source: time/Timer.js

this._now = time; - this._len = this.events.length; - - this._i = 0; - - while (this._i < this._len) - { - if (this.events[this._i].pendingDelete) - { - this.events.splice(this._i, 1); - this._len--; - } - - this._i++; - } - - this._len = this.events.length; + // Clears events marked for deletion and resets _len and _i to 0. + this.clearPendingEvents(); if (this.running && this._now >= this.nextTick && this._len > 0) { - this._i = 0; - while (this._i < this._len && this.running) { if (this._now >= this.events[this._i].tick) { - var diff = this._now - this.events[this._i].tick; - var newTick = (this._now + this.events[this._i].delay) - diff; + // (now + delay) - (time difference from last tick to now) + this._newTick = (this._now + this.events[this._i].delay) - (this._now - this.events[this._i].tick); - if (newTick < 0) + if (this._newTick < 0) { - newTick = this._now + this.events[this._i].delay; + this._newTick = this._now + this.events[this._i].delay; } if (this.events[this._i].loop === true) { - this.events[this._i].tick = newTick; + this.events[this._i].tick = this._newTick; this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); } else if (this.events[this._i].repeatCount > 0) { this.events[this._i].repeatCount--; - this.events[this._i].tick = newTick; + this.events[this._i].tick = this._newTick; this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); } else { this.events[this._i].callback.apply(this.events[this._i].callbackContext, this.events[this._i].args); - this.events.splice(this._i, 1); - this._len--; + this.events[this._i].pendingDelete = true; } this._i++; @@ -1144,7 +1164,7 @@

Source: time/Timer.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/TimerEvent.js.html b/docs/TimerEvent.js.html index 75b7e61f1a..008c8c3a84 100644 --- a/docs/TimerEvent.js.html +++ b/docs/TimerEvent.js.html @@ -609,7 +609,7 @@

Source: time/TimerEvent.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Touch.js.html b/docs/Touch.js.html index abf0172ef8..a31a3715d9 100644 --- a/docs/Touch.js.html +++ b/docs/Touch.js.html @@ -913,7 +913,7 @@

Source: input/Touch.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Tween.js.html b/docs/Tween.js.html index 87f009837a..4f6b9327f1 100644 --- a/docs/Tween.js.html +++ b/docs/Tween.js.html @@ -1279,7 +1279,7 @@

Source: tween/Tween.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/TweenManager.js.html b/docs/TweenManager.js.html index 2b9ef26d40..6e3d71384e 100644 --- a/docs/TweenManager.js.html +++ b/docs/TweenManager.js.html @@ -771,7 +771,7 @@

Source: tween/TweenManager.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/Utils.js.html b/docs/Utils.js.html index 413dd59e43..5e4e26fd80 100644 --- a/docs/Utils.js.html +++ b/docs/Utils.js.html @@ -856,7 +856,7 @@

Source: utils/Utils.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/World.js.html b/docs/World.js.html index 571ecf53e5..54d75258cc 100644 --- a/docs/World.js.html +++ b/docs/World.js.html @@ -1991,7 +1991,7 @@

Source: physics/p2/World.js

{ var tile = map.layers[layer].data[y][x]; - if (tile) + if (tile && tile.collides) { if (optimize) { @@ -2377,7 +2377,7 @@

Source: physics/p2/World.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:02 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/World.js_.html b/docs/World.js_.html index 53898d9908..7b4e1ee4d8 100644 --- a/docs/World.js_.html +++ b/docs/World.js_.html @@ -2216,7 +2216,7 @@

Source: physics/arcade/World.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/World.js__.html b/docs/World.js__.html index f4b3ed3db2..e59d8a2f4b 100644 --- a/docs/World.js__.html +++ b/docs/World.js__.html @@ -1142,7 +1142,7 @@

Source: physics/ninja/World.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:21 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/World.js___.html b/docs/World.js___.html index eeb8eb93ee..5d88822f35 100644 --- a/docs/World.js___.html +++ b/docs/World.js___.html @@ -743,7 +743,7 @@

Source: core/World.js

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/classes.list.html b/docs/classes.list.html index f68072a408..04d75cffc1 100644 --- a/docs/classes.list.html +++ b/docs/classes.list.html @@ -1516,7 +1516,7 @@

Namespaces

Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/index.html b/docs/index.html index 8373b3f5bd..0fa3020df7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -536,9 +536,9 @@

Phaser 2.0

-

Phaser 2.0.3

+

Phaser 2.0.4-dev

Phaser is a fast, free and fun open source game framework for making desktop and mobile browser HTML5 games. It uses Pixi.js internally for fast 2D Canvas and WebGL rendering.

-

Version: 2.0.3 "Allorallen" - Released: 11th April 2014

+

Version: 2.0.4 "Mos Shirare" - Released: -in development-

By Richard Davey, Photon Storm

  • View the Official Website
  • @@ -552,13 +552,7 @@

    Phaser 2.0.3

    Subscribe to our new Phaser Newsletter. We'll email you when new versions are released as well as send you our regular Phaser game making magazine.

    Build Status Bitdeli Badge

    -

    What's new in 2.0.3?

    -

    In this release we have upgraded both pixi.js to v1.5.2 and p2.js to v0.5.0. This improves features and stability across the whole framework, and as always you'll find the complete list of improvements below.

    -

    We've taken some time to enhance the Particle Emitter adding a few substantial features such as the ability for Particles to now change scale or alpha over time using any of the easing functions, or apply a blend mode. These small additions now allow you to create visually more impressive effects than before, and while we still have a complete overhaul of the particle system on our roadmap it's a welcome boost in the meantime.

    -

    Along with the p2.js update we have also refined the Phaser P2 classes, making tweaks that help overall performance, such as splitting the world bounds into separate bodies. The World now has a default contact material, which allows for easier setting of responses when objects collide with no materials set. All in all it's a powerful update.

    -

    What's interesting is that loads of the new features and bug fixes in this release have come direct from the community. Of course we've been busy and working hard on Phaser as well, but the volume of contributors now is fantastic. We've have always listed their names next to the issues they helped resolve, but now we're doing so with their github usernames directly so they appear on the revisions change log.

    -

    As promised with the 2.0.0 release we have done all of this without changing existing API calls in the core Phaser classes. New features are introduced either via the creation of new optional parameters or by creating new methods. Where a feature has been deprecated we have flagged it as such in the docs, but left it in so as to not break existing code.

    -

    Some of you may not be aware, but the phaser.min.js file in the build folder contains all 3 physics systems bundled in. We've refined our build process so that it's easy for you to create custom builds now via grunt, but if you know you only need Arcade Physics (and not P2 or Ninja) then you can use phaser-arcade-physics.min.js which is found in the build/custom folder. This will save you 180KB from the minified file size, so please use it if you can.

    +

    What's new in 2.0.4?

    Welcome to Phaser

    6 months ago we released Phaser 1.0 into the world. Suffice to say that since then we've been overwhelmed at the huge surge of developers taking to it! Our github repository is consistently in the top JavaScript lists, we've over 3200 stars at the time of writing, and a wonderful, vibrant and friendly community. Phaser 2 is a natural evolution of what we started. We've focused specifically on performance and expansion with this release. Lots of developers have already reported to us considerably speed increases just by swapping to Phaser 2 (reports of 200% faster speeds on mobile aren't unheard of!). There's also a full-body physics system available now, in the form of the excellent p2.js. The upgrade to Pixi 1.5 under the hood bought lots of new visual effects in, including blend modes and tints.

    And we're also really pleased to have closed down over 550 issues reported on github. We literally went through every last bug reported to us, and fixed it. All kinds of little things that as a whole make the library that much more solid. With the 2.0 release we're now freezing the API. Before we have to admit that the API changed somewhat on a whim, and we moved things around and changed things without too much consideration for fellow developers. With 2.0 that stops - we've spent long enough on this release that we're now extremely happy with the organisation of classes and methods, and while we may still need to make small tweaks in the future, none of them will be API breaking without prior community approval first. This means if you're using Phaser to teach in classes, or writing a book / tutorials around it, this is the version to base off.

    @@ -568,154 +562,37 @@

    Welcome to Phaser

    boogie

    Getting Started Guides

    We have a new Getting Started Guide which covers all you need to begin developing games with Phaser. From setting up a web server to picking an IDE. If you're new to HTML5 game development, or are coming from another language like AS3, then we recommend starting there.

    -

    There is a comprehensive How to Learn Phaser guide on the GameDevTuts+ site which is a great place to learn where to find tutorials, examples and support.

    -

    There is also an un-official Getting Started Guide.

    +

    We wrote a comprehensive How to Learn Phaser guide for GameDevTuts+ which covers finding tutorials, examples and support.

    +

    Finally the growing list of community authored Phaser Tutorials is growing fast!

    Phaser Logo

    Change Log

    -

    Version 2.0.3 - "Allorallen" - 11th April 2014

    +

    Version 2.0.4 - "Mos Shirare" - in development

    Updates

      -
    • Updated to Pixi.js 1.5.2
    • -
    • Updated to p2.js 0.5.0
    • -
    • Return the result of P2.Body.setCircle for further chaining and manipulation (fix #659)
    • -
    • Updated the PhysicsEditor plugin to maintain position, radius, mask bits, category bits and sensor flags (thanks @georgiee, #674)
    • -
    • Further TypeScript defs tweaks (thanks @clark-stevenson)
    • -
    • Lowered the default size of SpriteBatch from 10000 to 2000 as this yields faster results on mobile (pixi.js update)
    • -
    • Fix for 'jagged' strokes on custom fonts (thanks @nickryall, #677)
    • -
    • The State.update function (and thus the update of any sub-classed Sprites or other objects) is now called before Stage, Tweens, Sound, Input, etc (#662)
    • -
    • The Phaser jshint process is now running on Travis (thanks @xtian, #656)
    • -
    • The Phaser Gruntfile is now split up into option tasks (thanks @xtian, #638)
    • -
    • Key.reset now clears any callbacks associated with the onDown and onUp events and nulls the onHoldCallback if set. Key.reset is called by Keyboard.reset when changing state.
    • -
    • If you pass null to Tilemap.putTile as the tile parameter it will pass the call over to Tilemap.removeTile.
    • -
    • TypeScript definitions updated for latest changes (thanks @clark-stevenson)
    • -
    • Keyboard.stop nulls the function references after removing the event listeners (thanks @bmceldowney, #691)
    • -
    • Tilemap.hasTile allows for multi-layer type parameter (thanks @Raeven0, #680)
    • -
    • Grunt update to dev dependencies (thanks @xtian, #695)
    • -
    • Emitter now emits Phaser.Particle objects instead of Phaser.Sprites, which can be extended as required.
    • -
    • Emitter has had various local properties removed that were already declared in Phaser.Group which it extends.
    • -
    • PluginManager parent parameter removed as it's redundant. Also most core functions tidied up and jsdocs fixed.
    • -
    • p2.World.defaultRestitution has been deprecated and is now p2.World.restitution.
    • -
    • p2.World.defaultFriction has been deprecated and is now p2.World.friction.
    • -
    • p2.World now uses 4 bodies for the world boundaries, rather than 1 body with 4 shapes. This stops the bounds triggering narrowphase with every single body in the world.
    • -
    • p2.World bounds are now included in the callback events such as beginContact and impact events.
    • -
    • Thanks to @STuFF the Classes drop-down list in the API docs now indents the sub-classes.
    • +
    • TypeScript definitions fixes and updates (thanks @clark-stevenson)
    • +
    • Timer has removed all use of local temporary vars in the core update loop.
    • +
    • The Input.reset hard reset parameter is now passed down to the Keyboard and Key reset methods.
    • +
    • AnimationManager.destroy now iterates through child animations calling destroy on all of them, avoiding a memory leak (thanks stauzs)
    • +
    • AnimationManager.play will now call Animation.stop on the current animation before switching to the new one (thanks @nihakue, #713)
    • +
    • ArcadePhysics.Body.phase is checked in postUpdate to prevent it from being called multiple times in a single frame.

    New Features

      -
    • Added ability to retrieve a single p2 fixture from the cache (thanks @georgiee, #674)
    • -
    • Timers can now have a start delay value (thanks @georgiee, #660)
    • -
    • CacheAsBitmap added to Display Object, so works for Sprite, Image, Button. Allows you to cache complex display hierarchies for speed.
    • -
    • CacheAsBitmap added to Graphics Object. Allows you to cache complex graphics structures hierarchies for speed.
    • -
    • Added generateTexture function to display objects. Create a texture from the current object display hierarchy for use as a texture elsewhere.
    • -
    • Added optional FilterArea to display object (for optimisation)
    • -
    • Graphics chaining functions.
    • -
    • Added Pointer.positionUp which records the last point at which the pointer left the screen (thanks @Cryszon, #676)
    • -
    • Phaser.Point.centroid static function added to calculate the centroid or midpoint of an array of points (thanks @lewster32, #675)
    • -
    • SoundManager.remove(sound) now lets you remove a sound from the SoundManager, destroying it in the process.
    • -
    • Sound.destroy will remove a sound and all local references it holds, optionally removing itself from the SoundManager as well.
    • -
    • SoundManager.removeByKey(key) will remove all sounds from the SoundManager that have a key matching the given value.
    • -
    • ArcadePhysics.Body.hitTest(x, y) will return a boolean based on if the given world coordinate are within the Body or not.
    • -
    • StateManager.restart allows you to quickly restart the current state, optionally clearing the world and cache.
    • -
    • Tilemap.removeTile(x, y, layer) lets you remove the tile at the given coordinates and updates the collision data.
    • -
    • Tilemap.removeTileWorldXY lets you remove the tile at the given pixel value coordinates and updates the collision data.
    • -
    • Key.enabled boolean allows you to toggle if a Key processes its update method or dispatches any events without deleting and re-creating it.
    • -
    • Emitter now has minParticleAlpha and maxParticleAlpha values for setting a random alpha on emitted particles.
    • -
    • Emitter.particleAnchor allows you to control the anchor of emitted Particles. Defaults to 0.5 (same as before) but now under your control.
    • -
    • Emitter.setAlpha allows you to quickly set the min and max alpha values.
    • -
    • Emitter.setScale allows you to quickly set the min and max scale values.
    • -
    • Emitter.blendMode lets you set the blendMode of any emitted Particle (needs a browser that supports canvas blend modes)
    • -
    • Group.customSort allows you to sort the Group children based on your own sort function.
    • -
    • Emitter.setScale has a new 'rate' parameter which allows particles to change in scale over time, using any Easing value or timescale.
    • -
    • Emitter.setScale now allows you to scale the x and y axis of the particles independently.
    • -
    • Emitter.setAlpha has a new 'rate' parameter which allows particles to change alpha over time, using any Easing value or timescale.
    • -
    • Emitter.bringToTop and Emitter.sendToBack are booleans that let you optionally set the display order of the Particle when emitted.
    • -
    • Emitter now calls the Phaser.Particle.onEmit function, which is left empty for you to override and add in custom behaviours.
    • -
    • p2.World has a new contactMaterial property, which can be configured like a normal P2 Contact Material and is applied when two bodies hit that don't have defined materials.
    • -
    • Group.remove has a new 'destroy' parameter (false by default), which will optionally call destroy on the item removed from the Group.
    • -
    • Group.removeAll has a new 'destroy' parameter (false by default), which will optionally call destroy on the items removed from the Group.
    • -
    • Group.removeBetween has a new 'destroy' parameter (false by default), which will optionally call destroy on the items removed from the Group.
    • -
    • @georgiee created a new P2.FixtureList class to allow easy access the fixtures of a created P2 Body:
    • -
    -

    This is especially useful in combination with PhysicsEditor and P2.Body#addPhaserPolygon.

    -

    You can configure your whole collision grouping in PhysicsEditor and then you can later change the mask bits easily with this class. You can also access parts (groups) and named fixtures by a group index or a fixture key - both properties can be set in PhysicsEditor with the custom phaser exporter.

    -

    Use cases:

    -
      -
    • Configure collision bits in PhysicsEditor and you want to change them later.
    • -
    • Place a sensor in your fixture and access this single fixture later (to disable temporarily)
    • -
    • Create a small body with threes fixtures (circle, circle + polygon/convex). Now you want that the polygon part to behave like rubber and assign a bouncing (restitution > 1) material. Assign a fixture key in PhysicsEditor and access the fixture like this. (see the image for the fixture I described)
    • +
    • Loader now has an onFileStart event you can listen for (thanks @codevinsky, #705)
    • +
    • Timer.clearPendingEvents will purge any events marked for deletion, this is run automatically at the start of the update loop.
    • +
    • Device.crosswalk detects if your game is running under Intels Crosswalk XDK.
    • +
    • Keyboard.reset has a new hard parameter which controls the severity of the reset. A soft reset doesn't remove any callbacks or event listeners.
    • +
    • Key.reset has a new hard parameter which controls the severity of the reset. A soft reset doesn't remove any callbacks or event listeners.
    • +
    • InputManager.resetLocked - If the Input Manager has been reset locked then all calls made to InputManager.reset, such as from a State change, are ignored.

    Bug Fixes

      -
    • If you inputEnable = false a gameobject you couldn't re-enable it again using inputEnable = true, only directly via the handler (thanks @nickrall, fix #673)
    • -
    • Fixed setTexture bug with TilingSprite (pixi.js 1.5.2 bug fix)
    • -
    • Fixed anchor point bug in canvas with TilingSprite (pixi.js 1.5.2 bug fix)
    • -
    • Fixed positionOffset not begin correct in TilingSprite (pixi.js 1.5.2 bug fix)
    • -
    • Fixed issue where filters were not being applied to TilingSprite (pixi.js 1.5.2 bug fix)
    • -
    • Fixed SpriteBatch canvas transform bug (pixi.js 1.5.2 bug fix)
    • -
    • Fixed Cached textures issue when using base64 encoded images (@cacheflowe) (pixi.js 1.5.2 bug fix)
    • -
    • Fixed issue where visibility was not being respected in sprite batch (pixi.js 1.5.2 bug fix)
    • -
    • Fixed bug in gl.bindTexture which tried to use an undefined private var. (@photonstorm) (pixi.js 1.5.2 bug fix)
    • -
    • Fixed the 'short cut' version of Math.floor in setTransform if roundPixels is true. (@photonstorm) (pixi.js 1.5.2 bug fix)
    • -
    • SoundManager.boot will check to see if the AudioContext was created before carrying on (thanks @keyle, fix #669)
    • -
    • Fixed bug where move up and move down method in groups did not work (thanks @jonthulu, fix #684)
    • -
    • Fixed bug in Group.next when cursor is at the last child (thanks @jonthulu, fix #688)
    • -
    • Emitter.minParticleScale and maxParticleScale wasn't resetting the Body size correctly.
    • -
    • Group.removeBetween now properly iterates through the children.
    • -
    • P2.World had a type in the restitution method title. Now fixed.
    • -
    • Objects with an InputHandler now deactivate it when the object is removed from a Group but not destroyed (fix #672)
    • -
    • Fixed the vectors used in the BlurX and BlurY filters (thanks @nickryall, fix #668)
    • -
    -

    p2.js v0.5.0

    -
      -
    • Added property .enableIslandSleeping to World.
    • -
    • Added property .useFrictionGravityOnZeroGravity to World.
    • -
    • Renamed .useWorldGravityForFrictionApproximation in World to .useWorldGravityAsFrictionGravity to keep things more uniform.
    • -
    • Sleep improvements.
    • -
    • Added property .frictionIterations to GSSolver, and removed .skipFrictionIterations.
    • -
    • Upgraded to gl-matrix 2.1.0.
    • -
    • Removed QuadTree.
    • -
    • Removed mat2.
    • -
    • Added Utils.extend.
    • -
    • Added methods .setStiffness and .setRelaxation methods to Constraint.
    • -
    • Removed properties .stiffness, .relaxation and .useGlobalEquationParameters from GSSolver.
    • -
    • Added methods .setGlobalStiffness, .setGlobalRelaxation, .setGlobalEquationParameters to World.
    • -
    • Renamed property .eps to .epsilon for Equation.
    • -
    • Removed property .useBoundingBoxes from NaiveBroadphase in favor of the new property .boundingVolumeType in Broadphase.
    • -
    • Added methods .getMaxForce and .setMaxForce to LockConstraint.
    • -
    • Changed property names .bi, .bj, .ni, .ri, .rj to .bodyA, .bodyB, .normalA, .contactPointA, .contactPointB in Equation, ContactEquation and FrictionEquation classes.
    • -
    • Removed IslandSolver in favor of the new property World.islandSplit.
    • -
    • Changed constructors of the Constraints so they all take an options object as last parameter.
    • -
    • Added property .collideConnected to Constraint.
    • -
    • Added property .islandSplit to World.
    • -
    • Added methods .disableBodyCollision and .enableBodyCollision to World.
    • -
    • Added properties .useWorldGravityForFrictionApproximation and .frictionGravity to World.
    • -
    • Added Heightfield class.
    • -
    • Removed properties .defaultFriction and .defaultRestitution from World, in favor of .defaultContactMaterial.
    • -
    • Added property .enabled to Equation.
    • -
    • Added property .surfaceVelocity to ContactMaterial.
    • -
    • Added property .sensor to Shape.
    • -
    • World now emits events 'beginContact', 'endContact' and 'preSolve'.
    • -
    • Added property .gravityScale to Body.
    • -
    • Renamed class SAP1DBroadphase to SAPBroadphase.
    • -
    • Added property .interpolatedPosition to Body`.
    • -
    • Added method .internalStep to World.
    • -
    • Added property .applyGravity to World.
    • -
    • Renamed method .computeC to .computeInvC in Equation, and made it compute the inverse.
    • -
    • Added static method Utils.splice.
    • -
    • Added property .world to Body.
    • -
    • Added property .fixedRotation to Body.
    • -
    • Added class AABB.
    • -
    • Added properties .aabb and .aabbNeedsUpdate to Body, as well as a method .updateAABB.
    • -
    • Added property .useBoundingBoxes to NaiveBroadphase.
    • -
    • Added static method Broadphase.aabbCheck.
    • -
    • Added method .computeAABB to Shape.
    • -
    • Added static method Broadphase.canCollide.
    • -
    • Body now inherits from EventEmitter, and dispatches events 'sleep','sleepy' and 'wakeup'.
    • -
    • Added properties .allowSleep, .sleepState, .sleepSpeedLimit, .sleepTimeLimit, .lastTimeSleepy as well as methods .sleep, .wakeUp and .sleepTick to Body.
    • -
    • Added enums Body.AWAKE, Body.SLEEPY, Body.SLEEPING.
    • -
    • Added property .enableBodySleeping to World.
    • -
    • Added options .disableRotationalLock, .lowerLimit, .upperLimit to PrismaticConstraint constructor.
    • -
    • Added methods .enableMotor, .disableMotor to PrismaticConstraint as well as properties .motorEnabled, .motorSpeed, .motorEquation.
    • +
    • The main Timer loop could incorrectly remove TimeEvent if a new one was added specifically during an event callback (thanks @garyyeap, fix #710)
    • +
    • Fixed the use of the destroy parameter in Group.removeAll and related functions (thanks @AnderbergE, fix #717)
    • +
    • P2.World.convertTilemap now correctly checks the collides parameter of the tiles as it converts them.
    • +
    • Animation.destroy didn't correctly clear the onStart, onLoop and onComplete signals.
    • +
    • StateManager.restart incorrectly skipped the first additional parameter after clearCache (thanks @mariusbrn, fix #722)
    • +
    • Line.angle and Math.angleBetween used Math.atan2 arguments in the wrong order (thanks @jotson, fix #724)

    There is an extensive Migration Guide available for those converting from Phaser 1.x to 2.x. In the guide we detail the API breaking changes and approach to our new physics system.

    The full Change Log is at https://github.com/photonstorm/phaser/blob/master/CHANGELOG.md

    @@ -735,9 +612,9 @@

    Bower

    Tanks

    CDNJS

    Thanks to a community member Phaser is now available on CDNJS. You can include the following in your html:

    -

    http://cdnjs.cloudflare.com/ajax/libs/phaser/2.0.3/phaser.min.js

    +

    http://cdnjs.cloudflare.com/ajax/libs/phaser/2.0.4/phaser.min.js

    Or if you prefer you can leave the protocol off, so it works via http and https:

    -

    //cdnjs.cloudflare.com/ajax/libs/phaser/2.0.3/phaser.min.js

    +

    //cdnjs.cloudflare.com/ajax/libs/phaser/2.0.4/phaser.min.js

    Requirements

    Games created with Phaser require a modern web browser that supports the canvas tag. This includes Internet Explorer 9+, Firefox, Chrome, Safari and Opera. It also works on mobile web browsers including stock Android 2.x browser and above and iOS5 Mobile Safari and above.

    If you need to support IE9 or Android 2.x then you must use a build of Phaser that doesn't include P2 physics. You'll find these in the build/custom folder.

    @@ -859,7 +736,7 @@

    License

    Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template. diff --git a/docs/namespaces.list.html b/docs/namespaces.list.html index 937a4fca04..148368eb65 100644 --- a/docs/namespaces.list.html +++ b/docs/namespaces.list.html @@ -1516,7 +1516,7 @@

    Namespaces

    Documentation generated by JSDoc 3.3.0-dev - on Fri Apr 11 2014 13:25:03 GMT+0100 (BST) using the DocStrap template. + on Tue Apr 15 2014 02:52:22 GMT+0100 (BST) using the DocStrap template.

NameTypeDescription
onFileStart + + +Phaser.Signal + + + +

This event is dispatched immediately before a file starts loading. It's possible the file may still error (404, etc) after this event is sent.

Event signal.

This event is dispatched when the final file in the load queue has either loaded or failed.

Event signal.

This event is dispatched when the loading process starts, before the first file has been requested.

Is this Body in a preUpdate or postUpdate state?

Is this Body in a preUpdate (1) or postUpdate (2) state?

True if this tile can collide or has a collision callback.

True if this tile can collide on any of its faces or has a collision callback set.

canCollidewidth -boolean +number @@ -1142,7 +1142,7 @@
Properties:
-

True if this tile can collide or has a collision callback.

The width of the tile in pixels.

widthheight @@ -1244,7 +1244,7 @@
Properties:
-

The width of the tile in pixels.

The height of the tile in pixels.

heightcollideDown -number +boolean @@ -1346,7 +1346,7 @@
Properties:
-

The height of the tile in pixels.

Indicating collide with any object on the bottom.

collideDowncollideLeft @@ -1448,7 +1451,7 @@
Properties:
-

Indicating collide with any object on the bottom.

Indicating collide with any object on the left.

collideLeftcollideRight @@ -1553,7 +1556,7 @@
Properties:
-

Indicating collide with any object on the left.

Indicating collide with any object on the right.

collideRightcollides @@ -1658,7 +1661,7 @@
Properties:
-

Indicating collide with any object on the right.

True if this tile can collide on any of its faces.

The number of times the event will repeat.

The number of times the event will repeat once is has finished playback. A repeatCount of 1 means it will repeat itself once, playing the event twice in total.