From 74e0cfb13a45b57393ba8fea9510d77846334c90 Mon Sep 17 00:00:00 2001 From: photonstorm Date: Sat, 7 Dec 2013 02:05:07 +0000 Subject: [PATCH] Added Tutorial 2. --- examples/games/invaders.js | 3 +- examples/wip/tilemap.js | 18 +- .../assets/baddie.png | Bin 0 -> 15519 bytes .../assets/diamond.png | Bin 0 -> 508 bytes .../02 Making your first game/assets/dude.png | Bin 0 -> 3226 bytes .../assets/firstaid.png | Bin 0 -> 554 bytes .../assets/platform.png | Bin 0 -> 14973 bytes .../02 Making your first game/assets/sky.png | Bin 0 -> 4757 bytes .../02 Making your first game/assets/star.png | Bin 0 -> 443 bytes .../js/phaser.min.js | 12 + .../02 Making your first game/part1.html | 31 ++ .../02 Making your first game/part2.html | 37 +++ .../02 Making your first game/part3.html | 40 +++ .../02 Making your first game/part4.html | 62 ++++ .../02 Making your first game/part5.html | 74 +++++ .../02 Making your first game/part6.html | 79 +++++ .../02 Making your first game/part7.html | 113 +++++++ .../02 Making your first game/part8.html | 143 +++++++++ .../02 Making your first game/part9.html | 152 +++++++++ .../phaser_tutorial_02.zip | Bin 0 -> 103613 bytes .../screen shots/part3.png | Bin 0 -> 4520 bytes .../screen shots/part4.png | Bin 0 -> 5116 bytes .../screen shots/part5.png | Bin 0 -> 5983 bytes .../screen shots/part6.png | Bin 0 -> 5975 bytes .../screen shots/part7.png | Bin 0 -> 7066 bytes .../screen shots/part8.png | Bin 0 -> 13305 bytes .../screen shots/part9.png | Bin 0 -> 12780 bytes .../screen shots/tutorial_header.png | Bin 0 -> 61622 bytes .../02 Making your first game/tutorial.html | 301 ++++++++++++++++++ 29 files changed, 1060 insertions(+), 5 deletions(-) create mode 100644 tutorials/02 Making your first game/assets/baddie.png create mode 100644 tutorials/02 Making your first game/assets/diamond.png create mode 100644 tutorials/02 Making your first game/assets/dude.png create mode 100644 tutorials/02 Making your first game/assets/firstaid.png create mode 100644 tutorials/02 Making your first game/assets/platform.png create mode 100644 tutorials/02 Making your first game/assets/sky.png create mode 100644 tutorials/02 Making your first game/assets/star.png create mode 100644 tutorials/02 Making your first game/js/phaser.min.js create mode 100644 tutorials/02 Making your first game/part1.html create mode 100644 tutorials/02 Making your first game/part2.html create mode 100644 tutorials/02 Making your first game/part3.html create mode 100644 tutorials/02 Making your first game/part4.html create mode 100644 tutorials/02 Making your first game/part5.html create mode 100644 tutorials/02 Making your first game/part6.html create mode 100644 tutorials/02 Making your first game/part7.html create mode 100644 tutorials/02 Making your first game/part8.html create mode 100644 tutorials/02 Making your first game/part9.html create mode 100644 tutorials/02 Making your first game/phaser_tutorial_02.zip create mode 100644 tutorials/02 Making your first game/screen shots/part3.png create mode 100644 tutorials/02 Making your first game/screen shots/part4.png create mode 100644 tutorials/02 Making your first game/screen shots/part5.png create mode 100644 tutorials/02 Making your first game/screen shots/part6.png create mode 100644 tutorials/02 Making your first game/screen shots/part7.png create mode 100644 tutorials/02 Making your first game/screen shots/part8.png create mode 100644 tutorials/02 Making your first game/screen shots/part9.png create mode 100644 tutorials/02 Making your first game/screen shots/tutorial_header.png create mode 100644 tutorials/02 Making your first game/tutorial.html diff --git a/examples/games/invaders.js b/examples/games/invaders.js index f9e0d216..47696426 100644 --- a/examples/games/invaders.js +++ b/examples/games/invaders.js @@ -28,6 +28,7 @@ var lives; var enemyBullet; var firingTimer = 0; var stateText; +var livingEnemies=[]; function create() { @@ -226,7 +227,7 @@ function enemyFires () { // Grab the first bullet we can from the pool enemyBullet = enemyBullets.getFirstExists(false); - var livingEnemies=[]; + livingEnemies.length=0; aliens.forEachAlive(function(alien){ diff --git a/examples/wip/tilemap.js b/examples/wip/tilemap.js index 4e1084e7..93633159 100644 --- a/examples/wip/tilemap.js +++ b/examples/wip/tilemap.js @@ -5,10 +5,10 @@ function preload() { game.load.tilemap('map', 'assets/maps/newtest.json', null, Phaser.Tilemap.TILED_JSON); game.load.tileset('tiles', 'assets/maps/ground_1x1.png', 32, 32); - game.load.image('phaser', 'assets/sprites/phaser-ship.png'); + // game.load.image('phaser', 'assets/sprites/phaser-ship.png'); // game.load.image('phaser', 'assets/sprites/mushroom2.png'); // game.load.image('phaser', 'assets/sprites/wabbit.png'); - // game.load.image('phaser', 'assets/sprites/arrow.png'); + game.load.image('phaser', 'assets/sprites/arrow.png'); // game.load.image('phaser', 'assets/sprites/darkwing_crazy.png'); } @@ -30,11 +30,11 @@ function create() { // Phaser.TilemapLayer = function (game, x, y, renderWidth, renderHeight, tileset, tilemap, layer) { // layer = game.add.tilemapLayer(0, 0, 800, 600, null, map, 0); - layer = game.add.tilemapLayer(0, 0, 400, 600, null, map, 0); + layer = game.add.tilemapLayer(0, 0, 800, 600, null, map, 0); // layer2 = game.add.tilemapLayer(0, 0, 400, 600, null, map, 0); // layer.cameraOffset.x = 400; - layer.alpha = 0.5; + // layer.alpha = 0.5; // tileset = game.add.tileset('tilesNes'); // layer = game.add.tilemapLayer(0, 0, map.layers[0].width*tilesetNes.tileWidth, 600, tileset, map, 0); @@ -45,6 +45,16 @@ function create() { sprite = game.add.sprite(260, 100, 'phaser'); sprite.anchor.setTo(0.5, 0.5); + // This adjusts the collision body size. + // 100x50 is the new width/height. + // 50, 25 is the X and Y offset of the newly sized box. + // In this case the box is 50px in and 25px down. + sprite.body.setSize(16, 16, 8, 8); + + + + + // We'll set a lower max angular velocity here to keep it from going totally nuts sprite.body.maxAngular = 500; diff --git a/tutorials/02 Making your first game/assets/baddie.png b/tutorials/02 Making your first game/assets/baddie.png new file mode 100644 index 0000000000000000000000000000000000000000..84e53e902147b5cedfa200f8bfcb2fdd1fcf221d GIT binary patch literal 15519 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 literal 0 HcmV?d00001 diff --git a/tutorials/02 Making your first game/assets/platform.png b/tutorials/02 Making your first game/assets/platform.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4a3f86d7311592c4fdd257daaf21db4176dd21 GIT binary patch literal 14973 zcmeI3&2QsG7{;d{q@`$C0aB^BU}c3^Bocq*qqXH^X_J;#BBkmEZMzrh*pt?3VjJ6S z(q32=fy52L1tIts5Qr1n0}>J!&RpPzIG{yHoRHu`nX#StjgxeWw8x3m%Yq`wMNuk>axpI}nxtxSSx8>F+B}JL-|A>PjrC+W z@~xUX3`0*7#eTnE=obsFe;~@Ls)~{#DoUOx^1-PS8iTwOT#u6s^E7Z^`nDI^t|QRA zM%z6OtGOHLJIYGjXP!tD-C&~p$oMCDeBn?ew-oscCZh%S+6?F2jF)Kr!^%HtjT-3YX0inxn=#1aq+^3=6>hi>Qw zhwco3qwbj)L%TDB1?`z>!vlMUjrPR0sHWnr)=432bsrm{>$hCDTZ_wedpLWcUKeiM zwjImu2QTSjR-M*Nng}AzXmu00S%WKN2s;;d|t4pP_ zsw|b1)nQs-olJ{;`vhC-zT1n=vuF4LrpKh38=jNV1(0ldbkH<=a;eFD>a*uFVNK^l zlIwA|HFKp6R%T#LGmkK&OU=|ULI1jMlPlcl0#cZ}@oSfE)(Kg%c+ncg)Ug9vaR8wrb*#*RUaL(M7spU3+}L z;@0tP9G2eXw(FLubzHw^gf+Wo9AMFN4ssGFqk?xadEl z7{)E~0ETOoa=BR6#cXrdv271`UpbR-{gkgn(r3({c592XN26mVRS1~cZkn24Z&{*dafr?2}(j{@VWd7xIfs!Q9wsB6Riw zLU-Rq=$~`)`2e9~38CNj5z;)%|<_0epuk@Bjb+ literal 0 HcmV?d00001 diff --git a/tutorials/02 Making your first game/assets/sky.png b/tutorials/02 Making your first game/assets/sky.png new file mode 100644 index 0000000000000000000000000000000000000000..5972639f229c7362edac856b42b86b93811ef3f2 GIT binary patch literal 4757 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 literal 0 HcmV?d00001 diff --git a/tutorials/02 Making your first game/js/phaser.min.js b/tutorials/02 Making your first game/js/phaser.min.js new file mode 100644 index 00000000..4f17eda8 --- /dev/null +++ b/tutorials/02 Making your first game/js/phaser.min.js @@ -0,0 +1,12 @@ +/*! Phaser v1.1.3 | (c) 2013 Photon Storm Ltd. */ +!function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b():a.Phaser=b()}(this,function(){function a(a){return[(255&a>>16)/255,(255&a>>8)/255,(255&a)/255]}function b(){return c.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,c.Matrix}function a(a){return[(255&a>>16)/255,(255&a>>8)/255,(255&a)/255]}var c=c||{},d=d||{VERSION:"1.1.3",DEV_VERSION:"1.1.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,SPRITE:0,BUTTON:1,BULLET: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,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4};c.InteractionManager=function(){},d.Utils={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=Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=Array(g+1).join(c)+a+Array(f+1).join(c);break;default:a+=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&&!hasOwn.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,c,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(b in a)c=h[b],e=a[b],h!==e&&(k&&e&&(d.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=c&&Array.isArray(c)?c:[]):g=c&&d.Utils.isPlainObject(c)?c:{},h[b]=d.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h}},function(){var a=!1;a&&(window.console=void 0),void 0===window.console&&(window.console={debug:function(){return!0},info:function(){return!1},warn:function(){return!1},log:function(){return!1}}),debug=function(a){window.console.debug(a)},info=function(a){window.console.info(a)},warn=function(a){window.console.warn(a)},log=function(a){window.console.log(a)}}(),"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(),c.mat3={},c.mat3.create=function(){var a=new c.Matrix(9);return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},c.mat3.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},c.mat4={},c.mat4.create=function(){var a=new c.Matrix(16);return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},c.mat3.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],m=b[0],n=b[1],o=b[2],p=b[3],q=b[4],r=b[5],s=b[6],t=b[7],u=b[8];return c[0]=m*d+n*g+o*j,c[1]=m*e+n*h+o*k,c[2]=m*f+n*i+o*l,c[3]=p*d+q*g+r*j,c[4]=p*e+q*h+r*k,c[5]=p*f+q*i+r*l,c[6]=s*d+t*g+u*j,c[7]=s*e+t*h+u*k,c[8]=s*f+t*i+u*l,c},c.mat3.clone=function(a){var b=new c.Matrix(9);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b},c.mat3.transpose=function(a,b){if(!b||a===b){var c=a[1],d=a[2],e=a[5];return a[1]=a[3],a[2]=a[6],a[3]=c,a[5]=a[7],a[6]=d,a[7]=e,a}return b[0]=a[0],b[1]=a[3],b[2]=a[6],b[3]=a[1],b[4]=a[4],b[5]=a[7],b[6]=a[2],b[7]=a[5],b[8]=a[8],b},c.mat3.toMat4=function(a,b){return b||(b=c.mat4.create()),b[15]=1,b[14]=0,b[13]=0,b[12]=0,b[11]=0,b[10]=a[8],b[9]=a[7],b[8]=a[6],b[7]=0,b[6]=a[5],b[5]=a[4],b[4]=a[3],b[3]=0,b[2]=a[2],b[1]=a[1],b[0]=a[0],b},c.mat4.create=function(){var a=new c.Matrix(16);return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},c.mat4.transpose=function(a,b){if(!b||a===b){var c=a[1],d=a[2],e=a[3],f=a[6],g=a[7],h=a[11];return a[1]=a[4],a[2]=a[8],a[3]=a[12],a[4]=c,a[6]=a[9],a[7]=a[13],a[8]=d,a[9]=f,a[11]=a[14],a[12]=e,a[13]=g,a[14]=h,a}return b[0]=a[0],b[1]=a[4],b[2]=a[8],b[3]=a[12],b[4]=a[1],b[5]=a[5],b[6]=a[9],b[7]=a[13],b[8]=a[2],b[9]=a[6],b[10]=a[10],b[11]=a[14],b[12]=a[3],b[13]=a[7],b[14]=a[11],b[15]=a[15],b},c.mat4.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],m=a[9],n=a[10],o=a[11],p=a[12],q=a[13],r=a[14],s=a[15],t=b[0],u=b[1],v=b[2],w=b[3];return c[0]=t*d+u*h+v*l+w*p,c[1]=t*e+u*i+v*m+w*q,c[2]=t*f+u*j+v*n+w*r,c[3]=t*g+u*k+v*o+w*s,t=b[4],u=b[5],v=b[6],w=b[7],c[4]=t*d+u*h+v*l+w*p,c[5]=t*e+u*i+v*m+w*q,c[6]=t*f+u*j+v*n+w*r,c[7]=t*g+u*k+v*o+w*s,t=b[8],u=b[9],v=b[10],w=b[11],c[8]=t*d+u*h+v*l+w*p,c[9]=t*e+u*i+v*m+w*q,c[10]=t*f+u*j+v*n+w*r,c[11]=t*g+u*k+v*o+w*s,t=b[12],u=b[13],v=b[14],w=b[15],c[12]=t*d+u*h+v*l+w*p,c[13]=t*e+u*i+v*m+w*q,c[14]=t*f+u*j+v*n+w*r,c[15]=t*g+u*k+v*o+w*s,c},c.Point=function(a,b){this.x=a||0,this.y=b||0},c.Point.prototype.clone=function(){return new c.Point(this.x,this.y)},c.Point.prototype.constructor=c.Point,c.Rectangle=function(a,b,c,d){this.x=a||0,this.y=b||0,this.width=c||0,this.height=d||0},c.Rectangle.prototype.clone=function(){return new c.Rectangle(this.x,this.y,this.width,this.height)},c.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},c.Rectangle.prototype.constructor=c.Rectangle,c.Polygon=function(a){if(a instanceof Array||(a=Array.prototype.slice.call(arguments)),"number"==typeof a[0]){for(var b=[],d=0,e=a.length;e>d;d+=2)b.push(new c.Point(a[d],a[d+1]));a=b}this.points=a},c.Polygon.prototype.clone=function(){for(var a=[],b=0;bb!=i>b&&(h-f)*(b-g)/(i-g)+f>a;j&&(c=!c)}return c},c.Polygon.prototype.constructor=c.Polygon,c.DisplayObject=function(){this.last=this,this.first=this,this.position=new c.Point,this.scale=new c.Point(1,1),this.pivot=new c.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.worldTransform=c.mat3.create(),this.localTransform=c.mat3.create(),this.color=[],this.dynamic=!0,this._sr=0,this._cr=1,this.filterArea=new c.Rectangle(0,0,1,1)},c.DisplayObject.prototype.constructor=c.DisplayObject,c.DisplayObject.prototype.setInteractive=function(a){this.interactive=a},Object.defineProperty(c.DisplayObject.prototype,"interactive",{get:function(){return this._interactive},set:function(a){this._interactive=a,this.stage&&(this.stage.dirty=!0)}}),Object.defineProperty(c.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){a?this._mask?(a.start=this._mask.start,a.end=this._mask.end):(this.addFilter(a),a.renderable=!1):(this.removeFilter(this._mask),this._mask.renderable=!0),this._mask=a}}),Object.defineProperty(c.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){this._filters&&this.removeFilter(this._filters),this.addFilter(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);if(void 0!=a.parent&&a.parent.removeChild(a),a.parent=this,this.stage){var c=a;do c.interactive&&(this.stage.dirty=!0),c.stage=this.stage,c=c._iNext;while(c)}var d,e,f=a.first,g=a.last;if(b==this.children.length){e=this.last;for(var h=this,i=this.last;h;)h.last==i&&(h.last=a.last),h=h.parent}else e=0===b?this:this.children[b-1].last;d=e._iNext,d&&(d._iPrev=g,g._iNext=d),f._iPrev=e,e._iNext=f,this.children.splice(b,0,a),this.__renderGroup&&(a.__renderGroup&&a.__renderGroup.removeDisplayObjectAndChildren(a),this.__renderGroup.addDisplayObjectAndChildren(a))},c.DisplayObjectContainer.prototype.swapChildren=function(){},c.DisplayObjectContainer.prototype.getChildAt=function(a){if(a>=0&&aa;a++)this.children[a].updateTransform()}},c.blendModes={},c.blendModes.NORMAL=0,c.blendModes.SCREEN=1,c.Sprite=function(a){c.DisplayObjectContainer.call(this),this.anchor=new c.Point,this.texture=a,this.blendMode=c.blendModes.NORMAL,this._width=0,this._height=0,a.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},c.Sprite.prototype=Object.create(c.DisplayObjectContainer.prototype),c.Sprite.prototype.constructor=c.Sprite,Object.defineProperty(c.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(c.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}}),c.Sprite.prototype.setTexture=function(a){this.texture.baseTexture!=a.baseTexture?(this.textureChange=!0,this.texture=a,this.__renderGroup&&this.__renderGroup.updateTexture(this)):this.texture=a,this.updateFrame=!0},c.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},c.Sprite.fromFrame=function(a){var b=c.TextureCache[a];if(!b)throw new Error("The frameId '"+a+"' does not exist in the texture cache"+this);return new c.Sprite(b)},c.Sprite.fromImage=function(a){var b=c.Texture.fromImage(a);return new c.Sprite(b)},c.Stage=function(a){c.DisplayObjectContainer.call(this),this.worldTransform=c.mat3.create(),this.interactive=!0,this.interactionManager=new c.InteractionManager(this),this.dirty=!0,this.__childrenAdded=[],this.__childrenRemoved=[],this.stage=this,this.stage.hitArea=new c.Rectangle(0,0,1e5,1e5),this.setBackgroundColor(a),this.worldVisible=!0},c.Stage.prototype=Object.create(c.DisplayObjectContainer.prototype),c.Stage.prototype.constructor=c.Stage,c.Stage.prototype.setInteractionDelegate=function(a){this.interactionManager.setTargetDomElement(a)},c.Stage.prototype.updateTransform=function(){this.worldAlpha=1,this.vcount=c.visibleCount;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()},c.Stage.prototype.setBackgroundColor=function(b){this.backgroundColor=b||0,this.backgroundColorSplit=a(this.backgroundColor);var c=this.backgroundColor.toString(16);c="000000".substr(0,6-c.length)+c,this.backgroundColorString="#"+c},c.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},c.CustomRenderable=function(){c.DisplayObject.call(this),this.renderable=!0},c.CustomRenderable.prototype=Object.create(c.DisplayObject.prototype),c.CustomRenderable.prototype.constructor=c.CustomRenderable,c.CustomRenderable.prototype.renderCanvas=function(){},c.CustomRenderable.prototype.initWebGL=function(){},c.CustomRenderable.prototype.renderWebGL=function(){},c.Strip=function(a,b,d){c.DisplayObjectContainer.call(this),this.texture=a,this.blendMode=c.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(e){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=b,this.height=d,a.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},c.Strip.prototype=Object.create(c.DisplayObjectContainer.prototype),c.Strip.prototype.constructor=c.Strip,c.Strip.prototype.setTexture=function(a){this.texture=a,this.width=a.frame.width,this.height=a.frame.height,this.updateFrame=!0},c.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},c.Rope=function(a,b){c.Strip.call(this,a),this.points=b;try{this.verticies=new Float32Array(4*b.length),this.uvs=new Float32Array(4*b.length),this.colors=new Float32Array(2*b.length),this.indices=new Uint16Array(2*b.length)}catch(d){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},c.Rope.prototype=Object.create(c.Strip.prototype),c.Rope.prototype.constructor=c.Rope,c.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=this.indices,d=this.colors,e=a[0],f=a[0];this.count-=.2,b[0]=0,b[1]=1,b[2]=0,b[3]=1,d[0]=1,d[1]=1,c[0]=0,c[1]=1;for(var g=a.length,h=1;g>h;h++){var f=a[h],i=4*h,j=h/(g-1);h%2?(b[i]=j,b[i+1]=0,b[i+2]=j,b[i+3]=1):(b[i]=j,b[i+1]=0,b[i+2]=j,b[i+3]=1),i=2*h,d[i]=1,d[i+1]=1,i=2*h,c[i]=i,c[i+1]=i+1,e=f}}},c.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var b,d=this.verticies,e=a[0],f={x:0,y:0},g=a[0];this.count-=.2,d[0]=g.x+f.x,d[1]=g.y+f.y,d[2]=g.x-f.x,d[3]=g.y-f.y;for(var h=a.length,i=1;h>i;i++){var g=a[i],j=4*i;b=i1&&(k=1);var l=Math.sqrt(f.x*f.x+f.y*f.y),m=this.texture.height/2;f.x/=l,f.y/=l,f.x*=m,f.y*=m,d[j]=g.x+f.x,d[j+1]=g.y+f.y,d[j+2]=g.x-f.x,d[j+3]=g.y-f.y,e=g}c.DisplayObjectContainer.prototype.updateTransform.call(this)}},c.Rope.prototype.setTexture=function(a){this.texture=a,this.updateFrame=!0},c.TilingSprite=function(a,b,d){c.DisplayObjectContainer.call(this),this.texture=a,this.width=b,this.height=d,this.tileScale=new c.Point(1,1),this.tilePosition=new c.Point(0,0),this.renderable=!0,this.blendMode=c.blendModes.NORMAL},c.TilingSprite.prototype=Object.create(c.DisplayObjectContainer.prototype),c.TilingSprite.prototype.constructor=c.TilingSprite,c.TilingSprite.prototype.setTexture=function(a){this.texture=a,this.updateFrame=!0},c.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},c.AbstractFilter=function(a,b){this.passes=[this],this.dirty=!0,this.padding=0,this.uniforms=b||{},this.fragmentSrc=a||[]},c.FilterBlock=function(){this.visible=!0,this.renderable=!0},c.Graphics=function(){c.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor="black",this.graphicsData=[],this.currentPath={points:[]}},c.Graphics.prototype=Object.create(c.DisplayObjectContainer.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Graphics.prototype.lineStyle=function(a,b,d){0===this.currentPath.points.length&&this.graphicsData.pop(),this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0==d?1:d,this.currentPath={lineWidth:this.lineWidth,lineColor:this.lineColor,lineAlpha:this.lineAlpha,fillColor:this.fillColor,fillAlpha:this.fillAlpha,fill:this.filling,points:[],type:c.Graphics.POLY},this.graphicsData.push(this.currentPath)},c.Graphics.prototype.moveTo=function(a,b){0===this.currentPath.points.length&&this.graphicsData.pop(),this.currentPath=this.currentPath={lineWidth:this.lineWidth,lineColor:this.lineColor,lineAlpha:this.lineAlpha,fillColor:this.fillColor,fillAlpha:this.fillAlpha,fill:this.filling,points:[],type:c.Graphics.POLY},this.currentPath.points.push(a,b),this.graphicsData.push(this.currentPath)},c.Graphics.prototype.lineTo=function(a,b){this.currentPath.points.push(a,b),this.dirty=!0},c.Graphics.prototype.beginFill=function(a,b){this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0==b?1:b},c.Graphics.prototype.endFill=function(){this.filling=!1,this.fillColor=null,this.fillAlpha=1},c.Graphics.prototype.drawRect=function(a,b,d,e){0===this.currentPath.points.length&&this.graphicsData.pop(),this.currentPath={lineWidth:this.lineWidth,lineColor:this.lineColor,lineAlpha:this.lineAlpha,fillColor:this.fillColor,fillAlpha:this.fillAlpha,fill:this.filling,points:[a,b,d,e],type:c.Graphics.RECT},this.graphicsData.push(this.currentPath),this.dirty=!0},c.Graphics.prototype.drawCircle=function(a,b,d){0===this.currentPath.points.length&&this.graphicsData.pop(),this.currentPath={lineWidth:this.lineWidth,lineColor:this.lineColor,lineAlpha:this.lineAlpha,fillColor:this.fillColor,fillAlpha:this.fillAlpha,fill:this.filling,points:[a,b,d,d],type:c.Graphics.CIRC},this.graphicsData.push(this.currentPath),this.dirty=!0},c.Graphics.prototype.drawElipse=function(a,b,d,e){0===this.currentPath.points.length&&this.graphicsData.pop(),this.currentPath={lineWidth:this.lineWidth,lineColor:this.lineColor,lineAlpha:this.lineAlpha,fillColor:this.fillColor,fillAlpha:this.fillAlpha,fill:this.filling,points:[a,b,d,e],type:c.Graphics.ELIP},this.graphicsData.push(this.currentPath),this.dirty=!0},c.Graphics.prototype.clear=function(){this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this.bounds=null},c.Graphics.prototype.updateFilterBounds=function(){if(!this.bounds){for(var a,b,d,e=1/0,f=-1/0,g=1/0,h=-1/0,i=0;ib?b:e,f=b+m>f?b+m:f,g=g>d?b:g,h=d+n>h?d+n:h}else if(k===c.Graphics.CIRC||k===c.Graphics.ELIP){b=a.x,d=a.y;var o=a.radius+l/2;e=e>b-o?b-o:e,f=b+o>f?b+o:f,g=g>d-o?d-o:g,h=d+o>h?d+o:h}else for(var p=0;pb-l?b-l:e,f=b+l>f?b+l:f,g=g>d-l?d-l:g,h=d+l>h?d+l:h}this.bounds=new c.Rectangle(e,g,f-e,h-g)}},c.Graphics.POLY=0,c.Graphics.RECT=1,c.Graphics.CIRC=2,c.Graphics.ELIP=3,c.CanvasGraphics=function(){},c.CanvasGraphics.renderGraphics=function(a,b){for(var d=a.worldAlpha,e=0;e1&&(d=1,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==c.Graphics.POLY){b.beginPath(),b.moveTo(g[0],g[1]);for(var h=1;h0&&(c.Texture.frameUpdates=[])},c.CanvasRenderer.prototype.resize=function(a,b){this.width=a,this.height=b,this.view.width=a,this.view.height=b},c.CanvasRenderer.prototype.renderDisplayObject=function(a){var b,d=this.context;d.globalCompositeOperation="source-over";var e=a.last._iNext;a=a.first;do if(b=a.worldTransform,a.visible)if(a.renderable){if(a instanceof c.Sprite){var f=a.texture.frame;f&&f.width&&f.height&&(d.globalAlpha=a.worldAlpha,d.setTransform(b[0],b[3],b[1],b[4],b[2],b[5]),d.drawImage(a.texture.baseTexture.source,f.x,f.y,f.width,f.height,a.anchor.x*-f.width,a.anchor.y*-f.height,f.width,f.height))}else if(a instanceof c.Strip)d.setTransform(b[0],b[3],b[1],b[4],b[2],b[5]),this.renderStrip(a);else if(a instanceof c.TilingSprite)d.setTransform(b[0],b[3],b[1],b[4],b[2],b[5]),this.renderTilingSprite(a);else if(a instanceof c.CustomRenderable)d.setTransform(b[0],b[3],b[1],b[4],b[2],b[5]),a.renderCanvas(this);else if(a instanceof c.Graphics)d.setTransform(b[0],b[3],b[1],b[4],b[2],b[5]),c.CanvasGraphics.renderGraphics(a,d);else if(a instanceof c.FilterBlock&&a.data instanceof c.Graphics){var g=a.data;if(a.open){d.save();var h=g.alpha,i=g.worldTransform;d.setTransform(i[0],i[3],i[1],i[4],i[2],i[5]),g.worldAlpha=.5,d.worldAlpha=0,c.CanvasGraphics.renderGraphicsMask(g,d),d.clip(),g.worldAlpha=h}else d.restore()}a=a._iNext}else a=a._iNext;else a=a.last._iNext;while(a!=e)},c.CanvasRenderer.prototype.renderStripFlat=function(a){var b=this.context,c=a.verticies;a.uvs;var 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()},c.CanvasRenderer.prototype.renderTilingSprite=function(a){var b=this.context;b.globalAlpha=a.worldAlpha,a.__tilePattern||(a.__tilePattern=b.createPattern(a.texture.baseTexture.source,"repeat")),b.beginPath();var c=a.tilePosition,d=a.tileScale;b.scale(d.x,d.y),b.translate(c.x,c.y),b.fillStyle=a.__tilePattern,b.fillRect(-c.x,-c.y,a.width/d.x,a.height/d.y),b.scale(1/d.x,1/d.y),b.translate(-c.x,-c.y),b.closePath()},c.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()}},c.PixiShader=function(){this.program,this.fragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor;","}"],this.textureCount=0},c.PixiShader.prototype.init=function(){var a=c.compileProgram(this.vertexSrc||c.PixiShader.defaultVertexSrc,this.fragmentSrc),b=c.gl;b.useProgram(a),this.uSampler=b.getUniformLocation(a,"uSampler"),this.projectionVector=b.getUniformLocation(a,"projectionVector"),this.offsetVector=b.getUniformLocation(a,"offsetVector"),this.dimensions=b.getUniformLocation(a,"dimensions"),this.aVertexPosition=b.getAttribLocation(a,"aVertexPosition"),this.colorAttribute=b.getAttribLocation(a,"aColor"),this.aTextureCoord=b.getAttribLocation(a,"aTextureCoord");for(var d in this.uniforms)this.uniforms[d].uniformLocation=b.getUniformLocation(a,d);this.initUniforms(),this.program=a},c.PixiShader.prototype.initUniforms=function(){this.textureCount=1;var a;for(var b in this.uniforms){var a=this.uniforms[b],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=c.gl.uniformMatrix2fv:"mat3"==d?a.glFunc=c.gl.uniformMatrix3fv:"mat4"==d&&(a.glFunc=c.gl.uniformMatrix4fv)):(a.glFunc=c.gl["uniform"+d],a.glValueLength="2f"==d||"2i"==d?2:"3f"==d||"3i"==d?3:"4f"==d||"4i"==d?4:1)}},c.PixiShader.prototype.initSampler2D=function(a){if(a.value&&a.value.baseTexture&&a.value.baseTexture.hasLoaded){if(c.gl.activeTexture(c.gl["TEXTURE"+this.textureCount]),c.gl.bindTexture(c.gl.TEXTURE_2D,a.value.baseTexture._glTexture),a.textureData){var b=a.textureData,d=b.magFilter?b.magFilter:c.gl.LINEAR,e=b.minFilter?b.minFilter:c.gl.LINEAR,f=b.wrapS?b.wrapS:c.gl.CLAMP_TO_EDGE,g=b.wrapT?b.wrapT:c.gl.CLAMP_TO_EDGE,h=b.luminance?c.gl.LUMINANCE:c.gl.RGBA;if(b.repeat&&(f=c.gl.REPEAT,g=c.gl.REPEAT),c.gl.pixelStorei(c.gl.UNPACK_FLIP_Y_WEBGL,!1),b.width){var i=b.width?b.width:512,j=b.height?b.height:2,k=b.border?b.border:0;c.gl.texImage2D(c.gl.TEXTURE_2D,0,h,i,j,k,h,c.gl.UNSIGNED_BYTE,null)}else c.gl.texImage2D(c.gl.TEXTURE_2D,0,h,c.gl.RGBA,c.gl.UNSIGNED_BYTE,a.value.baseTexture.source);c.gl.texParameteri(c.gl.TEXTURE_2D,c.gl.TEXTURE_MAG_FILTER,d),c.gl.texParameteri(c.gl.TEXTURE_2D,c.gl.TEXTURE_MIN_FILTER,e),c.gl.texParameteri(c.gl.TEXTURE_2D,c.gl.TEXTURE_WRAP_S,f),c.gl.texParameteri(c.gl.TEXTURE_2D,c.gl.TEXTURE_WRAP_T,g)}c.gl.uniform1i(a.uniformLocation,this.textureCount),a._init=!0,this.textureCount++}},c.PixiShader.prototype.syncUniforms=function(){this.textureCount=1;var a;for(var b in this.uniforms)a=this.uniforms[b],1==a.glValueLength?a.glMatrix===!0?a.glFunc.call(c.gl,a.uniformLocation,a.transpose,a.value):a.glFunc.call(c.gl,a.uniformLocation,a.value):2==a.glValueLength?a.glFunc.call(c.gl,a.uniformLocation,a.value.x,a.value.y):3==a.glValueLength?a.glFunc.call(c.gl,a.uniformLocation,a.value.x,a.value.y,a.value.z):4==a.glValueLength?a.glFunc.call(c.gl,a.uniformLocation,a.value.x,a.value.y,a.value.z,a.value.w):"sampler2D"==a.type&&(a._init?(c.gl.activeTexture(c.gl["TEXTURE"+this.textureCount]),c.gl.bindTexture(c.gl.TEXTURE_2D,a.value.baseTexture._glTexture),c.gl.uniform1i(a.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(a))},c.PixiShader.defaultVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying float 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;","vColor = aColor;","}"],c.PrimitiveShader=function(){this.program,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;","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 * alpha;","}"] +},c.PrimitiveShader.prototype.init=function(){var a=c.compileProgram(this.vertexSrc,this.fragmentSrc),b=c.gl;b.useProgram(a),this.projectionVector=b.getUniformLocation(a,"projectionVector"),this.offsetVector=b.getUniformLocation(a,"offsetVector"),this.aVertexPosition=b.getAttribLocation(a,"aVertexPosition"),this.colorAttribute=b.getAttribLocation(a,"aColor"),this.translationMatrix=b.getUniformLocation(a,"translationMatrix"),this.alpha=b.getUniformLocation(a,"alpha"),this.program=a},c.StripShader=function(){this.program,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;","varying 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;","}"]},c.StripShader.prototype.init=function(){var a=c.compileProgram(this.vertexSrc,this.fragmentSrc),b=c.gl;b.useProgram(a),this.uSampler=b.getUniformLocation(a,"uSampler"),this.projectionVector=b.getUniformLocation(a,"projectionVector"),this.offsetVector=b.getUniformLocation(a,"offsetVector"),this.colorAttribute=b.getAttribLocation(a,"aColor"),this.aVertexPosition=b.getAttribLocation(a,"aVertexPosition"),this.aTextureCoord=b.getAttribLocation(a,"aTextureCoord"),this.translationMatrix=b.getUniformLocation(a,"translationMatrix"),this.alpha=b.getUniformLocation(a,"alpha"),this.program=a},c._batchs=[],c._getBatch=function(a){return 0===c._batchs.length?new c.WebGLBatch(a):c._batchs.pop()},c._returnBatch=function(a){a.clean(),c._batchs.push(a)},c._restoreBatchs=function(a){for(var b=0;bc;c++){var d=6*c,e=4*c;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}a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW)},c.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizethis.width&&(f.width=this.width),f.y<0&&(f.y=0),f.height>this.height&&(f.height=this.height),b.bindFramebuffer(b.FRAMEBUFFER,e.frameBuffer),b.viewport(0,0,f.width,f.height),c.projection.x=f.width/2,c.projection.y=-f.height/2,c.offset.x=-f.x,c.offset.y=-f.y,b.uniform2f(c.defaultShader.projectionVector,f.width/2,-f.height/2),b.uniform2f(c.defaultShader.offsetVector,-f.x,-f.y),b.colorMask(!0,!0,!0,!0),b.clearColor(0,0,0,0),b.clear(b.COLOR_BUFFER_BIT),a._glFilterTexture=e},c.WebGLFilterManager.prototype.popFilter=function(){var a=c.gl,b=this.filterStack.pop(),d=b.target.filterArea,e=b._glFilterTexture;if(b.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 f=e,g=this.texturePool.pop();g||(g=new c.FilterTexture(this.width,this.height)),a.bindFramebuffer(a.FRAMEBUFFER,g.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var h=0;hs?s:E,E=E>t?t:E,E=E>u?u:E,E=E>v?v:E,F=F>w?w:F,F=F>x?x:F,F=F>y?y:F,F=F>z?z:F,C=s>C?s:C,C=t>C?t:C,C=u>C?u:C,C=v>C?v:C,D=w>D?w:D,D=x>D?x:D,D=y>D?y:D,D=z>D?z:D),l=!1,A=A._iNext}while(A!=B);a.filterArea.x=E,a.filterArea.y=F,a.filterArea.width=C-E,a.filterArea.height=D-F},c.FilterTexture=function(a,b){var d=c.gl;this.frameBuffer=d.createFramebuffer(),this.texture=d.createTexture(),d.bindTexture(d.TEXTURE_2D,this.texture),d.texParameteri(d.TEXTURE_2D,d.TEXTURE_MAG_FILTER,d.LINEAR),d.texParameteri(d.TEXTURE_2D,d.TEXTURE_MIN_FILTER,d.LINEAR),d.texParameteri(d.TEXTURE_2D,d.TEXTURE_WRAP_S,d.CLAMP_TO_EDGE),d.texParameteri(d.TEXTURE_2D,d.TEXTURE_WRAP_T,d.CLAMP_TO_EDGE),d.bindFramebuffer(d.FRAMEBUFFER,this.framebuffer),d.bindFramebuffer(d.FRAMEBUFFER,this.frameBuffer),d.framebufferTexture2D(d.FRAMEBUFFER,d.COLOR_ATTACHMENT0,d.TEXTURE_2D,this.texture,0),this.resize(a,b)},c.FilterTexture.prototype.resize=function(a,b){this.width=a,this.height=b;var d=c.gl;d.bindTexture(d.TEXTURE_2D,this.texture),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,a,b,0,d.RGBA,d.UNSIGNED_BYTE,null)},c.WebGLGraphics=function(){},c.WebGLGraphics.renderGraphics=function(a,b){var d=c.gl;a._webGL||(a._webGL={points:[],indices:[],lastIndex:0,buffer:d.createBuffer(),indexBuffer:d.createBuffer()}),a.dirty&&(a.dirty=!1,a.clearDirty&&(a.clearDirty=!1,a._webGL.lastIndex=0,a._webGL.points=[],a._webGL.indices=[]),c.WebGLGraphics.updateGraphics(a)),c.activatePrimitiveShader();var e=c.mat3.clone(a.worldTransform);c.mat3.transpose(e),d.blendFunc(d.ONE,d.ONE_MINUS_SRC_ALPHA),d.uniformMatrix3fv(c.primitiveShader.translationMatrix,!1,e),d.uniform2f(c.primitiveShader.projectionVector,b.x,-b.y),d.uniform2f(c.primitiveShader.offsetVector,-c.offset.x,-c.offset.y),d.uniform1f(c.primitiveShader.alpha,a.worldAlpha),d.bindBuffer(d.ARRAY_BUFFER,a._webGL.buffer),d.vertexAttribPointer(c.primitiveShader.aVertexPosition,2,d.FLOAT,!1,24,0),d.vertexAttribPointer(c.primitiveShader.colorAttribute,4,d.FLOAT,!1,24,8),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,a._webGL.indexBuffer),d.drawElements(d.TRIANGLE_STRIP,a._webGL.indices.length,d.UNSIGNED_SHORT,0),c.deactivatePrimitiveShader()},c.WebGLGraphics.updateGraphics=function(a){for(var b=a._webGL.lastIndex;b3&&c.WebGLGraphics.buildPoly(d,a._webGL),d.lineWidth>0&&c.WebGLGraphics.buildLine(d,a._webGL)):d.type==c.Graphics.RECT?c.WebGLGraphics.buildRectangle(d,a._webGL):(d.type==c.Graphics.CIRC||d.type==c.Graphics.ELIP)&&c.WebGLGraphics.buildCircle(d,a._webGL)}a._webGL.lastIndex=a.graphicsData.length;var e=c.gl;a._webGL.glPoints=new Float32Array(a._webGL.points),e.bindBuffer(e.ARRAY_BUFFER,a._webGL.buffer),e.bufferData(e.ARRAY_BUFFER,a._webGL.glPoints,e.STATIC_DRAW),a._webGL.glIndicies=new Uint16Array(a._webGL.indices),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,a._webGL.indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,a._webGL.glIndicies,e.STATIC_DRAW)},c.WebGLGraphics.buildRectangle=function(b,d){var e=b.points,f=e[0],g=e[1],h=e[2],i=e[3];if(b.fill){var j=a(b.fillColor),k=b.fillAlpha,l=j[0]*k,m=j[1]*k,n=j[2]*k,o=d.points,p=d.indices,q=o.length/6;o.push(f,g),o.push(l,m,n,k),o.push(f+h,g),o.push(l,m,n,k),o.push(f,g+i),o.push(l,m,n,k),o.push(f+h,g+i),o.push(l,m,n,k),p.push(q,q,q+1,q+2,q+3,q+3)}b.lineWidth&&(b.points=[f,g,f+h,g,f+h,g+i,f,g+i,f,g],c.WebGLGraphics.buildLine(b,d))},c.WebGLGraphics.buildCircle=function(b,d){var e=b.points,f=e[0],g=e[1],h=e[2],i=e[3],j=40,k=2*Math.PI/j;if(b.fill){var l=a(b.fillColor),m=b.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=d.points,r=d.indices,s=q.length/6;r.push(s);for(var t=0;j+1>t;t++)q.push(f,g,n,o,p,m),q.push(f+Math.sin(k*t)*h,g+Math.cos(k*t)*i,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(b.lineWidth){b.points=[];for(var t=0;j+1>t;t++)b.points.push(f+Math.sin(k*t)*h,g+Math.cos(k*t)*i);c.WebGLGraphics.buildLine(b,d)}},c.WebGLGraphics.buildLine=function(b,d){var e=b.points;if(0!==e.length){if(b.lineWidth%2)for(var f=0;ff;f++)k=e[2*(f-1)],l=e[2*(f-1)+1],m=e[2*f],n=e[2*f+1],o=e[2*(f+1)],p=e[2*(f+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(px=(x*B-A*y)/C,py=(z*y-w*B)/C,D=(px-m)*(px-m)+(py-n)+(py-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(px,py),F.push(N,O,P,M),F.push(m-(px-m),n-(py-n)),F.push(N,O,P,M)));k=e[2*(H-2)],l=e[2*(H-2)+1],m=e[2*(H-1)],n=e[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J);for(var f=0;I>f;f++)G.push(J++);G.push(J-1)}},c.WebGLGraphics.buildPoly=function(b,d){var e=b.points;if(!(e.length<6)){for(var f=d.points,g=d.indices,h=e.length/2,i=a(b.fillColor),j=b.fillAlpha,k=i[0]*j,l=i[1]*j,m=i[2]*j,n=c.PolyK.Triangulate(e),o=f.length/6,p=0;pp;p++)f.push(e[2*p],e[2*p+1],k,l,m,j)}},c._defaultFrame=new c.Rectangle(0,0,1,1),c.gl,c.WebGLRenderer=function(a,b,d,e,f){this.transparent=!!e,this.width=a||800,this.height=b||600,this.view=d||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var g=this;this.view.addEventListener("webglcontextlost",function(a){g.handleContextLost(a)},!1),this.view.addEventListener("webglcontextrestored",function(a){g.handleContextRestored(a)},!1),this.batchs=[];var h={alpha:this.transparent,antialias:!!f,premultipliedAlpha:!1,stencil:!0};try{c.gl=this.gl=this.view.getContext("experimental-webgl",h)}catch(i){try{c.gl=this.gl=this.view.getContext("webgl",h)}catch(i){throw new Error(" This browser does not support webGL. Try using the canvas renderer"+this)}}c.initDefaultShaders();var j=this.gl;j.useProgram(c.defaultShader.program),c.WebGLRenderer.gl=j,this.batch=new c.WebGLBatch(j),j.disable(j.DEPTH_TEST),j.disable(j.CULL_FACE),j.enable(j.BLEND),j.colorMask(!0,!0,!0,this.transparent),c.projection=new c.Point(400,300),c.offset=new c.Point(0,0),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new c.WebGLRenderGroup(this.gl,this.transparent)},c.WebGLRenderer.prototype.constructor=c.WebGLRenderer,c.WebGLRenderer.getBatch=function(){return 0===c._batchs.length?new c.WebGLBatch(c.WebGLRenderer.gl):c._batchs.pop()},c.WebGLRenderer.returnBatch=function(a){a.clean(),c._batchs.push(a)},c.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(this.__stage=a,this.stageRenderGroup.setRenderable(a)),c.WebGLRenderer.updateTextures(),c.visibleCount++,a.updateTransform();var b=this.gl;if(b.colorMask(!0,!0,!0,this.transparent),b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],!this.transparent),b.clear(b.COLOR_BUFFER_BIT),this.stageRenderGroup.backgroundColor=a.backgroundColorSplit,c.projection.x=this.width/2,c.projection.y=-this.height/2,this.stageRenderGroup.render(c.projection),a.interactive&&(a._interactiveEventsAdded||(a._interactiveEventsAdded=!0,a.interactionManager.setTarget(this))),c.Texture.frameUpdates.length>0){for(var d=0;dn;n++)renderable=this.batchs[n],renderable instanceof c.WebGLBatch?this.batchs[n].render():this.renderSpecial(renderable,b);endBatch instanceof c.WebGLBatch?endBatch.render(0,h+1):this.renderSpecial(endBatch,b)},c.WebGLRenderGroup.prototype.renderSpecial=function(a,b){var d=a.vcount===c.visibleCount;a instanceof c.TilingSprite?d&&this.renderTilingSprite(a,b):a instanceof c.Strip?d&&this.renderStrip(a,b):a instanceof c.CustomRenderable?d&&a.renderWebGL(this,b):a instanceof c.Graphics?d&&a.renderable&&c.WebGLGraphics.renderGraphics(a,b):a instanceof c.FilterBlock&&this.handleFilterBlock(a,b)},flip=!1;var e=[],f=0;return c.WebGLRenderGroup.prototype.handleFilterBlock=function(a,b){var d=c.gl;if(a.open)a.data instanceof Array?this.filterManager.pushFilter(a):(f++,e.push(a),d.enable(d.STENCIL_TEST),d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,1,1),d.stencilOp(d.KEEP,d.KEEP,d.INCR),c.WebGLGraphics.renderGraphics(a.data,b),d.colorMask(!0,!0,!0,!0),d.stencilFunc(d.NOTEQUAL,0,e.length),d.stencilOp(d.KEEP,d.KEEP,d.KEEP));else if(a.data instanceof Array)this.filterManager.popFilter();else{var g=e.pop(a);g&&(d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,1,1),d.stencilOp(d.KEEP,d.KEEP,d.DECR),c.WebGLGraphics.renderGraphics(g.data,b),d.colorMask(!0,!0,!0,!0),d.stencilFunc(d.NOTEQUAL,0,e.length),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)),d.disable(d.STENCIL_TEST)}},c.WebGLRenderGroup.prototype.updateTexture=function(a){this.removeObject(a);for(var b=a.first;b!=this.root&&(b=b._iPrev,!b.renderable||!b.__renderGroup););for(var c=a.last;c._iNext&&(c=c._iNext,!c.renderable||!c.__renderGroup););this.insertObject(a,b,c)},c.WebGLRenderGroup.prototype.addFilterBlocks=function(a,b){a.__renderGroup=this,b.__renderGroup=this;for(var c=a;c!=this.root.first&&(c=c._iPrev,!c.renderable||!c.__renderGroup););this.insertAfter(a,c);for(var d=b;d!=this.root.first&&(d=d._iPrev,!d.renderable||!d.__renderGroup););this.insertAfter(b,d)},c.WebGLRenderGroup.prototype.removeFilterBlocks=function(a,b){this.removeObject(a),this.removeObject(b)},c.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(a){a.__renderGroup&&a.__renderGroup.removeDisplayObjectAndChildren(a);for(var b=a.first;b!=this.root.first&&(b=b._iPrev,!b.renderable||!b.__renderGroup););for(var c=a.last;c._iNext&&(c=c._iNext,!c.renderable||!c.__renderGroup););var d=a.first,e=a.last._iNext;do d.__renderGroup=this,d.renderable&&(this.insertObject(d,b,c),b=d),d=d._iNext;while(d!=e)},c.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(a){if(a.__renderGroup==this){a.last;do a.__renderGroup=null,a.renderable&&this.removeObject(a),a=a._iNext;while(a)}},c.WebGLRenderGroup.prototype.insertObject=function(a,b,d){var e=b,f=d;if(a instanceof c.Sprite){var g,h;if(e instanceof c.Sprite){if(g=e.batch,g&&g.texture==a.texture.baseTexture&&g.blendMode==a.blendMode)return g.insertAfter(a,e),void 0}else g=e;if(f)if(f instanceof c.Sprite){if(h=f.batch){if(h.texture==a.texture.baseTexture&&h.blendMode==a.blendMode)return h.insertBefore(a,f),void 0;if(h==g){var i=g.split(f),j=c.WebGLRenderer.getBatch(),k=this.batchs.indexOf(g);return j.init(a),this.batchs.splice(k+1,0,j,i),void 0}}}else h=f;var j=c.WebGLRenderer.getBatch();if(j.init(a),g){var k=this.batchs.indexOf(g);this.batchs.splice(k+1,0,j)}else this.batchs.push(j)}else a instanceof c.TilingSprite?this.initTilingSprite(a):a instanceof c.Strip&&this.initStrip(a),this.insertAfter(a,e)},c.WebGLRenderGroup.prototype.insertAfter=function(a,b){if(b instanceof c.Sprite){var d=b.batch;if(d)if(d.tail==b){var e=this.batchs.indexOf(d);this.batchs.splice(e+1,0,a)}else{var f=d.split(b.__next),e=this.batchs.indexOf(d);this.batchs.splice(e+1,0,a,f)}else this.batchs.push(a)}else{var e=this.batchs.indexOf(b);this.batchs.splice(e+1,0,a)}},c.WebGLRenderGroup.prototype.removeObject=function(a){var b;if(a instanceof c.Sprite){var d=a.batch;if(!d)return;d.remove(a),0==d.size&&(b=d)}else b=a;if(b){var e=this.batchs.indexOf(b);if(-1==e)return;if(0===e||e==this.batchs.length-1)return this.batchs.splice(e,1),b instanceof c.WebGLBatch&&c.WebGLRenderer.returnBatch(b),void 0;if(this.batchs[e-1]instanceof c.WebGLBatch&&this.batchs[e+1]instanceof c.WebGLBatch&&this.batchs[e-1].texture==this.batchs[e+1].texture&&this.batchs[e-1].blendMode==this.batchs[e+1].blendMode)return this.batchs[e-1].merge(this.batchs[e+1]),b instanceof c.WebGLBatch&&c.WebGLRenderer.returnBatch(b),c.WebGLRenderer.returnBatch(this.batchs[e+1]),this.batchs.splice(e,2),void 0;this.batchs.splice(e,1),b instanceof c.WebGLBatch&&c.WebGLRenderer.returnBatch(b)}},c.WebGLRenderGroup.prototype.initTilingSprite=function(a){var b=this.gl;a.verticies=new Float32Array([0,0,a.width,0,a.width,a.height,0,a.height]),a.uvs=new Float32Array([0,0,1,0,1,1,0,1]),a.colors=new Float32Array([1,1,1,1]),a.indices=new Uint16Array([0,1,3,2]),a._vertexBuffer=b.createBuffer(),a._indexBuffer=b.createBuffer(),a._uvBuffer=b.createBuffer(),a._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,a._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,a.verticies,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,a._uvBuffer),b.bufferData(b.ARRAY_BUFFER,a.uvs,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,a._colorBuffer),b.bufferData(b.ARRAY_BUFFER,a.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,a._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,a.indices,b.STATIC_DRAW),a.texture.baseTexture._glTexture?(b.bindTexture(b.TEXTURE_2D,a.texture.baseTexture._glTexture),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.REPEAT),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.REPEAT),a.texture.baseTexture._powerOf2=!0):a.texture.baseTexture._powerOf2=!0},c.WebGLRenderGroup.prototype.renderStrip=function(a,b){var d=this.gl;c.activateStripShader();var e=c.stripShader;e.program;var f=c.mat3.clone(a.worldTransform);c.mat3.transpose(f),d.uniformMatrix3fv(e.translationMatrix,!1,f),d.uniform2f(e.projectionVector,b.x,b.y),d.uniform2f(e.offsetVector,-c.offset.x,-c.offset.y),d.uniform1f(e.alpha,a.worldAlpha),a.dirty?(a.dirty=!1,d.bindBuffer(d.ARRAY_BUFFER,a._vertexBuffer),d.bufferData(d.ARRAY_BUFFER,a.verticies,d.STATIC_DRAW),d.vertexAttribPointer(e.aVertexPosition,2,d.FLOAT,!1,0,0),d.bindBuffer(d.ARRAY_BUFFER,a._uvBuffer),d.bufferData(d.ARRAY_BUFFER,a.uvs,d.STATIC_DRAW),d.vertexAttribPointer(e.aTextureCoord,2,d.FLOAT,!1,0,0),d.activeTexture(d.TEXTURE0),d.bindTexture(d.TEXTURE_2D,a.texture.baseTexture._glTexture),d.bindBuffer(d.ARRAY_BUFFER,a._colorBuffer),d.bufferData(d.ARRAY_BUFFER,a.colors,d.STATIC_DRAW),d.vertexAttribPointer(e.colorAttribute,1,d.FLOAT,!1,0,0),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,a._indexBuffer),d.bufferData(d.ELEMENT_ARRAY_BUFFER,a.indices,d.STATIC_DRAW)):(d.bindBuffer(d.ARRAY_BUFFER,a._vertexBuffer),d.bufferSubData(d.ARRAY_BUFFER,0,a.verticies),d.vertexAttribPointer(e.aVertexPosition,2,d.FLOAT,!1,0,0),d.bindBuffer(d.ARRAY_BUFFER,a._uvBuffer),d.vertexAttribPointer(e.aTextureCoord,2,d.FLOAT,!1,0,0),d.activeTexture(d.TEXTURE0),d.bindTexture(d.TEXTURE_2D,a.texture.baseTexture._glTexture),d.bindBuffer(d.ARRAY_BUFFER,a._colorBuffer),d.vertexAttribPointer(e.colorAttribute,1,d.FLOAT,!1,0,0),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,a._indexBuffer)),d.drawElements(d.TRIANGLE_STRIP,a.indices.length,d.UNSIGNED_SHORT,0),c.deactivateStripShader() +},c.WebGLRenderGroup.prototype.renderTilingSprite=function(a,b){var d=this.gl;c.shaderProgram;var e=a.tilePosition,f=a.tileScale,g=e.x/a.texture.baseTexture.width,h=e.y/a.texture.baseTexture.height,i=a.width/a.texture.baseTexture.width/f.x,j=a.height/a.texture.baseTexture.height/f.y;a.uvs[0]=0-g,a.uvs[1]=0-h,a.uvs[2]=1*i-g,a.uvs[3]=0-h,a.uvs[4]=1*i-g,a.uvs[5]=1*j-h,a.uvs[6]=0-g,a.uvs[7]=1*j-h,d.bindBuffer(d.ARRAY_BUFFER,a._uvBuffer),d.bufferSubData(d.ARRAY_BUFFER,0,a.uvs),this.renderStrip(a,b)},c.WebGLRenderGroup.prototype.initStrip=function(a){var b=this.gl;this.shaderProgram,a._vertexBuffer=b.createBuffer(),a._indexBuffer=b.createBuffer(),a._uvBuffer=b.createBuffer(),a._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,a._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,a.verticies,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,a._uvBuffer),b.bufferData(b.ARRAY_BUFFER,a.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,a._colorBuffer),b.bufferData(b.ARRAY_BUFFER,a.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,a._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,a.indices,b.STATIC_DRAW)},c.initDefaultShaders=function(){c.primitiveShader=new c.PrimitiveShader,c.primitiveShader.init(),c.stripShader=new c.StripShader,c.stripShader.init(),c.defaultShader=new c.PixiShader,c.defaultShader.init();var a=c.gl,b=c.defaultShader.program;a.useProgram(b),a.enableVertexAttribArray(c.defaultShader.aVertexPosition),a.enableVertexAttribArray(c.defaultShader.colorAttribute),a.enableVertexAttribArray(c.defaultShader.aTextureCoord)},c.activatePrimitiveShader=function(){var a=c.gl;a.useProgram(c.primitiveShader.program),a.disableVertexAttribArray(c.defaultShader.aVertexPosition),a.disableVertexAttribArray(c.defaultShader.colorAttribute),a.disableVertexAttribArray(c.defaultShader.aTextureCoord),a.enableVertexAttribArray(c.primitiveShader.aVertexPosition),a.enableVertexAttribArray(c.primitiveShader.colorAttribute)},c.deactivatePrimitiveShader=function(){var a=c.gl;a.useProgram(c.defaultShader.program),a.disableVertexAttribArray(c.primitiveShader.aVertexPosition),a.disableVertexAttribArray(c.primitiveShader.colorAttribute),a.enableVertexAttribArray(c.defaultShader.aVertexPosition),a.enableVertexAttribArray(c.defaultShader.colorAttribute),a.enableVertexAttribArray(c.defaultShader.aTextureCoord)},c.activateStripShader=function(){var a=c.gl;a.useProgram(c.stripShader.program)},c.deactivateStripShader=function(){var a=c.gl;a.useProgram(c.defaultShader.program)},c.CompileVertexShader=function(a,b){return c._CompileShader(a,b,a.VERTEX_SHADER)},c.CompileFragmentShader=function(a,b){return c._CompileShader(a,b,a.FRAGMENT_SHADER)},c._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:(console.log(a.getShaderInfoLog(e)),null)},c.compileProgram=function(a,b){var d=c.gl,e=c.CompileFragmentShader(d,b),f=c.CompileVertexShader(d,a),g=d.createProgram();return d.attachShader(g,f),d.attachShader(g,e),d.linkProgram(g),d.getProgramParameter(g,d.LINK_STATUS)||console.log("Could not initialise shaders"),g},c.BitmapText=function(a,b){c.DisplayObjectContainer.call(this),this.setText(a),this.setStyle(b),this.updateText(),this.dirty=!1},c.BitmapText.prototype=Object.create(c.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.BitmapText.prototype.setText=function(a){this.text=a||" ",this.dirty=!0},c.BitmapText.prototype.setStyle=function(a){a=a||{},a.align=a.align||"left",this.style=a;var b=a.font.split(" ");this.fontName=b[b.length-1],this.fontSize=b.length>=2?parseInt(b[b.length-2],10):c.BitmapText.fonts[this.fontName].size,this.dirty=!0},c.BitmapText.prototype.updateText=function(){for(var a=c.BitmapText.fonts[this.fontName],b=new c.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)}for(j=0;j0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}c.DisplayObjectContainer.prototype.updateTransform.call(this)},c.BitmapText.fonts={},c.Text=function(a,b){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),c.Sprite.call(this,c.Texture.fromCanvas(this.canvas)),this.setText(a),this.setStyle(b),this.updateText(),this.dirty=!1},c.Text.prototype=Object.create(c.Sprite.prototype),c.Text.prototype.constructor=c.Text,c.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,this.style=a,this.dirty=!0},c.Text.prototype.setText=function(a){this.text=a.toString()||" ",this.dirty=!0},c.Text.prototype.updateText=function(){this.context.font=this.style.font;var a=this.text;this.style.wordWrap&&(a=this.wordWrap(this.text));for(var b=a.split(/(?:\r\n|\r|\n)/),d=[],e=0,f=0;fe?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}b+="\n"}return b},c.Text.prototype.destroy=function(a){a&&this.texture.destroy()},c.Text.heightCache={},c.BaseTextureCache={},c.texturesToUpdate=[],c.texturesToDestroy=[],c.BaseTexture=function(a){if(c.EventTarget.call(this),this.width=100,this.height=100,this.hasLoaded=!1,this.source=a,a){if(this.source instanceof Image||this.source instanceof HTMLImageElement)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,c.texturesToUpdate.push(this);else{var b=this;this.source.onload=function(){b.hasLoaded=!0,b.width=b.source.width,b.height=b.source.height,c.texturesToUpdate.push(b),b.dispatchEvent({type:"loaded",content:b})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,c.texturesToUpdate.push(this);this._powerOf2=!1}},c.BaseTexture.prototype.constructor=c.BaseTexture,c.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,c.texturesToDestroy.push(this)},c.BaseTexture.fromImage=function(a,b){var d=c.BaseTextureCache[a];if(!d){var e=new Image;b&&(e.crossOrigin=""),e.src=a,d=new c.BaseTexture(e),c.BaseTextureCache[a]=d}return d},c.TextureCache={},c.FrameCache={},c.Texture=function(a,b){if(c.EventTarget.call(this),b||(this.noFrame=!0,b=new c.Rectangle(0,0,1,1)),a instanceof c.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=b,this.trim=new c.Point,this.scope=this,a.hasLoaded)this.noFrame&&(b=new c.Rectangle(0,0,a.width,a.height)),this.setFrame(b);else{var d=this;a.addEventListener("loaded",function(){d.onBaseTextureLoaded()})}},c.Texture.prototype.constructor=c.Texture,c.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;a.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new c.Rectangle(0,0,a.width,a.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},c.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy()},c.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,c.Texture.frameUpdates.push(this)},c.Texture.fromImage=function(a,b){var d=c.TextureCache[a];return d||(d=new c.Texture(c.BaseTexture.fromImage(a,b)),c.TextureCache[a]=d),d},c.Texture.fromFrame=function(a){var b=c.TextureCache[a];if(!b)throw new Error("The frameId '"+a+"' does not exist in the texture cache "+this);return b},c.Texture.fromCanvas=function(a){var b=new c.BaseTexture(a);return new c.Texture(b)},c.Texture.addTextureToCache=function(a,b){c.TextureCache[b]=a},c.Texture.removeTextureFromCache=function(a){var b=c.TextureCache[a];return c.TextureCache[a]=null,b},c.Texture.frameUpdates=[],c.RenderTexture=function(a,b){c.EventTarget.call(this),this.width=a||100,this.height=b||100,this.indetityMatrix=c.mat3.create(),this.frame=new c.Rectangle(0,0,this.width,this.height),c.gl?this.initWebGL():this.initCanvas()},c.RenderTexture.prototype=Object.create(c.Texture.prototype),c.RenderTexture.prototype.constructor=c.RenderTexture,c.RenderTexture.prototype.initWebGL=function(){var a=c.gl;this.glFramebuffer=a.createFramebuffer(),a.bindFramebuffer(a.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new c.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=a.createTexture(),a.bindTexture(a.TEXTURE_2D,this.baseTexture._glTexture),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,this.width,this.height,0,a.RGBA,a.UNSIGNED_BYTE,null),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,a.bindFramebuffer(a.FRAMEBUFFER,this.glFramebuffer),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,this.baseTexture._glTexture,0),this.projection=new c.Point(this.width/2,-this.height/2),this.render=this.renderWebGL},c.RenderTexture.prototype.resize=function(a,b){if(this.width=a,this.height=b,c.gl){this.projection.x=this.width/2,this.projection.y=-this.height/2;var d=c.gl;d.bindTexture(d.TEXTURE_2D,this.baseTexture._glTexture),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,this.width,this.height,0,d.RGBA,d.UNSIGNED_BYTE,null)}else this.frame.width=this.width,this.frame.height=this.height,this.renderer.resize(this.width,this.height)},c.RenderTexture.prototype.initCanvas=function(){this.renderer=new c.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new c.BaseTexture(this.renderer.view),this.frame=new c.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},c.RenderTexture.prototype.renderWebGL=function(a,b,d){var e=c.gl;e.colorMask(!0,!0,!0,!0),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,this.glFramebuffer),d&&(e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT));var f=a.children,g=a.worldTransform;a.worldTransform=c.mat3.create(),a.worldTransform[4]=-1,a.worldTransform[5]=-2*this.projection.y,b&&(a.worldTransform[2]=b.x,a.worldTransform[5]-=b.y),c.visibleCount++,a.vcount=c.visibleCount;for(var h=0,i=f.length;i>h;h++)f[h].updateTransform();var j=a.__renderGroup;j?a==j.root?j.render(this.projection,this.glFramebuffer):j.renderSpecific(a,this.projection,this.glFramebuffer):(this.renderGroup||(this.renderGroup=new c.WebGLRenderGroup(e)),this.renderGroup.setRenderable(a),this.renderGroup.render(this.projection,this.glFramebuffer)),a.worldTransform=g},c.RenderTexture.prototype.renderCanvas=function(a,b,d){var e=a.children;a.worldTransform=c.mat3.create(),b&&(a.worldTransform[2]=b.x,a.worldTransform[5]=b.y);for(var f=0,g=e.length;g>f;f++)e[f].updateTransform();d&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(a),this.renderer.context.setTransform(1,0,0,1,0,0)},c.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)}},c.PolyK={},c.PolyK.Triangulate=function(a){var b=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);for(var g=0,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(c.PolyK._convex(l,m,n,o,p,q,b)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!=i&&t!=j&&t!=k&&c.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(!b)return console.log("PIXI Warning: shape too complex to fill"),[];var e=[];f=[];for(var g=0;d>g;g++)f.push(g);g=0,h=d,b=!1}}return e.push(f[0],f[1],f[2]),e},c.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},c.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0==g},d.Camera=function(a,b,c,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new d.Rectangle(c,e,f,g),this.screenView=new d.Rectangle(c,e,f,g),this.bounds=new d.Rectangle(c,e,f,g),this.deadzone=null,this.visible=!0,this.atLimit={x:!1,y:!1},this.target=null,this._edge=0,this.displayObject=null},d.Camera.FOLLOW_LOCKON=0,d.Camera.FOLLOW_PLATFORMER=1,d.Camera.FOLLOW_TOPDOWN=2,d.Camera.FOLLOW_TOPDOWN_TIGHT=3,d.Camera.prototype={follow:function(a,b){"undefined"==typeof b&&(b=d.Camera.FOLLOW_LOCKON),this.target=a;var c;switch(b){case d.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new d.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case d.Camera.FOLLOW_TOPDOWN:c=Math.max(this.width,this.height)/4,this.deadzone=new d.Rectangle((this.width-c)/2,(this.height-c)/2,c,c);break;case d.Camera.FOLLOW_TOPDOWN_TIGHT:c=Math.max(this.width,this.height)/8,this.deadzone=new d.Rectangle((this.width-c)/2,(this.height-c)/2,c,c);break;case d.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.ythis.bounds.right-this.width&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width+1),this.view.ythis.bounds.bottom-this.height&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height+1),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}},Object.defineProperty(d.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(d.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(d.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(d.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),d.State=function(){this.game=null,this.add=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null},d.State.prototype={preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},render:function(){},paused:function(){},destroy:function(){}},d.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,null!==b&&(this._pendingState=b),this._created=!1,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.onShutDownCallback=null},d.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&("string"==typeof this._pendingState?this.start(this._pendingState,!1,!1):this.add("default",this._pendingState,!0))},add:function(a,b,c){"undefined"==typeof c&&(c=!1);var e;return b instanceof d.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,c&&(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.onDestroyCallback=null),delete this.states[a]},start:function(a,b,c){return"undefined"==typeof b&&(b=!0),"undefined"==typeof c&&(c=!1),this.game.isBooted===!1?(this._pendingState=a,void 0):(this.checkState(a)!==!1&&(this.current&&this.onShutDownCallback.call(this.callbackContext,this.game),b&&(this.game.tweens.removeAll(),this.game.world.destroy(),c===!0&&this.game.cache.destroy()),this.setCurrentState(a),this.onPreloadCallback?(this.game.load.reset(),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()?this.game.loadComplete():this.game.load.start()):this.game.loadComplete()),void 0)},dummy:function(){},checkState:function(a){if(this.states[a]){var b=!1;return this.states[a].preload&&(b=!0),b===!1&&this.states[a].loadRender&&(b=!0),b===!1&&this.states[a].loadUpdate&&(b=!0),b===!1&&this.states[a].create&&(b=!0),b===!1&&this.states[a].update&&(b=!0),b===!1&&this.states[a].preRender&&(b=!0),b===!1&&this.states[a].render&&(b=!0),b===!1&&this.states[a].paused&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions."),!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].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].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].physics=this.game.physics,this.states[a].rnd=this.game.rnd},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.onShutDownCallback=this.states[a].shutdown||this.dummy,this.current=a,this._created=!1,this.onInitCallback.call(this.callbackContext,this.game)},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,!0)},resume:function(){this._created&&this.onre&&this.onPausedCallback.call(this.callbackContext,this.game,!1)},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===d.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===d.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.onDestroyCallback=null,this.game=null,this.states={},this._pendingState=null}},d.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},d.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)}}},d.Signal=function(){this._bindings=[],this._prevParams=null;var a=this;this.dispatch=function(){d.Signal.prototype.dispatch.apply(a,arguments)}},d.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,b,c,e){var f,g=this._indexOfListener(a,c);if(-1!==g){if(f=this._bindings[g],f.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else f=new d.SignalBinding(this,a,b,c,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()+"]"}},d.SignalBinding=function(a,b,c,d,e){this._listener=b,this._isOnce=c,this.context=d,this._signal=a,this._priority=e||0},d.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+"]"}},d.Filter=function(a,b,c){this.game=a,this.type=d.WEBGL_FILTER,this.passes=[this],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=c||[]},d.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}},Object.defineProperty(d.Filter.prototype,"width",{get:function(){return this.uniforms.resolution.value.x},set:function(a){this.uniforms.resolution.value.x=a}}),Object.defineProperty(d.Filter.prototype,"height",{get:function(){return this.uniforms.resolution.value.y},set:function(a){this.uniforms.resolution.value.y=a}}),d.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},d.Plugin.prototype={preUpdate:function(){},update:function(){},render:function(){},postRender:function(){},destroy:function(){this.game=null,this.parent=null,this.active=!1,this.visible=!1}},d.PluginManager=function(a,b){this.game=a,this._parent=b,this.plugins=[],this._pluginsLength=0},d.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._parent),"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._pluginsLength=this.plugins.push(a),"function"==typeof a.init&&a.init(),a):null},remove:function(a){if(0!==this._pluginsLength)for(this._p=0;this._pthis._nextOffsetCheck&&(d.Canvas.getOffset(this.canvas,this.offset),this._nextOffsetCheck=this.game.time.now+this.checkOffsetInterval)},visibilityChange:function(a){this.disableVisibilityChange||(this.game.paused="pagehide"==a.type||"blur"==a.type||document.hidden===!0||document.webkitHidden===!0?!0:!1)}},Object.defineProperty(d.Stage.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(a){this._backgroundColor=a,this.game.transparent===!1&&(this.game.renderType==d.CANVAS?this.game.canvas.style.backgroundColor=a:("string"==typeof a&&(a=d.Color.hexToRGB(a)),this._stage.setBackgroundColor(a)))}}),d.Group=function(a,b,e,f){("undefined"==typeof b||null===typeof b)&&(b=a.world),"undefined"==typeof f&&(f=!1),this.game=a,this.name=e||"group",f?this._container=this.game.stage._stage:(this._container=new c.DisplayObjectContainer,this._container.name=this.name,b?b instanceof d.Group?(b._container.addChild(this._container),b._container.updateTransform()):(b.addChild(this._container),b.updateTransform()):(this.game.stage._stage.addChild(this._container),this.game.stage._stage.updateTransform())),this.type=d.GROUP,this.exists=!0,this.scale=new d.Point(1,1),this.cursor=null},d.Group.RETURN_NONE=0,d.Group.RETURN_TOTAL=1,d.Group.RETURN_CHILD=2,d.Group.SORT_ASCENDING=-1,d.Group.SORT_DESCENDING=1,d.Group.prototype={add:function(a){return a.group!==this&&(a.group=this,a.events&&a.events.onAddedToGroup.dispatch(a,this),this._container.addChild(a),a.updateTransform(),null===this.cursor&&(this.cursor=a)),a},addAt:function(a,b){return a.group!==this&&(a.group=this,a.events&&a.events.onAddedToGroup.dispatch(a,this),this._container.addChildAt(a,b),a.updateTransform(),null===this.cursor&&(this.cursor=a)),a},getAt:function(a){return this._container.getChildAt(a)},create:function(a,b,c,e,f){"undefined"==typeof f&&(f=!0);var g=new d.Sprite(this.game,a,b,c,e);return g.group=this,g.exists=f,g.visible=f,g.alive=f,g.events&&g.events.onAddedToGroup.dispatch(g,this),this._container.addChild(g),g.updateTransform(),null===this.cursor&&(this.cursor=g),g},createMultiple:function(a,b,c,e){"undefined"==typeof e&&(e=!1);for(var f=0;a>f;f++){var g=new d.Sprite(this.game,0,0,b,c);g.group=this,g.exists=e,g.visible=e,g.alive=e,g.events&&g.events.onAddedToGroup.dispatch(g,this),this._container.addChild(g),g.updateTransform(),null===this.cursor&&(this.cursor=g)}},next:function(){this.cursor&&(this.cursor=this.cursor==this._container.last?this._container._iNext:this.cursor._iNext)},previous:function(){this.cursor&&(this.cursor=this.cursor==this._container._iNext?this._container.last:this.cursor._iPrev)},childTest:function(a,b){var c=a+" next: ";c+=b._iNext?b._iNext.name:"-null-",c=c+" "+a+" prev: ",c+=b._iPrev?b._iPrev.name:"-null-",console.log(c)},swapIndex:function(a,b){var c=this.getAt(a),d=this.getAt(b);console.log("swapIndex ",a," with ",b),this.swap(c,d)},swap:function(a,b){if(a===b||!a.parent||!b.parent||a.group!==this||b.group!==this)return!1;var c=a._iPrev,d=a._iNext,e=b._iPrev,f=b._iNext,g=this._container.last._iNext,h=this.game.stage._stage;do h!==a&&h!==b&&(h.first===a?h.first=b:h.first===b&&(h.first=a),h.last===a?h.last=b:h.last===b&&(h.last=a)),h=h._iNext;while(h!=g);return a._iNext==b?(a._iNext=f,a._iPrev=b,b._iNext=a,b._iPrev=c,c&&(c._iNext=b),f&&(f._iPrev=a),a.__renderGroup&&a.__renderGroup.updateTexture(a),b.__renderGroup&&b.__renderGroup.updateTexture(b),!0):b._iNext==a?(a._iNext=b,a._iPrev=e,b._iNext=d,b._iPrev=a,e&&(e._iNext=a),d&&(d._iPrev=b),a.__renderGroup&&a.__renderGroup.updateTexture(a),b.__renderGroup&&b.__renderGroup.updateTexture(b),!0):(a._iNext=f,a._iPrev=e,b._iNext=d,b._iPrev=c,c&&(c._iNext=b),d&&(d._iPrev=b),e&&(e._iNext=a),f&&(f._iPrev=a),a.__renderGroup&&a.__renderGroup.updateTexture(a),b.__renderGroup&&b.__renderGroup.updateTexture(b),!0)},bringToTop:function(a){return a.group===this&&(this.remove(a),this.add(a)),a},getIndex:function(a){return this._container.children.indexOf(a)},replace:function(a,b){if(this._container.first._iNext){var c=this.getIndex(a);-1!=c&&(void 0!==b.parent&&(b.events.onRemovedFromGroup.dispatch(b,this),b.parent.removeChild(b)),this._container.removeChild(a),this._container.addChildAt(b,c),b.events.onAddedToGroup.dispatch(b,this),b.updateTransform(),this.cursor==a&&(this.cursor=this._container._iNext))}},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))},setAll:function(a,b,c,d,e){if(a=a.split("."),"undefined"==typeof c&&(c=!1),"undefined"==typeof d&&(d=!1),e=e||0,this._container.children.length>0&&this._container.first._iNext){var f=this._container.first._iNext;do(c===!1||c&&f.alive)&&(d===!1||d&&f.visible)&&this.setProperty(f,a,b,e),f=f._iNext;while(f!=this._container.last._iNext)}},addAll:function(a,b,c,d){this.setAll(a,b,c,d,1)},subAll:function(a,b,c,d){this.setAll(a,b,c,d,2)},multiplyAll:function(a,b,c,d){this.setAll(a,b,c,d,3)},divideAll:function(a,b,c,d){this.setAll(a,b,c,d,4)},callAllExists:function(a,b){var c=Array.prototype.splice.call(arguments,2);if(this._container.children.length>0&&this._container.first._iNext){var d=this._container.first._iNext;do d.exists==b&&d[a]&&d[a].apply(d,c),d=d._iNext;while(d!=this._container.last._iNext)}},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},callAll:function(a,b){if("undefined"!=typeof a){a=a.split(".");var c=a.length;if("undefined"==typeof b)b=null;else if("string"==typeof b){b=b.split(".");var d=b.length}var e=Array.prototype.splice.call(arguments,2),f=null,g=null;if(this._container.children.length>0&&this._container.first._iNext){var h=this._container.first._iNext;do f=this.callbackFromArray(h,a,c),b&&f?(g=this.callbackFromArray(h,b,d),f&&f.apply(g,e)):f&&f.apply(h,e),h=h._iNext;while(h!=this._container.last._iNext)}}},forEach:function(a,b,c){"undefined"==typeof c&&(c=!1);var d=Array.prototype.splice.call(arguments,3);if(d.unshift(null),this._container.children.length>0&&this._container.first._iNext){var e=this._container.first._iNext;do(c===!1||c&&e.exists)&&(d[0]=e,a.apply(b,d)),e=e._iNext;while(e!=this._container.last._iNext)}},forEachExists:function(a,b){var c=Array.prototype.splice.call(arguments,2);c.unshift(null),this.iterate("exists",!0,d.Group.RETURN_TOTAL,a,b,c)},forEachAlive:function(a,b){var c=Array.prototype.splice.call(arguments,2);c.unshift(null),this.iterate("alive",!0,d.Group.RETURN_TOTAL,a,b,c)},forEachDead:function(a,b){var c=Array.prototype.splice.call(arguments,2);c.unshift(null),this.iterate("alive",!1,d.Group.RETURN_TOTAL,a,b,c)},sort:function(a,b){"undefined"==typeof a&&(a="y"),"undefined"==typeof b&&(b=d.Group.SORT_ASCENDING);var c,e;do{c=!1;for(var f=0,g=this._container.children.length-1;g>f;f++)b==d.Group.SORT_ASCENDING?this._container.children[f][a]>this._container.children[f+1][a]&&(this.swap(this.getAt(f),this.getAt(f+1)),e=this._container.children[f],this._container.children[f]=this._container.children[f+1],this._container.children[f+1]=e,c=!0):this._container.children[f][a]0&&this._container.first._iNext){var i=this._container.first._iNext;do{if(i[a]===b&&(h++,e&&(g[0]=i,e.apply(f,g)),c==d.Group.RETURN_CHILD))return i;i=i._iNext}while(i!=this._container.last._iNext)}return c==d.Group.RETURN_TOTAL?h:c==d.Group.RETURN_CHILD?null:void 0},getFirstExists:function(a){return"boolean"!=typeof a&&(a=!0),this.iterate("exists",a,d.Group.RETURN_CHILD)},getFirstAlive:function(){return this.iterate("alive",!0,d.Group.RETURN_CHILD)},getFirstDead:function(){return this.iterate("alive",!1,d.Group.RETURN_CHILD)},countLiving:function(){return this.iterate("alive",!0,d.Group.RETURN_TOTAL)},countDead:function(){return this.iterate("alive",!1,d.Group.RETURN_TOTAL)},getRandom:function(a,b){return 0===this._container.children.length?null:(a=a||0,b=b||this._container.children.length,this.game.math.getRandom(this._container.children,a,b))},remove:function(a){return a.group!==this?!1:(a.events&&a.events.onRemovedFromGroup.dispatch(a,this),a.parent===this._container&&this._container.removeChild(a),this.cursor==a&&(this.cursor=this._container._iNext?this._container._iNext:null),a.group=null,!0)},removeAll:function(){if(0!==this._container.children.length){do this._container.children[0].events&&this._container.children[0].events.onRemovedFromGroup.dispatch(this._container.children[0],this),this._container.removeChild(this._container.children[0]);while(this._container.children.length>0);this.cursor=null}},removeBetween:function(a,b){if(0!==this._container.children.length){if(a>b||0>a||b>this._container.children.length)return!1;for(var c=a;b>c;c++){var d=this._container.children[c];d.events.onRemovedFromGroup.dispatch(d,this),this._container.removeChild(d),this.cursor==d&&(this.cursor=this._container._iNext?this._container._iNext:null)}}},destroy:function(){this.removeAll(),this._container.parent.removeChild(this._container),this._container=null,this.game=null,this.exists=!1,this.cursor=null},validate:function(){var a=this.game.stage._stage.last._iNext,b=this.game.stage._stage,c=null,d=null,e=0;do{if(e>0){if(b!==c)return console.log("check next fail"),!1;if(b._iPrev!==d)return console.log("check previous fail"),!1}c=b._iNext,d=b,b=b._iNext,e++}while(b!=a);return!0},dump:function(a){"undefined"==typeof a&&(a=!1);var b=20,c="\n"+d.Utils.pad("Node",b)+"|"+d.Utils.pad("Next",b)+"|"+d.Utils.pad("Previous",b)+"|"+d.Utils.pad("First",b)+"|"+d.Utils.pad("Last",b);console.log(c);var c=d.Utils.pad("----------",b)+"|"+d.Utils.pad("----------",b)+"|"+d.Utils.pad("----------",b)+"|"+d.Utils.pad("----------",b)+"|"+d.Utils.pad("----------",b);if(console.log(c),a)var e=this.game.stage._stage.last._iNext,f=this.game.stage._stage;else var e=this._container.last._iNext,f=this._container;do{var g=f.name||"*";if(this.cursor==f)var g="> "+g;var h="-",i="-",j="-",k="-";f._iNext&&(h=f._iNext.name),f._iPrev&&(i=f._iPrev.name),f.first&&(j=f.first.name),f.last&&(k=f.last.name),"undefined"==typeof h&&(h="-"),"undefined"==typeof i&&(i="-"),"undefined"==typeof j&&(j="-"),"undefined"==typeof k&&(k="-");var c=d.Utils.pad(g,b)+"|"+d.Utils.pad(h,b)+"|"+d.Utils.pad(i,b)+"|"+d.Utils.pad(j,b)+"|"+d.Utils.pad(k,b);console.log(c),f=f._iNext}while(f!=e)}},Object.defineProperty(d.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,d.Group.RETURN_TOTAL)}}),Object.defineProperty(d.Group.prototype,"length",{get:function(){return this.iterate("exists",!0,d.Group.RETURN_TOTAL)}}),Object.defineProperty(d.Group.prototype,"x",{get:function(){return this._container.position.x},set:function(a){this._container.position.x=a}}),Object.defineProperty(d.Group.prototype,"y",{get:function(){return this._container.position.y},set:function(a){this._container.position.y=a}}),Object.defineProperty(d.Group.prototype,"angle",{get:function(){return d.Math.radToDeg(this._container.rotation)},set:function(a){this._container.rotation=d.Math.degToRad(a)}}),Object.defineProperty(d.Group.prototype,"rotation",{get:function(){return this._container.rotation},set:function(a){this._container.rotation=a}}),Object.defineProperty(d.Group.prototype,"visible",{get:function(){return this._container.visible},set:function(a){this._container.visible=a}}),Object.defineProperty(d.Group.prototype,"alpha",{get:function(){return this._container.alpha},set:function(a){this._container.alpha=a}}),d.World=function(a){d.Group.call(this,a,null,"__world",!1),this.scale=new d.Point(1,1),this.bounds=new d.Rectangle(0,0,a.width,a.height),this.camera=null,this.currentRenderOrderID=0},d.World.prototype=Object.create(d.Group.prototype),d.World.prototype.constructor=d.World,d.World.prototype.boot=function(){this.camera=new d.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this._container,this.game.camera=this.camera},d.World.prototype.update=function(){if(this.currentRenderOrderID=0,this.game.stage._stage.first._iNext){var a,b=this.game.stage._stage.first._iNext;do a=!1,b.preUpdate&&(a=b.preUpdate()===!1),b.update&&(a=b.update()===!1||a),b=a?b.last._iNext:b._iNext;while(b!=this.game.stage._stage.last._iNext)}},d.World.prototype.postUpdate=function(){if(this.game.stage._stage.first._iNext){var a=this.game.stage._stage.first._iNext;do a.postUpdate&&a.postUpdate(),a=a._iNext;while(a!=this.game.stage._stage.last._iNext)}this.camera.update()},d.World.prototype.setBounds=function(a,b,c,d){this.bounds.setTo(a,b,c,d),this.camera.bounds&&this.camera.bounds.setTo(a,b,c,d)},d.World.prototype.destroy=function(){this.camera.x=0,this.camera.y=0,this.game.input.reset(!0),this.removeAll()},Object.defineProperty(d.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){this.bounds.width=a}}),Object.defineProperty(d.World.prototype,"height",{get:function(){return this.bounds.height},set:function(a){this.bounds.height=a}}),Object.defineProperty(d.World.prototype,"centerX",{get:function(){return this.bounds.halfWidth}}),Object.defineProperty(d.World.prototype,"centerY",{get:function(){return this.bounds.halfHeight}}),Object.defineProperty(d.World.prototype,"randomX",{get:function(){return this.bounds.x<0?this.game.rnd.integerInRange(this.bounds.x,this.bounds.width-Math.abs(this.bounds.x)):this.game.rnd.integerInRange(this.bounds.x,this.bounds.width)}}),Object.defineProperty(d.World.prototype,"randomY",{get:function(){return this.bounds.y<0?this.game.rnd.integerInRange(this.bounds.y,this.bounds.height-Math.abs(this.bounds.y)):this.game.rnd.integerInRange(this.bounds.y,this.bounds.height)}}),Object.defineProperty(d.World.prototype,"visible",{get:function(){return this._container.visible},set:function(a){this._container.visible=a}}),d.Game=function(a,b,c,e,f,g,h){a=a||800,b=b||600,c=c||d.AUTO,e=e||"",f=f||null,"undefined"==typeof g&&(g=!1),"undefined"==typeof h&&(h=!0),this.id=d.GAMES.push(this)-1,this.parent=e,this.width=a,this.height=b,this.transparent=g,this.antialias=h,this.renderer=null,this.state=new d.StateManager(this,f),this._paused=!1,this.renderType=c,this._loadComplete=!1,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=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;var i=this;return this._onBoot=function(){return i.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},d.Game.prototype={boot:function(){this.isBooted||(document.body?(document.removeEventListener("DOMContentLoaded",this._onBoot),window.removeEventListener("load",this._onBoot),this.onPause=new d.Signal,this.onResume=new d.Signal,this.isBooted=!0,this.device=new d.Device,this.math=d.Math,this.rnd=new d.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.stage=new d.Stage(this,this.width,this.height),this.setUpRenderer(),this.world=new d.World(this),this.add=new d.GameObjectFactory(this),this.cache=new d.Cache(this),this.load=new d.Loader(this),this.time=new d.Time(this),this.tweens=new d.TweenManager(this),this.input=new d.Input(this),this.sound=new d.SoundManager(this),this.physics=new d.Physics.Arcade(this),this.particles=new d.Particles(this),this.plugins=new d.PluginManager(this,this),this.net=new d.Net(this),this.debug=new d.Utils.Debug(this),this.stage.boot(),this.world.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.load.onLoadComplete.add(this.loadComplete,this),this.showDebugHeader(),this.isRunning=!0,this._loadComplete=!1,this.raf=new d.RequestAnimationFrame(this),this.raf.start()):window.setTimeout(this._onBoot,20))},showDebugHeader:function(){var a=d.DEV_VERSION,b="Canvas",c="HTML Audio";if(this.renderType==d.WEBGL?b="WebGL":this.renderType==d.HEADLESS&&(b="Headless"),this.device.webAudio&&(c="WebAudio"),this.device.chrome){var e=["%c %c %c Phaser v"+a+" - Renderer: "+b+" - Audio: "+c+" %c %c ","background: #00bff3","background: #0072bc","color: #ffffff; background: #003471","background: #0072bc","background: #00bff3"];console.log.apply(console,e)}else console.log("Phaser v"+a+" - Renderer: "+b+" - Audio: "+c)},setUpRenderer:function(){if(this.renderType===d.HEADLESS||this.renderType===d.CANVAS||this.renderType===d.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===d.AUTO&&(this.renderType=d.CANVAS),this.renderer=new c.CanvasRenderer(this.width,this.height,this.stage.canvas,this.transparent),d.Canvas.setSmoothingEnabled(this.renderer.context,this.antialias),this.canvas=this.renderer.view,this.context=this.renderer.context}else this.renderType=d.WEBGL,this.renderer=new c.WebGLRenderer(this.width,this.height,this.stage.canvas,this.transparent,this.antialias),this.canvas=this.renderer.view,this.context=null;d.Canvas.addToDOM(this.renderer.view,this.parent,!0),d.Canvas.setTouchAction(this.renderer.view)},loadComplete:function(){this._loadComplete=!0,this.state.loadComplete()},update:function(a){this.time.update(a),this._paused?(this.renderer.render(this.stage._stage),this.plugins.render(),this.state.render()):(this.plugins.preUpdate(),this.physics.preUpdate(),this.stage.update(),this.input.update(),this.tweens.update(),this.sound.update(),this.world.update(),this.particles.update(),this.state.update(),this.plugins.update(),this.world.postUpdate(),this.plugins.postUpdate(),this.renderType!==d.HEADLESS&&(this.renderer.render(this.stage._stage),this.plugins.render(),this.state.render(),this.plugins.postRender()))},destroy:function(){this.raf.stop(),this.input.destroy(),this.state.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}},Object.defineProperty(d.Game.prototype,"paused",{get:function(){return this._paused},set:function(a){a===!0?this._paused===!1&&(this._paused=!0,this.onPause.dispatch(this)):this._paused&&(this._paused=!1,this.onResume.dispatch(this))}}),d.Input=function(a){this.game=a,this.hitCanvas=null,this.hitContext=null},d.Input.MOUSE_OVERRIDES_TOUCH=0,d.Input.TOUCH_OVERRIDES_MOUSE=1,d.Input.MOUSE_TOUCH_COMBINE=2,d.Input.prototype={pollRate:0,_pollCounter:0,_oldPosition:null,_x:0,_y:0,disabled:!1,multiInputOverride:d.Input.MOUSE_TOUCH_COMBINE,position:null,speed:null,circle:null,scale:null,maxPointers:10,currentPointers:0,tapRate:200,doubleTapRate:300,holdRate:2e3,justPressedRate:200,justReleasedRate:200,recordPointerHistory:!1,recordRate:100,recordLimit:100,pointer1:null,pointer2:null,pointer3:null,pointer4:null,pointer5:null,pointer6:null,pointer7:null,pointer8:null,pointer9:null,pointer10:null,activePointer:null,mousePointer:null,mouse:null,keyboard:null,touch:null,mspointer:null,onDown:null,onUp:null,onTap:null,onHold:null,interactiveItems:new d.LinkedList,boot:function(){this.mousePointer=new d.Pointer(this.game,0),this.pointer1=new d.Pointer(this.game,1),this.pointer2=new d.Pointer(this.game,2),this.mouse=new d.Mouse(this.game),this.keyboard=new d.Keyboard(this.game),this.touch=new d.Touch(this.game),this.mspointer=new d.MSPointer(this.game),this.onDown=new d.Signal,this.onUp=new d.Signal,this.onTap=new d.Signal,this.onHold=new d.Signal,this.scale=new d.Point(1,1),this.speed=new d.Point,this.position=new d.Point,this._oldPosition=new d.Point,this.circle=new d.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()},addPointer:function(){for(var a=0,b=10;b>0;b--)null===this["pointer"+b]&&(a=b);return 0===a?(console.warn("You can only have 10 Pointer objects"),null):(this["pointer"+a]=new d.Pointer(this.game,a),this["pointer"+a])},update:function(){return this.pollRate>0&&this._pollCounter=b;b++)this["pointer"+b]&&this["pointer"+b].reset();this.currentPointers=0,this.game.stage.canvas.style.cursor="default",a===!0&&(this.onDown.dispose(),this.onUp.dispose(),this.onTap.dispose(),this.onHold.dispose(),this.onDown=new d.Signal,this.onUp=new d.Signal,this.onTap=new d.Signal,this.onHold=new d.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}},Object.defineProperty(d.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(d.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(d.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(d.Input.prototype,"worldX",{get:function(){return this.game.camera.view.x+this.x}}),Object.defineProperty(d.Input.prototype,"worldY",{get:function(){return this.game.camera.view.y+this.y}}),d.Key=function(a,b){this.game=a,this.isDown=!1,this.isUp=!1,this.altKey=!1,this.ctrlKey=!1,this.shiftKey=!1,this.timeDown=0,this.duration=0,this.timeUp=0,this.repeats=0,this.keyCode=b,this.onDown=new d.Signal,this.onUp=new d.Signal},d.Key.prototype={processKeyDown:function(a){this.altKey=a.altKey,this.ctrlKey=a.ctrlKey,this.shiftKey=a.shiftKey,this.isDown?(this.duration=a.timeStamp-this.timeDown,this.repeats++):(this.isDown=!0,this.isUp=!1,this.timeDown=a.timeStamp,this.duration=0,this.repeats=0,this.onDown.dispatch(this))},processKeyUp:function(a){this.isDown=!1,this.isUp=!0,this.timeUp=a.timeStamp,this.onUp.dispatch(this)},justPressed:function(a){return"undefined"==typeof a&&(a=250),this.isDown&&this.duration=this.game.input.holdRate&&((this.game.input.multiInputOverride==d.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==d.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==d.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){if(!this.game.input.pollLocked){if("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==d.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==d.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==d.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(null!==this.targetObject&&this.targetObject.isDragged===!0)return this.targetObject.update(this)===!1&&(this.targetObject=null),this;if(this._highestRenderOrderID=-1,this._highestRenderObject=null,this._highestInputPriorityID=-1,this.game.input.interactiveItems.total>0){var b=this.game.input.interactiveItems.next;do(b.pixelPerfect||b.priorityID>this._highestInputPriorityID||b.priorityID==this._highestInputPriorityID&&b.sprite.renderOrderID>this._highestRenderOrderID)&&b.checkPointerOver(this)&&(this._highestRenderOrderID=b.sprite.renderOrderID,this._highestInputPriorityID=b.priorityID,this._highestRenderObject=b),b=b.next;while(null!=b)}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)},stop:function(a){if(this._stateReset)return a.preventDefault(),void 0;if(this.timeUp=this.game.time.now,(this.game.input.multiInputOverride==d.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride==d.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride==d.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.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.total>0){var b=this.game.input.interactiveItems.next;do b&&b._releasedHandler(this),b=b.next;while(null!=b)}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}},Object.defineProperty(d.Pointer.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.now-this.timeDown}}),Object.defineProperty(d.Pointer.prototype,"worldX",{get:function(){return this.game.world.camera.x+this.x}}),Object.defineProperty(d.Pointer.prototype,"worldY",{get:function(){return this.game.world.camera.y+this.y}}),d.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},d.Touch.prototype={start:function(){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.renderer.view.addEventListener("touchstart",this._onTouchStart,!1),this.game.renderer.view.addEventListener("touchmove",this._onTouchMove,!1),this.game.renderer.view.addEventListener("touchend",this._onTouchEnd,!1),this.game.renderer.view.addEventListener("touchenter",this._onTouchEnter,!1),this.game.renderer.view.addEventListener("touchleave",this._onTouchLeave,!1),this.game.renderer.view.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;bc;c++)this._pointerData[c]={id:c,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 d.Point,this.enabled=!0,this.sprite.events&&null==this.sprite.events.onInputOver&&(this.sprite.events.onInputOver=new d.Signal,this.sprite.events.onInputOut=new d.Signal,this.sprite.events.onInputDown=new d.Signal,this.sprite.events.onInputUp=new d.Signal,this.sprite.events.onDragStart=new d.Signal,this.sprite.events.onDragStop=new d.Signal)}return this.sprite},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.enabled=!1,this.game.input.interactiveItems.remove(this),this.stop(),this.sprite=null)},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(this.enabled){if("undefined"!=typeof a)return this._pointerData[a].isOver;for(var b=0;10>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},checkPointerOver:function(a){return this.enabled===!1||this.sprite.visible===!1||this.sprite.group&&this.sprite.group.visible===!1?!1:(this.sprite.getLocalUnmodifiedPosition(this._tempPoint,a.x,a.y),this._tempPoint.x>=0&&this._tempPoint.x<=this.sprite.currentFrame.width&&this._tempPoint.y>=0&&this._tempPoint.y<=this.sprite.currentFrame.height?this.pixelPerfect?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0:void 0)},checkPixel:function(a,b){if(this.sprite.texture.baseTexture.source){this.game.input.hitContext.clearRect(0,0,1,1),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 c=this.game.input.hitContext.getImageData(0,0,1,1);if(c.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return this.enabled===!1||this.sprite.visible===!1||this.sprite.group&&this.sprite.group.visible===!1?(this._pointerOutHandler(a),!1):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},_pointerOverHandler:function(a){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.stage.canvas.style.cursor="pointer"),this.sprite.events.onInputOver.dispatch(this.sprite,a))},_pointerOutHandler:function(a){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.stage.canvas.style.cursor="default"),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut.dispatch(this.sprite,a)},_touchedHandler:function(a){return this._pointerData[a.id].isDown===!1&&this._pointerData[a.id].isOver===!0&&(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()),this.consumePointerEvent},_releasedHandler:function(a){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):this.useHandCursor&&(this.game.stage.canvas.style.cursor="default"),this.draggable&&this.isDragged&&this._draggedPointerID==a.id&&this.stopDrag(a))},updateDrag:function(a){return a.isUp?(this.stopDrag(a),!1):(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.snapX)*this.snapX,this.sprite.y=Math.round(this.sprite.y/this.snapY)*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){this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.x-a.x,this.sprite.y-a.y)):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.x=Math.round(this.sprite.x/this.snapX)*this.snapX,this.sprite.y=Math.round(this.sprite.y/this.snapY)*this.snapY),this.sprite.events.onDragStop.dispatch(this.sprite,a),this.sprite.events.onInputUp.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){"undefined"==typeof c&&(c=!0),"undefined"==typeof d&&(d=!1),this.snapX=a,this.snapY=b,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){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.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)}},d.Events=function(a){this.parent=a,this.onAddedToGroup=new d.Signal,this.onRemovedFromGroup=new d.Signal,this.onKilled=new d.Signal,this.onRevived=new d.Signal,this.onOutOfBounds=new d.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},d.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())}},d.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},d.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},sprite:function(a,b,c,d){return this.world.create(a,b,c,d)},child:function(a,b,c,d,e){return a.create(b,c,d,e)},tween:function(a){return this.game.tweens.create(a)},group:function(a,b){return new d.Group(this.game,a,b)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,c,e,f,g){return this.world.add(new d.TileSprite(this.game,a,b,c,e,f,g))},text:function(a,b,c,e){return this.world.add(new d.Text(this.game,a,b,c,e))},button:function(a,b,c,e,f,g,h,i){return this.world.add(new d.Button(this.game,a,b,c,e,f,g,h,i))},graphics:function(a,b){return this.world.add(new d.Graphics(this.game,a,b))},emitter:function(a,b,c){return this.game.particles.add(new d.Particles.Arcade.Emitter(this.game,a,b,c))},bitmapText:function(a,b,c,e){return this.world.add(new d.BitmapText(this.game,a,b,c,e))},tilemap:function(a){return new d.Tilemap(this.game,a)},tileset:function(a){return this.game.cache.getTileset(a)},tilemapLayer:function(a,b,c,e,f,g,h){return this.world.add(new d.TilemapLayer(this.game,a,b,c,e,f,g,h))},renderTexture:function(a,b,c){var e=new d.RenderTexture(this.game,a,b,c);return this.game.cache.addRenderTexture(a,e),e},bitmapData:function(a,b){return new d.BitmapData(this.game,a,b)},filter:function(a){var b=Array.prototype.splice.call(arguments,1),a=new d.Filter[a](this.game);return a.init.apply(a,b),a}},d.BitmapData=function(a,b,e){"undefined"==typeof b&&(b=256),"undefined"==typeof e&&(e=256),this.game=a,this.name="",this.width=b,this.height=e,this.canvas=d.Canvas.create(b,e),this.context=this.canvas.getContext("2d"),this.imageData=this.context.getImageData(0,0,b,e),this.pixels=this.imageData.data.buffer?this.imageData.data.buffer:this.imageData.data,this.baseTexture=new c.BaseTexture(this.canvas),this.texture=new c.Texture(this.baseTexture),this.textureFrame=new d.Frame(0,0,0,b,e,"bitmapData",a.rnd.uuid()),this.type=d.BITMAPDATA,this._dirty=!1},d.BitmapData.prototype={add:function(a){a.loadTexture(this)},addTo:function(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)},arc:function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=!1),this._dirty=!0,this.context.arc(a,b,c,d,e,f),this},arcTo:function(a,b,c,d,e){return this._dirty=!0,this.context.arcTo(a,b,c,d,e),this},beginFill:function(a){return this.fillStyle(a),this},beginLinearGradientFill:function(a,b,c,d,e,f){for(var g=this.createLinearGradient(c,d,e,f),h=0,i=a.length;i>h;h++)g.addColorStop(b[h],a[h]);return this.fillStyle(g),this},beginLinearGradientStroke:function(a,b,c,d,e,f){for(var g=this.createLinearGradient(c,d,e,f),h=0,i=a.length;i>h;h++)g.addColorStop(b[h],a[h]);return this.strokeStyle(g),this},beginRadialGradientStroke:function(a,b,c,d,e,f,g,h){for(var i=this.createRadialGradient(c,d,e,f,g,h),j=0,k=a.length;k>j;j++)i.addColorStop(b[j],a[j]);return this.strokeStyle(i),this},beginPath:function(){return this.context.beginPath(),this},beginStroke:function(a){return this.strokeStyle(a),this},bezierCurveTo:function(a,b,c,d,e,f){return this._dirty=!0,this.context.bezierCurveTo(a,b,c,d,e,f),this},circle:function(a,b,c){return this.arc(a,b,c,0,2*Math.PI),this},clearRect:function(a,b,c,d){return this._dirty=!0,this.context.clearRect(a,b,c,d),this},clip:function(){return this._dirty=!0,this.context.clip(),this},closePath:function(){return this._dirty=!0,this.context.closePath(),this},createLinearGradient:function(a,b,c,d){return this.context.createLinearGradient(a,b,c,d)},createRadialGradient:function(a,b,c,d,e,f){return this.context.createRadialGradient(a,b,c,d,e,f)},ellipse:function(a,b,c,d){var e=.5522848,f=c/2*e,g=d/2*e,h=a+c,i=b+d,j=a+c/2,k=b+d/2;return this.moveTo(a,k),this.bezierCurveTo(a,k-g,j-f,b,j,b),this.bezierCurveTo(j+f,b,h,k-g,h,k),this.bezierCurveTo(h,k+g,j+f,i,j,i),this.bezierCurveTo(j-f,i,a,k+g,a,k),this},fill:function(){return this._dirty=!0,this.context.fill(),this},fillRect:function(a,b,c,d){return this._dirty=!0,this.context.fillRect(a,b,c,d),this},fillStyle:function(a){return this.context.fillStyle=a,this},font:function(a){return this.context.font=a,this},globalAlpha:function(a){return this.context.globalAlpha=a,this},globalCompositeOperation:function(a){return this.context.globalCompositeOperation=a,this},lineCap:function(a){return this.context.lineCap=a,this},lineDashOffset:function(a){return this.context.lineDashOffset=a,this},lineJoin:function(a){return this.context.lineJoin=a,this},lineWidth:function(a){return this.context.lineWidth=a,this},miterLimit:function(a){return this.context.miterLimit=a,this},lineTo:function(a,b){return this._dirty=!0,this.context.lineTo(a,b),this},moveTo:function(a,b){return this.context.moveTo(a,b),this},quadraticCurveTo:function(a,b,c,d){return this._dirty=!0,this.context.quadraticCurveTo(a,b,c,d),this},rect:function(a,b,c,d){return this._dirty=!0,this.context.rect(a,b,c,d),this},restore:function(){return this._dirty=!0,this.context.restore(),this},rotate:function(a){return this._dirty=!0,this.context.rotate(a),this},setStrokeStyle:function(a,b,c,d,e){return"undefined"==typeof a&&(a=1),"undefined"==typeof b&&(b="butt"),"undefined"==typeof c&&(c="miter"),"undefined"==typeof d&&(d=10),e=!1,this.lineWidth(a),this.lineCap(b),this.lineJoin(c),this.miterLimit(d),this},save:function(){return this._dirty=!0,this.context.save(),this},scale:function(a,b){return this._dirty=!0,this.context.scale(a,b),this},scrollPathIntoView:function(){return this._dirty=!0,this.context.scrollPathIntoView(),this},stroke:function(){return this._dirty=!0,this.context.stroke(),this},strokeRect:function(a,b,c,d){return this._dirty=!0,this.context.strokeRect(a,b,c,d),this},strokeStyle:function(a){return this.context.strokeStyle=a,this},render:function(){this._dirty&&(this.game.renderType==d.WEBGL&&c.texturesToUpdate.push(this.baseTexture),this._dirty=!1)}},d.BitmapData.prototype.mt=d.BitmapData.prototype.moveTo,d.BitmapData.prototype.lt=d.BitmapData.prototype.lineTo,d.BitmapData.prototype.at=d.BitmapData.prototype.arcTo,d.BitmapData.prototype.bt=d.BitmapData.prototype.bezierCurveTo,d.BitmapData.prototype.qt=d.BitmapData.prototype.quadraticCurveTo,d.BitmapData.prototype.a=d.BitmapData.prototype.arc,d.BitmapData.prototype.r=d.BitmapData.prototype.rect,d.BitmapData.prototype.cp=d.BitmapData.prototype.closePath,d.BitmapData.prototype.c=d.BitmapData.prototype.clear,d.BitmapData.prototype.f=d.BitmapData.prototype.beginFill,d.BitmapData.prototype.lf=d.BitmapData.prototype.beginLinearGradientFill,d.BitmapData.prototype.rf=d.BitmapData.prototype.beginRadialGradientFill,d.BitmapData.prototype.ef=d.BitmapData.prototype.endFill,d.BitmapData.prototype.ss=d.BitmapData.prototype.setStrokeStyle,d.BitmapData.prototype.s=d.BitmapData.prototype.beginStroke,d.BitmapData.prototype.ls=d.BitmapData.prototype.beginLinearGradientStroke,d.BitmapData.prototype.rs=d.BitmapData.prototype.beginRadialGradientStroke,d.BitmapData.prototype.dr=d.BitmapData.prototype.rect,d.BitmapData.prototype.dc=d.BitmapData.prototype.circle,d.BitmapData.prototype.de=d.BitmapData.prototype.ellipse,d.Sprite=function(a,b,e,f,g){b=b||0,e=e||0,f=f||null,g=g||null,this.game=a,this.exists=!0,this.alive=!0,this.group=null,this.name="",this.type=d.SPRITE,this.renderOrderID=-1,this.lifespan=0,this.events=new d.Events(this),this.animations=new d.AnimationManager(this),this.input=new d.InputHandler(this),this.key=f,this.currentFrame=null,f instanceof d.RenderTexture?(c.Sprite.call(this,f),this.currentFrame=this.game.cache.getTextureFrame(f.name)):f instanceof d.BitmapData?(c.Sprite.call(this,f.texture,f.textureFrame),this.currentFrame=f.textureFrame):f instanceof c.Texture?(c.Sprite.call(this,f),this.currentFrame=g):(null===f||"undefined"==typeof f?(f="__default",this.key=f):"string"==typeof f&&this.game.cache.checkImageKey(f)===!1&&(f="__missing",this.key=f),c.Sprite.call(this,c.TextureCache[f]),this.game.cache.isSpriteSheet(f)?(this.animations.loadFrameData(this.game.cache.getFrameData(f)),null!==g&&("string"==typeof g?this.frameName=g:this.frame=g)):this.currentFrame=this.game.cache.getFrame(f)),this.textureRegion=new d.Rectangle(this.texture.frame.x,this.texture.frame.y,this.texture.frame.width,this.texture.frame.height),this.anchor=new d.Point,this.x=b,this.y=e,this.position.x=b,this.position.y=e,this.world=new d.Point(b,e),this.autoCull=!1,this.scale=new d.Point(1,1),this._cache={dirty:!1,a00:-1,a01:-1,a02:-1,a10:-1,a11:-1,a12:-1,id:-1,i01:-1,i10:-1,idi:-1,left:null,right:null,top:null,bottom:null,prevX:b,prevY:e,x:-1,y:-1,scaleX:1,scaleY:1,width:this.currentFrame.sourceSizeW,height:this.currentFrame.sourceSizeH,halfWidth:Math.floor(this.currentFrame.sourceSizeW/2),halfHeight:Math.floor(this.currentFrame.sourceSizeH/2),calcWidth:-1,calcHeight:-1,frameID:-1,frameWidth:this.currentFrame.width,frameHeight:this.currentFrame.height,cameraVisible:!0,cropX:0,cropY:0,cropWidth:this.currentFrame.sourceSizeW,cropHeight:this.currentFrame.sourceSizeH},this.offset=new d.Point,this.center=new d.Point(b+Math.floor(this._cache.width/2),e+Math.floor(this._cache.height/2)),this.topLeft=new d.Point(b,e),this.topRight=new d.Point(b+this._cache.width,e),this.bottomRight=new d.Point(b+this._cache.width,e+this._cache.height),this.bottomLeft=new d.Point(b,e+this._cache.height),this.bounds=new d.Rectangle(b,e,this._cache.width,this._cache.height),this.body=new d.Physics.Arcade.Body(this),this.health=1,this.inWorld=d.Rectangle.intersects(this.bounds,this.game.world.bounds),this.inWorldThreshold=0,this.outOfBoundsKill=!1,this._outOfBoundsFired=!1,this.fixedToCamera=!1,this.cameraOffset=new d.Point,this.crop=new d.Rectangle(0,0,this._cache.width,this._cache.height),this.cropEnabled=!1,this.updateCache(),this.updateBounds() +},d.Sprite.prototype=Object.create(c.Sprite.prototype),d.Sprite.prototype.constructor=d.Sprite,d.Sprite.prototype.preUpdate=function(){return!this.exists||this.group&&!this.group.exists?(this.renderOrderID=-1,!1):this.lifespan>0&&(this.lifespan-=this.game.time.elapsed,this.lifespan<=0)?(this.kill(),!1):(this._cache.dirty=!1,this.visible&&(this.renderOrderID=this.game.world.currentRenderOrderID++),this.updateCache(),this.updateAnimation(),this.updateCrop(),(this._cache.dirty||this.world.x!==this._cache.prevX||this.world.y!==this._cache.prevY)&&this.updateBounds(),this.body&&this.body.preUpdate(),!0)},d.Sprite.prototype.updateCache=function(){this._cache.prevX=this.world.x,this._cache.prevY=this.world.y,this.fixedToCamera&&(this.x=this.game.camera.view.x+this.cameraOffset.x,this.y=this.game.camera.view.y+this.cameraOffset.y),this.world.setTo(this.game.camera.x+this.worldTransform[2],this.game.camera.y+this.worldTransform[5]),(this.worldTransform[1]!=this._cache.i01||this.worldTransform[3]!=this._cache.i10||this.worldTransform[0]!=this._cache.a00||this.worldTransform[41]!=this._cache.a11)&&(this._cache.a00=this.worldTransform[0],this._cache.a01=this.worldTransform[1],this._cache.a10=this.worldTransform[3],this._cache.a11=this.worldTransform[4],this._cache.i01=this.worldTransform[1],this._cache.i10=this.worldTransform[3],this._cache.scaleX=Math.sqrt(this._cache.a00*this._cache.a00+this._cache.a01*this._cache.a01),this._cache.scaleY=Math.sqrt(this._cache.a10*this._cache.a10+this._cache.a11*this._cache.a11),this._cache.a01*=-1,this._cache.a10*=-1,this._cache.id=1/(this._cache.a00*this._cache.a11+this._cache.a01*-this._cache.a10),this._cache.idi=1/(this._cache.a00*this._cache.a11+this._cache.i01*-this._cache.i10),this._cache.dirty=!0),this._cache.a02=this.worldTransform[2],this._cache.a12=this.worldTransform[5]},d.Sprite.prototype.updateAnimation=function(){(this.animations.update()||this.currentFrame&&this.currentFrame.uuid!=this._cache.frameID)&&(this._cache.frameID=this.currentFrame.uuid,this._cache.frameWidth=this.texture.frame.width,this._cache.frameHeight=this.texture.frame.height,this._cache.width=this.currentFrame.width,this._cache.height=this.currentFrame.height,this._cache.halfWidth=Math.floor(this._cache.width/2),this._cache.halfHeight=Math.floor(this._cache.height/2),this._cache.dirty=!0)},d.Sprite.prototype.updateCrop=function(){!this.cropEnabled||this.crop.width==this._cache.cropWidth&&this.crop.height==this._cache.cropHeight&&this.crop.x==this._cache.cropX&&this.crop.y==this._cache.cropY||(this.crop.floorAll(),this._cache.cropX=this.crop.x,this._cache.cropY=this.crop.y,this._cache.cropWidth=this.crop.width,this._cache.cropHeight=this.crop.height,this.texture.frame=this.crop,this.texture.width=this.crop.width,this.texture.height=this.crop.height,this.texture.updateFrame=!0,c.Texture.frameUpdates.push(this.texture))},d.Sprite.prototype.updateBounds=function(){this.offset.setTo(this._cache.a02-this.anchor.x*this.width,this._cache.a12-this.anchor.y*this.height),this.getLocalPosition(this.center,this.offset.x+this.width/2,this.offset.y+this.height/2),this.getLocalPosition(this.topLeft,this.offset.x,this.offset.y),this.getLocalPosition(this.topRight,this.offset.x+this.width,this.offset.y),this.getLocalPosition(this.bottomLeft,this.offset.x,this.offset.y+this.height),this.getLocalPosition(this.bottomRight,this.offset.x+this.width,this.offset.y+this.height),this._cache.left=d.Math.min(this.topLeft.x,this.topRight.x,this.bottomLeft.x,this.bottomRight.x),this._cache.right=d.Math.max(this.topLeft.x,this.topRight.x,this.bottomLeft.x,this.bottomRight.x),this._cache.top=d.Math.min(this.topLeft.y,this.topRight.y,this.bottomLeft.y,this.bottomRight.y),this._cache.bottom=d.Math.max(this.topLeft.y,this.topRight.y,this.bottomLeft.y,this.bottomRight.y),this.bounds.setTo(this._cache.left,this._cache.top,this._cache.right-this._cache.left,this._cache.bottom-this._cache.top),this.updateFrame=!0,this.inWorld===!1?(this.inWorld=d.Rectangle.intersects(this.bounds,this.game.world.bounds,this.inWorldThreshold),this.inWorld&&(this._outOfBoundsFired=!1)):(this.inWorld=d.Rectangle.intersects(this.bounds,this.game.world.bounds,this.inWorldThreshold),this.inWorld===!1&&(this.events.onOutOfBounds.dispatch(this),this._outOfBoundsFired=!0,this.outOfBoundsKill&&this.kill())),this._cache.cameraVisible=d.Rectangle.intersects(this.game.world.camera.screenView,this.bounds,0),this.autoCull&&(this.renderable=this._cache.cameraVisible),this.body&&this.body.updateBounds(this.center.x,this.center.y,this._cache.scaleX,this._cache.scaleY)},d.Sprite.prototype.getLocalPosition=function(a,b,c){return a.x=(this._cache.a11*this._cache.id*b+-this._cache.a01*this._cache.id*c+(this._cache.a12*this._cache.a01-this._cache.a02*this._cache.a11)*this._cache.id)*this.scale.x+this._cache.a02,a.y=(this._cache.a00*this._cache.id*c+-this._cache.a10*this._cache.id*b+(-this._cache.a12*this._cache.a00+this._cache.a02*this._cache.a10)*this._cache.id)*this.scale.y+this._cache.a12,a},d.Sprite.prototype.getLocalUnmodifiedPosition=function(a,b,c){return a.x=this._cache.a11*this._cache.idi*b+-this._cache.i01*this._cache.idi*c+(this._cache.a12*this._cache.i01-this._cache.a02*this._cache.a11)*this._cache.idi+this.anchor.x*this._cache.width,a.y=this._cache.a00*this._cache.idi*c+-this._cache.i10*this._cache.idi*b+(-this._cache.a12*this._cache.a00+this._cache.a02*this._cache.i10)*this._cache.idi+this.anchor.y*this._cache.height,a},d.Sprite.prototype.resetCrop=function(){this.crop=new d.Rectangle(0,0,this._cache.width,this._cache.height),this.texture.setFrame(this.crop),this.cropEnabled=!1},d.Sprite.prototype.postUpdate=function(){this.key instanceof d.BitmapData&&this.key._dirty&&this.key.render(),this.exists&&(this.body&&this.body.postUpdate(),this.fixedToCamera?(this._cache.x=this.game.camera.view.x+this.cameraOffset.x,this._cache.y=this.game.camera.view.y+this.cameraOffset.y):(this._cache.x=this.x,this._cache.y=this.y),this.world.setTo(this.game.camera.x+this.worldTransform[2],this.game.camera.y+this.worldTransform[5]),this.position.x=this._cache.x,this.position.y=this._cache.y)},d.Sprite.prototype.loadTexture=function(a,b){this.key=a,a instanceof d.RenderTexture?this.currentFrame=this.game.cache.getTextureFrame(a.name):a instanceof d.BitmapData?(this.setTexture(a.texture),this.currentFrame=a.textureFrame):a instanceof c.Texture?this.currentFrame=b:(("undefined"==typeof a||this.game.cache.checkImageKey(a)===!1)&&(a="__default",this.key=a),this.game.cache.isSpriteSheet(a)?(this.animations.loadFrameData(this.game.cache.getFrameData(a)),"undefined"!=typeof b&&("string"==typeof b?this.frameName=b:this.frame=b)):(this.currentFrame=this.game.cache.getFrame(a),this.setTexture(c.TextureCache[a])))},d.Sprite.prototype.centerOn=function(a,b){return this.x=a+(this.x-this.center.x),this.y=b+(this.y-this.center.y),this},d.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},d.Sprite.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled.dispatch(this),this},d.Sprite.prototype.destroy=function(){this.group&&this.group.remove(this),this.input&&this.input.destroy(),this.events&&this.events.destroy(),this.animations&&this.animations.destroy(),this.alive=!1,this.exists=!1,this.visible=!1,this.game=null},d.Sprite.prototype.damage=function(a){return this.alive&&(this.health-=a,this.health<0&&this.kill()),this},d.Sprite.prototype.reset=function(a,b,c){return"undefined"==typeof c&&(c=1),this.x=a,this.y=b,this.position.x=this.x,this.position.y=this.y,this.alive=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this._outOfBoundsFired=!1,this.health=c,this.body&&this.body.reset(),this},d.Sprite.prototype.bringToTop=function(){return this.group?this.group.bringToTop(this):this.game.world.bringToTop(this),this},d.Sprite.prototype.play=function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0},Object.defineProperty(d.Sprite.prototype,"angle",{get:function(){return d.Math.wrapAngle(d.Math.radToDeg(this.rotation))},set:function(a){this.rotation=d.Math.degToRad(d.Math.wrapAngle(a))}}),Object.defineProperty(d.Sprite.prototype,"frame",{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}}),Object.defineProperty(d.Sprite.prototype,"frameName",{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}),Object.defineProperty(d.Sprite.prototype,"inCamera",{get:function(){return this._cache.cameraVisible}}),Object.defineProperty(d.Sprite.prototype,"width",{get:function(){return this.scale.x*this.currentFrame.width},set:function(a){this.scale.x=a/this.currentFrame.width,this._cache.scaleX=a/this.currentFrame.width,this._width=a}}),Object.defineProperty(d.Sprite.prototype,"height",{get:function(){return this.scale.y*this.currentFrame.height},set:function(a){this.scale.y=a/this.currentFrame.height,this._cache.scaleY=a/this.currentFrame.height,this._height=a}}),Object.defineProperty(d.Sprite.prototype,"inputEnabled",{get:function(){return this.input.enabled},set:function(a){console.log("inputEnabled",a,this.input),a?this.input.enabled===!1&&this.input.start():this.input.enabled&&this.input.stop()}}),d.TileSprite=function(a,b,e,f,g,h,i){b=b||0,e=e||0,f=f||256,g=g||256,h=h||null,i=i||null,d.Sprite.call(this,a,b,e,h,i),this.texture=c.TextureCache[h],c.TilingSprite.call(this,this.texture,f,g),this.type=d.TILESPRITE,this.tileScale=new d.Point(1,1),this.tilePosition=new d.Point(0,0)},d.TileSprite.prototype=d.Utils.extend(!0,c.TilingSprite.prototype,d.Sprite.prototype),d.TileSprite.prototype.constructor=d.TileSprite,d.Text=function(a,b,e,f,g){b=b||0,e=e||0,f=f||"",g=g||"",this.game=a,this.exists=!0,this.alive=!0,this.group=null,this.name="",this.type=d.TEXT,this._text=f,this._style=g,c.Text.call(this,f,g),this.position.x=this.x=b,this.position.y=this.y=e,this.anchor=new d.Point,this.scale=new d.Point(1,1),this._cache={dirty:!1,a00:1,a01:0,a02:b,a10:0,a11:1,a12:e,id:1,x:-1,y:-1,scaleX:1,scaleY:1},this._cache.x=this.x,this._cache.y=this.y,this.renderable=!0},d.Text.prototype=Object.create(c.Text.prototype),d.Text.prototype.constructor=d.Text,d.Text.prototype.update=function(){this.exists&&(this._cache.dirty=!1,this._cache.x=this.x,this._cache.y=this.y,(this.position.x!=this._cache.x||this.position.y!=this._cache.y)&&(this.position.x=this._cache.x,this.position.y=this._cache.y,this._cache.dirty=!0))},d.Text.prototype.destroy=function(){this.group&&this.group.remove(this),this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null),this.exists=!1,this.group=null},Object.defineProperty(d.Text.prototype,"angle",{get:function(){return d.Math.radToDeg(this.rotation)},set:function(a){this.rotation=d.Math.degToRad(a)}}),Object.defineProperty(d.Text.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(d.Text.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),Object.defineProperty(d.Text.prototype,"content",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a,this.setText(a))}}),Object.defineProperty(d.Text.prototype,"font",{get:function(){return this._style},set:function(a){a!==this._style&&(this._style=a,this.setStyle(a))}}),d.BitmapText=function(a,b,e,f,g){b=b||0,e=e||0,f=f||"",g=g||"",this.game=a,this.exists=!0,this.alive=!0,this.group=null,this.name="",this.type=d.BITMAPTEXT,c.BitmapText.call(this,f,g),this.position.x=b,this.position.y=e,this.anchor=new d.Point,this.scale=new d.Point(1,1),this._cache={dirty:!1,a00:1,a01:0,a02:b,a10:0,a11:1,a12:e,id:1,x:-1,y:-1,scaleX:1,scaleY:1},this._cache.x=this.x,this._cache.y=this.y,this.renderable=!0},d.BitmapText.prototype=Object.create(c.BitmapText.prototype),d.BitmapText.prototype.constructor=d.BitmapText,d.BitmapText.prototype.update=function(){this.exists&&(this._cache.dirty=!1,this._cache.x=this.x,this._cache.y=this.y,(this.position.x!=this._cache.x||this.position.y!=this._cache.y)&&(this.position.x=this._cache.x,this.position.y=this._cache.y,this._cache.dirty=!0),this.pivot.x=this.anchor.x*this.width,this.pivot.y=this.anchor.y*this.height)},d.BitmapText.prototype.destroy=function(){this.group&&this.group.remove(this),this.canvas&&this.canvas.parentNode?this.canvas.parentNode.removeChild(this.canvas):(this.canvas=null,this.context=null),this.exists=!1,this.group=null},Object.defineProperty(d.BitmapText.prototype,"angle",{get:function(){return d.Math.radToDeg(this.rotation)},set:function(a){this.rotation=d.Math.degToRad(a)}}),Object.defineProperty(d.BitmapText.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(d.BitmapText.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),d.Button=function(a,b,c,e,f,g,h,i,j){b=b||0,c=c||0,e=e||null,f=f||null,g=g||this,d.Sprite.call(this,a,b,c,e,i),this.type=d.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 d.Signal,this.onInputOut=new d.Signal,this.onInputDown=new d.Signal,this.onInputUp=new d.Signal,this.freezeFrames=!1,this.forceOut=!0,this.setFrames(h,i,j),null!==f&&this.onInputUp.add(f,g),this.input.start(0,!0),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)},d.Button.prototype=Object.create(d.Sprite.prototype),d.Button.prototype=d.Utils.extend(!0,d.Button.prototype,d.Sprite.prototype,c.Sprite.prototype),d.Button.prototype.constructor=d.Button,d.Button.prototype.setFrames=function(a,b,c){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._onUpFrameName=b,this.input.pointerOver()===!1&&(this.frameName=b)):(this._onOutFrameID=b,this._onUpFrameID=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)))},d.Button.prototype.setSounds=function(a,b,c,d,e,f,g,h){this.setOverSound(a,b),this.setOutSound(e,f),this.setUpSound(g,h),this.setDownSound(c,d)},d.Button.prototype.setOverSound=function(a,b){this.onOverSound=null,this.onOverSoundMarker="",a instanceof d.Sound&&(this.onOverSound=a),"string"==typeof b&&(this.onOverSoundMarker=b)},d.Button.prototype.setOutSound=function(a,b){this.onOutSound=null,this.onOutSoundMarker="",a instanceof d.Sound&&(this.onOutSound=a),"string"==typeof b&&(this.onOutSoundMarker=b)},d.Button.prototype.setUpSound=function(a,b){this.onUpSound=null,this.onUpSoundMarker="",a instanceof d.Sound&&(this.onUpSound=a),"string"==typeof b&&(this.onUpSoundMarker=b)},d.Button.prototype.setDownSound=function(a,b){this.onDownSound=null,this.onDownSoundMarker="",a instanceof d.Sound&&(this.onDownSound=a),"string"==typeof b&&(this.onDownSoundMarker=b)},d.Button.prototype.onInputOverHandler=function(a){this.freezeFrames===!1&&(null!=this._onOverFrameName?this.frameName=this._onOverFrameName:null!=this._onOverFrameID&&(this.frame=this._onOverFrameID)),this.onOverSound&&this.onOverSound.play(this.onOverSoundMarker),this.onInputOver&&this.onInputOver.dispatch(this,a)},d.Button.prototype.onInputOutHandler=function(a){this.freezeFrames===!1&&(null!=this._onOutFrameName?this.frameName=this._onOutFrameName:null!=this._onOutFrameID&&(this.frame=this._onOutFrameID)),this.onOutSound&&this.onOutSound.play(this.onOutSoundMarker),this.onInputOut&&this.onInputOut.dispatch(this,a)},d.Button.prototype.onInputDownHandler=function(a){this.freezeFrames===!1&&(null!=this._onDownFrameName?this.frameName=this._onDownFrameName:null!=this._onDownFrameID&&(this.frame=this._onDownFrameID)),this.onDownSound&&this.onDownSound.play(this.onDownSoundMarker),this.onInputDown&&this.onInputDown.dispatch(this,a)},d.Button.prototype.onInputUpHandler=function(a){this.freezeFrames===!1&&(null!=this._onUpFrameName?this.frameName=this._onUpFrameName:null!=this._onUpFrameID&&(this.frame=this._onUpFrameID)),this.onUpSound&&this.onUpSound.play(this.onUpSoundMarker),this.forceOut&&this.freezeFrames===!1&&(null!=this._onOutFrameName?this.frameName=this._onOutFrameName:null!=this._onOutFrameID&&(this.frame=this._onOutFrameID)),this.onInputUp&&this.onInputUp.dispatch(this,a)},d.Graphics=function(a,b,e){this.game=a,c.Graphics.call(this),this.type=d.GRAPHICS,this.position.x=b,this.position.y=e},d.Graphics.prototype=Object.create(c.Graphics.prototype),d.Graphics.prototype.constructor=d.Graphics,d.Graphics.prototype.destroy=function(){this.clear(),this.group&&this.group.remove(this),this.game=null},d.Graphics.prototype.drawPolygon=function(a){this.moveTo(a.points[0].x,a.points[0].y);for(var b=1;bh;h++)f[h].updateTransform();var j=a.__renderGroup;j?a==j.root?j.render(this.projection,this.glFramebuffer):j.renderSpecific(a,this.projection,this.glFramebuffer):(this.renderGroup||(this.renderGroup=new c.WebGLRenderGroup(e)),this.renderGroup.setRenderable(a),this.renderGroup.render(this.projection,this.glFramebuffer)),a.worldTransform=g},d.RenderTexture.prototype.renderCanvas=function(a,b,d){var e=a.children;a.worldTransform=c.mat3.create(),b&&(a.worldTransform[2]=b.x,a.worldTransform[5]=b.y);for(var f=0,g=e.length;g>f;f++)e[f].updateTransform();d&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(a),this.renderer.context.setTransform(1,0,0,1,0,0)},d.Canvas={create:function(a,b){a=a||256,b=b||256;var c=document.createElement("canvas");return c.width=a,c.height=b,c.style.display="block",c},getOffset:function(a,b){b=b||new d.Point;var c=a.getBoundingClientRect(),e=a.clientTop||document.body.clientTop||0,f=a.clientLeft||document.body.clientLeft||0,g=window.pageYOffset||a.scrollTop||document.body.scrollTop,h=window.pageXOffset||a.scrollLeft||document.body.scrollLeft;return b.x=c.left+h-f,b.y=c.top+g-e,b},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),c&&(d.style.overflow="hidden")),d||(d=document.body),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"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},d.StageScaleMode=function(a,b,c){this.game=a,this.width=b,this.height=c,this.minWidth=null,this.maxWidth=null,this.minHeight=null,this.maxHeight=null,this._startHeight=0,this.forceLandscape=!1,this.forcePortrait=!1,this.incorrectOrientation=!1,this.pageAlignHorizontally=!1,this.pageAlignVertically=!1,this._width=0,this._height=0,this.maxIterations=5,this.orientationSprite=null,this.enterLandscape=new d.Signal,this.enterPortrait=new d.Signal,this.enterIncorrectOrientation=new d.Signal,this.leaveIncorrectOrientation=new d.Signal,this.hasResized=new d.Signal,this.orientation=window.orientation?window.orientation:window.outerWidth>window.outerHeight?90:0,this.scaleFactor=new d.Point(1,1),this.scaleFactorInversed=new d.Point(1,1),this.margin=new d.Point(0,0),this.aspectRatio=0,this.event=null;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)},d.StageScaleMode.EXACT_FIT=0,d.StageScaleMode.NO_SCALE=1,d.StageScaleMode.SHOW_ALL=2,d.StageScaleMode.prototype={startFullScreen:function(a){if(!this.isFullScreen){"undefined"!=typeof a&&d.Canvas.setSmoothingEnabled(this.game.context,a);var b=this.game.canvas;this._width=this.width,this._height=this.height,console.log("startFullScreen",this._width,this._height),b.requestFullScreen?b.requestFullScreen():b.mozRequestFullScreen?b.mozRequestFullScreen():b.webkitRequestFullScreen&&b.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}},stopFullScreen:function(){document.cancelFullScreen?document.cancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen()},fullScreenChange:function(a){this.event=a,this.isFullScreen?(this.game.stage.canvas.style.width="100%",this.game.stage.canvas.style.height="100%",this.setMaximum(),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.game.stage.canvas.style.width=this.game.width+"px",this.game.stage.canvas.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)},forceOrientation:function(a,b,d){"undefined"==typeof b&&(b=!1),this.forceLandscape=a,this.forcePortrait=b,"undefined"!=typeof d&&((null==d||this.game.cache.checkImageKey(d)===!1)&&(d="__default"),this.orientationSprite=new c.Sprite(c.TextureCache[d]),this.orientationSprite.anchor.x=.5,this.orientationSprite.anchor.y=.5,this.orientationSprite.position.x=this.game.width/2,this.orientationSprite.position.y=this.game.height/2,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._stage.addChild(this.orientationSprite))},checkOrientationState:function(){this.incorrectOrientation?(this.forceLandscape&&window.innerWidth>window.innerHeight||this.forcePortrait&&window.innerHeight>window.innerWidth)&&(this.game.paused=!1,this.incorrectOrientation=!1,this.leaveIncorrectOrientation.dispatch(),this.orientationSprite&&(this.orientationSprite.visible=!1,this.game.world.visible=!0),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.game.stage.scaleMode!==d.StageScaleMode.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.game.stage.scaleMode==d.StageScaleMode.EXACT_FIT?this.setExactFit():this.game.stage.scaleMode==d.StageScaleMode.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}},Object.defineProperty(d.StageScaleMode.prototype,"isFullScreen",{get:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement}}),Object.defineProperty(d.StageScaleMode.prototype,"isPortrait",{get:function(){return 0===this.orientation||180==this.orientation}}),Object.defineProperty(d.StageScaleMode.prototype,"isLandscape",{get:function(){return 90===this.orientation||-90===this.orientation}}),d.Device=function(){this.patchAndroidClearRectBug=!1,this.desktop=!1,this.iOS=!1,this.cocoonJS=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!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.arora=!1,this.chrome=!1,this.epiphany=!1,this.firefox=!1,this.ie=!1,this.ieVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!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._checkAudio(),this._checkBrowser(),this._checkCSS3D(),this._checkDevice(),this._checkFeatures(),this._checkOS() +},d.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),(this.windows||this.macOS||this.linux)&&(this.desktop=!0)},_checkFeatures:function(){this.canvas=!!window.CanvasRenderingContext2D;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},_checkBrowser:function(){var a=navigator.userAgent;/Arora/.test(a)?this.arora=!0:/Chrome/.test(a)?this.chrome=!0:/Epiphany/.test(a)?this.epiphany=!0:/Firefox/.test(a)?this.firefox=!0:/Mobile Safari/.test(a)?this.mobileSafari=!0:/MSIE (\d+\.\d+);/.test(a)?(this.ie=!0,this.ieVersion=parseInt(RegExp.$1,10)):/Midori/.test(a)?this.midori=!0:/Opera/.test(a)?this.opera=!0:/Safari/.test(a)&&(this.safari=!0),navigator.standalone&&(this.webApp=!0),navigator.isCocoonJS&&(this.cocoonJS=!0)},_checkAudio:function(){this.audioData=!!window.Audio,this.webAudio=!(!window.webkitAudioContext&&!window.AudioContext);var a=document.createElement("audio"),b=!1;try{(b=!!a.canPlayType)&&(a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,"")&&(this.ogg=!0),a.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,"")&&(this.opus=!0),a.canPlayType("audio/mpeg;").replace(/^no$/,"")&&(this.mp3=!0),a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,"")&&(this.wav=!0),(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;").replace(/^no$/,""))&&(this.m4a=!0),a.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")&&(this.webm=!0))}catch(c){}},_checkDevice:function(){this.pixelRatio=window.devicePixelRatio||1,this.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),this.iPhone4=2==this.pixelRatio&&this.iPhone,this.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?(this.littleEndian=new Int8Array(new Int16Array([1]).buffer)[0]>0,this.typedArray=!0):(this.littleEndian=!1,this.typedArray=!1)},_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.length>0):!1}},d.RequestAnimationFrame=function(a){this.game=a,this.isRunning=!1;for(var b=["ms","moz","webkit","o"],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*(0|2097152*this.rnd.apply(this))},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(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|4&3*a?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*a.length)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},d.Math={PI2:2*Math.PI,fuzzyEqual:function(a,b,c){return"undefined"==typeof c&&(c=1e-4),Math.abs(a-b)a},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)},normalizeAngle:function(a,b){"undefined"==typeof b&&(b=!0);var c=b?Math.PI:180;return this.wrap(a,-c,c)},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},max:function(){for(var a=1,b=0,c=arguments.length;c>a;a++)arguments[b]a;a++)arguments[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},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: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)},distanceRounded:function(a,b,c,e){return Math.round(d.Math.distance(a,b,c,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}}()},d.QuadTree=function(a,b,c,d,e,f,g,h){this.physicsManager=a,this.ID=a.quadTreeID,a.quadTreeID++,this.maxObjects=f||10,this.maxLevels=g||4,this.level=h||0,this.bounds={x:Math.round(b),y:Math.round(c),width:d,height:e,subWidth:Math.floor(d/2),subHeight:Math.floor(e/2),right:Math.round(b)+Math.floor(d/2),bottom:Math.round(c)+Math.floor(e/2)},this.objects=[],this.nodes=[]},d.QuadTree.prototype={split:function(){this.level++,this.nodes[0]=new d.QuadTree(this.physicsManager,this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[1]=new d.QuadTree(this.physicsManager,this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[2]=new d.QuadTree(this.physicsManager,this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level),this.nodes[3]=new d.QuadTree(this.physicsManager,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 this.nodes[b].insert(a),void 0;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;return a.body.quadTreeIndex=this.getIndex(a.body),a.body.quadTreeIDs.push(this.ID),this.nodes[0]&&(-1!==a.body.quadTreeIndex?b=b.concat(this.nodes[a.body.quadTreeIndex].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=[];for(var a=0,b=this.nodes.length;b>a;a++)this.nodes[a]&&(this.nodes[a].clear(),delete this.nodes[a])}},d.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},d.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,b){return"undefined"==typeof b&&(b=!1),b?d.Math.distanceRound(this.x,this.y,a.x,a.y):d.Math.distance(this.x,this.y,a.x,a.y)},clone:function(a){return"undefined"==typeof a&&(a=new d.Circle),a.setTo(this.x,this.y,this.diameter)},contains:function(a,b){return d.Circle.contains(this,a,b)},circumferencePoint:function(a,b,c){return d.Circle.circumferencePoint(this,a,b,c)},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+")}]"}},Object.defineProperty(d.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(d.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(d.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(d.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(d.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(d.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),d.Circle.contains=function(a,b,c){if(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},d.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},d.Circle.intersects=function(a,b){return d.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},d.Circle.circumferencePoint=function(a,b,c,e){return"undefined"==typeof c&&(c=!1),"undefined"==typeof e&&(e=new d.Point),c===!0&&(b=d.Math.radToDeg(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},d.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},d.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b},d.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,this.y=b,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,b){return this.x=d.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=d.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=d.Math.clamp(this.x,a,b),this.y=d.Math.clamp(this.y,a,b),this},clone:function(a){return"undefined"==typeof a&&(a=new d.Point),a.setTo(this.x,this.y)},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return d.Point.distance(this,a,b)},equals:function(a){return a.x==this.x&&a.y==this.y},rotate:function(a,b,c,e,f){return d.Point.rotate(this,a,b,c,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+")}]"}},d.Point.add=function(a,b,c){return"undefined"==typeof c&&(c=new d.Point),c.x=a.x+b.x,c.y=a.y+b.y,c},d.Point.subtract=function(a,b,c){return"undefined"==typeof c&&(c=new d.Point),c.x=a.x-b.x,c.y=a.y-b.y,c},d.Point.multiply=function(a,b,c){return"undefined"==typeof c&&(c=new d.Point),c.x=a.x*b.x,c.y=a.y*b.y,c},d.Point.divide=function(a,b,c){return"undefined"==typeof c&&(c=new d.Point),c.x=a.x/b.x,c.y=a.y/b.y,c},d.Point.equals=function(a,b){return a.x==b.x&&a.y==b.y},d.Point.distance=function(a,b,c){return"undefined"==typeof c&&(c=!1),c?d.Math.distanceRound(a.x,a.y,b.x,b.y):d.Math.distance(a.x,a.y,b.x,b.y)},d.Point.rotate=function(a,b,c,e,f,g){return f=f||!1,g=g||null,f&&(e=d.Math.degToRad(e)),null===g&&(g=Math.sqrt((b-a.x)*(b-a.x)+(c-a.y)*(c-a.y))),a.setTo(b+g*Math.cos(e),c+g*Math.sin(e))},d.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},d.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,b){return d.Rectangle.inflate(this,a,b)},size:function(a){return d.Rectangle.size(this,a)},clone:function(a){return d.Rectangle.clone(this,a)},contains:function(a,b){return d.Rectangle.contains(this,a,b)},containsRect:function(a){return d.Rectangle.containsRect(this,a)},equals:function(a){return d.Rectangle.equals(this,a)},intersection:function(a,b){return d.Rectangle.intersection(this,a,b)},intersects:function(a,b){return d.Rectangle.intersects(this,a,b)},intersectsRaw:function(a,b,c,e,f){return d.Rectangle.intersectsRaw(this,a,b,c,e,f)},union:function(a,b){return d.Rectangle.union(this,a,b)},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(d.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(d.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(d.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:this.y-a}}),Object.defineProperty(d.Rectangle.prototype,"bottomRight",{get:function(){return new d.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(d.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(d.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:this.x+a}}),Object.defineProperty(d.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(d.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(d.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(d.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(d.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(d.Rectangle.prototype,"topLeft",{get:function(){return new d.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(d.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),d.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},d.Rectangle.inflatePoint=function(a,b){return d.Rectangle.inflate(a,b.x,b.y)},d.Rectangle.size=function(a,b){return"undefined"==typeof b&&(b=new d.Point),b.setTo(a.width,a.height)},d.Rectangle.clone=function(a,b){return"undefined"==typeof b&&(b=new d.Rectangle),b.setTo(a.x,a.y,a.width,a.height)},d.Rectangle.contains=function(a,b,c){return b>=a.x&&b<=a.right&&c>=a.y&&c<=a.bottom},d.Rectangle.containsRaw=function(a,b,c,d,e,f){return e>=a&&a+c>=e&&f>=b&&b+d>=f},d.Rectangle.containsPoint=function(a,b){return d.Rectangle.contains(a,b.x,b.y)},d.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},d.Rectangle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.width==b.width&&a.height==b.height},d.Rectangle.intersection=function(a,b,c){return c=c||new d.Rectangle,d.Rectangle.intersects(a,b)&&(c.x=Math.max(a.x,b.x),c.y=Math.max(a.y,b.y),c.width=Math.min(a.right,b.right)-c.x,c.height=Math.min(a.bottom,b.bottom)-c.y),c},d.Rectangle.intersects=function(a,b){return a.xa.right+f||ca.bottom+f||e1){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," "))}},d.TweenManager=function(a){this.game=a,this._tweens=[],this._add=[],this.game.onPause.add(this.pauseAll,this),this.game.onResume.add(this.resumeAll,this)},d.TweenManager.prototype={REVISION:"11dev",getAll:function(){return this._tweens},removeAll:function(){this._tweens=[]},add:function(a){this._add.push(a)},create:function(a){return new d.Tween(a,this.game)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b&&(this._tweens[b].pendingDelete=!0)},update:function(){if(0===this._tweens.length&&0===this._add.length)return!1;for(var a=0,b=this._tweens.length;b>a;)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()}},d.Tween=function(a,b){this._object=a,this.game=b,this._manager=this.game.tweens,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=d.Easing.Linear.None,this._interpolationFunction=d.Math.linearInterpolation,this._chainedTweens=[],this._onStartCallback=null,this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onCompleteCallback=null,this._pausedTime=0,this.pendingDelete=!1;for(var c in a)this._valuesStart[c]=parseFloat(a[c],10);this.onStart=new d.Signal,this.onComplete=new d.Signal,this.isRunning=!1},d.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.onStart.dispatch(this._object),this.isRunning=!0,this._onStartCallbackFired=!1,this._startTime=this.game.time.now+this._delayTime;for(var a in this._valuesEnd){if(this._valuesEnd[a]instanceof Array){if(0===this._valuesEnd[a].length)continue;this._valuesEnd[a]=[this._object[a]].concat(this._valuesEnd[a])}this._valuesStart[a]=this._object[a],this._valuesStart[a]instanceof Array==!1&&(this._valuesStart[a]*=1),this._valuesStartRepeat[a]=this._valuesStart[a]||0}return this}},stop:function(){return this.isRunning=!1,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},onStartCallback:function(a){return this._onStartCallback=a,this},onUpdateCallback:function(a){return this._onUpdateCallback=a,this},onCompleteCallback:function(a){return this._onCompleteCallback=a,this},pause:function(){this._paused=!0,this._pausedTime=this.game.time.now},resume:function(){this._paused=!1,this._startTime+=this.game.time.now-this._pausedTime},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._object,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.onComplete.dispatch(this._object),null!==this._onCompleteCallback&&this._onCompleteCallback.call(this._object),!0}this.isRunning=!1,this.onComplete.dispatch(this._object),null!==this._onCompleteCallback&&this._onCompleteCallback.call(this._object);for(var h=0,i=this._chainedTweens.length;i>h;h++)this._chainedTweens[h].start(a);return!1}return!0}},d.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((a-b)*2*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((a-b)*2*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((a-b)*2*Math.PI/d):.5*c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*2*Math.PI/d)+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-d.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*d.Easing.Bounce.In(2*a):.5*d.Easing.Bounce.Out(2*a-1)+.5}}},d.Time=function(a){this.game=a,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this.physicsElapsed=0,this.time=0,this.pausedTime=0,this.now=0,this.elapsed=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.frames=0,this.pauseDuration=0,this.timeToCall=0,this.lastTime=0,this.game.onPause.add(this.gamePaused,this),this.game.onResume.add(this.gameResumed,this),this._justResumed=!1},d.Time.prototype={update:function(a){this.now=a,this._justResumed&&(this.time=this.now,this._justResumed=!1),this.timeToCall=this.game.math.max(0,16-(a-this.lastTime)),this.elapsed=this.now-this.time,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.physicsElapsed=1*(this.elapsed/1e3),this.physicsElapsed>1&&(this.physicsElapsed=1),this.game.paused&&(this.pausedTime=this.now-this._pauseStarted)},gamePaused:function(){this._pauseStarted=this.now},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.pausedTime,this._justResumed=!0},totalElapsedSeconds:function(){return.001*(this.now-this._started)},elapsedSince:function(a){return this.now-a},elapsedSecondsSince:function(a){return.001*(this.now-a)},reset:function(){this._started=this.now}},d.Timer=function(a){this.game=a,this._started=0,this._timeLastSecond=0,this.running=!1,this.events=[],this.onEvent=new d.Signal},d.Timer.prototype={add:function(a){this.events.push({delay:a,dispatched:!1,args:Array.prototype.splice.call(arguments,1)})},start:function(){this._started=this.game.time.now,this.running=!0},stop:function(){this.running=!1,this.events.length=0},update:function(){if(this.running)for(var a=this.seconds(),b=0,c=this.events.length;c>b;b++)this.events[b].dispatched===!1&&a>=this.events[b].delay&&(this.events[b].dispatched=!0,this.onEvent.dispatch.apply(this,this.events[b].args))},seconds:function(){return.001*(this.game.time.now-this._started)}},d.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=[]},d.AnimationManager.prototype={loadFrameData:function(a){this._frameData=a,this.frame=0,this.isLoaded=!0},add:function(a,b,e,f,g){return null==this._frameData?(console.warn("No FrameData available for Phaser.Animation "+a),void 0):(e=e||60,"undefined"==typeof f&&(f=!1),"undefined"==typeof g&&(g=b&&"number"==typeof b[0]?!0:!1),null==this.sprite.events.onAnimationStart&&(this.sprite.events.onAnimationStart=new d.Signal,this.sprite.events.onAnimationComplete=new d.Signal,this.sprite.events.onAnimationLoop=new d.Signal),this._outputFrames.length=0,this._frameData.getFrameIndexes(b,g,this._outputFrames),this._anims[a]=new d.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,e,f),this.currentAnim=this._anims[a],this.currentFrame=this.currentAnim.currentFrame,this.sprite.setTexture(c.TextureCache[this.currentFrame.uuid]),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?!1:this.currentAnim&&this.currentAnim.update()===!0?(this.currentFrame=this.currentAnim.currentFrame,this.sprite.currentFrame=this.currentFrame,!0):!1},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:!1},refreshFrame:function(){this.sprite.currentFrame=this.currentFrame,this.sprite.setTexture(c.TextureCache[this.currentFrame.uuid])},destroy:function(){this._anims={},this._frameData=null,this._frameIndex=0,this.currentAnim=null,this.currentFrame=null}},Object.defineProperty(d.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(d.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData?this._frameData.total:-1}}),Object.defineProperty(d.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(d.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._frameIndex=a,this.sprite.currentFrame=this.currentFrame,this.sprite.setTexture(c.TextureCache[this.currentFrame.uuid]))}}),Object.defineProperty(d.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._frameIndex=this.currentFrame.index,this.sprite.currentFrame=this.currentFrame,this.sprite.setTexture(c.TextureCache[this.currentFrame.uuid])):console.warn("Cannot set frameName: "+a)}}),d.Animation=function(a,b,c,d,e,f,g){this.game=a,this._parent=b,this._frameData=d,this.name=c,this._frames=[],this._frames=this._frames.concat(e),this.delay=1e3/f,this.looped=g,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])},d.Animation.prototype={play:function(a,b,d){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.looped=b),"undefined"!=typeof d&&(this.killOnComplete=d),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,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(c.TextureCache[this.currentFrame.uuid]),this._parent.events&&this._parent.events.onAnimationStart.dispatch(this._parent,this),this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,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])},stop:function(a){"undefined"==typeof a&&(a=!1),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,a&&(this.currentFrame=this._frameData.getFrame(this._frames[0]))},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.looped?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setTexture(c.TextureCache[this.currentFrame.uuid]),this._parent.events.onAnimationLoop.dispatch(this._parent,this)):this.onComplete():(this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setTexture(c.TextureCache[this.currentFrame.uuid])),!0):!1},destroy:function(){this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1},onComplete:function(){this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events&&this._parent.events.onAnimationComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},Object.defineProperty(d.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(d.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(d.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(a),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setTexture(c.TextureCache[this.currentFrame.uuid]))}}),d.Animation.generateFrameNames=function(a,b,c,e,f){"undefined"==typeof e&&(e="");var g=[],h="";if(c>b)for(var i=b;c>=i;i++)h="number"==typeof f?d.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=c;i--)h="number"==typeof f?d.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},d.Frame=function(a,b,c,e,f,g,h){this.index=a,this.x=b,this.y=c,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=d.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},d.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)}},d.FrameData=function(){this._frames=[],this._frameNames=[]},d.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 this._frames.length>a?this._frames[a]:null},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++)b?c.push(this.getFrame(a[d])):c.push(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}},Object.defineProperty(d.FrameData.prototype,"total",{get:function(){return this._frames.length}}),d.AnimationParser={spriteSheet:function(a,b,e,f,g){var h=a.cache.getImage(b);if(null==h)return null;var i=h.width,j=h.height;0>=e&&(e=Math.floor(-i/Math.min(-1,e))),0>=f&&(f=Math.floor(-j/Math.min(-1,f)));var k=Math.round(i/e),l=Math.round(j/f),m=k*l;if(-1!==g&&(m=g),0===i||0===j||e>i||f>j||0===m)return console.warn("Phaser.AnimationParser.spriteSheet: width/height zero or width/height < given frameWidth/frameHeight"),null;for(var n=new d.FrameData,o=0,p=0,q=0;m>q;q++){var r=a.rnd.uuid();n.addFrame(new d.Frame(q,o,p,e,f,"",r)),c.TextureCache[r]=new c.Texture(c.BaseTextureCache[b],{x:o,y:p,width:e,height:f}),o+=e,o===i&&(o=0,p+=f)}return n},JSONData:function(a,b,e){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),console.log(b),void 0;for(var f,g=new d.FrameData,h=b.frames,i=0;i tag"),void 0;for(var f,g,h,i,j,k,l,m,n,o,p,q,r=new d.FrameData,s=b.getElementsByTagName("SubTexture"),t=0;t0)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.hasLoaded=!0,this.onLoadComplete.dispatch()))},loadFile:function(){if(!this._fileList[this._fileIndex])return console.warn("Phaser.Loader loadFile invalid index "+this._fileIndex),void 0;var a=this._fileList[this._fileIndex],b=this;switch(a.type){case"image":case"spritesheet":case"textureatlas":case"bitmapfont":case"tileset":a.data=new Image,a.data.name=a.key,a.data.onload=function(){return b.fileComplete(b._fileIndex)},a.data.onerror=function(){return b.fileError(b._fileIndex)},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 b.fileComplete(b._fileIndex)},this._xhr.onerror=function(){return b.fileError(b._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 b.fileError(b._fileIndex)},a.data.preload="auto",a.data.src=this.baseURL+a.url,a.data.addEventListener("canplaythrough",d.GAMES[this.game.id].load.fileComplete(this._fileIndex),!1),a.data.load())):this.fileError(this._fileIndex);break;case"tilemap":if(this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",a.format===d.Tilemap.TILED_JSON)this._xhr.onload=function(){return b.jsonLoadComplete(b._fileIndex)};else{if(a.format!==d.Tilemap.CSV)throw new Error("Phaser.Loader. Invalid Tilemap format: "+a.format);this._xhr.onload=function(){return b.csvLoadComplete(b._fileIndex)}}this._xhr.onerror=function(){return b.dataLoadError(b._fileIndex)},this._xhr.send();break;case"text":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return b.fileComplete(b._fileIndex)},this._xhr.onerror=function(){return b.fileError(b._fileIndex)},this._xhr.send();break;case"script":this._xhr.open("GET",this.baseURL+a.url,!0),this._xhr.responseType="text",this._xhr.onload=function(){return b.fileComplete(b._fileIndex)},this._xhr.onerror=function(){return b.fileError(b._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.crop.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.crop.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite.crop=this.preloadSprite.crop),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 tag"),void 0;var e=c.TextureCache[d],f={},g=b.getElementsByTagName("info")[0],h=b.getElementsByTagName("common")[0];f.font=g.attributes.getNamedItem("face").nodeValue,f.size=parseInt(g.attributes.getNamedItem("size").nodeValue,10),f.lineHeight=parseInt(h.attributes.getNamedItem("lineHeight").nodeValue,10),f.chars={};for(var i=b.getElementsByTagName("char"),j=0;j=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.now):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(a=a||"",b=b||0,"undefined"==typeof c&&(c=this._volume),"undefined"==typeof d&&(d=!1),"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 console.warn("Phaser.Sound.play: audio marker "+a+" doesn't exist"),void 0;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,this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else 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.externalNode?this._sound.connect(this.externalNode.input):this._sound.connect(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&&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.gainNode),"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.onStop.dispatch(this,a)}},Object.defineProperty(d.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(d.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(d.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(d.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)}}),d.SoundManager=function(a){this.game=a,this.onSoundDecode=new d.Signal,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},d.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,this.noAudio=!0,void 0;if(window.PhaserGlobal.disableWebAudio===!0)return this.usingWebAudio=!1,this.usingAudioTag=!0,this.noAudio=!1,void 0}window.AudioContext?this.context=new window.AudioContext:window.webkitAudioContext?this.context=new window.webkitAudioContext:window.Audio?(this.usingWebAudio=!1,this.usingAudioTag=!0):(this.usingWebAudio=!1,this.noAudio=!0),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 d.Color.getColor(255,255,255);if(a>b)return d.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return d.Color.getColor32(c,e,f,g)},getRGB:function(a){return{alpha:a>>>24,red:255&a>>16,green:255&a>>8,blue:255&a}},getWebRGB:function(a){var b=(a>>>24)/255,c=255&a>>16,d=255&a>>8,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 255&a>>16},getGreen:function(a){return 255&a>>8},getBlue:function(a){return 255&a}},d.Physics={},d.Physics.Arcade=function(a){this.game=a,this.gravity=new d.Point,this.bounds=new d.Rectangle(0,0,a.world.width,a.world.height),this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.quadTree=new d.QuadTree(this,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.quadTreeID=0,this._bounds1=new d.Rectangle,this._bounds2=new d.Rectangle,this._overlap=0,this._maxOverlap=0,this._velocity1=0,this._velocity2=0,this._newVelocity1=0,this._newVelocity2=0,this._average=0,this._mapData=[],this._mapTiles=0,this._result=!1,this._total=0,this._angle=0,this._dx=0,this._dy=0},d.Physics.Arcade.prototype={updateMotion:function(a){this._velocityDelta=60*.5*(this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity)*this.game.time.physicsElapsed,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.angularVelocity+=this._velocityDelta,this._velocityDelta=60*.5*(this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x)-a.velocity.x)*this.game.time.physicsElapsed,a.velocity.x+=this._velocityDelta,a.x+=a.velocity.x*this.game.time.physicsElapsed,a.velocity.x+=this._velocityDelta,this._velocityDelta=60*.5*(this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)-a.velocity.y)*this.game.time.physicsElapsed,a.velocity.y+=this._velocityDelta,a.y+=a.velocity.y*this.game.time.physicsElapsed,a.velocity.y+=this._velocityDelta},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1==a&&b.allowGravity?c+=this.gravity.x+b.gravity.x:2==a&&b.allowGravity&&(c+=this.gravity.y+b.gravity.y),0!==d?c+=d*this.game.time.physicsElapsed:0!==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},preUpdate:function(){this.quadTree.clear(),this.quadTreeID=0,this.quadTree=new d.QuadTree(this,this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels)},postUpdate:function(){this.quadTree.clear()},overlap:function(a,b,c,e,f){return c=c||null,e=e||null,f=f||c,this._result=!1,this._total=0,a&&b&&a.exists&&b.exists&&(a.type==d.SPRITE?b.type==d.SPRITE?this.overlapSpriteVsSprite(a,b,c,e,f):(b.type==d.GROUP||b.type==d.EMITTER)&&this.overlapSpriteVsGroup(a,b,c,e,f):a.type==d.GROUP?b.type==d.SPRITE?this.overlapSpriteVsGroup(b,a,c,e,f):(b.type==d.GROUP||b.type==d.EMITTER)&&this.overlapGroupVsGroup(a,b,c,e,f):a.type==d.EMITTER&&(b.type==d.SPRITE?this.overlapSpriteVsGroup(b,a,c,e,f):(b.type==d.GROUP||b.type==d.EMITTER)&&this.overlapGroupVsGroup(a,b,c,e,f))),this._total>0},overlapSpriteVsSprite:function(a,b,c,e,f){this._result=d.Rectangle.intersects(a.body,b.body),this._result&&(e?e.call(f,a,b)&&(this._total++,c&&c.call(f,a,b)):(this._total++,c&&c.call(f,a,b)))},overlapSpriteVsGroup:function(a,b,c,e,f){if(0!==b.length){this._potentials=this.quadTree.retrieve(a);for(var g=0,h=this._potentials.length;h>g;g++)this._potentials[g].sprite.group==b&&(this._result=d.Rectangle.intersects(a.body,this._potentials[g]),this._result&&e&&(this._result=e.call(f,a,this._potentials[g].sprite)),this._result&&(this._total++,c&&c.call(f,a,this._potentials[g].sprite)))}},overlapGroupVsGroup:function(a,b,c,d,e){if(0!==a.length&&0!==b.length&&a._container.first._iNext){var f=a._container.first._iNext;do f.exists&&this.overlapSpriteVsGroup(f,b,c,d,e),f=f._iNext;while(f!=a._container.last._iNext)}},collide:function(a,b,c,e,f){return c=c||null,e=e||null,f=f||c,this._result=!1,this._total=0,a&&b&&a.exists&&b.exists&&(a.type==d.SPRITE?b.type==d.SPRITE?this.collideSpriteVsSprite(a,b,c,e,f):b.type==d.GROUP||b.type==d.EMITTER?this.collideSpriteVsGroup(a,b,c,e,f):b.type==d.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,c,e,f):a.type==d.GROUP?b.type==d.SPRITE?this.collideSpriteVsGroup(b,a,c,e,f):b.type==d.GROUP||b.type==d.EMITTER?this.collideGroupVsGroup(a,b,c,e,f):b.type==d.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,c,e,f):a.type==d.TILEMAPLAYER?b.type==d.SPRITE?this.collideSpriteVsTilemapLayer(b,a,c,e,f):(b.type==d.GROUP||b.type==d.EMITTER)&&this.collideGroupVsTilemapLayer(b,a,c,e,f):a.type==d.EMITTER&&(b.type==d.SPRITE?this.collideSpriteVsGroup(b,a,c,e,f):b.type==d.GROUP||b.type==d.EMITTER?this.collideGroupVsGroup(a,b,c,e,f):b.type==d.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,c,e,f))),this._total>0},collideSpriteVsTilemapLayer:function(a,b,c,d,e){if(this._mapData=b.getTiles(a.body.x,a.body.y,a.body.width,a.body.height,!0),0!==this._mapData.length)for(var f=0;ff;f++)this._potentials[f].sprite.group==b&&(this.separate(a.body,this._potentials[f]),this._result&&d&&(this._result=d.call(e,a,this._potentials[f].sprite)),this._result&&(this._total++,c&&c.call(e,a,this._potentials[f].sprite)))}},collideGroupVsGroup:function(a,b,c,d,e){if(0!==a.length&&0!==b.length&&a._container.first._iNext){var f=a._container.first._iNext;do f.exists&&this.collideSpriteVsGroup(f,b,c,d,e),f=f._iNext;while(f!=a._container.last._iNext)}},separate:function(a,b){this._result=this.separateX(a,b)||this.separateY(a,b)},separateX:function(a,b){return a.immovable&&b.immovable?!1:(this._overlap=0,d.Rectangle.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.x+a.width-b.x,this._overlap>this._maxOverlap||a.allowCollision.right===!1||b.allowCollision.left===!1?this._overlap=0:(a.touching.right=!0,b.touching.left=!0)):a.deltaX()this._maxOverlap||a.allowCollision.left===!1||b.allowCollision.right===!1?this._overlap=0:(a.touching.left=!0,b.touching.right=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,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),a.updateHulls(),b.updateHulls(),!0)):!1)},separateY:function(a,b){return a.immovable&&b.immovable?!1:(this._overlap=0,d.Rectangle.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.y+a.height-b.y,this._overlap>this._maxOverlap||a.allowCollision.down===!1||b.allowCollision.up===!1?this._overlap=0:(a.touching.down=!0,b.touching.up=!0)):a.deltaY()this._maxOverlap||a.allowCollision.up===!1||b.allowCollision.down===!1?this._overlap=0:(a.touching.up=!0,b.touching.down=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,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.sprite.active&&a.moves&&a.deltaY()b.deltaY()&&(a.x+=b.x-b.lastX)):(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),a.updateHulls(),b.updateHulls(),!0)):!1)},separateTile:function(a,b){return this._result=this.separateTileX(a,b,!0)||this.separateTileY(a,b,!0),this._result},separateTileX:function(a,b,c){return a.immovable||0===a.deltaX()||d.Rectangle.intersects(a.hullX,b)===!1?!1:(this._overlap=0,a.deltaX()<0?(this._overlap=b.right-a.hullX.x,a.allowCollision.left===!1||b.tile.collideRight===!1?this._overlap=0:a.touching.left=!0):(this._overlap=a.hullX.right-b.x,a.allowCollision.right===!1||b.tile.collideLeft===!1?this._overlap=0:a.touching.right=!0),0!==this._overlap?(c&&(a.x=a.deltaX()<0?a.x+this._overlap:a.x-this._overlap,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x,a.updateHulls()),!0):!1)},separateTileY:function(a,b,c){return a.immovable||0===a.deltaY()||d.Rectangle.intersects(a.hullY,b)===!1?!1:(this._overlap=0,a.deltaY()<0?(this._overlap=b.bottom-a.hullY.y,a.allowCollision.up===!1||b.tile.collideDown===!1?this._overlap=0:a.touching.up=!0):(this._overlap=a.hullY.bottom-b.y,a.allowCollision.down===!1||b.tile.collideUp===!1?this._overlap=0:a.touching.down=!0),0!==this._overlap?(c&&(a.y=a.deltaY()<0?a.y+this._overlap:a.y-this._overlap,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y,a.updateHulls()),!0):!1)},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,b,c){return"undefined"==typeof b&&(b=60),c=c||new d.Point,c.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,c){return"undefined"==typeof b&&(b=60),c=c||new d.Point,c.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,c){return"undefined"==typeof b&&(b=60),c=c||new d.Point,c.setTo(Math.cos(a)*b,Math.sin(a)*b)},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)}},d.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.offset=new d.Point,this.x=a.x,this.y=a.y,this.preX=a.x,this.preY=a.y,this.preRotation=a.angle,this.screenX=a.x,this.screenY=a.y,this.sourceWidth=a.currentFrame.sourceSizeW,this.sourceHeight=a.currentFrame.sourceSizeH,this.width=a.currentFrame.sourceSizeW,this.height=a.currentFrame.sourceSizeH,this.halfWidth=Math.floor(a.currentFrame.sourceSizeW/2),this.halfHeight=Math.floor(a.currentFrame.sourceSizeH/2),this.center=new d.Point(this.x+this.halfWidth,this.y+this.halfHeight),this._sx=a.scale.x,this._sy=a.scale.y,this.velocity=new d.Point,this.acceleration=new d.Point,this.drag=new d.Point,this.gravity=new d.Point,this.bounce=new d.Point,this.maxVelocity=new d.Point(1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.skipQuadTree=!1,this.quadTreeIDs=[],this.quadTreeIndex=-1,this.allowCollision={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.facing=d.NONE,this.immovable=!1,this.moves=!0,this.rotation=0,this.allowRotation=!0,this.allowGravity=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.hullX=new d.Rectangle,this.hullY=new d.Rectangle,this.embedded=!1,this.collideWorldBounds=!1},d.Physics.Arcade.Body.prototype={updateBounds:function(a,b,c,d){(c!=this._sx||d!=this._sy)&&(this.width=this.sourceWidth*c,this.height=this.sourceHeight*d,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this._sx=c,this._sy=d,this.center.setTo(this.x+this.halfWidth,this.y+this.halfHeight))},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.embedded=!1,this.screenX=this.sprite.worldTransform[2]-this.sprite.anchor.x*this.width+this.offset.x,this.screenY=this.sprite.worldTransform[5]-this.sprite.anchor.y*this.height+this.offset.y,this.preX=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.preY=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.preRotation=this.sprite.angle,this.x=this.preX,this.y=this.preY,this.rotation=this.preRotation,this.moves&&(this.game.physics.updateMotion(this),this.collideWorldBounds&&this.checkWorldBounds(),this.updateHulls()),this.skipQuadTree===!1&&this.allowCollision.none===!1&&this.sprite.visible&&this.sprite.alive&&(this.quadTreeIDs=[],this.quadTreeIndex=-1,this.game.physics.quadTree.insert(this))},postUpdate:function(){this.deltaX()<0?this.facing=d.LEFT:this.deltaX()>0&&(this.facing=d.RIGHT),this.deltaY()<0?this.facing=d.UP:this.deltaY()>0&&(this.facing=d.DOWN),(0!==this.deltaX()||0!==this.deltaY())&&(this.sprite.x+=this.deltaX(),this.sprite.y+=this.deltaY(),this.center.setTo(this.x+this.halfWidth,this.y+this.halfHeight)),this.allowRotation&&(this.sprite.angle+=this.deltaZ())},updateHulls:function(){this.hullX.setTo(this.x,this.preY,this.width,this.height),this.hullY.setTo(this.preX,this.y,this.width,this.height)},checkWorldBounds:function(){this.xthis.game.world.bounds.right&&(this.x=this.game.world.bounds.right-this.width,this.velocity.x*=-this.bounce.x),this.ythis.game.world.bounds.bottom&&(this.y=this.game.world.bounds.bottom-this.height,this.velocity.y*=-this.bounce.y)},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.x+this.halfWidth,this.y+this.halfHeight)},reset:function(){this.velocity.setTo(0,0),this.acceleration.setTo(0,0),this.angularVelocity=0,this.angularAcceleration=0,this.preX=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.preY=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.preRotation=this.sprite.angle,this.x=this.preX,this.y=this.preY,this.rotation=this.preRotation,this.center.setTo(this.x+this.halfWidth,this.y+this.halfHeight)},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.x-this.preX},deltaY:function(){return this.y-this.preY},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(d.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:this.y-a}}),Object.defineProperty(d.Physics.Arcade.Body.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:this.x+a}}),d.Particles=function(a){this.game=a,this.emitters={},this.ID=0},d.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()}},d.Particles.Arcade={},d.Particles.Arcade.Emitter=function(a,b,c,e){this.maxParticles=e||50,d.Group.call(this,a),this.name="emitter"+this.game.particles.ID++,this.type=d.EMITTER,this.x=0,this.y=0,this.width=1,this.height=1,this.minParticleSpeed=new d.Point(-100,-100),this.maxParticleSpeed=new d.Point(100,100),this.minParticleScale=1,this.maxParticleScale=1,this.minRotation=-360,this.maxRotation=360,this.gravity=2,this.particleClass=null,this.particleDrag=new d.Point,this.angularDrag=0,this.frequency=100,this.lifespan=2e3,this.bounce=new d.Point,this._quantity=0,this._timer=0,this._counter=0,this._explode=!0,this.on=!1,this.exists=!0,this.emitX=b,this.emitY=c},d.Particles.Arcade.Emitter.prototype=Object.create(d.Group.prototype),d.Particles.Arcade.Emitter.prototype.constructor=d.Particles.Arcade.Emitter,d.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)},d.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,e,f){"undefined"==typeof b&&(b=0),c=c||this.maxParticles,e=e||0,"undefined"==typeof f&&(f=!1);for(var g,h=0,i=a,j=0;c>h;)null==this.particleClass&&("object"==typeof a&&(i=this.game.rnd.pick(a)),"object"==typeof b&&(j=this.game.rnd.pick(b)),g=new d.Sprite(this.game,0,0,i,j)),e>0?(g.body.allowCollision.any=!0,g.body.allowCollision.none=!1):g.body.allowCollision.none=!0,g.body.collideWorldBounds=f,g.exists=!1,g.visible=!1,g.anchor.setTo(.5,.5),this.add(g),h++;return this},d.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},d.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},d.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d){"boolean"!=typeof a&&(a=!0),b=b||0,c=c||250,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},d.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);if(null!=a){if(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.lifespan=this.lifespan,a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.minParticleSpeed.x!=this.maxParticleSpeed.x?this.game.rnd.integerInRange(this.minParticleSpeed.x,this.maxParticleSpeed.x):this.minParticleSpeed.x,a.body.velocity.y=this.minParticleSpeed.y!=this.maxParticleSpeed.y?this.game.rnd.integerInRange(this.minParticleSpeed.y,this.maxParticleSpeed.y):this.minParticleSpeed.y,a.body.gravity.y=this.gravity,a.body.angularVelocity=this.minRotation!=this.maxRotation?this.game.rnd.integerInRange(this.minRotation,this.maxRotation):this.minRotation,1!==this.minParticleScale||1!==this.maxParticleScale){var b=this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale);a.scale.setTo(b,b)}a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag}},d.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.width=a,this.height=b},d.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},d.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},d.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},d.Particles.Arcade.Emitter.prototype.at=function(a){this.emitX=a.center.x,this.emitY=a.center.y},Object.defineProperty(d.Particles.Arcade.Emitter.prototype,"alpha",{get:function(){return this._container.alpha},set:function(a){this._container.alpha=a}}),Object.defineProperty(d.Particles.Arcade.Emitter.prototype,"visible",{get:function(){return this._container.visible},set:function(a){this._container.visible=a}}),Object.defineProperty(d.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(d.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(d.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.width/2)}}),Object.defineProperty(d.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.width/2)}}),Object.defineProperty(d.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.height/2)}}),Object.defineProperty(d.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.height/2)}}),d.Tile=function(a,b,c,d,e,f){this.tileset=a,this.index=b,this.width=e,this.height=f,this.x=c,this.y=d,this.mass=1,this.collideNone=!0,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.separateX=!0,this.separateY=!0,this.collisionCallback=null,this.collisionCallbackContext=this},d.Tile.prototype={setCollisionCallback:function(a,b){this.collisionCallbackContext=b,this.collisionCallback=a},destroy:function(){this.tileset=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.collideNone=a||b||c||d?!1:!0},resetCollision:function(){this.collideNone=!0,this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1}},Object.defineProperty(d.Tile.prototype,"bottom",{get:function(){return this.y+this.height}}),Object.defineProperty(d.Tile.prototype,"right",{get:function(){return this.x+this.width}}),d.Tilemap=function(a,b){this.game=a,this.layers=null,"string"==typeof b?(this.key=b,this.layers=a.cache.getTilemapData(b).layers,this.calculateIndexes()):this.layers=[],this.currentLayer=0,this.debugMap=[],this.dirty=!1,this._results=[],this._tempA=0,this._tempB=0},d.Tilemap.CSV=0,d.Tilemap.TILED_JSON=1,d.Tilemap.prototype={create:function(a,b,c){for(var e=[],f=0;c>f;f++){e[f]=[];for(var g=0;b>g;g++)e[f][g]=0}this.layers.push({name:a,width:b,height:c,alpha:1,visible:!0,tileMargin:0,tileSpacing:0,format:d.Tilemap.CSV,data:e,indexes:[]}),this.currentLayer=this.layers.length-1,this.dirty=!0},calculateIndexes:function(){for(var a=0;a=0&&b=0&&c=0&&a=0&&b=0&&a=0&&b=0&&b=0&&ca&&(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({x:g,y:f,index: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),"undefined"==typeof d&&(d=this.currentLayer),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]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.game=null}},d.TilemapLayer=function(a,b,e,f,g,h,i,j){this.game=a,this.canvas=d.Canvas.create(f,g),this.context=this.canvas.getContext("2d"),this.baseTexture=new c.BaseTexture(this.canvas),this.texture=new c.Texture(this.baseTexture),this.textureFrame=new d.Frame(0,0,0,f,g,"tilemaplayer",a.rnd.uuid()),d.Sprite.call(this,this.game,b,e,this.texture,this.textureFrame),this.type=d.TILEMAPLAYER,this.fixedToCamera=!0,this.tileset=null,this.tileWidth=0,this.tileHeight=0,this.tileMargin=0,this.tileSpacing=0,this.widthInPixels=0,this.heightInPixels=0,this.renderWidth=f,this.renderHeight=g,this._ga=1,this._dx=0,this._dy=0,this._dw=0,this._dh=0,this._tx=0,this._ty=0,this._tw=0,this._th=0,this._tl=0,this._maxX=0,this._maxY=0,this._startX=0,this._startY=0,this._results=[],this._x=0,this._y=0,this._prevX=0,this._prevY=0,this.scrollFactorX=1,this.scrollFactorY=1,this.tilemap=null,this.layer=null,this.index=0,this.dirty=!0,(h instanceof d.Tileset||"string"==typeof h)&&this.updateTileset(h),i instanceof d.Tilemap&&this.updateMapData(i,j)},d.TilemapLayer.prototype=Object.create(d.Sprite.prototype),d.TilemapLayer.prototype=d.Utils.extend(!0,d.TilemapLayer.prototype,d.Sprite.prototype,c.Sprite.prototype),d.TilemapLayer.prototype.constructor=d.TilemapLayer,d.TilemapLayer.prototype.update=function(){this.scrollX=this.game.camera.x*this.scrollFactorX,this.scrollY=this.game.camera.y*this.scrollFactorY,this.render()},d.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.widthInPixels,this.heightInPixels)},d.TilemapLayer.prototype.updateTileset=function(a){if(a instanceof d.Tileset)this.tileset=a;else{if("string"!=typeof a)return;this.tileset=this.game.cache.getTileset("tiles")}this.tileWidth=this.tileset.tileWidth,this.tileHeight=this.tileset.tileHeight,this.tileMargin=this.tileset.tileMargin,this.tileSpacing=this.tileset.tileSpacing,this.updateMax()},d.TilemapLayer.prototype.updateMapData=function(a,b){"undefined"==typeof b&&(b=0),a instanceof d.Tilemap&&(this.tilemap=a,this.layer=this.tilemap.layers[b],this.index=b,this.updateMax(),this.tilemap.dirty=!0)},d.TilemapLayer.prototype._fixX=function(a){if(1===this.scrollFactorX)return a;var b=a-this._x/this.scrollFactorX;return this._x+b},d.TilemapLayer.prototype._unfixX=function(a){if(1===this.scrollFactorX)return a;var b=a-this._x;return this._x/this.scrollFactorX+b},d.TilemapLayer.prototype._fixY=function(a){if(1===this.scrollFactorY)return a;var b=a-this._y/this.scrollFactorY;return this._y+b},d.TilemapLayer.prototype._unfixY=function(a){if(1===this.scrollFactorY)return a;var b=a-this._y;return this._y/this.scrollFactorY+b},d.TilemapLayer.prototype.getTileX=function(a){var b=this.tileWidth*this.scale.x;return this.game.math.snapToFloor(this._fixX(a),b)/b},d.TilemapLayer.prototype.getTileY=function(a){var b=this.tileHeight*this.scale.y;return this.game.math.snapToFloor(this._fixY(a),b)/b},d.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},d.TilemapLayer.prototype.getTiles=function(a,b,c,d,e){if(null!==this.tilemap){"undefined"==typeof e&&(e=!1),0>a&&(a=0),0>b&&(b=0),a=this._fixX(a),b=this._fixY(b),c>this.widthInPixels&&(c=this.widthInPixels),d>this.heightInPixels&&(d=this.heightInPixels);var f=this.tileWidth*this.scale.x,g=this.tileHeight*this.scale.y;this._tx=this.game.math.snapToFloor(a,f)/f,this._ty=this.game.math.snapToFloor(b,g)/g,this._tw=(this.game.math.snapToCeil(c,f)+f)/f,this._th=(this.game.math.snapToCeil(d,g)+g)/g,this._results=[];for(var h=0,i=null,j=0,k=0,l=this._ty;lthis.layer.width&&(this._maxX=this.layer.width),this._maxY>this.layer.height&&(this._maxY=this.layer.height),this.widthInPixels=this.layer.width*this.tileWidth,this.heightInPixels=this.layer.height*this.tileHeight),this.dirty=!0},d.TilemapLayer.prototype.render=function(){if(this.tilemap&&this.tilemap.dirty&&(this.dirty=!0),this.dirty&&this.tileset&&this.tilemap&&this.visible){this._prevX=this._dx,this._prevY=this._dy,this._dx=-(this._x-this._startX*this.tileWidth),this._dy=-(this._y-this._startY*this.tileHeight),this._tx=this._dx,this._ty=this._dy,this.context.clearRect(0,0,this.canvas.width,this.canvas.height);for(var a=this._startY;a0?this.deltaX():-this.deltaX()},d.TilemapLayer.prototype.deltaAbsY=function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},d.TilemapLayer.prototype.deltaX=function(){return this._dx-this._prevX},d.TilemapLayer.prototype.deltaY=function(){return this._dy-this._prevY},Object.defineProperty(d.TilemapLayer.prototype,"scrollX",{get:function(){return this._x},set:function(a){a!==this._x&&a>=0&&this.layer&&(this._x=a,this._x>this.widthInPixels-this.renderWidth&&(this._x=this.widthInPixels-this.renderWidth),this._startX=this.game.math.floor(this._x/this.tileWidth),this._startX<0&&(this._startX=0),this._startX+this._maxX>this.layer.width&&(this._startX=this.layer.width-this._maxX),this.dirty=!0)}}),Object.defineProperty(d.TilemapLayer.prototype,"scrollY",{get:function(){return this._y},set:function(a){a!==this._y&&a>=0&&this.layer&&(this._y=a,this._y>this.heightInPixels-this.renderHeight&&(this._y=this.heightInPixels-this.renderHeight),this._startY=this.game.math.floor(this._y/this.tileHeight),this._startY<0&&(this._startY=0),this._startY+this._maxY>this.layer.height&&(this._startY=this.layer.height-this._maxY),this.dirty=!0)}}),d.TilemapParser={tileset:function(a,b,c,e,f,g,h){var i=a.cache.getTilesetImage(b);if(null==i)return null;var j=i.width,k=i.height;0>=c&&(c=Math.floor(-j/Math.min(-1,c))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.round(j/c),m=Math.round(k/e),n=l*m;if(-1!==f&&(n=f),0===j||0===k||c>j||e>k||0===n)return console.warn("Phaser.TilemapParser.tileSet: width/height zero or width/height < given tileWidth/tileHeight"),null;for(var o=g,p=g,q=new d.Tileset(i,b,c,e,g,h),r=0;n>r;r++)q.addTile(new d.Tile(q,r,o,p,c,e)),o+=c+h,o===j&&(o=g,p+=e+h);return q},parse:function(a,b,c){return c===d.Tilemap.CSV?this.parseCSV(b):c===d.Tilemap.TILED_JSON?this.parseTiledJSON(b):void 0},parseCSV:function(a){a=a.trim();for(var b=[],c=a.split("\n"),d=c.length,e=0,f=0;fa)for(var g=a;b>=g;g++)this.tiles[g].setCollision(c,d,e,f)},setCollision:function(a,b,c,d,e){this.tiles[a]&&this.tiles[a].setCollision(b,c,d,e)}},Object.defineProperty(d.Tileset.prototype,"total",{get:function(){return this.tiles.length}}),c.CanvasRenderer.prototype.render=function(a){c.texturesToUpdate.length=0,c.texturesToDestroy.length=0,c.visibleCount++,a.updateTransform(),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(a),c.Texture.frameUpdates.length>0&&(c.Texture.frameUpdates.length=0)},c.CanvasRenderer.prototype.renderDisplayObject=function(a){var b=a.last._iNext;a=a.first;do if(a.visible)if(a.renderable&&0!==a.alpha){if(a instanceof c.Sprite)a.texture.frame&&(this.context.globalAlpha=a.worldAlpha,a.texture.trimmed?this.context.setTransform(a.worldTransform[0],a.worldTransform[3],a.worldTransform[1],a.worldTransform[4],a.worldTransform[2]+a.texture.trim.x,a.worldTransform[5]+a.texture.trim.y):this.context.setTransform(a.worldTransform[0],a.worldTransform[3],a.worldTransform[1],a.worldTransform[4],a.worldTransform[2],a.worldTransform[5]),this.context.drawImage(a.texture.baseTexture.source,a.texture.frame.x,a.texture.frame.y,a.texture.frame.width,a.texture.frame.height,a.anchor.x*-a.texture.frame.width,a.anchor.y*-a.texture.frame.height,a.texture.frame.width,a.texture.frame.height));else if(a instanceof c.Strip)this.context.setTransform(a.worldTransform[0],a.worldTransform[3],a.worldTransform[1],a.worldTransform[4],a.worldTransform[2],a.worldTransform[5]),this.renderStrip(a);else if(a instanceof c.TilingSprite)this.context.setTransform(a.worldTransform[0],a.worldTransform[3],a.worldTransform[1],a.worldTransform[4],a.worldTransform[2],a.worldTransform[5]),this.renderTilingSprite(a);else if(a instanceof c.CustomRenderable)a.renderCanvas(this);else if(a instanceof c.Graphics)this.context.setTransform(a.worldTransform[0],a.worldTransform[3],a.worldTransform[1],a.worldTransform[4],a.worldTransform[2],a.worldTransform[5]),c.CanvasGraphics.renderGraphics(a,this.context);else if(a instanceof c.FilterBlock)if(a.open){this.context.save();var d=a.mask.alpha,e=a.mask.worldTransform;this.context.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),a.mask.worldAlpha=.5,this.context.worldAlpha=0,c.CanvasGraphics.renderGraphicsMask(a.mask,this.context),this.context.clip(),a.mask.worldAlpha=d}else this.context.restore();a=a._iNext}else a=a._iNext;else a=a.last._iNext;while(a!=b)},c.WebGLBatch.prototype.update=function(){for(var a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=0,s=this.head;s;){if(s.vcount===c.visibleCount){if(b=s.texture.frame.width,d=s.texture.frame.height,e=s.anchor.x,f=s.anchor.y,g=b*(1-e),h=b*-e,i=d*(1-f),j=d*-f,k=8*r,a=s.worldTransform,l=a[0],m=a[3],n=a[1],o=a[4],p=a[2],q=a[5],s.texture.trimmed&&(p+=s.texture.trim.x,q+=s.texture.trim.y),this.verticies[k+0]=l*h+n*j+p,this.verticies[k+1]=o*j+m*h+q,this.verticies[k+2]=l*g+n*j+p,this.verticies[k+3]=o*j+m*g+q,this.verticies[k+4]=l*g+n*i+p,this.verticies[k+5]=o*i+m*g+q,this.verticies[k+6]=l*h+n*i+p,this.verticies[k+7]=o*i+m*h+q,s.updateFrame||s.texture.updateFrame){this.dirtyUVS=!0;var t=s.texture,u=t.frame,v=t.baseTexture.width,w=t.baseTexture.height;this.uvs[k+0]=u.x/v,this.uvs[k+1]=u.y/w,this.uvs[k+2]=(u.x+u.width)/v,this.uvs[k+3]=u.y/w,this.uvs[k+4]=(u.x+u.width)/v,this.uvs[k+5]=(u.y+u.height)/w,this.uvs[k+6]=u.x/v,this.uvs[k+7]=(u.y+u.height)/w,s.updateFrame=!1}if(s.cacheAlpha!=s.worldAlpha){s.cacheAlpha=s.worldAlpha;var x=4*r;this.colors[x]=this.colors[x+1]=this.colors[x+2]=this.colors[x+3]=s.worldAlpha,this.dirtyColors=!0}}else k=8*r,this.verticies[k+0]=0,this.verticies[k+1]=0,this.verticies[k+2]=0,this.verticies[k+3]=0,this.verticies[k+4]=0,this.verticies[k+5]=0,this.verticies[k+6]=0,this.verticies[k+7]=0;r++,s=s.__next}},d}); \ No newline at end of file diff --git a/tutorials/02 Making your first game/part1.html b/tutorials/02 Making your first game/part1.html new file mode 100644 index 00000000..eccbb3e2 --- /dev/null +++ b/tutorials/02 Making your first game/part1.html @@ -0,0 +1,31 @@ + + + + + Phaser - Making your first game, part 1 + + + + + + + + + \ No newline at end of file diff --git a/tutorials/02 Making your first game/part2.html b/tutorials/02 Making your first game/part2.html new file mode 100644 index 00000000..441a4d26 --- /dev/null +++ b/tutorials/02 Making your first game/part2.html @@ -0,0 +1,37 @@ + + + + + Phaser - Making your first game, part 1 + + + + + + + + + \ No newline at end of file diff --git a/tutorials/02 Making your first game/part3.html b/tutorials/02 Making your first game/part3.html new file mode 100644 index 00000000..6c6242e6 --- /dev/null +++ b/tutorials/02 Making your first game/part3.html @@ -0,0 +1,40 @@ + + + + + Phaser - Making your first game, part 1 + + + + + + + + + \ No newline at end of file diff --git a/tutorials/02 Making your first game/part4.html b/tutorials/02 Making your first game/part4.html new file mode 100644 index 00000000..ca5cc25b --- /dev/null +++ b/tutorials/02 Making your first game/part4.html @@ -0,0 +1,62 @@ + + + + + Phaser - Getting started + + + + + + + + + \ No newline at end of file diff --git a/tutorials/02 Making your first game/part5.html b/tutorials/02 Making your first game/part5.html new file mode 100644 index 00000000..0af5f916 --- /dev/null +++ b/tutorials/02 Making your first game/part5.html @@ -0,0 +1,74 @@ + + + + + Phaser - Getting started + + + + + + + + + \ No newline at end of file diff --git a/tutorials/02 Making your first game/part6.html b/tutorials/02 Making your first game/part6.html new file mode 100644 index 00000000..4c8a4746 --- /dev/null +++ b/tutorials/02 Making your first game/part6.html @@ -0,0 +1,79 @@ + + + + + Phaser - Getting started + + + + + + + + + \ No newline at end of file diff --git a/tutorials/02 Making your first game/part7.html b/tutorials/02 Making your first game/part7.html new file mode 100644 index 00000000..dd6062c9 --- /dev/null +++ b/tutorials/02 Making your first game/part7.html @@ -0,0 +1,113 @@ + + + + + Phaser - Getting started + + + + + + + + + \ No newline at end of file diff --git a/tutorials/02 Making your first game/part8.html b/tutorials/02 Making your first game/part8.html new file mode 100644 index 00000000..e850acc6 --- /dev/null +++ b/tutorials/02 Making your first game/part8.html @@ -0,0 +1,143 @@ + + + + + Phaser - Getting started + + + + + + + + + \ No newline at end of file diff --git a/tutorials/02 Making your first game/part9.html b/tutorials/02 Making your first game/part9.html new file mode 100644 index 00000000..adde79d4 --- /dev/null +++ b/tutorials/02 Making your first game/part9.html @@ -0,0 +1,152 @@ + + + + + Phaser - Getting started + + + + + + + + + \ No newline at end of file diff --git a/tutorials/02 Making your first game/phaser_tutorial_02.zip b/tutorials/02 Making your first game/phaser_tutorial_02.zip new file mode 100644 index 0000000000000000000000000000000000000000..d28335e99c6acad7b03b3bc7cbe5139cedb0205d GIT binary patch literal 103613 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 literal 0 HcmV?d00001 diff --git a/tutorials/02 Making your first game/screen shots/part3.png b/tutorials/02 Making your first game/screen shots/part3.png new file mode 100644 index 0000000000000000000000000000000000000000..455744d1dfbf50a3871c9b0837353329fea7e2dc GIT binary patch literal 4520 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 OV4!Dmy+X(F!T$lNhz?o+ literal 0 HcmV?d00001 diff --git a/tutorials/02 Making your first game/screen shots/part4.png b/tutorials/02 Making your first game/screen shots/part4.png new file mode 100644 index 0000000000000000000000000000000000000000..113a205ed780d93ecc685e76e621caad8b6796dd GIT binary patch literal 5116 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 CO1P5% literal 0 HcmV?d00001 diff --git a/tutorials/02 Making your first game/screen shots/part5.png b/tutorials/02 Making your first game/screen shots/part5.png new file mode 100644 index 0000000000000000000000000000000000000000..fc0ff1414d38954d7671ddfa8de43a0ff121a794 GIT binary patch literal 5983 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 CV3+Rz literal 0 HcmV?d00001 diff --git a/tutorials/02 Making your first game/screen shots/part6.png b/tutorials/02 Making your first game/screen shots/part6.png new file mode 100644 index 0000000000000000000000000000000000000000..39de7fb21870867b18fa2d1ff54dd7e7aacd2e5a GIT binary patch literal 5975 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 KAz#kq`M&^sTML3-a?UHLr1!F2!YUB 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 V)+rO@z>+Tk@-oV=OJ5lW{2v;GxnTeR literal 0 HcmV?d00001 diff --git a/tutorials/02 Making your first game/screen shots/part9.png b/tutorials/02 Making your first game/screen shots/part9.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0e5df5d4a996ec4940433c2a692cfdabd6750c GIT binary patch literal 12780 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 S1kC^KfLAigFEEwc!2bn--iV?A literal 0 HcmV?d00001 diff --git a/tutorials/02 Making your first game/screen shots/tutorial_header.png b/tutorials/02 Making your first game/screen shots/tutorial_header.png new file mode 100644 index 0000000000000000000000000000000000000000..19a668c1658eb85fe87f31e500bb226e627e8466 GIT binary patch literal 61622 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 V(z+-G_9Ka)C@HAPSH3X|`#(z$APoQj literal 0 HcmV?d00001 diff --git a/tutorials/02 Making your first game/tutorial.html b/tutorials/02 Making your first game/tutorial.html new file mode 100644 index 00000000..b2e7506a --- /dev/null +++ b/tutorials/02 Making your first game/tutorial.html @@ -0,0 +1,301 @@ +This article was written by Alvin Ourrad and Richard Davey. + +Welcome to the our first tutorial on Making a Game with Phaser. Here we will learn how to create a small game involving a player running and jumping around platforms collecting stars. While going through this process we'll explain some of the core features of the framework. + +

What is Phaser?

+ +Phaser is an HTML5 game framework which aims to help developers make powerful, cross-browser HTML5 games really quickly and, unlike some others, has solely been built to work with the mobile browsers. The only browser requirement is the support of the canvas tag. It also borrows a lot from Flixel. + +

Requirements

+ +
    +
  • You need to have a very, very basic knowledge of JavaScript.
  • +
  • Also make sure you go through the Getting Started Guide, it will show you how to download the framework, set up a local development environment, and give you a glimpse of the structure of a Phaser project and its core functions.
  • +
+ +If you've gone through the Getting Started Guide you will have downloaded Phaser and got everything set-up and ready to code. Download the resources for this tutorial from here and unzip it into your web root. + +Open the part1.html page in your editor of choice and let's have a closer look at the code. After a little boilerplate HTML that includes Phaser the code structure looks like this: + +
+var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update });
+
+function preload() {
+}
+
+function create() {
+}
+
+function update() {
+}
+
+ +Line 1 is where you bring Phaser to life by creating an instance of a Phaser.Game object and assigning it to a local variable called 'game'. Calling it 'game' is a common practice, but not a requirement, and this is what you will find in the Phaser examples. + +The first two parameters are the width and the height of the canvas element that Phaser will create. In this case 800 x 600 pixels. Your game world can be any size you like, but this is the resolution the game will display in. The third parameter can be either Phaser.CANVAS, Phaser.WEBGL, or Phaser.AUTO. This is the rendering context that you want to use. The recommended parameter is Phaser.AUTO which automatically tries to use WebGL, but if the browser or device doesn't support it it'll fall back to Canvas. + +The fourth parameter is an empty string, this is the id of the DOM element in which you would like to insert the canvas element that Phaser creates. As we've left it blank it will simply be appended to the body. The final parameter is an object containing four references to Phasers essential functions. Their use is thoroughly explained here. Note that this object isn't required - Phaser supports a full State system allowing you to break your code into much cleaner single objects. But for a simple Getting Started guide such as this we'll use this approach as it allows for faster prototyping. + +

Load Assets

+ +Let's load the assets we need for our game. You do this by putting calls to game.load inside of a function called preload. Phaser will automatically look for this function when it starts and load anything defined within it. + +Currently the preload function is empty. Change it to: + +
function preload() {
+
+    game.load.image('sky', 'assets/sky.png');
+    game.load.image('ground', 'assets/platform.png');
+    game.load.image('star', 'assets/star.png');
+    game.load.spritesheet('dude', 'assets/dude.png', 32, 48);
+
+}
+
+ +This will load in 4 assets: 3 images and a sprite sheet. It may appear obvious to some of you, but I would like to point out the first parameter, also known as the asset key. This string is a link to the loaded asset and is what you'll use in your code when creating sprites. You're free to use any valid JavaScript string as the key. + +

Create a Sprite

+ +In order to add a sprite to our game place the following code in the create function: + +
game.add.sprite(0, 0, 'star');
+ +If you bring up the page in a browser you should now see a black game screen with a single star sprite in the top left corner: + +part3 + +The order in which items are rendered in the display matches the order in which you create them. So if you wish to place a background behind the star sprite you would need to ensure that it was added as a sprite first, before the star. + +

World Building

+ +Under the hood game.add.sprite is creating a new Phaser.Sprite object and adding the sprite to the “game world”. This world is where all your objects live, it can be compared to the Stage in Actionscript3. + +Note: The game world has no fixed size and extends infinitely in all directions, with 0,0 being the center of it. For convenience Phaser places 0,0 at the top left of your game for you, but by using the built-in Camera you can move around as needed. + +The world class can be accessed via game.world and comes with a lot of handy methods and properties to help you distribute your objects inside the world. It includes some simple properties like game.world.height, but also some more advanced ones that we will use in another tutorial. + +For now let's build up the scene by adding a background and platforms. Here is the updated create function: + +
var platforms;
+
+function create() {
+
+    //  A simple background for our game
+    game.add.sprite(0, 0, 'sky');
+
+    //  The platforms group contains the ground and the 2 ledges we can jump on
+    platforms = game.add.group();
+
+    // Here we create the ground.
+    var ground = platforms.create(0, game.world.height - 64, 'ground');
+
+    //  Scale it to fit the width of the game (the original sprite is 400x32 in size)
+    ground.scale.setTo(2, 2);
+
+    //  This stops it from falling away when you jump on it
+    ground.body.immovable = true;
+
+    //  Now let's create two ledges
+    var ledge = platforms.create(400, 400, 'ground');
+    ledge.body.immovable = true;
+
+    ledge = platforms.create(-150, 250, 'ground');
+    ledge.body.immovable = true;
+    
+}
+
+ +If you run this, which you'll find as part4.html in the tutorial zip file, you should see a much more game-like scene: + +part4 + +The first part is the same as the star sprite we had before, only instead we changed the key to 'sky' and it has displayed our sky background instead. This is an 800x600 PNG that fills the game screen. + +

Groups

+ +Groups are really powerful. As their name implies they allow you to group together similar objects and control them all as one single unit. You can also check for collision between Groups, and for this game we'll be using two different Groups, one of which is created in the code above for the platforms. + +
platforms = game.add.group();
+ +As with sprites game.add creates our Group object. We assign it to a new local variable called platforms. Now created we can add objects to it. First up is the ground. This is positioned at the bottom of the game and uses the 'ground' image loaded earlier. The ground is scaled to fill the width of the game. Finally we set its 'immovable' property to true. Had we not done this the ground would move when the player collides with it (more on this in the Physics section). + +With the ground in place we create two smaller ledges to jump on to using the exact same technique as for the ground. + +

Ready Player One

+ +Create a new local variable called 'player' and add the following code to the create function. You can see this in part5.html: + +
    // The player and its settings
+    player = game.add.sprite(32, game.world.height - 150, 'dude');
+
+    //  Player physics properties. Give the little guy a slight bounce.
+    player.body.bounce.y = 0.2;
+    player.body.gravity.y = 6;
+    player.body.collideWorldBounds = true;
+
+    //  Our two animations, walking left and right.
+    player.animations.add('left', [0, 1, 2, 3], 10, true);
+    player.animations.add('right', [5, 6, 7, 8], 10, true);
+
+ +This creates a new sprite called 'player', positioned at 32 pixels by 150 pixels from the bottom of the game. We're telling it to use the 'dude' asset previously loaded. If you glance back to the preload function you'll see that 'dude' was loaded as a sprite sheet, not an image. That is because it contains animation frames. This is what the full sprite sheet looks like: + +dude + +You can see 9 frames in total, 4 for running left, 1 for facing the camera and 4 for running right. Note: Phaser supports flipping sprites to save on animation frames, but for the sake of this tutorial we'll keep it old school. We define two animations called 'left' and 'right'. The 'left' animation uses frames 0, 1, 2 and 3 and runs at 10 frames per second. The 'true' parameter tells the animation to loop. This is our standard run-cycle and we repeat it for running in the opposite direction. With the animations set we create a few physics properties. + +

The Body and Velocity: A world of physics

+ +In Phaser all sprites have a body property, which is an instance of ArcadePhysics.Body. This represents the sprite as a physical body in Phasers built-in physics engine. The body object has itself a lot of properties that we can play with. To simulate the effects of gravity on a sprite, it's as simple as writing this: + +
player.body.gravity.y = 6;
+ +This is an arbitrary value, but logically, the higher the value, the heavier your object feels and the quicker it falls. If you add this to your code or run part5.html you will see that the player falls down without stopping, completely ignoring the ground we created earlier: + +part5 + +The reason for this is that we're not yet testing for collision between the ground and the player. We already told Phaser that our ground and ledges would be immovable. Had we not done that when the player collided with them it would stop for a moment and then everything would have collapsed. This is because unless told otherwise, the ground sprite is a moving physical object (also known as a dynamic body) and when the player hits it, the resulting force of the collision is applied to the ground, therefore, the two bodies exchange their velocities and ground starts falling as well. + +So to allow the player to collide and take advantage of the physics properties we need to introduce a collision check in the update function: + +
function update() {
+
+    //  Collide the player and the stars with the platforms
+    game.physics.collide(player, platforms);
+
+}
+
+ +The update function is called by the core game loop every frame. The Physics.collide function is the one that performs the magic. It takes two objects and tests for collision and performs separation against them. In this case we're giving it the player sprite and the platforms Group. It's clever enough to run collision against all Group members, so this one call will collide against the ground and both ledges. The result is a firm platform: + +part6 + +

Controlling the player with the keyboard

+ +Colliding is all good and well, but we really need the player to move. You would probably think of heading to the documentation and searching about how to add an event listener, but that is not necessary here. Phaser has a built-in Keyboard manager and one of the benefits of using that is this handy little function: + +
cursors = game.input.keyboard.createCursorKeys();
+ +This populates the cursors object with four properties: up, down, left, right, that are all instances of Phaser.Key objects. Then all we need to do is poll these in our update loop: + +
    //  Reset the players velocity (movement)
+    player.body.velocity.x = 0;
+
+    if (cursors.left.isDown)
+    {
+        //  Move to the left
+        player.body.velocity.x = -150;
+
+        player.animations.play('left');
+    }
+    else if (cursors.right.isDown)
+    {
+        //  Move to the right
+        player.body.velocity.x = 150;
+
+        player.animations.play('right');
+    }
+    else
+    {
+        //  Stand still
+        player.animations.stop();
+
+        player.frame = 4;
+    }
+    
+    //  Allow the player to jump if they are touching the ground.
+    if (cursors.up.isDown && player.body.touching.down)
+    {
+        player.body.velocity.y = -350;
+    }
+
+ +Although we've added a lot of code it should all be pretty readable. The first thing we do is reset the horizontal velocity on the sprite. Then we check to see if the left cursor key is held down. If it is we apply a negative horizontal velocity and start the 'left' running animation. If they are holding down 'right' instead we literally do the opposite. By clearing the velocity and setting it in this manner, every frame, it creates a 'stop-start' style of movement. + +The player sprite will move only when a key is held down and stop immediately they are not. Phaser also allows you to create more complex motions, with momentum and acceleration, but this gives us the effect we need for this game. The final part of the key check sets the frame to 4 if no keyis held down. Frame 4 in the sprite sheet is the one of the player looking at you, idle. + +

Jump to it

+ +The final part of the code adds the ability to jump. The up cursor is our jump key and we test if that is down. However we also test if the player is touching the floor, otherwise they could jump while in mid-air. If both of these conditions are met we apply a vertical velocity of 350 px/sec sq. The player will fall to the ground automatically because of the gravity value we applied to it. With the controls in place we now have a game world we can explore. Load up part7.html and have a play. Try tweaking values like the 350 for the jump to lower and higher values to see the effect it will have. + +part7 + +

Starshine

+ +It's time to give our little game a purpose. Let's drop a sprinkling of stars into the scene and allow the player to collect them. To achieve this we'll create a new Group called 'stars' and populate it. In our create function we add the following code (this can be seen in part8.html): + +
    stars = game.add.group();
+
+    //  Here we'll create 12 of them evenly spaced apart
+    for (var i = 0; i < 12; i++)
+    {
+        //  Create a star inside of the 'stars' group
+        var star = stars.create(i * 70, 0, 'star');
+
+        //  Let gravity do its thing
+        star.body.gravity.y = 6;
+
+        //  This just gives each star a slightly random bounce value
+        star.body.bounce.y = 0.7 + Math.random() * 0.2;
+    }
+
+ +The process is similar to when we created the platforms Group. Using a JavaScript 'for' loop we tell it to create 12 stars in our game. They have an x coordinate of i * 70, which means they will be evenly spaced out in the scene 70 pixels apart. As with the player we give them a gravity value so they'll fall down, and a bounce value so they'll bounce a little when they hit the platforms. Bounce is a value between 0 (no bounce at all) and 1 (a full bounce). Ours will bounce somewhere between 0.7 and 0.9. If we were to run the code like this the stars would fall through the bottom of the game. To stop that we need to check for their collision against the platforms in our update loop: + +
game.physics.collide(stars, platforms);
+ +As well as doing this we will also check to see if the player overlaps with a star or not: + +
game.physics.overlap(player, stars, collectStar, null, this);
+ +This tells Phaser to check for an overlap between the player and any star in the stars Group. If found then pass them to the 'collectStar' function: + +
function collectStar (player, star) {
+    
+    // Removes the star from the screen
+    star.kill();
+
+}
+
+ +Quite simply the star is killed, which removes it from display. Running the game now gives us a player that can dash about, jumping, bouncing off the platforms and collecting the stars that fall from above. Not bad for a few lines of hopefully mostly quite readable code :) + +part8 + +

Finishing touches

+ +The final tweak we'll make is to add a score. To do this we'll make use of a Phaser.Text object. Here we create two new variables, one to hold the actual score and the text object itself: + +
var score = 0;
+var scoreText;
+ +The scoreText is set-up in the create function: + +
scoreText = game.add.text(16, 16, 'score: 0', { fontSize: '32px', fill: '#000' });
+ +16x16 is the coordinate to display the text at. 'score: 0' is the default string to display and the object that follows contains a font size and fill colour. By not specifying which font we'll actually use the browser will default, so on Windows it will be Arial. Next we need to modify the collectStar function so that when the player picks-up a star their score increases and the text is updated to reflect this: + +
function collectStar (player, star) {
+    
+    // Removes the star from the screen
+    star.kill();
+
+    //  Add and update the score
+    score += 10;
+    scoreText.content = 'Score: ' + score;
+
+}
+
+ +So 10 points are added for every star and the scoreText is updated to show this new total. If you run part9.html you will see the final game. + +part9 + +

Conclusion

+ +You have now learnt how to create a sprite with physics properties, to control its motion and to make it interact with other objects in a small game world. There are lots more things you can do to enhance this, for example there is no sense of completion or jeopardy yet. Why not add some spikes you must avoid? You could create a new 'spikes' group and check for collision vs. the player, only instead of killing the spike sprite you kill the player instead. Or for a non-violent style game you could make it a speed-run and simply challenge them to collect the stars as quickly as possible. We've included a few +extra graphics in the zip file to help inspire you. + +With the help of what you have learnt in this tutorial and the 160+ examples available to you, you should now have a solid foundation for a future project. But as always if you have questions, need advice or want to share what you've been working on then feel free to ask for help in the Phaser forum. + +More tutorials will follow, stay tuned :)