From d1233ad2291f24c60f3185765a863a48ffcc4acc Mon Sep 17 00:00:00 2001 From: photonstorm Date: Tue, 13 Oct 2015 14:10:55 +0100 Subject: [PATCH] Phaser 2.4.4 RC1. --- README.md | 35 +- build/custom/phaser-arcade-physics.js | 13602 +++++++++---------- build/custom/phaser-arcade-physics.map | 2 +- build/custom/phaser-arcade-physics.min.js | 39 +- build/custom/phaser-minimum.js | 11418 +++++++--------- build/custom/phaser-minimum.map | 2 +- build/custom/phaser-minimum.min.js | 26 +- build/custom/phaser-no-physics.js | 13320 ++++++++++--------- build/custom/phaser-no-physics.map | 2 +- build/custom/phaser-no-physics.min.js | 35 +- build/phaser.js | 13679 ++++++++++---------- build/phaser.map | 2 +- build/phaser.min.js | 50 +- src/Phaser.js | 2 +- 14 files changed, 25416 insertions(+), 26798 deletions(-) diff --git a/README.md b/README.md index 65222bfda..59ac84ea0 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ Thousands of developers worldwide use it. From indies and multi-national digital * **Visit:** The [Phaser website](http://phaser.io) and follow on [Twitter](https://twitter.com/photonstorm) (#phaserjs) * **Learn:** [API Documentation](http://phaser.io/docs), [Support Forum][forum] and [StackOverflow](http://stackoverflow.com/questions/tagged/phaser-framework) -* **Code:** 550+ [Source Examples](http://phaser.io/examples) (also available in this [git repo][examples]) +* **Code:** 700+ [Source Examples](http://phaser.io/examples) (also available in this [git repo][examples]) * **Read:** Subscribe to the [Newsletter](https://confirmsubscription.com/h/r/369DE48E3E86AF1E) and grab our [Phaser Books](http://phaser.io/shop) -* **Chat:** [#phaserio IRC channel](http://www.html5gamedevs.com/topic/4470-official-phaserio-irc-channel-phaserio-on-freenode/) on freenode -* **Extend:** With [Phaser Plugins](https://github.com/photonstorm/phaser-plugins) -* **Be awesome:** Support the future of Phaser on [Patreon](https://www.patreon.com/photonstorm) or by buying our [books](http://phaser.io/shop/books) and [plugins](http://phaser.io/shop/plugins) +* **Chat:** [#phaserio IRC channel](http://www.html5gamedevs.com/topic/4470-official-phaserio-irc-channel-phaserio-on-freenode/) or our [Slack Channel](http://phaser.io/news/2015/08/phaser-slack-channel) +* **Extend:** With [Phaser Plugins](http://phaser.io/shop/plugins) +* **Be awesome:** Support the future of Phaser on [Patreon](https://www.patreon.com/photonstorm) or by buying our [books](http://phaser.io/shop/books) ![div](http://www.phaser.io/images/github/div.png) @@ -40,11 +40,17 @@ Thousands of developers worldwide use it. From indies and multi-national digital
-> 24th August 2015 +> 13th October 2015 -The release of Phaser 2.4.4 continues our work with bug fixes, new features and continued optimizations. As before it's a point-release, making it a safe upgrade for anyone using a previous 2.4 build. +The release of Phaser 2.4.4 continues our work with bug fixes, new features and optimizations. As with the previous version it's a point-release, making it a safe upgrade for anyone using an earlier 2.4 build. -As well as working on this release we've also been busily writing tutorials for the first issue of [Interphase](http://phaser.io/interphase/), our new publication for Phaser developers. Packed full of exclusive content we've been coding games, writing tutorials and authoring deep-dive articles for the first issue. It's been a blast so far and I'm excited for it's release in early September - and if you [pre-order now](http://phaser.io/interphase) with the discount code 'earlybird' you can save 15% on the cover price. +Internally here at Phaser HQ we have been busy with several new projects. + +First we released [Interphase](http://phaser.io/interphase/), a new 400-page publication for Phaser developers. Packed full of exclusive content including 8 complete games, tutorials and a deep dive into the Phaser State Manager. It's been a blast to write and we have been really encouraged by the response from readers. We're planning on releasing Interphase 2 before the end of the year. + +We've also released [Particle Storm](http://phaser.io/shop/plugins/particlestorm). An advanced particle system allowing you to easily create stunning special effects in your games with just a few lines of code. Our primary design goal was to create a particle system that was extremely flexible. It was important that you should be able to easily integrate the effects into your games. Particles are constructed through easy-to-understand JavaScript objects with multiple properties and options to let you quickly put together complex visuals with minimum effort. + +As we close in towards the end of 2015 there are still a couple of new releases on the horizon, as well as Phaser 2.4.5. We're also getting very close to a fully working build of Phaser 2 using our new renderer. As always, keep you eyes on the Phaser web site or [Twitter](https://twitter.com/photonstorm) for the latest news. Finally we'd be extremely grateful if you could get involved with our [Phaser Patreon campaign](https://www.patreon.com/photonstorm). The uptake so far has been fantastic. Thank you to everyone who now supports Phaser development and shares our belief in the future of HTML5 gaming and Phasers role in that. @@ -140,20 +146,21 @@ Using Phaser with **TypeScript**? Check out this great series of [Game From Scra ### Source Code Examples -Ever since we started Phaser we've been growing and expanding our extensive set of source code examples. Currently there are over 500 of them! +Ever since we started Phaser we've been growing and expanding our extensive set of source code examples. Currently there are over 700 of them! Browse the [Phaser Examples](http://phaser.io/examples) or clone the [examples repo][examples] and eat your heart out! -### Phaser Books +### Interphase -
+
-We've been busy writing books about Phaser. Available now: +[Interphase](http://phaser.io/interphase) is a new book for Phaser developers of all skill levels. -* [A Guide to the Phaser Tween Manager](https://leanpub.com/phasertweenmanager) Book + Code Bundle -* [A Guide to the Phaser Scale Manager](https://leanpub.com/phaserscalemanager) +With 400 pages of content you'll find detailed articles, game development "Making Of" guides and tutorials. All were written using the latest version of Phaser, so you won't be learning any out-dated tricks here. -With more on the way. [Vote on the next title](http://www.html5gamedevs.com/topic/10962-which-phaser-book-would-you-like-to-see-next/) to be written. +As well as the book you get all the source code, graphics and assets to go with it, as well as lots of extras too. + +[Read More](http://phaser.io/interphase) ### Game Mechanic Explorer diff --git a/build/custom/phaser-arcade-physics.js b/build/custom/phaser-arcade-physics.js index 0adda59f1..64324b4e2 100644 --- a/build/custom/phaser-arcade-physics.js +++ b/build/custom/phaser-arcade-physics.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.4.3 "Coramen" - Built: Mon Aug 24 2015 13:54:20 +* v2.4.4 "Amador" - Built: Tue Oct 13 2015 14:10:01 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -56,6 +56,13 @@ */ var PIXI = PIXI || {}; +/** + * A reference to the Phaser Game instance that owns this Pixi renderer. + * @property {Phaser.Game} game + * @static + */ +PIXI.game = null; + /** * @property {Number} WEBGL_RENDERER * @protected @@ -75,7 +82,7 @@ PIXI.CANVAS_RENDERER = 1; * @property {String} VERSION * @static */ -PIXI.VERSION = "v2.2.8"; +PIXI.VERSION = "v2.2.9"; // used to create uids for various pixi objects. PIXI._UID = 0; @@ -137,7 +144,6 @@ PIXI.RETINA_PREFIX = "@2x"; * @property {Boolean} defaultRenderOptions.clearBeforeRender=true * @property {Boolean} defaultRenderOptions.autoResize=false * @static - */ PIXI.defaultRenderOptions = { view: null, transparent: false, @@ -147,6 +153,7 @@ PIXI.defaultRenderOptions = { clearBeforeRender: true, autoResize: false }; + */ /** * @author Mat Groves http://matgroves.com/ @Doormat23 @@ -177,25 +184,6 @@ PIXI.DisplayObject = function() */ this.scale = new PIXI.Point(1, 1); - /** - * The transform callback is an optional callback that if set will be called at the end of the updateTransform method and sent two parameters: - * This Display Objects worldTransform matrix and its parents transform matrix. Both are PIXI.Matrix object types. - * The matrix are passed by reference and can be modified directly without needing to return them. - * This ability allows you to check any of the matrix values and perform actions such as clamping scale or limiting rotation, regardless of the parent transforms. - * - * @property transformCallback - * @type Function - */ - this.transformCallback = null; - - /** - * The context under which the transformCallback is invoked. - * - * @property transformCallbackContext - * @type Object - */ - this.transformCallbackContext = null; - /** * The pivot point of the displayObject that it rotates around * @@ -409,8 +397,6 @@ PIXI.DisplayObject.prototype.destroy = function() this.children = []; } - this.transformCallback = null; - this.transformCallbackContext = null; this.hitArea = null; this.parent = null; this.stage = null; @@ -1433,6 +1419,7 @@ PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession) { renderSession.maskManager.popMask(renderSession); } + }; /** @@ -1661,8 +1648,21 @@ PIXI.Sprite.prototype.getBounds = function(matrix) if (b === 0 && c === 0) { // scale may be negative! - if (a < 0) a *= -1; - if (d < 0) d *= -1; + if (a < 0) + { + a *= -1; + var temp = w0; + w0 = -w1; + w1 = -temp; + } + + if (d < 0) + { + d *= -1; + var temp = h0; + h0 = -h1; + h1 = -temp; + } // this means there is no rotation going on right? RIGHT? // if thats the case then we can avoid checking the bound values! yay @@ -1801,7 +1801,7 @@ PIXI.Sprite.prototype._renderWebGL = function(renderSession, matrix) PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) { // If the sprite is not visible or the alpha is 0 then no need to render this element - if (this.visible === false || this.alpha === 0 || this.renderable === false || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) + if (!this.visible || this.alpha === 0 || !this.renderable || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) { return; } @@ -2109,82 +2109,6 @@ PIXI.SpriteBatch.prototype._renderCanvas = function(renderSession) }; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A Stage represents the root of the display tree. Everything connected to the stage is rendered - * - * @class Stage - * @extends DisplayObjectContainer - * @constructor - * @param backgroundColor {Number} the background color of the stage, you have to pass this in is in hex format - * like: 0xFFFFFF for white - * - * Creating a stage is a mandatory process when you use Pixi, which is as simple as this : - * var stage = new PIXI.Stage(0xFFFFFF); - * where the parameter given is the background colour of the stage, in hex - * you will use this stage instance to add your sprites to it and therefore to the renderer - * Here is how to add a sprite to the stage : - * stage.addChild(sprite); - */ -PIXI.Stage = function(backgroundColor) -{ - PIXI.DisplayObjectContainer.call( this ); - - /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ - this.worldTransform = new PIXI.Matrix(); - - //the stage is its own stage - this.stage = this; - - this.setBackgroundColor(backgroundColor); -}; - -// constructor -PIXI.Stage.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Stage.prototype.constructor = PIXI.Stage; - -/* - * Updates the object transform for rendering - * - * @method updateTransform - * @private - */ -PIXI.Stage.prototype.updateTransform = function() -{ - this.worldAlpha = 1; - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } -}; - -/** - * Sets the background color for the stage - * - * @method setBackgroundColor - * @param backgroundColor {Number} the color of the background, easiest way to pass this in is in hex format - * like: 0xFFFFFF for white - */ -PIXI.Stage.prototype.setBackgroundColor = function(backgroundColor) -{ - this.backgroundColor = backgroundColor || 0x000000; - this.backgroundColorSplit = PIXI.hex2rgb(this.backgroundColor); - var hex = this.backgroundColor.toString(16); - hex = '000000'.substr(0, 6 - hex.length) + hex; - this.backgroundColorString = '#' + hex; -}; - /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2280,175 +2204,6 @@ PIXI.isPowerOfTwo = function(width, height) }; -/* - PolyK library - url: http://polyk.ivank.net - Released under MIT licence. - - Copyright (c) 2012 Ivan Kuckir - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - - This is an amazing lib! - - Slightly modified by Mat Groves (matgroves.com); -*/ - -/** - * Based on the Polyk library http://polyk.ivank.net released under MIT licence. - * This is an amazing lib! - * Slightly modified by Mat Groves (matgroves.com); - * @class PolyK - */ -PIXI.PolyK = {}; - -/** - * Triangulates shapes for webGL graphic fills. - * - * @method Triangulate - */ -PIXI.PolyK.Triangulate = function(p) -{ - var sign = true; - - var n = p.length >> 1; - if(n < 3) return []; - - var tgs = []; - var avl = []; - for(var i = 0; i < n; i++) avl.push(i); - - i = 0; - var al = n; - while(al > 3) - { - var i0 = avl[(i+0)%al]; - var i1 = avl[(i+1)%al]; - var i2 = avl[(i+2)%al]; - - var ax = p[2*i0], ay = p[2*i0+1]; - var bx = p[2*i1], by = p[2*i1+1]; - var cx = p[2*i2], cy = p[2*i2+1]; - - var earFound = false; - if(PIXI.PolyK._convex(ax, ay, bx, by, cx, cy, sign)) - { - earFound = true; - for(var j = 0; j < al; j++) - { - var vi = avl[j]; - if(vi === i0 || vi === i1 || vi === i2) continue; - - if(PIXI.PolyK._PointInTriangle(p[2*vi], p[2*vi+1], ax, ay, bx, by, cx, cy)) { - earFound = false; - break; - } - } - } - - if(earFound) - { - tgs.push(i0, i1, i2); - avl.splice((i+1)%al, 1); - al--; - i = 0; - } - else if(i++ > 3*al) - { - // need to flip flip reverse it! - // reset! - if(sign) - { - tgs = []; - avl = []; - for(i = 0; i < n; i++) avl.push(i); - - i = 0; - al = n; - - sign = false; - } - else - { - // window.console.log("PIXI Warning: shape too complex to fill"); - return null; - } - } - } - - tgs.push(avl[0], avl[1], avl[2]); - return tgs; -}; - -/** - * Checks whether a point is within a triangle - * - * @method _PointInTriangle - * @param px {Number} x coordinate of the point to test - * @param py {Number} y coordinate of the point to test - * @param ax {Number} x coordinate of the a point of the triangle - * @param ay {Number} y coordinate of the a point of the triangle - * @param bx {Number} x coordinate of the b point of the triangle - * @param by {Number} y coordinate of the b point of the triangle - * @param cx {Number} x coordinate of the c point of the triangle - * @param cy {Number} y coordinate of the c point of the triangle - * @private - * @return {Boolean} - */ -PIXI.PolyK._PointInTriangle = function(px, py, ax, ay, bx, by, cx, cy) -{ - var v0x = cx-ax; - var v0y = cy-ay; - var v1x = bx-ax; - var v1y = by-ay; - var v2x = px-ax; - var v2y = py-ay; - - var dot00 = v0x*v0x+v0y*v0y; - var dot01 = v0x*v1x+v0y*v1y; - var dot02 = v0x*v2x+v0y*v2y; - var dot11 = v1x*v1x+v1y*v1y; - var dot12 = v1x*v2x+v1y*v2y; - - var invDenom = 1 / (dot00 * dot11 - dot01 * dot01); - var u = (dot11 * dot02 - dot01 * dot12) * invDenom; - var v = (dot00 * dot12 - dot01 * dot02) * invDenom; - - // Check if point is in triangle - return (u >= 0) && (v >= 0) && (u + v < 1); -}; - -/** - * Checks whether a shape is convex - * - * @method _convex - * @private - * @return {Boolean} - */ -PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) -{ - return ((ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0) === sign; -}; - /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -2456,21 +2211,21 @@ PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) */ /** -* The CanvasPool is a global static object that allows Pixi and Phaser to pool +* The CanvasPool is a global static object that allows Pixi and Phaser to pool canvas DOM elements. * -* @class PIXI.CanvasPool +* @class CanvasPool * @static */ PIXI.CanvasPool = { /** + * Creates a new Canvas DOM element, or pulls one from the pool if free. * - * - * @method PIXI.CanvasPool.create + * @method create * @static - * @param {any} parent - The parent of the canvas element. - * @param {number} width - The width of the canvas element. - * @param {number} height - The height of the canvas element. + * @param parent {any} The parent of the canvas element. + * @param width {number} The width of the canvas element. + * @param height {number} The height of the canvas element. * @return {HTMLCanvasElement} The canvas element. */ create: function (parent, width, height) { @@ -2488,16 +2243,12 @@ PIXI.CanvasPool = { PIXI.CanvasPool.pool.push(container); canvas = container.canvas; - - // console.log('CanvasPool created', PIXI.CanvasPool.pool.length); } else { PIXI.CanvasPool.pool[idx].parent = parent; canvas = PIXI.CanvasPool.pool[idx].canvas; - - // console.log('CanvasPool recycled', idx); } if (width !== undefined) @@ -2510,6 +2261,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the first free canvas index from the pool. + * + * @method getFirst + * @static + * @return {number} + */ getFirst: function () { var pool = PIXI.CanvasPool.pool; @@ -2526,6 +2284,13 @@ PIXI.CanvasPool = { }, + /** + * Removes the parent from a canvas element from the pool, freeing it up for re-use. + * + * @method remove + * @param parent {any} The parent of the canvas element. + * @static + */ remove: function (parent) { var pool = PIXI.CanvasPool.pool; @@ -2535,13 +2300,18 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; - - // console.log('CanvasPool removed', i); } } }, + /** + * Removes the parent from a canvas element from the pool, freeing it up for re-use. + * + * @method removeByCanvas + * @param canvas {HTMLCanvasElement} The canvas element to remove + * @static + */ removeByCanvas: function (canvas) { var pool = PIXI.CanvasPool.pool; @@ -2556,6 +2326,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the total number of used canvas elements in the pool. + * + * @method getTotal + * @static + * @return {number} The number of in-use (parented) canvas elements in the pool. + */ getTotal: function () { var pool = PIXI.CanvasPool.pool; @@ -2573,6 +2350,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the total number of free canvas elements in the pool. + * + * @method getFree + * @static + * @return {number} The number of free (un-parented) canvas elements in the pool. + */ getFree: function () { var pool = PIXI.CanvasPool.pool; @@ -2592,6 +2376,13 @@ PIXI.CanvasPool = { }; +/** + * The pool into which the canvas dom elements are placed. + * + * @property pool + * @type Array + * @static + */ PIXI.CanvasPool.pool = []; /** @@ -3599,903 +3390,6 @@ PIXI.ComplexPrimitiveShader.prototype.destroy = function() this.attribute = null; }; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A set of functions used by the webGL renderer to draw the primitive graphics data - * - * @class WebGLGraphics - * @private - * @static - */ -PIXI.WebGLGraphics = function() -{ -}; - -/** - * Renders the graphics object - * - * @static - * @private - * @method renderGraphics - * @param graphics {Graphics} - * @param renderSession {Object} - */ -PIXI.WebGLGraphics.renderGraphics = function(graphics, renderSession)//projection, offset) -{ - var gl = renderSession.gl; - var projection = renderSession.projection, - offset = renderSession.offset, - shader = renderSession.shaderManager.primitiveShader, - webGLData; - - if(graphics.dirty) - { - PIXI.WebGLGraphics.updateGraphics(graphics, gl); - } - - var webGL = graphics._webGL[gl.id]; - - // This could be speeded up for sure! - - for (var i = 0; i < webGL.data.length; i++) - { - if(webGL.data[i].mode === 1) - { - webGLData = webGL.data[i]; - - renderSession.stencilManager.pushStencil(graphics, webGLData, renderSession); - - // render quad.. - gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); - - renderSession.stencilManager.popStencil(graphics, webGLData, renderSession); - } - else - { - webGLData = webGL.data[i]; - - - renderSession.shaderManager.setShader( shader );//activatePrimitiveShader(); - shader = renderSession.shaderManager.primitiveShader; - gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); - - gl.uniform1f(shader.flipY, 1); - - gl.uniform2f(shader.projectionVector, projection.x, -projection.y); - gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); - - gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); - - gl.uniform1f(shader.alpha, graphics.worldAlpha); - - - gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); - - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); - gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); - - // set the index buffer! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); - gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); - } - } -}; - -/** - * Updates the graphics object - * - * @static - * @private - * @method updateGraphics - * @param graphicsData {Graphics} The graphics object to update - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.WebGLGraphics.updateGraphics = function(graphics, gl) -{ - // get the contexts graphics object - var webGL = graphics._webGL[gl.id]; - // if the graphics object does not exist in the webGL context time to create it! - if(!webGL)webGL = graphics._webGL[gl.id] = {lastIndex:0, data:[], gl:gl}; - - // flag the graphics as not dirty as we are about to update it... - graphics.dirty = false; - - var i; - - // if the user cleared the graphics object we will need to clear every object - if(graphics.clearDirty) - { - graphics.clearDirty = false; - - // lop through and return all the webGLDatas to the object pool so than can be reused later on - for (i = 0; i < webGL.data.length; i++) - { - var graphicsData = webGL.data[i]; - graphicsData.reset(); - PIXI.WebGLGraphics.graphicsDataPool.push( graphicsData ); - } - - // clear the array and reset the index.. - webGL.data = []; - webGL.lastIndex = 0; - } - - var webGLData; - - // loop through the graphics datas and construct each one.. - // if the object is a complex fill then the new stencil buffer technique will be used - // other wise graphics objects will be pushed into a batch.. - for (i = webGL.lastIndex; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - - if(data.type === PIXI.Graphics.POLY) - { - // need to add the points the the graphics object.. - data.points = data.shape.points.slice(); - if(data.shape.closed) - { - // close the poly if the value is true! - if(data.points[0] !== data.points[data.points.length-2] || data.points[1] !== data.points[data.points.length-1]) - { - data.points.push(data.points[0], data.points[1]); - } - } - - // MAKE SURE WE HAVE THE CORRECT TYPE.. - if(data.fill) - { - if(data.points.length >= 6) - { - if(data.points.length < 6 * 2) - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - - var canDrawUsingSimple = PIXI.WebGLGraphics.buildPoly(data, webGLData); - // console.log(canDrawUsingSimple); - - if(!canDrawUsingSimple) - { - // console.log("<>>>") - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); - PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); - } - - } - else - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); - PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); - } - } - } - - if(data.lineWidth > 0) - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - PIXI.WebGLGraphics.buildLine(data, webGLData); - - } - } - else - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - - if(data.type === PIXI.Graphics.RECT) - { - PIXI.WebGLGraphics.buildRectangle(data, webGLData); - } - else if(data.type === PIXI.Graphics.CIRC || data.type === PIXI.Graphics.ELIP) - { - PIXI.WebGLGraphics.buildCircle(data, webGLData); - } - else if(data.type === PIXI.Graphics.RREC) - { - PIXI.WebGLGraphics.buildRoundedRectangle(data, webGLData); - } - } - - webGL.lastIndex++; - } - - // upload all the dirty data... - for (i = 0; i < webGL.data.length; i++) - { - webGLData = webGL.data[i]; - if(webGLData.dirty)webGLData.upload(); - } -}; - -/** - * @static - * @private - * @method switchMode - * @param webGL {WebGLContext} - * @param type {Number} - */ -PIXI.WebGLGraphics.switchMode = function(webGL, type) -{ - var webGLData; - - if(!webGL.data.length) - { - webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); - webGLData.mode = type; - webGL.data.push(webGLData); - } - else - { - webGLData = webGL.data[webGL.data.length-1]; - - if(webGLData.mode !== type || type === 1) - { - webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); - webGLData.mode = type; - webGL.data.push(webGLData); - } - } - - webGLData.dirty = true; - - return webGLData; -}; - -/** - * Builds a rectangle to draw - * - * @static - * @private - * @method buildRectangle - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) -{ - // --- // - // need to convert points to a nice regular data - // - var rectData = graphicsData.shape; - var x = rectData.x; - var y = rectData.y; - var width = rectData.width; - var height = rectData.height; - - if(graphicsData.fill) - { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vertPos = verts.length/6; - - // start - verts.push(x, y); - verts.push(r, g, b, alpha); - - verts.push(x + width, y); - verts.push(r, g, b, alpha); - - verts.push(x , y + height); - verts.push(r, g, b, alpha); - - verts.push(x + width, y + height); - verts.push(r, g, b, alpha); - - // insert 2 dead triangles.. - indices.push(vertPos, vertPos, vertPos+1, vertPos+2, vertPos+3, vertPos+3); - } - - if(graphicsData.lineWidth) - { - var tempPoints = graphicsData.points; - - graphicsData.points = [x, y, - x + width, y, - x + width, y + height, - x, y + height, - x, y]; - - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Builds a rounded rectangle to draw - * - * @static - * @private - * @method buildRoundedRectangle - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildRoundedRectangle = function(graphicsData, webGLData) -{ - var rrectData = graphicsData.shape; - var x = rrectData.x; - var y = rrectData.y; - var width = rrectData.width; - var height = rrectData.height; - - var radius = rrectData.radius; - - var recPoints = []; - recPoints.push(x, y + radius); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x, y + height - radius, x, y + height, x + radius, y + height)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width - radius, y + height, x + width, y + height, x + width, y + height - radius)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width, y + radius, x + width, y, x + width - radius, y)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + radius, y, x, y, x, y + radius)); - - if (graphicsData.fill) { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vecPos = verts.length/6; - - var triangles = PIXI.PolyK.Triangulate(recPoints); - - // - - var i = 0; - for (i = 0; i < triangles.length; i+=3) - { - indices.push(triangles[i] + vecPos); - indices.push(triangles[i] + vecPos); - indices.push(triangles[i+1] + vecPos); - indices.push(triangles[i+2] + vecPos); - indices.push(triangles[i+2] + vecPos); - } - - - for (i = 0; i < recPoints.length; i++) - { - verts.push(recPoints[i], recPoints[++i], r, g, b, alpha); - } - } - - if (graphicsData.lineWidth) { - var tempPoints = graphicsData.points; - - graphicsData.points = recPoints; - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Calculate the points for a quadratic bezier curve. (helper function..) - * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c - * - * @static - * @private - * @method quadraticBezierCurve - * @param fromX {Number} Origin point x - * @param fromY {Number} Origin point x - * @param cpX {Number} Control point x - * @param cpY {Number} Control point y - * @param toX {Number} Destination point x - * @param toY {Number} Destination point y - * @return {Array(Number)} - */ -PIXI.WebGLGraphics.quadraticBezierCurve = function(fromX, fromY, cpX, cpY, toX, toY) { - - var xa, - ya, - xb, - yb, - x, - y, - n = 20, - points = []; - - function getPt(n1 , n2, perc) { - var diff = n2 - n1; - - return n1 + ( diff * perc ); - } - - var j = 0; - for (var i = 0; i <= n; i++ ) - { - j = i / n; - - // The Green Line - xa = getPt( fromX , cpX , j ); - ya = getPt( fromY , cpY , j ); - xb = getPt( cpX , toX , j ); - yb = getPt( cpY , toY , j ); - - // The Black Dot - x = getPt( xa , xb , j ); - y = getPt( ya , yb , j ); - - points.push(x, y); - } - return points; -}; - -/** - * Builds a circle to draw - * - * @static - * @private - * @method buildCircle - * @param graphicsData {Graphics} The graphics object to draw - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) -{ - // need to convert points to a nice regular data - var circleData = graphicsData.shape; - var x = circleData.x; - var y = circleData.y; - var width; - var height; - - // TODO - bit hacky?? - if(graphicsData.type === PIXI.Graphics.CIRC) - { - width = circleData.radius; - height = circleData.radius; - } - else - { - width = circleData.width; - height = circleData.height; - } - - var totalSegs = 40; - var seg = (Math.PI * 2) / totalSegs ; - - var i = 0; - - if(graphicsData.fill) - { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vecPos = verts.length/6; - - indices.push(vecPos); - - for (i = 0; i < totalSegs + 1 ; i++) - { - verts.push(x,y, r, g, b, alpha); - - verts.push(x + Math.sin(seg * i) * width, - y + Math.cos(seg * i) * height, - r, g, b, alpha); - - indices.push(vecPos++, vecPos++); - } - - indices.push(vecPos-1); - } - - if(graphicsData.lineWidth) - { - var tempPoints = graphicsData.points; - - graphicsData.points = []; - - for (i = 0; i < totalSegs + 1; i++) - { - graphicsData.points.push(x + Math.sin(seg * i) * width, - y + Math.cos(seg * i) * height); - } - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Builds a line to draw - * - * @static - * @private - * @method buildLine - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) -{ - // TODO OPTIMISE! - var i = 0; - var points = graphicsData.points; - if(points.length === 0)return; - - // if the line width is an odd number add 0.5 to align to a whole pixel - if(graphicsData.lineWidth%2) - { - for (i = 0; i < points.length; i++) { - points[i] += 0.5; - } - } - - // get first and last point.. figure out the middle! - var firstPoint = new PIXI.Point( points[0], points[1] ); - var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); - - // if the first point is the last point - gonna have issues :) - if(firstPoint.x === lastPoint.x && firstPoint.y === lastPoint.y) - { - // need to clone as we are going to slightly modify the shape.. - points = points.slice(); - - points.pop(); - points.pop(); - - lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); - - var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; - var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; - - points.unshift(midPointX, midPointY); - points.push(midPointX, midPointY); - } - - var verts = webGLData.points; - var indices = webGLData.indices; - var length = points.length / 2; - var indexCount = points.length; - var indexStart = verts.length/6; - - // DRAW the Line - var width = graphicsData.lineWidth / 2; - - // sort color - var color = PIXI.hex2rgb(graphicsData.lineColor); - var alpha = graphicsData.lineAlpha; - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var px, py, p1x, p1y, p2x, p2y, p3x, p3y; - var perpx, perpy, perp2x, perp2y, perp3x, perp3y; - var a1, b1, c1, a2, b2, c2; - var denom, pdist, dist; - - p1x = points[0]; - p1y = points[1]; - - p2x = points[2]; - p2y = points[3]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - // start - verts.push(p1x - perpx , p1y - perpy, - r, g, b, alpha); - - verts.push(p1x + perpx , p1y + perpy, - r, g, b, alpha); - - for (i = 1; i < length-1; i++) - { - p1x = points[(i-1)*2]; - p1y = points[(i-1)*2 + 1]; - - p2x = points[(i)*2]; - p2y = points[(i)*2 + 1]; - - p3x = points[(i+1)*2]; - p3y = points[(i+1)*2 + 1]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - perp2x = -(p2y - p3y); - perp2y = p2x - p3x; - - dist = Math.sqrt(perp2x*perp2x + perp2y*perp2y); - perp2x /= dist; - perp2y /= dist; - perp2x *= width; - perp2y *= width; - - a1 = (-perpy + p1y) - (-perpy + p2y); - b1 = (-perpx + p2x) - (-perpx + p1x); - c1 = (-perpx + p1x) * (-perpy + p2y) - (-perpx + p2x) * (-perpy + p1y); - a2 = (-perp2y + p3y) - (-perp2y + p2y); - b2 = (-perp2x + p2x) - (-perp2x + p3x); - c2 = (-perp2x + p3x) * (-perp2y + p2y) - (-perp2x + p2x) * (-perp2y + p3y); - - denom = a1*b2 - a2*b1; - - if(Math.abs(denom) < 0.1 ) - { - - denom+=10.1; - verts.push(p2x - perpx , p2y - perpy, - r, g, b, alpha); - - verts.push(p2x + perpx , p2y + perpy, - r, g, b, alpha); - - continue; - } - - px = (b1*c2 - b2*c1)/denom; - py = (a2*c1 - a1*c2)/denom; - - - pdist = (px -p2x) * (px -p2x) + (py -p2y) + (py -p2y); - - - if(pdist > 140 * 140) - { - perp3x = perpx - perp2x; - perp3y = perpy - perp2y; - - dist = Math.sqrt(perp3x*perp3x + perp3y*perp3y); - perp3x /= dist; - perp3y /= dist; - perp3x *= width; - perp3y *= width; - - verts.push(p2x - perp3x, p2y -perp3y); - verts.push(r, g, b, alpha); - - verts.push(p2x + perp3x, p2y +perp3y); - verts.push(r, g, b, alpha); - - verts.push(p2x - perp3x, p2y -perp3y); - verts.push(r, g, b, alpha); - - indexCount++; - } - else - { - - verts.push(px , py); - verts.push(r, g, b, alpha); - - verts.push(p2x - (px-p2x), p2y - (py - p2y)); - verts.push(r, g, b, alpha); - } - } - - p1x = points[(length-2)*2]; - p1y = points[(length-2)*2 + 1]; - - p2x = points[(length-1)*2]; - p2y = points[(length-1)*2 + 1]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - verts.push(p2x - perpx , p2y - perpy); - verts.push(r, g, b, alpha); - - verts.push(p2x + perpx , p2y + perpy); - verts.push(r, g, b, alpha); - - indices.push(indexStart); - - for (i = 0; i < indexCount; i++) - { - indices.push(indexStart++); - } - - indices.push(indexStart-1); -}; - -/** - * Builds a complex polygon to draw - * - * @static - * @private - * @method buildComplexPoly - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildComplexPoly = function(graphicsData, webGLData) -{ - //TODO - no need to copy this as it gets turned into a FLoat32Array anyways.. - var points = graphicsData.points.slice(); - if(points.length < 6)return; - - // get first and last point.. figure out the middle! - var indices = webGLData.indices; - webGLData.points = points; - webGLData.alpha = graphicsData.fillAlpha; - webGLData.color = PIXI.hex2rgb(graphicsData.fillColor); - - /* - calclate the bounds.. - */ - var minX = Infinity; - var maxX = -Infinity; - - var minY = Infinity; - var maxY = -Infinity; - - var x,y; - - // get size.. - for (var i = 0; i < points.length; i+=2) - { - x = points[i]; - y = points[i+1]; - - minX = x < minX ? x : minX; - maxX = x > maxX ? x : maxX; - - minY = y < minY ? y : minY; - maxY = y > maxY ? y : maxY; - } - - // add a quad to the end cos there is no point making another buffer! - points.push(minX, minY, - maxX, minY, - maxX, maxY, - minX, maxY); - - // push a quad onto the end.. - - //TODO - this aint needed! - var length = points.length / 2; - for (i = 0; i < length; i++) - { - indices.push( i ); - } - -}; - -/** - * Builds a polygon to draw - * - * @static - * @private - * @method buildPoly - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildPoly = function(graphicsData, webGLData) -{ - var points = graphicsData.points; - - if(points.length < 6)return; - // get first and last point.. figure out the middle! - var verts = webGLData.points; - var indices = webGLData.indices; - - var length = points.length / 2; - - // sort color - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var triangles = PIXI.PolyK.Triangulate(points); - - if(!triangles)return false; - - var vertPos = verts.length / 6; - - var i = 0; - - for (i = 0; i < triangles.length; i+=3) - { - indices.push(triangles[i] + vertPos); - indices.push(triangles[i] + vertPos); - indices.push(triangles[i+1] + vertPos); - indices.push(triangles[i+2] +vertPos); - indices.push(triangles[i+2] + vertPos); - } - - for (i = 0; i < length; i++) - { - verts.push(points[i * 2], points[i * 2 + 1], - r, g, b, alpha); - } - - return true; -}; - -PIXI.WebGLGraphics.graphicsDataPool = []; - -/** - * @class WebGLGraphicsData - * @private - * @static - */ -PIXI.WebGLGraphicsData = function(gl) -{ - this.gl = gl; - - //TODO does this need to be split before uploding?? - this.color = [0,0,0]; // color split! - this.points = []; - this.indices = []; - this.buffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - this.mode = 1; - this.alpha = 1; - this.dirty = true; -}; - -/** - * @method reset - */ -PIXI.WebGLGraphicsData.prototype.reset = function() -{ - this.points = []; - this.indices = []; -}; - -/** - * @method upload - */ -PIXI.WebGLGraphicsData.prototype.upload = function() -{ - var gl = this.gl; - -// this.lastIndex = graphics.graphicsData.length; - this.glPoints = new PIXI.Float32Array(this.points); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.glPoints, gl.STATIC_DRAW); - - this.glIndicies = new PIXI.Uint16Array(this.indices); - - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.glIndicies, gl.STATIC_DRAW); - - this.dirty = false; -}; - /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -4511,31 +3405,16 @@ PIXI.instances = []; * * @class WebGLRenderer * @constructor - * @param [width=0] {Number} the width of the canvas view - * @param [height=0] {Number} the height of the canvas view - * @param [options] {Object} The optional renderer parameters - * @param [options.view] {HTMLCanvasElement} the canvas to use as a view, optional - * @param [options.transparent=false] {Boolean} If the render view is transparent, default false - * @param [options.autoResize=false] {Boolean} If the render view is automatically resized, default false - * @param [options.antialias=false] {Boolean} sets antialias (only applicable in chrome at the moment) - * @param [options.preserveDrawingBuffer=false] {Boolean} enables drawing buffer preservation, enable this if you need to call toDataUrl on the webgl context - * @param [options.resolution=1] {Number} the resolution of the renderer retina would be 2 + * @param game {Phaser.Game} A reference to the Phaser Game instance */ -PIXI.WebGLRenderer = function(width, height, options) -{ - if(options) - { - for (var i in PIXI.defaultRenderOptions) - { - if (options[i] === undefined) options[i] = PIXI.defaultRenderOptions[i]; - } - } - else - { - options = PIXI.defaultRenderOptions; - } +PIXI.WebGLRenderer = function(game) { - if(!PIXI.defaultRenderer) + /** + * @property {Phaser.Game} game - A reference to the Phaser Game instance. + */ + this.game = game; + + if (!PIXI.defaultRenderer) { PIXI.defaultRenderer = this; } @@ -4553,9 +3432,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @type Number * @default 1 */ - this.resolution = options.resolution; - - // do a catch.. only 1 webGL renderer.. + this.resolution = game.resolution; /** * Whether the render view is transparent @@ -4563,7 +3440,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property transparent * @type Boolean */ - this.transparent = options.transparent; + this.transparent = game.transparent; /** * Whether the render view should be resized automatically @@ -4571,7 +3448,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property autoResize * @type Boolean */ - this.autoResize = options.autoResize || false; + this.autoResize = false; /** * The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. @@ -4579,7 +3456,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property preserveDrawingBuffer * @type Boolean */ - this.preserveDrawingBuffer = options.preserveDrawingBuffer; + this.preserveDrawingBuffer = game.preserveDrawingBuffer; /** * This sets if the WebGLRenderer will clear the context texture or not before the new render pass. If true: @@ -4591,25 +3468,23 @@ PIXI.WebGLRenderer = function(width, height, options) * @type Boolean * @default */ - this.clearBeforeRender = options.clearBeforeRender; + this.clearBeforeRender = game.clearBeforeRender; /** * The width of the canvas view * * @property width * @type Number - * @default 800 */ - this.width = width || 800; + this.width = game.width; /** * The height of the canvas view * * @property height * @type Number - * @default 600 */ - this.height = height || 600; + this.height = game.height; /** * The canvas element that everything is drawn to @@ -4617,7 +3492,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property view * @type HTMLCanvasElement */ - this.view = options.view || document.createElement('canvas'); + this.view = game.canvas; /** * @property _contextOptions @@ -4626,10 +3501,10 @@ PIXI.WebGLRenderer = function(width, height, options) */ this._contextOptions = { alpha: this.transparent, - antialias: options.antialias, // SPEED UP?? + antialias: game.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - preserveDrawingBuffer: options.preserveDrawingBuffer + preserveDrawingBuffer: this.preserveDrawingBuffer }; /** @@ -4642,7 +3517,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property offset * @type Point */ - this.offset = new PIXI.Point(0, 0); + this.offset = new PIXI.Point(); // time to create the render managers! each one focuses on managing a state in webGL @@ -4689,11 +3564,13 @@ PIXI.WebGLRenderer = function(width, height, options) this.blendModeManager = new PIXI.WebGLBlendModeManager(); /** - * TODO remove * @property renderSession * @type Object */ this.renderSession = {}; + + // Needed? + this.renderSession.game = this.game; this.renderSession.gl = this.gl; this.renderSession.drawCount = 0; this.renderSession.shaderManager = this.shaderManager; @@ -4710,6 +3587,7 @@ PIXI.WebGLRenderer = function(width, height, options) // map some webGL blend modes.. this.mapBlendModes(); + }; // constructor @@ -4721,6 +3599,7 @@ PIXI.WebGLRenderer.prototype.constructor = PIXI.WebGLRenderer; PIXI.WebGLRenderer.prototype.initContext = function() { var gl = this.view.getContext('webgl', this._contextOptions) || this.view.getContext('experimental-webgl', this._contextOptions); + this.gl = gl; if (!gl) { @@ -4762,14 +3641,9 @@ PIXI.WebGLRenderer.prototype.initContext = function() PIXI.WebGLRenderer.prototype.render = function(stage) { // no point rendering if our context has been blown up! - if (this.contextLost) return; - - // if rendering a new stage clear the batches.. - if (this.__stage !== stage) + if (this.contextLost) { - // TODO make this work - // dont think this is needed any more? - this.__stage = stage; + return; } // update the scene graph @@ -4783,21 +3657,14 @@ PIXI.WebGLRenderer.prototype.render = function(stage) // make sure we are bound to the main frame buffer gl.bindFramebuffer(gl.FRAMEBUFFER, null); - if (this.clearBeforeRender) + if (this.game.clearBeforeRender) { - if (this.transparent) - { - gl.clearColor(0, 0, 0, 0); - } - else - { - gl.clearColor(stage.backgroundColorSplit[0],stage.backgroundColorSplit[1],stage.backgroundColorSplit[2], 1); - } + gl.clearColor(stage._bgColor.r, stage._bgColor.g, stage._bgColor.b, stage._bgColor.a); - gl.clear (gl.COLOR_BUFFER_BIT); + gl.clear(gl.COLOR_BUFFER_BIT); } - this.renderDisplayObject( stage, this.projection ); + this.renderDisplayObject(stage, this.projection); }; /** @@ -4868,12 +3735,13 @@ PIXI.WebGLRenderer.prototype.resize = function(width, height) * * @method updateTexture * @param texture {Texture} the texture to update + * @return {boolean} True if the texture was successfully bound, otherwise false. */ PIXI.WebGLRenderer.prototype.updateTexture = function(texture) { if (!texture.hasLoaded) { - return; + return false; } var gl = this.gl; @@ -4914,7 +3782,8 @@ PIXI.WebGLRenderer.prototype.updateTexture = function(texture) texture._dirty[gl.id] = false; - return texture._glTextures[gl.id]; + // return texture._glTextures[gl.id]; + return true; }; @@ -4961,25 +3830,28 @@ PIXI.WebGLRenderer.prototype.mapBlendModes = function() if (!PIXI.blendModesWebGL) { - PIXI.blendModesWebGL = []; + var b = []; + var modes = PIXI.blendModes; - PIXI.blendModesWebGL[PIXI.blendModes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; - PIXI.blendModesWebGL[PIXI.blendModes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; + b[modes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; + b[modes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + + PIXI.blendModesWebGL = b; } }; @@ -5029,7 +3901,11 @@ PIXI.WebGLBlendModeManager.prototype.setBlendMode = function(blendMode) this.currentBlendMode = blendMode; var blendModeWebGL = PIXI.blendModesWebGL[this.currentBlendMode]; - this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); + + if (blendModeWebGL) + { + this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); + } return true; }; @@ -6190,7 +5066,11 @@ PIXI.WebGLSpriteBatch.prototype.renderBatch = function(texture, size, startIndex // check if a texture is dirty.. if (texture._dirty[gl.id]) { - this.renderSession.renderer.updateTexture(texture); + if (!this.renderSession.renderer.updateTexture(texture)) + { + // If updateTexture returns false then we cannot render it, so bail out now + return; + } } else { @@ -7340,8 +6220,8 @@ PIXI.CanvasMaskManager.prototype.constructor = PIXI.CanvasMaskManager; * @param maskData {Object} the maskData that will be pushed * @param renderSession {Object} The renderSession whose context will be used for this mask manager. */ -PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) -{ +PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) { + var context = renderSession.context; context.save(); @@ -7558,28 +6438,14 @@ PIXI.CanvasTinter.tintMethod = PIXI.CanvasTinter.canUseMultiply ? PIXI.CanvasTin * * @class CanvasRenderer * @constructor - * @param [width=800] {Number} the width of the canvas view - * @param [height=600] {Number} the height of the canvas view - * @param [options] {Object} The optional renderer parameters - * @param [options.view] {HTMLCanvasElement} the canvas to use as a view, optional - * @param [options.transparent=false] {Boolean} If the render view is transparent, default false - * @param [options.autoResize=false] {Boolean} If the render view is automatically resized, default false - * @param [options.resolution=1] {Number} the resolution of the renderer retina would be 2 - * @param [options.clearBeforeRender=true] {Boolean} This sets if the CanvasRenderer will clear the canvas or not before the new render pass. + * @param game {Phaser.Game} A reference to the Phaser Game instance */ -PIXI.CanvasRenderer = function(width, height, options) -{ - if (options) - { - for (var i in PIXI.defaultRenderOptions) - { - if (options[i] === undefined) options[i] = PIXI.defaultRenderOptions[i]; - } - } - else - { - options = PIXI.defaultRenderOptions; - } +PIXI.CanvasRenderer = function (game) { + + /** + * @property {Phaser.Game} game - A reference to the Phaser Game instance. + */ + this.game = game; if (!PIXI.defaultRenderer) { @@ -7600,7 +6466,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property resolution * @type Number */ - this.resolution = options.resolution; + this.resolution = game.resolution; /** * This sets if the CanvasRenderer will clear the canvas or not before the new render pass. @@ -7612,7 +6478,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Boolean * @default */ - this.clearBeforeRender = options.clearBeforeRender; + this.clearBeforeRender = game.clearBeforeRender; /** * Whether the render view is transparent @@ -7620,7 +6486,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property transparent * @type Boolean */ - this.transparent = options.transparent; + this.transparent = game.transparent; /** * Whether the render view should be resized automatically @@ -7628,7 +6494,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property autoResize * @type Boolean */ - this.autoResize = options.autoResize || false; + this.autoResize = false; /** * The width of the canvas view @@ -7637,7 +6503,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Number * @default 800 */ - this.width = width || 800; + this.width = game.width * this.resolution; /** * The height of the canvas view @@ -7646,10 +6512,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Number * @default 600 */ - this.height = height || 600; - - this.width *= this.resolution; - this.height *= this.resolution; + this.height = game.height * this.resolution; /** * The canvas element that everything is drawn to. @@ -7657,7 +6520,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property view * @type HTMLCanvasElement */ - this.view = options.view || PIXI.CanvasPool.create(this, this.width, this.height); + this.view = game.canvas; /** * The canvas 2d context that everything is drawn with @@ -7674,8 +6537,9 @@ PIXI.CanvasRenderer = function(width, height, options) */ this.refresh = true; - this.view.width = this.width * this.resolution; - this.view.height = this.height * this.resolution; + // This is already done in the Game.setUpRenderer method. + // this.view.width = this.width * this.resolution; + // this.view.height = this.height * this.resolution; /** * Internal var. @@ -7701,7 +6565,8 @@ PIXI.CanvasRenderer = function(width, height, options) context: this.context, maskManager: this.maskManager, scaleMode: null, - smoothProperty: null, + smoothProperty: Phaser.Canvas.getSmoothingPrefix(this.context), + /** * If true Pixi will Math.floor() x/y values when rendering, stopping pixel interpolation. * Handy for crisp pixel art and speed on legacy devices. @@ -7711,18 +6576,8 @@ PIXI.CanvasRenderer = function(width, height, options) this.mapBlendModes(); - this.resize(width, height); + this.resize(this.width, this.height); - if("imageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "imageSmoothingEnabled"; - else if("webkitImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "webkitImageSmoothingEnabled"; - else if("mozImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "mozImageSmoothingEnabled"; - else if("oImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "oImageSmoothingEnabled"; - else if ("msImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "msImageSmoothingEnabled"; }; // constructor @@ -7734,16 +6589,16 @@ PIXI.CanvasRenderer.prototype.constructor = PIXI.CanvasRenderer; * @method render * @param stage {Stage} the Stage element to be rendered */ -PIXI.CanvasRenderer.prototype.render = function(stage) -{ +PIXI.CanvasRenderer.prototype.render = function (stage) { + stage.updateTransform(); - this.context.setTransform(1,0,0,1,0,0); + this.context.setTransform(1, 0, 0, 1, 0, 0); this.context.globalAlpha = 1; - this.renderSession.currentBlendMode = PIXI.blendModes.NORMAL; - this.context.globalCompositeOperation = PIXI.blendModesCanvas[PIXI.blendModes.NORMAL]; + this.renderSession.currentBlendMode = 0; + this.context.globalCompositeOperation = 'source-over'; if (navigator.isCocoonJS && this.view.screencanvas) { @@ -7759,7 +6614,7 @@ PIXI.CanvasRenderer.prototype.render = function(stage) } else { - this.context.fillStyle = stage.backgroundColorString; + this.context.fillStyle = stage._bgColor.rgba; this.context.fillRect(0, 0, this.width , this.height); } } @@ -7805,7 +6660,8 @@ PIXI.CanvasRenderer.prototype.resize = function(width, height) this.view.width = this.width; this.view.height = this.height; - if (this.autoResize) { + if (this.autoResize) + { this.view.style.width = this.width / this.resolution + "px"; this.view.style.height = this.height / this.resolution + "px"; } @@ -7820,11 +6676,12 @@ PIXI.CanvasRenderer.prototype.resize = function(width, height) * @param [matrix] {Matrix} Optional matrix to apply to the display object before rendering. * @private */ -PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject, context, matrix) -{ +PIXI.CanvasRenderer.prototype.renderDisplayObject = function (displayObject, context, matrix) { + this.renderSession.context = context || this.context; this.renderSession.resolution = this.resolution; displayObject._renderCanvas(this.renderSession, matrix); + }; /** @@ -7833,407 +6690,35 @@ PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject, cont * @method mapBlendModes * @private */ -PIXI.CanvasRenderer.prototype.mapBlendModes = function() -{ - if(!PIXI.blendModesCanvas) +PIXI.CanvasRenderer.prototype.mapBlendModes = function () { + + if (!PIXI.blendModesCanvas) { - PIXI.blendModesCanvas = []; + var b = []; + var modes = PIXI.blendModes; + var useNew = PIXI.canUseNewCanvasBlendModes(); - if(PIXI.canUseNewCanvasBlendModes()) - { - PIXI.blendModesCanvas[PIXI.blendModes.NORMAL] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.ADD] = "lighter"; //IS THIS OK??? - PIXI.blendModesCanvas[PIXI.blendModes.MULTIPLY] = "multiply"; - PIXI.blendModesCanvas[PIXI.blendModes.SCREEN] = "screen"; - PIXI.blendModesCanvas[PIXI.blendModes.OVERLAY] = "overlay"; - PIXI.blendModesCanvas[PIXI.blendModes.DARKEN] = "darken"; - PIXI.blendModesCanvas[PIXI.blendModes.LIGHTEN] = "lighten"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_DODGE] = "color-dodge"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_BURN] = "color-burn"; - PIXI.blendModesCanvas[PIXI.blendModes.HARD_LIGHT] = "hard-light"; - PIXI.blendModesCanvas[PIXI.blendModes.SOFT_LIGHT] = "soft-light"; - PIXI.blendModesCanvas[PIXI.blendModes.DIFFERENCE] = "difference"; - PIXI.blendModesCanvas[PIXI.blendModes.EXCLUSION] = "exclusion"; - PIXI.blendModesCanvas[PIXI.blendModes.HUE] = "hue"; - PIXI.blendModesCanvas[PIXI.blendModes.SATURATION] = "saturation"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR] = "color"; - PIXI.blendModesCanvas[PIXI.blendModes.LUMINOSITY] = "luminosity"; - } - else - { - // this means that the browser does not support the cool new blend modes in canvas "cough" ie "cough" - PIXI.blendModesCanvas[PIXI.blendModes.NORMAL] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.ADD] = "lighter"; //IS THIS OK??? - PIXI.blendModesCanvas[PIXI.blendModes.MULTIPLY] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SCREEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.OVERLAY] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.DARKEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.LIGHTEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_DODGE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_BURN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.HARD_LIGHT] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SOFT_LIGHT] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.DIFFERENCE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.EXCLUSION] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.HUE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SATURATION] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.LUMINOSITY] = "source-over"; - } - } -}; + b[modes.NORMAL] = 'source-over'; + b[modes.ADD] = 'lighter'; + b[modes.MULTIPLY] = (useNew) ? 'multiply' : 'source-over'; + b[modes.SCREEN] = (useNew) ? 'screen' : 'source-over'; + b[modes.OVERLAY] = (useNew) ? 'overlay' : 'source-over'; + b[modes.DARKEN] = (useNew) ? 'darken' : 'source-over'; + b[modes.LIGHTEN] = (useNew) ? 'lighten' : 'source-over'; + b[modes.COLOR_DODGE] = (useNew) ? 'color-dodge' : 'source-over'; + b[modes.COLOR_BURN] = (useNew) ? 'color-burn' : 'source-over'; + b[modes.HARD_LIGHT] = (useNew) ? 'hard-light' : 'source-over'; + b[modes.SOFT_LIGHT] = (useNew) ? 'soft-light' : 'source-over'; + b[modes.DIFFERENCE] = (useNew) ? 'difference' : 'source-over'; + b[modes.EXCLUSION] = (useNew) ? 'exclusion' : 'source-over'; + b[modes.HUE] = (useNew) ? 'hue' : 'source-over'; + b[modes.SATURATION] = (useNew) ? 'saturation' : 'source-over'; + b[modes.COLOR] = (useNew) ? 'color' : 'source-over'; + b[modes.LUMINOSITY] = (useNew) ? 'luminosity' : 'source-over'; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - - -/** - * A set of functions used by the canvas renderer to draw the primitive graphics data. - * - * @class CanvasGraphics - * @static - */ -PIXI.CanvasGraphics = function() -{ -}; - -/* - * Renders a PIXI.Graphics object to a canvas. - * - * @method renderGraphics - * @static - * @param graphics {Graphics} the actual graphics object to render - * @param context {CanvasRenderingContext2D} the 2d drawing method of the canvas - */ -PIXI.CanvasGraphics.renderGraphics = function(graphics, context) -{ - var worldAlpha = graphics.worldAlpha; - - if (graphics.dirty) - { - this.updateGraphicsTint(graphics); - graphics.dirty = false; + PIXI.blendModesCanvas = b; } - for (var i = 0; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - var shape = data.shape; - - var fillColor = data._fillTint; - var lineColor = data._lineTint; - - context.lineWidth = data.lineWidth; - - if (data.type === PIXI.Graphics.POLY) - { - context.beginPath(); - - var points = shape.points; - - context.moveTo(points[0], points[1]); - - for (var j=1; j < points.length/2; j++) - { - context.lineTo(points[j * 2], points[j * 2 + 1]); - } - - if (shape.closed) - { - context.lineTo(points[0], points[1]); - } - - // if the first and last point are the same close the path - much neater :) - if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) - { - context.closePath(); - } - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.RECT) - { - if (data.fillColor || data.fillColor === 0) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fillRect(shape.x, shape.y, shape.width, shape.height); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.strokeRect(shape.x, shape.y, shape.width, shape.height); - } - } - else if (data.type === PIXI.Graphics.CIRC) - { - // TODO - need to be Undefined! - context.beginPath(); - context.arc(shape.x, shape.y, shape.radius,0,2*Math.PI); - context.closePath(); - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.ELIP) - { - // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - - var w = shape.width * 2; - var h = shape.height * 2; - - var x = shape.x - w/2; - var y = shape.y - h/2; - - context.beginPath(); - - var kappa = 0.5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - context.moveTo(x, ym); - context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - - context.closePath(); - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.RREC) - { - var rx = shape.x; - var ry = shape.y; - var width = shape.width; - var height = shape.height; - var radius = shape.radius; - - var maxRadius = Math.min(width, height) / 2 | 0; - radius = radius > maxRadius ? maxRadius : radius; - - context.beginPath(); - context.moveTo(rx, ry + radius); - context.lineTo(rx, ry + height - radius); - context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); - context.lineTo(rx + width - radius, ry + height); - context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); - context.lineTo(rx + width, ry + radius); - context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); - context.lineTo(rx + radius, ry); - context.quadraticCurveTo(rx, ry, rx, ry + radius); - context.closePath(); - - if (data.fillColor || data.fillColor === 0) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - } -}; - -/* - * Renders a graphics mask - * - * @static - * @private - * @method renderGraphicsMask - * @param graphics {Graphics} the graphics which will be used as a mask - * @param context {CanvasRenderingContext2D} the context 2d method of the canvas - */ -PIXI.CanvasGraphics.renderGraphicsMask = function(graphics, context) -{ - var len = graphics.graphicsData.length; - - if (len === 0) - { - return; - } - - context.beginPath(); - - for (var i = 0; i < len; i++) - { - var data = graphics.graphicsData[i]; - var shape = data.shape; - - if (data.type === PIXI.Graphics.POLY) - { - - var points = shape.points; - - context.moveTo(points[0], points[1]); - - for (var j=1; j < points.length/2; j++) - { - context.lineTo(points[j * 2], points[j * 2 + 1]); - } - - // if the first and last point are the same close the path - much neater :) - if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) - { - context.closePath(); - } - - } - else if (data.type === PIXI.Graphics.RECT) - { - context.rect(shape.x, shape.y, shape.width, shape.height); - context.closePath(); - } - else if (data.type === PIXI.Graphics.CIRC) - { - // TODO - need to be Undefined! - context.arc(shape.x, shape.y, shape.radius, 0, 2 * Math.PI); - context.closePath(); - } - else if (data.type === PIXI.Graphics.ELIP) - { - - // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - - var w = shape.width * 2; - var h = shape.height * 2; - - var x = shape.x - w/2; - var y = shape.y - h/2; - - var kappa = 0.5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - context.moveTo(x, ym); - context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - context.closePath(); - } - else if (data.type === PIXI.Graphics.RREC) - { - - var rx = shape.x; - var ry = shape.y; - var width = shape.width; - var height = shape.height; - var radius = shape.radius; - - var maxRadius = Math.min(width, height) / 2 | 0; - radius = radius > maxRadius ? maxRadius : radius; - - context.moveTo(rx, ry + radius); - context.lineTo(rx, ry + height - radius); - context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); - context.lineTo(rx + width - radius, ry + height); - context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); - context.lineTo(rx + width, ry + radius); - context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); - context.lineTo(rx + radius, ry); - context.quadraticCurveTo(rx, ry, rx, ry + radius); - context.closePath(); - } - } -}; - -PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) -{ - if (graphics.tint === 0xFFFFFF) - { - return; - } - - var tintR = (graphics.tint >> 16 & 0xFF) / 255; - var tintG = (graphics.tint >> 8 & 0xFF) / 255; - var tintB = (graphics.tint & 0xFF)/ 255; - - for (var i = 0; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - - var fillColor = data.fillColor | 0; - var lineColor = data.lineColor | 0; - - /* - var colorR = (fillColor >> 16 & 0xFF) / 255; - var colorG = (fillColor >> 8 & 0xFF) / 255; - var colorB = (fillColor & 0xFF) / 255; - - colorR *= tintR; - colorG *= tintG; - colorB *= tintB; - - fillColor = ((colorR*255 << 16) + (colorG*255 << 8) + colorB*255); - - colorR = (lineColor >> 16 & 0xFF) / 255; - colorG = (lineColor >> 8 & 0xFF) / 255; - colorB = (lineColor & 0xFF) / 255; - - colorR *= tintR; - colorG *= tintG; - colorB *= tintB; - - lineColor = ((colorR*255 << 16) + (colorG*255 << 8) + colorB*255); - */ - - data._fillTint = (((fillColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((fillColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (fillColor & 0xFF) / 255 * tintB*255); - data._lineTint = (((lineColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((lineColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (lineColor & 0xFF) / 255 * tintB*255); - - } }; /** @@ -10158,7 +8643,7 @@ PIXI.TilingSprite.prototype._renderWebGL = function(renderSession) if (this.refreshTexture) { - this.generateTilingTexture(true); + this.generateTilingTexture(true, renderSession); if (this.tilingTexture) { @@ -10227,7 +8712,7 @@ PIXI.TilingSprite.prototype._renderCanvas = function(renderSession) if (this.refreshTexture) { - this.generateTilingTexture(false); + this.generateTilingTexture(false, renderSession); if (this.tilingTexture) { @@ -10316,8 +8801,9 @@ PIXI.TilingSprite.prototype.onTextureUpdate = function() * @method generateTilingTexture * * @param forcePowerOfTwo {Boolean} Whether we want to force the texture to be a power of two +* @param renderSession {RenderSession} */ -PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo) +PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo, renderSession) { if (!this.texture.baseTexture.hasLoaded) { @@ -10356,7 +8842,6 @@ PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo) { this.canvasBuffer = new PIXI.CanvasBuffer(targetWidth, targetHeight); this.tilingTexture = PIXI.Texture.fromCanvas(this.canvasBuffer.canvas); - this.tilingTexture = PIXI.Texture.fromCanvas(this.canvasBuffer.canvas); this.tilingTexture.isTiling = true; this.tilingTexture.needsUpdate = true; } @@ -10476,10 +8961,14 @@ PIXI.TilingSprite.prototype.getBounds = function() PIXI.TilingSprite.prototype.destroy = function () { - this.canvasBuffer.destroy(); - PIXI.Sprite.prototype.destroy.call(this); + if (this.canvasBuffer) + { + this.canvasBuffer.destroy(); + this.canvasBuffer = null; + } + this.tileScale = null; this.tileScaleOffset = null; this.tilePosition = null; @@ -10572,7 +9061,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.4.3', + VERSION: '2.4.4-RC1', /** * An array of Phaser game instances. @@ -16046,7 +14535,10 @@ Phaser.Camera.prototype = { */ setBoundsToWorld: function () { - this.bounds.copyFrom(this.game.world.bounds); + if (this.bounds) + { + this.bounds.copyFrom(this.game.world.bounds); + } }, @@ -16248,195 +14740,6 @@ Object.defineProperty(Phaser.Camera.prototype, "height", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content -* quickly and easily, without the need for any external files. You can create textures for sprites and in -* coming releases we'll add dynamic sound effect generation support as well (like sfxr). -* -* Access this via `State.create` (or `this.create` from within a State object) -* -* @class Phaser.Create -* @constructor -* @param {Phaser.Game} game - Game reference to the currently running game. - */ -Phaser.Create = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {Phaser.BitmapData} bmd - The internal BitmapData Create uses to generate textures from. - */ - this.bmd = game.make.bitmapData(); - - /** - * @property {HTMLCanvasElement} canvas - The canvas the BitmapData uses. - */ - this.canvas = this.bmd.canvas; - - /** - * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. - */ - this.ctx = this.bmd.context; - - /** - * @property {array} palettes - A range of 16 color palettes for use with sprite generation. - */ - this.palettes = [ - { 0: '#000', 1: '#9D9D9D', 2: '#FFF', 3: '#BE2633', 4: '#E06F8B', 5: '#493C2B', 6: '#A46422', 7: '#EB8931', 8: '#F7E26B', 9: '#2F484E', A: '#44891A', B: '#A3CE27', C: '#1B2632', D: '#005784', E: '#31A2F2', F: '#B2DCEF' }, - { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#f5f4eb' }, - { 0: '#000', 1: '#2234d1', 2: '#0c7e45', 3: '#44aacc', 4: '#8a3622', 5: '#5c2e78', 6: '#aa5c3d', 7: '#b5b5b5', 8: '#5e606e', 9: '#4c81fb', A: '#6cd947', B: '#7be2f9', C: '#eb8a60', D: '#e23d69', E: '#ffd93f', F: '#fff' }, - { 0: '#000', 1: '#fff', 2: '#8b4131', 3: '#7bbdc5', 4: '#8b41ac', 5: '#6aac41', 6: '#3931a4', 7: '#d5de73', 8: '#945a20', 9: '#5a4100', A: '#bd736a', B: '#525252', C: '#838383', D: '#acee8b', E: '#7b73de', F: '#acacac' }, - { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#fff' } - ]; - -}; - -/** -* A 16 color palette by [Arne](http://androidarts.com/palette/16pal.htm) -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_ARNE = 0; - -/** -* A 16 color JMP inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_JMP = 1; - -/** -* A 16 color CGA inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_CGA = 2; - -/** -* A 16 color C64 inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_C64 = 3; - -/** -* A 16 color palette inspired by Japanese computers like the MSX. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_JAPANESE_MACHINE = 4; - -Phaser.Create.prototype = { - - /** - * Generates a new PIXI.Texture from the given data, which can be applied to a Sprite. - * - * This allows you to create game graphics quickly and easily, with no external files but that use actual proper images - * rather than Phaser.Graphics objects, which are expensive to render and limited in scope. - * - * Each element of the array is a string holding the pixel color values, as mapped to one of the Phaser.Create PALETTE consts. - * - * For example: - * - * `var data = [ - * ' 333 ', - * ' 777 ', - * 'E333E', - * ' 333 ', - * ' 3 3 ' - * ];` - * - * `game.create.texture('bob', data);` - * - * The above will create a new texture called `bob`, which will look like a little man wearing a hat. You can then use it - * for sprites the same way you use any other texture: `game.add.sprite(0, 0, 'bob');` - * - * @method Phaser.Create#texture - * @param {string} key - The key used to store this texture in the Phaser Cache. - * @param {array} data - An array of pixel data. - * @param {integer} [pixelWidth=8] - The width of each pixel. - * @param {integer} [pixelHeight=8] - The height of each pixel. - * @param {integer} [palette=0] - The palette to use when rendering the texture. One of the Phaser.Create.PALETTE consts. - * @return {PIXI.Texture} The newly generated texture. - */ - texture: function (key, data, pixelWidth, pixelHeight, palette) { - - if (pixelWidth === undefined) { pixelWidth = 8; } - if (pixelHeight === undefined) { pixelHeight = pixelWidth; } - if (palette === undefined) { palette = 0; } - - var w = data[0].length * pixelWidth; - var h = data.length * pixelHeight; - - this.bmd.resize(w, h); - this.bmd.clear(); - - // Draw it - for (var y = 0; y < data.length; y++) - { - var row = data[y]; - - for (var x = 0; x < row.length; x++) - { - var d = row[x]; - - if (d !== '.' && d !== ' ') - { - this.ctx.fillStyle = this.palettes[palette][d]; - this.ctx.fillRect(x * pixelWidth, y * pixelHeight, pixelWidth, pixelHeight); - } - } - } - - return this.bmd.generateTexture(key); - - }, - - /** - * Creates a grid texture based on the given dimensions. - * - * @method Phaser.Create#grid - * @param {string} key - The key used to store this texture in the Phaser Cache. - * @param {integer} width - The width of the grid in pixels. - * @param {integer} height - The height of the grid in pixels. - * @param {integer} cellWidth - The width of the grid cells in pixels. - * @param {integer} cellHeight - The height of the grid cells in pixels. - * @param {string} color - The color to draw the grid lines in. Should be a Canvas supported color string like `#ff5500` or `rgba(200,50,3,0.5)`. - * @return {PIXI.Texture} The newly generated texture. - */ - grid: function (key, width, height, cellWidth, cellHeight, color) { - - this.bmd.resize(width, height); - - this.ctx.fillStyle = color; - - for (var y = 0; y < height; y += cellHeight) - { - this.ctx.fillRect(0, y, width, 1); - } - - for (var x = 0; x < width; x += cellWidth) - { - this.ctx.fillRect(x, 0, 1, height); - } - - return this.bmd.generateTexture(key); - - } - -}; - -Phaser.Create.prototype.constructor = Phaser.Create; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * This is a base State class which can be extended if you are creating your own game. * It provides quick access to common functions such as the camera, cache, input, match, sound and more. @@ -16968,7 +15271,7 @@ Phaser.StateManager.prototype = { if (arguments.length > 2) { - this._args = Array.prototype.splice.call(arguments, 2); + this._args = Array.prototype.slice.call(arguments, 2); } }, @@ -17442,6 +15745,10 @@ Object.defineProperty(Phaser.StateManager.prototype, "created", { }); +/** +* "It's like nailing jelly to a kitten" - Gary Penn +*/ + /** * @author Miller Medeiros http://millermedeiros.github.com/js-signals/ * @author Richard Davey @@ -18250,6 +16557,60 @@ Phaser.Filter.prototype = { }, + /** + * Creates a new Phaser.Image object using a blank texture and assigns + * this Filter to it. The image is then added to the world. + * + * If you don't provide width and height values then Filter.width and Filter.height are used. + * + * If you do provide width and height values then this filter will be resized to match those + * values. + * + * @method Phaser.Filter#addToWorld + * @param {number} [x=0] - The x coordinate to place the Image at. + * @param {number} [y=0] - The y coordinate to place the Image at. + * @param {number} [width] - The width of the Image. If not specified (or null) it will use Filter.width. If specified Filter.width will be set to this value. + * @param {number} [height] - The height of the Image. If not specified (or null) it will use Filter.height. If specified Filter.height will be set to this value. + * @param {number} [anchorX=0] - Set the x anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. + * @param {number} [anchorY=0] - Set the y anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. + * @return {Phaser.Image} The newly added Image object. + */ + addToWorld: function (x, y, width, height, anchorX, anchorY) { + + if (anchorX === undefined) { anchorX = 0; } + if (anchorY === undefined) { anchorY = 0; } + + if (width !== undefined && width !== null) + { + this.width = width; + } + else + { + width = this.width; + } + + if (height !== undefined && height !== null) + { + this.height = height; + } + else + { + height = this.height; + } + + var image = this.game.add.image(x, y, '__default'); + + image.width = width; + image.height = height; + + image.anchor.set(anchorX, anchorY); + + image.filters = [ this ]; + + return image; + + }, + /** * Clear down this Filter and null out references * @method Phaser.Filter#destroy @@ -18473,7 +16834,7 @@ Phaser.PluginManager.prototype = { */ add: function (plugin) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var result = false; // Prototype? @@ -18718,7 +17079,7 @@ Phaser.PluginManager.prototype.constructor = Phaser.PluginManager; * It also handles browser visibility handling and the pausing due to loss of focus. * * @class Phaser.Stage -* @extends PIXI.Stage +* @extends PIXI.DisplayObjectContainer * @constructor * @param {Phaser.Game} game - Game reference to the currently running game. */ @@ -18729,7 +17090,7 @@ Phaser.Stage = function (game) { */ this.game = game; - PIXI.Stage.call(this, 0x000000); + PIXI.DisplayObjectContainer.call(this); /** * @property {string} name - The name of this object. @@ -18749,6 +17110,20 @@ Phaser.Stage = function (game) { */ this.exists = true; + /** + * @property {PIXI.Matrix} worldTransform - Current transform of the object based on world (parent) factors + * @private + * @readOnly + */ + this.worldTransform = new PIXI.Matrix(); + + /** + * @property {Phaser.Stage} stage - The stage reference (the Stage is its own stage) + * @private + * @readOnly + */ + this.stage = this; + /** * @property {number} currentRenderOrderID - Reset each frame, keeps a count of the total number of objects updated. */ @@ -18767,10 +17142,16 @@ Phaser.Stage = function (game) { this._onChange = null; /** - * @property {number} _backgroundColor - Stage background color. + * @property {number} _bgColor - Stage background color object. Populated by setBackgroundColor. * @private */ - this._backgroundColor = 0x000000; + this._bgColor = { r: 0, g: 0, b: 0, a: 0, color: 0, rgba: '#000000' }; + + if (!this.game.transparent) + { + // transparent = 0,0,0,0 - otherwise r,g,b,1 + this._bgColor.a = 1; + } if (game.config) { @@ -18779,7 +17160,7 @@ Phaser.Stage = function (game) { }; -Phaser.Stage.prototype = Object.create(PIXI.Stage.prototype); +Phaser.Stage.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); Phaser.Stage.prototype.constructor = Phaser.Stage; /** @@ -18798,7 +17179,7 @@ Phaser.Stage.prototype.parseConfig = function (config) { if (config['backgroundColor']) { - this.backgroundColor = config['backgroundColor']; + this.setBackgroundColor(config['backgroundColor']); } }; @@ -19015,16 +17396,23 @@ Phaser.Stage.prototype.visibilityChange = function (event) { * * An alpha channel is _not_ supported and will be ignored. * +* If you've set your game to be transparent then calls to setBackgroundColor are ignored. +* * @method Phaser.Stage#setBackgroundColor -* @param {number|string} backgroundColor - The color of the background. +* @param {number|string} color - The color of the background. */ -Phaser.Stage.prototype.setBackgroundColor = function(backgroundColor) -{ - var rgb = Phaser.Color.valueToColor(backgroundColor); - this._backgroundColor = Phaser.Color.getColor(rgb.r, rgb.g, rgb.b); +Phaser.Stage.prototype.setBackgroundColor = function (color) { - this.backgroundColorSplit = [ rgb.r / 255, rgb.g / 255, rgb.b / 255 ]; - this.backgroundColorString = Phaser.Color.RGBtoString(rgb.r, rgb.g, rgb.b, 255, '#'); + if (this.game.transparent) { return; } + + Phaser.Color.valueToColor(color, this._bgColor); + Phaser.Color.updateColor(this._bgColor); + + // For gl.clearColor (canvas uses _bgColor.rgba) + this._bgColor.r /= 255; + this._bgColor.g /= 255; + this._bgColor.b /= 255; + this._bgColor.a = 1; }; @@ -19056,16 +17444,13 @@ Object.defineProperty(Phaser.Stage.prototype, "backgroundColor", { get: function () { - return this._backgroundColor; + return this._bgColor.color; }, set: function (color) { - if (!this.game.transparent) - { - this.setBackgroundColor(color); - } + this.setBackgroundColor(color); } @@ -19153,6 +17538,7 @@ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBody * The z-depth value of this object within its parent container/Group - the World is a Group as well. * This value must be unique for each child in a Group. * @property {integer} z + * @readOnly */ this.z = 0; @@ -19257,7 +17643,7 @@ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBody /** * If {@link #enableBody} is true this is the type of physics body that is created on new Sprites. * - * The valid values are {@link Phaser.Physics.ARCADE}, {@link Phaser.Physics.P2}, {@link Phaser.Physics.NINJA}, etc. + * The valid values are {@link Phaser.Physics.ARCADE}, {@link Phaser.Physics.P2JS}, {@link Phaser.Physics.NINJA}, etc. * @property {integer} physicsBodyType */ this.physicsBodyType = physicsBodyType; @@ -19566,13 +17952,13 @@ Phaser.Group.prototype.getAt = function (index) { /** * Creates a new Phaser.Sprite object and adds it to the top of this group. * -* Use {@link #classType} to change the type of object creaded. +* Use {@link #classType} to change the type of object created. * * @method Phaser.Group#create * @param {number} x - The x coordinate to display the newly created Sprite at. The value is in relation to the group.x point. * @param {number} y - The y coordinate to display the newly created Sprite at. The value is in relation to the group.y point. -* @param {string} key - The Game.cache key of the image that this Sprite will use. -* @param {integer|string} [frame] - If the Sprite image contains multiple frames you can specify which one to use here. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @param {boolean} [exists=true] - The default exists state of the Sprite. * @return {DisplayObject} The child that was created: will be a {@link Phaser.Sprite} unless {@link #classType} has been changed. */ @@ -20874,47 +19260,134 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal /** * Get the first display object that exists, or doesn't exist. +* +* You can use the optional argument `createIfNull` to create a new Game Object if none matching your exists argument were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstExists * @param {boolean} [exists=true] - If true, find the first existing child; otherwise find the first non-existing child. -* @return {any} The first child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no alive children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The first child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstExists = function (exists) { +Phaser.Group.prototype.getFirstExists = function (exists, createIfNull, x, y, key, frame) { + + if (createIfNull === undefined) { createIfNull = false; } if (typeof exists !== 'boolean') { exists = true; } - return this.iterate('exists', exists, Phaser.Group.RETURN_CHILD); + var child = this.iterate('exists', exists, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); }; /** * Get the first child that is alive (`child.alive === true`). * -* This is handy for checking if everything has been wiped out, or choosing a squad leader, etc. +* This is handy for choosing a squad leader, etc. +* +* You can use the optional argument `createIfNull` to create a new Game Object if no alive ones were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstAlive -* @return {any} The first alive child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no alive children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The alive dead child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstAlive = function () { +Phaser.Group.prototype.getFirstAlive = function (createIfNull, x, y, key, frame) { - return this.iterate('alive', true, Phaser.Group.RETURN_CHILD); + if (createIfNull === undefined) { createIfNull = false; } + + var child = this.iterate('alive', true, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); }; /** * Get the first child that is dead (`child.alive === false`). * -* This is handy for checking if everything has been wiped out, or choosing a squad leader, etc. +* This is handy for checking if everything has been wiped out and adding to the pool as needed. +* +* You can use the optional argument `createIfNull` to create a new Game Object if no dead ones were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstDead -* @return {any} The first dead child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no dead children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The first dead child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstDead = function () { +Phaser.Group.prototype.getFirstDead = function (createIfNull, x, y, key, frame) { - return this.iterate('alive', false, Phaser.Group.RETURN_CHILD); + if (createIfNull === undefined) { createIfNull = false; } + + var child = this.iterate('alive', false, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); + +}; + +/** +* Takes a child and if the `x` and `y` arguments are given it calls `child.reset(x, y)` on it. +* +* If the `key` and optionally the `frame` arguments are given, it calls `child.loadTexture(key, frame)` on it. +* +* The two operations are separate. For example if you just wish to load a new texture then pass `null` as the x and y values. +* +* @method Phaser.Group#resetChild +* @param {DisplayObject} child - The child to reset and/or load the texture on. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The child that was reset: usually a {@link Phaser.Sprite}. +*/ +Phaser.Group.prototype.resetChild = function (child, x, y, key, frame) { + + if (child === null) + { + return null; + } + + if (x === undefined) { x = null; } + if (y === undefined) { y = null; } + + if (x !== null && y !== null) + { + child.reset(x, y); + } + + if (key !== undefined) + { + child.loadTexture(key, frame); + } + + return child; }; @@ -21686,2816 +20159,6 @@ Object.defineProperty(Phaser.World.prototype, "randomY", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. -* Please try to avoid using in production games with a long time to build. -* This is also why the documentation is incomplete. -* -* FlexGrid is a a responsive grid manager that works in conjunction with the ScaleManager RESIZE scaling mode and FlexLayers -* to provide for game object positioning in a responsive manner. -* -* @class Phaser.FlexGrid -* @constructor -* @param {Phaser.ScaleManager} manager - The ScaleManager. -* @param {number} width - The width of the game. -* @param {number} height - The height of the game. -*/ -Phaser.FlexGrid = function (manager, width, height) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = manager.game; - - /** - * @property {Phaser.ScaleManager} manager - A reference to the ScaleManager. - */ - this.manager = manager; - - // The perfect dimensions on which everything else is based - this.width = width; - this.height = height; - - this.boundsCustom = new Phaser.Rectangle(0, 0, width, height); - this.boundsFluid = new Phaser.Rectangle(0, 0, width, height); - this.boundsFull = new Phaser.Rectangle(0, 0, width, height); - this.boundsNone = new Phaser.Rectangle(0, 0, width, height); - - /** - * @property {Phaser.Point} position - - * @readonly - */ - this.positionCustom = new Phaser.Point(0, 0); - this.positionFluid = new Phaser.Point(0, 0); - this.positionFull = new Phaser.Point(0, 0); - this.positionNone = new Phaser.Point(0, 0); - - /** - * @property {Phaser.Point} scaleFactor - The scale factor based on the game dimensions vs. the scaled dimensions. - * @readonly - */ - this.scaleCustom = new Phaser.Point(1, 1); - this.scaleFluid = new Phaser.Point(1, 1); - this.scaleFluidInversed = new Phaser.Point(1, 1); - this.scaleFull = new Phaser.Point(1, 1); - this.scaleNone = new Phaser.Point(1, 1); - - this.customWidth = 0; - this.customHeight = 0; - this.customOffsetX = 0; - this.customOffsetY = 0; - - this.ratioH = width / height; - this.ratioV = height / width; - - this.multiplier = 0; - - this.layers = []; - -}; - -Phaser.FlexGrid.prototype = { - - /** - * Sets the core game size. This resets the w/h parameters and bounds. - * - * @method Phaser.FlexGrid#setSize - * @param {number} width - The new dimensions. - * @param {number} height - The new dimensions. - */ - setSize: function (width, height) { - - // These are locked and don't change until setSize is called again - this.width = width; - this.height = height; - - this.ratioH = width / height; - this.ratioV = height / width; - - this.scaleNone = new Phaser.Point(1, 1); - - this.boundsNone.width = this.width; - this.boundsNone.height = this.height; - - this.refresh(); - - }, - - // Need ability to create your own layers with custom scaling, etc. - - /** - * A custom layer is centered on the game and maintains its aspect ratio as it scales up and down. - * - * @method Phaser.FlexGrid#createCustomLayer - * @param {number} width - Width of this layer in pixels. - * @param {number} height - Height of this layer in pixels. - * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createCustomLayer: function (width, height, children, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - this.customWidth = width; - this.customHeight = height; - - this.boundsCustom.width = width; - this.boundsCustom.height = height; - - var layer = new Phaser.FlexLayer(this, this.positionCustom, this.boundsCustom, this.scaleCustom); - - if (addToWorld) - { - this.game.world.add(layer); - } - - this.layers.push(layer); - - if (typeof children !== 'undefined' && typeof children !== null) - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A fluid layer is centered on the game and maintains its aspect ratio as it scales up and down. - * - * @method Phaser.FlexGrid#createFluidLayer - * @param {array} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFluidLayer: function (children, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - var layer = new Phaser.FlexLayer(this, this.positionFluid, this.boundsFluid, this.scaleFluid); - - if (addToWorld) - { - this.game.world.add(layer); - } - - this.layers.push(layer); - - if (typeof children !== 'undefined' && typeof children !== null) - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A full layer is placed at 0,0 and extends to the full size of the game. Children are scaled according to the fluid ratios. - * - * @method Phaser.FlexGrid#createFullLayer - * @param {array} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFullLayer: function (children) { - - var layer = new Phaser.FlexLayer(this, this.positionFull, this.boundsFull, this.scaleFluid); - - this.game.world.add(layer); - - this.layers.push(layer); - - if (typeof children !== 'undefined') - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A fixed layer is centered on the game and is the size of the required dimensions and is never scaled. - * - * @method Phaser.FlexGrid#createFixedLayer - * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFixedLayer: function (children) { - - var layer = new Phaser.FlexLayer(this, this.positionNone, this.boundsNone, this.scaleNone); - - this.game.world.add(layer); - - this.layers.push(layer); - - if (typeof children !== 'undefined') - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * Resets the layer children references - * - * @method Phaser.FlexGrid#reset - */ - reset: function () { - - var i = this.layers.length; - - while (i--) - { - if (!this.layers[i].persist) - { - // Remove references to this class - this.layers[i].position = null; - this.layers[i].scale = null; - this.layers.slice(i, 1); - } - } - - }, - - /** - * Called when the game container changes dimensions. - * - * @method Phaser.FlexGrid#onResize - * @param {number} width - The new width of the game container. - * @param {number} height - The new height of the game container. - */ - onResize: function (width, height) { - - this.ratioH = width / height; - this.ratioV = height / width; - - this.refresh(width, height); - - }, - - /** - * Updates all internal vars such as the bounds and scale values. - * - * @method Phaser.FlexGrid#refresh - */ - refresh: function () { - - this.multiplier = Math.min((this.manager.height / this.height), (this.manager.width / this.width)); - - this.boundsFluid.width = Math.round(this.width * this.multiplier); - this.boundsFluid.height = Math.round(this.height * this.multiplier); - - this.scaleFluid.set(this.boundsFluid.width / this.width, this.boundsFluid.height / this.height); - this.scaleFluidInversed.set(this.width / this.boundsFluid.width, this.height / this.boundsFluid.height); - - this.scaleFull.set(this.boundsFull.width / this.width, this.boundsFull.height / this.height); - - this.boundsFull.width = Math.round(this.manager.width * this.scaleFluidInversed.x); - this.boundsFull.height = Math.round(this.manager.height * this.scaleFluidInversed.y); - - this.boundsFluid.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); - this.boundsNone.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); - - this.positionFluid.set(this.boundsFluid.x, this.boundsFluid.y); - this.positionNone.set(this.boundsNone.x, this.boundsNone.y); - - }, - - /** - * Fits a sprites width to the bounds. - * - * @method Phaser.FlexGrid#fitSprite - * @param {Phaser.Sprite} sprite - The Sprite to fit. - */ - fitSprite: function (sprite) { - - this.manager.scaleSprite(sprite); - - sprite.x = this.manager.bounds.centerX; - sprite.y = this.manager.bounds.centerY; - - }, - - /** - * Call in the render function to output the bounds rects. - * - * @method Phaser.FlexGrid#debug - */ - debug: function () { - - // for (var i = 0; i < this.layers.length; i++) - // { - // this.layers[i].debug(); - // } - - // this.game.debug.text(this.boundsFull.width + ' x ' + this.boundsFull.height, this.boundsFull.x + 4, this.boundsFull.y + 16); - // this.game.debug.geom(this.boundsFull, 'rgba(0,0,255,0.9', false); - - this.game.debug.text(this.boundsFluid.width + ' x ' + this.boundsFluid.height, this.boundsFluid.x + 4, this.boundsFluid.y + 16); - this.game.debug.geom(this.boundsFluid, 'rgba(255,0,0,0.9', false); - - // this.game.debug.text(this.boundsNone.width + ' x ' + this.boundsNone.height, this.boundsNone.x + 4, this.boundsNone.y + 16); - // this.game.debug.geom(this.boundsNone, 'rgba(0,255,0,0.9', false); - - // this.game.debug.text(this.boundsCustom.width + ' x ' + this.boundsCustom.height, this.boundsCustom.x + 4, this.boundsCustom.y + 16); - // this.game.debug.geom(this.boundsCustom, 'rgba(255,255,0,0.9', false); - - } - -}; - -Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. -* Please try to avoid using in production games with a long time to build. -* This is also why the documentation is incomplete. -* -* A responsive grid layer. -* -* @class Phaser.FlexLayer -* @extends Phaser.Group -* @constructor -* @param {Phaser.FlexGrid} manager - The FlexGrid that owns this FlexLayer. -* @param {Phaser.Point} position - A reference to the Point object used for positioning. -* @param {Phaser.Rectangle} bounds - A reference to the Rectangle used for the layer bounds. -* @param {Phaser.Point} scale - A reference to the Point object used for layer scaling. -*/ -Phaser.FlexLayer = function (manager, position, bounds, scale) { - - Phaser.Group.call(this, manager.game, null, '__flexLayer' + manager.game.rnd.uuid(), false); - - /** - * @property {Phaser.ScaleManager} scale - A reference to the ScaleManager. - */ - this.manager = manager.manager; - - /** - * @property {Phaser.FlexGrid} grid - A reference to the FlexGrid that owns this layer. - */ - this.grid = manager; - - /** - * Should the FlexLayer remain through a State swap? - * - * @type {boolean} - */ - this.persist = false; - - /** - * @property {Phaser.Point} position - */ - this.position = position; - - /** - * @property {Phaser.Rectangle} bounds - */ - this.bounds = bounds; - - /** - * @property {Phaser.Point} scale - */ - this.scale = scale; - - /** - * @property {Phaser.Point} topLeft - */ - this.topLeft = bounds.topLeft; - - /** - * @property {Phaser.Point} topMiddle - */ - this.topMiddle = new Phaser.Point(bounds.halfWidth, 0); - - /** - * @property {Phaser.Point} topRight - */ - this.topRight = bounds.topRight; - - /** - * @property {Phaser.Point} bottomLeft - */ - this.bottomLeft = bounds.bottomLeft; - - /** - * @property {Phaser.Point} bottomMiddle - */ - this.bottomMiddle = new Phaser.Point(bounds.halfWidth, bounds.bottom); - - /** - * @property {Phaser.Point} bottomRight - */ - this.bottomRight = bounds.bottomRight; - -}; - -Phaser.FlexLayer.prototype = Object.create(Phaser.Group.prototype); -Phaser.FlexLayer.prototype.constructor = Phaser.FlexLayer; - -/** - * Resize. - * - * @method Phaser.FlexLayer#resize - */ -Phaser.FlexLayer.prototype.resize = function () { -}; - -/** - * Debug. - * - * @method Phaser.FlexLayer#debug - */ -Phaser.FlexLayer.prototype.debug = function () { - - this.game.debug.text(this.bounds.width + ' x ' + this.bounds.height, this.bounds.x + 4, this.bounds.y + 16); - this.game.debug.geom(this.bounds, 'rgba(0,0,255,0.9', false); - - this.game.debug.geom(this.topLeft, 'rgba(255,255,255,0.9'); - this.game.debug.geom(this.topMiddle, 'rgba(255,255,255,0.9'); - this.game.debug.geom(this.topRight, 'rgba(255,255,255,0.9'); - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* @classdesc -* The ScaleManager object handles the the scaling, resizing, and alignment of the -* Game size and the game Display canvas. -* -* The Game size is the logical size of the game; the Display canvas has size as an HTML element. -* -* The calculations of these are heavily influenced by the bounding Parent size which is the computed -* dimensions of the Display canvas's Parent container/element - the _effective CSS rules of the -* canvas's Parent element play an important role_ in the operation of the ScaleManager. -* -* The Display canvas - or Game size, depending {@link #scaleMode} - is updated to best utilize the Parent size. -* When in Fullscreen mode or with {@link #parentIsWindow} the Parent size is that of the visual viewport (see {@link Phaser.ScaleManager#getParentBounds getParentBounds}). -* -* Parent and Display canvas containment guidelines: -* -* - Style the Parent element (of the game canvas) to control the Parent size and -* thus the Display canvas's size and layout. -* -* - The Parent element's CSS styles should _effectively_ apply maximum (and minimum) bounding behavior. -* -* - The Parent element should _not_ apply a padding as this is not accounted for. -* If a padding is required apply it to the Parent's parent or apply a margin to the Parent. -* If you need to add a border, margin or any other CSS around your game container, then use a parent element and -* apply the CSS to this instead, otherwise you'll be constantly resizing the shape of the game container. -* -* - The Display canvas layout CSS styles (i.e. margins, size) should not be altered/specified as -* they may be updated by the ScaleManager. -* -* @description -* Create a new ScaleManager object - this is done automatically by {@link Phaser.Game} -* -* The `width` and `height` constructor parameters can either be a number which represents pixels or a string that represents a percentage: e.g. `800` (for 800 pixels) or `"80%"` for 80%. -* -* @class -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number|string} width - The width of the game. See above. -* @param {number|string} height - The height of the game. See above. -*/ -Phaser.ScaleManager = function (game, width, height) { - - /** - * A reference to the currently running game. - * @property {Phaser.Game} game - * @protected - * @readonly - */ - this.game = game; - - /** - * Provides access to some cross-device DOM functions. - * @property {Phaser.DOM} dom - * @protected - * @readonly - */ - this.dom = Phaser.DOM; - - /** - * _EXPERIMENTAL:_ A responsive grid on which you can align game objects. - * @property {Phaser.FlexGrid} grid - * @public - */ - this.grid = null; - - /** - * Target width (in pixels) of the Display canvas. - * @property {number} width - * @readonly - */ - this.width = 0; - - /** - * Target height (in pixels) of the Display canvas. - * @property {number} height - * @readonly - */ - this.height = 0; - - /** - * Minimum width the canvas should be scaled to (in pixels). - * Change with {@link #setMinMax}. - * @property {?number} minWidth - * @readonly - * @protected - */ - this.minWidth = null; - - /** - * Maximum width the canvas should be scaled to (in pixels). - * If null it will scale to whatever width the browser can handle. - * Change with {@link #setMinMax}. - * @property {?number} maxWidth - * @readonly - * @protected - */ - this.maxWidth = null; - - /** - * Minimum height the canvas should be scaled to (in pixels). - * Change with {@link #setMinMax}. - * @property {?number} minHeight - * @readonly - * @protected - */ - this.minHeight = null; - - /** - * Maximum height the canvas should be scaled to (in pixels). - * If null it will scale to whatever height the browser can handle. - * Change with {@link #setMinMax}. - * @property {?number} maxHeight - * @readonly - * @protected - */ - this.maxHeight = null; - - /** - * The offset coordinates of the Display canvas from the top-left of the browser window. - * The is used internally by Phaser.Pointer (for Input) and possibly other types. - * @property {Phaser.Point} offset - * @readonly - * @protected - */ - this.offset = new Phaser.Point(); - - /** - * If true, the game should only run in a landscape orientation. - * Change with {@link #forceOrientation}. - * @property {boolean} forceLandscape - * @readonly - * @default - * @protected - */ - this.forceLandscape = false; - - /** - * If true, the game should only run in a portrait - * Change with {@link #forceOrientation}. - * @property {boolean} forcePortrait - * @readonly - * @default - * @protected - */ - this.forcePortrait = false; - - /** - * True if {@link #forceLandscape} or {@link #forcePortrait} are set and do not agree with the browser orientation. - * - * This value is not updated immediately. - * - * @property {boolean} incorrectOrientation - * @readonly - * @protected - */ - this.incorrectOrientation = false; - - /** - * See {@link #pageAlignHorizontally}. - * @property {boolean} _pageAlignHorizontally - * @private - */ - this._pageAlignHorizontally = false; - - /** - * See {@link #pageAlignVertically}. - * @property {boolean} _pageAlignVertically - * @private - */ - this._pageAlignVertically = false; - - /** - * This signal is dispatched when the orientation changes _or_ the validity of the current orientation changes. - * - * The signal is supplied with the following arguments: - * - `scale` - the ScaleManager object - * - `prevOrientation`, a string - The previous orientation as per {@link Phaser.ScaleManager#screenOrientation screenOrientation}. - * - `wasIncorrect`, a boolean - True if the previous orientation was last determined to be incorrect. - * - * Access the current orientation and validity with `scale.screenOrientation` and `scale.incorrectOrientation`. - * Thus the following tests can be done: - * - * // The orientation itself changed: - * scale.screenOrientation !== prevOrientation - * // The orientation just became incorrect: - * scale.incorrectOrientation && !wasIncorrect - * - * It is possible that this signal is triggered after {@link #forceOrientation} so the orientation - * correctness changes even if the orientation itself does not change. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} onOrientationChange - * @public - */ - this.onOrientationChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser enters an incorrect orientation, as defined by {@link #forceOrientation}. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} enterIncorrectOrientation - * @public - */ - this.enterIncorrectOrientation = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser leaves an incorrect orientation, as defined by {@link #forceOrientation}. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} leaveIncorrectOrientation - * @public - */ - this.leaveIncorrectOrientation = new Phaser.Signal(); - - /** - * If specified, this is the DOM element on which the Fullscreen API enter request will be invoked. - * The target element must have the correct CSS styling and contain the Display canvas. - * - * The elements style will be modified (ie. the width and height might be set to 100%) - * but it will not be added to, removed from, or repositioned within the DOM. - * An attempt is made to restore relevant style changes when fullscreen mode is left. - * - * For pre-2.2.0 behavior set `game.scale.fullScreenTarget = game.canvas`. - * - * @property {?DOMElement} fullScreenTarget - * @default - */ - this.fullScreenTarget = null; - - /** - * The fullscreen target, as created by {@link #createFullScreenTarget}. - * This is not set if {@link #fullScreenTarget} is used and is cleared when fullscreen mode ends. - * @property {?DOMElement} _createdFullScreenTarget - * @private - */ - this._createdFullScreenTarget = null; - - /** - * This signal is dispatched when fullscreen mode is ready to be initialized but - * before the fullscreen request. - * - * The signal is passed two arguments: `scale` (the ScaleManager), and an object in the form `{targetElement: DOMElement}`. - * - * The `targetElement` is the {@link #fullScreenTarget} element, - * if such is assigned, or a new element created by {@link #createFullScreenTarget}. - * - * Custom CSS styling or resets can be applied to `targetElement` as required. - * - * If `targetElement` is _not_ the same element as {@link #fullScreenTarget}: - * - After initialization the Display canvas is moved onto the `targetElement` for - * the duration of the fullscreen mode, and restored to it's original DOM location when fullscreen is exited. - * - The `targetElement` is moved/re-parented within the DOM and may have its CSS styles updated. - * - * The behavior of a pre-assigned target element is covered in {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget}. - * - * @property {Phaser.Signal} onFullScreenInit - * @public - */ - this.onFullScreenInit = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser enters or leaves fullscreen mode, if supported. - * - * The signal is supplied with a single argument: `scale` (the ScaleManager). Use `scale.isFullScreen` to determine - * if currently running in Fullscreen mode. - * - * @property {Phaser.Signal} onFullScreenChange - * @public - */ - this.onFullScreenChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser fails to enter fullscreen mode; - * or if the device does not support fullscreen mode and `startFullScreen` is invoked. - * - * The signal is supplied with a single argument: `scale` (the ScaleManager). - * - * @property {Phaser.Signal} onFullScreenError - * @public - */ - this.onFullScreenError = new Phaser.Signal(); - - /** - * The _last known_ orientation of the screen, as defined in the Window Screen Web API. - * See {@link Phaser.DOM.getScreenOrientation} for possible values. - * - * @property {string} screenOrientation - * @readonly - * @public - */ - this.screenOrientation = this.dom.getScreenOrientation(); - - /** - * The _current_ scale factor based on the game dimensions vs. the scaled dimensions. - * @property {Phaser.Point} scaleFactor - * @readonly - */ - this.scaleFactor = new Phaser.Point(1, 1); - - /** - * The _current_ inversed scale factor. The displayed dimensions divided by the game dimensions. - * @property {Phaser.Point} scaleFactorInversed - * @readonly - * @protected - */ - this.scaleFactorInversed = new Phaser.Point(1, 1); - - /** - * The Display canvas is aligned by adjusting the margins; the last margins are stored here. - * - * @property {Bounds-like} margin - * @readonly - * @protected - */ - this.margin = {left: 0, top: 0, right: 0, bottom: 0, x: 0, y: 0}; - - /** - * The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height. - * @property {Phaser.Rectangle} bounds - * @readonly - */ - this.bounds = new Phaser.Rectangle(); - - /** - * The aspect ratio of the scaled Display canvas. - * @property {number} aspectRatio - * @readonly - */ - this.aspectRatio = 0; - - /** - * The aspect ratio of the original game dimensions. - * @property {number} sourceAspectRatio - * @readonly - */ - this.sourceAspectRatio = 0; - - /** - * The native browser events from Fullscreen API changes. - * @property {any} event - * @readonly - * @private - */ - this.event = null; - - /** - * The edges on which to constrain the game Display/canvas in _addition_ to the restrictions of the parent container. - * - * The properties are strings and can be '', 'visual', 'layout', or 'layout-soft'. - * - If 'visual', the edge will be constrained to the Window / displayed screen area - * - If 'layout', the edge will be constrained to the CSS Layout bounds - * - An invalid value is treated as 'visual' - * - * @member - * @property {string} bottom - * @property {string} right - * @default - */ - this.windowConstraints = { - right: 'layout', - bottom: '' - }; - - /** - * Various compatibility settings. - * A value of "(auto)" indicates the setting is configured based on device and runtime information. - * - * A {@link #refresh} may need to be performed after making changes. - * - * @protected - * - * @property {boolean} [supportsFullscreen=(auto)] - True only if fullscreen support will be used. (Changing to fullscreen still might not work.) - * - * @property {boolean} [orientationFallback=(auto)] - See {@link Phaser.DOM.getScreenOrientation}. - * - * @property {boolean} [noMargins=false] - If true then the Display canvas's margins will not be updated anymore: existing margins must be manually cleared. Disabling margins prevents automatic canvas alignment/centering, possibly in fullscreen. - * - * @property {?Phaser.Point} [scrollTo=(auto)] - If specified the window will be scrolled to this position on every refresh. - * - * @property {boolean} [forceMinimumDocumentHeight=false] - If enabled the document elements minimum height is explicitly set on updates. - * The height set varies by device and may either be the height of the window or the viewport. - * - * @property {boolean} [canExpandParent=true] - If enabled then SHOW_ALL and USER_SCALE modes can try and expand the parent element. It may be necessary for the parent element to impose CSS width/height restrictions. - * - * @property {string} [clickTrampoline=(auto)] - On certain browsers (eg. IE) FullScreen events need to be triggered via 'click' events. - * A value of 'when-not-mouse' uses a click trampoline when a pointer that is not the primary mouse is used. - * Any other string value (including the empty string) prevents using click trampolines. - * For more details on click trampolines see {@link Phaser.Pointer#addClickTrampoline}. - */ - this.compatibility = { - supportsFullScreen: false, - orientationFallback: null, - noMargins: false, - scrollTo: null, - forceMinimumDocumentHeight: false, - canExpandParent: true, - clickTrampoline: '' - }; - - /** - * Scale mode to be used when not in fullscreen. - * @property {number} _scaleMode - * @private - */ - this._scaleMode = Phaser.ScaleManager.NO_SCALE; - - /* - * Scale mode to be used in fullscreen. - * @property {number} _fullScreenScaleMode - * @private - */ - this._fullScreenScaleMode = Phaser.ScaleManager.NO_SCALE; - - /** - * If the parent container of the Game canvas is the browser window itself (i.e. document.body), - * rather than another div, this should set to `true`. - * - * The {@link #parentNode} property is generally ignored while this is in effect. - * - * @property {boolean} parentIsWindow - */ - this.parentIsWindow = false; - - /** - * The _original_ DOM element for the parent of the Display canvas. - * This may be different in fullscreen - see {@link #createFullScreenTarget}. - * - * This should only be changed after moving the Game canvas to a different DOM parent. - * - * @property {?DOMElement} parentNode - */ - this.parentNode = null; - - /** - * The scale of the game in relation to its parent container. - * @property {Phaser.Point} parentScaleFactor - * @readonly - */ - this.parentScaleFactor = new Phaser.Point(1, 1); - - /** - * The maximum time (in ms) between dimension update checks for the Canvas's parent element (or window). - * Update checks normally happen quicker in response to other events. - * - * @property {integer} trackParentInterval - * @default - * @protected - * @see {@link Phaser.ScaleManager#refresh refresh} - */ - this.trackParentInterval = 2000; - - /** - * This signal is dispatched when the size of the Display canvas changes _or_ the size of the Game changes. - * When invoked this is done _after_ the Canvas size/position have been updated. - * - * This signal is _only_ called when a change occurs and a reflow may be required. - * For example, if the canvas does not change sizes because of CSS settings (such as min-width) - * then this signal will _not_ be triggered. - * - * Use this to handle responsive game layout options. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} onSizeChange - * @todo Formalize the arguments, if any, supplied to this signal. - */ - this.onSizeChange = new Phaser.Signal(); - - /** - * The callback that will be called each the parent container resizes. - * @property {function} onResize - * @private - */ - this.onResize = null; - - /** - * The context in which the {@link #onResize} callback will be called. - * @property {object} onResizeContext - * @private - */ - this.onResizeContext = null; - - /** - * @property {integer} _pendingScaleMode - Used to retain the scale mode if set from config before Boot. - * @private - */ - this._pendingScaleMode = null; - - /** - * Information saved when fullscreen mode is started. - * @property {?object} _fullScreenRestore - * @private - */ - this._fullScreenRestore = null; - - /** - * The _actual_ game dimensions, as initially set or set by {@link #setGameSize}. - * @property {Phaser.Rectangle} _gameSize - * @private - */ - this._gameSize = new Phaser.Rectangle(); - - /** - * The user-supplied scale factor, used with the USER_SCALE scaling mode. - * @property {Phaser.Point} _userScaleFactor - * @private - */ - this._userScaleFactor = new Phaser.Point(1, 1); - - /** - * The user-supplied scale trim, used with the USER_SCALE scaling mode. - * @property {Phaser.Point} _userScaleTrim - * @private - */ - this._userScaleTrim = new Phaser.Point(0, 0); - - /** - * The last time the bounds were checked in `preUpdate`. - * @property {number} _lastUpdate - * @private - */ - this._lastUpdate = 0; - - /** - * Size checks updates are delayed according to the throttle. - * The throttle increases to `trackParentInterval` over time and is used to more - * rapidly detect changes in certain browsers (eg. IE) while providing back-off safety. - * @property {integer} _updateThrottle - * @private - */ - this._updateThrottle = 0; - - /** - * The minimum throttle allowed until it has slowed down sufficiently. - * @property {integer} _updateThrottleReset - * @private - */ - this._updateThrottleReset = 100; - - /** - * The cached result of the parent (possibly window) bounds; used to invalidate sizing. - * @property {Phaser.Rectangle} _parentBounds - * @private - */ - this._parentBounds = new Phaser.Rectangle(); - - /** - * Temporary bounds used for internal work to cut down on new objects created. - * @property {Phaser.Rectangle} _parentBounds - * @private - */ - this._tempBounds = new Phaser.Rectangle(); - - /** - * The Canvas size at which the last onSizeChange signal was triggered. - * @property {Phaser.Rectangle} _lastReportedCanvasSize - * @private - */ - this._lastReportedCanvasSize = new Phaser.Rectangle(); - - /** - * The Game size at which the last onSizeChange signal was triggered. - * @property {Phaser.Rectangle} _lastReportedGameSize - * @private - */ - this._lastReportedGameSize = new Phaser.Rectangle(); - - /** - * @property {boolean} _booted - ScaleManager booted state. - * @private - */ - this._booted = false; - - if (game.config) - { - this.parseConfig(game.config); - } - - this.setupScale(width, height); - -}; - -/** -* A scale mode that stretches content to fill all available space - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.EXACT_FIT = 0; - -/** -* A scale mode that prevents any scaling - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.NO_SCALE = 1; - -/** -* A scale mode that shows the entire game while maintaining proportions - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.SHOW_ALL = 2; - -/** -* A scale mode that causes the Game size to change - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.RESIZE = 3; - -/** -* A scale mode that allows a custom scale factor - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.USER_SCALE = 4; - -Phaser.ScaleManager.prototype = { - - /** - * Start the ScaleManager. - * - * @method Phaser.ScaleManager#boot - * @protected - */ - boot: function () { - - // Configure device-dependent compatibility - - var compat = this.compatibility; - - compat.supportsFullScreen = this.game.device.fullscreen && !this.game.device.cocoonJS; - - // We can't do anything about the status bars in iPads, web apps or desktops - if (!this.game.device.iPad && !this.game.device.webApp && !this.game.device.desktop) - { - if (this.game.device.android && !this.game.device.chrome) - { - compat.scrollTo = new Phaser.Point(0, 1); - } - else - { - compat.scrollTo = new Phaser.Point(0, 0); - } - } - - if (this.game.device.desktop) - { - compat.orientationFallback = 'screen'; - compat.clickTrampoline = 'when-not-mouse'; - } - else - { - compat.orientationFallback = ''; - compat.clickTrampoline = ''; - } - - // Configure event listeners - - var _this = this; - - this._orientationChange = function(event) { - return _this.orientationChange(event); - }; - - this._windowResize = function(event) { - return _this.windowResize(event); - }; - - // This does not appear to be on the standards track - window.addEventListener('orientationchange', this._orientationChange, false); - window.addEventListener('resize', this._windowResize, false); - - if (this.compatibility.supportsFullScreen) - { - this._fullScreenChange = function(event) { - return _this.fullScreenChange(event); - }; - - this._fullScreenError = function(event) { - return _this.fullScreenError(event); - }; - - document.addEventListener('webkitfullscreenchange', this._fullScreenChange, false); - document.addEventListener('mozfullscreenchange', this._fullScreenChange, false); - document.addEventListener('MSFullscreenChange', this._fullScreenChange, false); - document.addEventListener('fullscreenchange', this._fullScreenChange, false); - - document.addEventListener('webkitfullscreenerror', this._fullScreenError, false); - document.addEventListener('mozfullscreenerror', this._fullScreenError, false); - document.addEventListener('MSFullscreenError', this._fullScreenError, false); - document.addEventListener('fullscreenerror', this._fullScreenError, false); - } - - this.game.onResume.add(this._gameResumed, this); - - // Initialize core bounds - - this.dom.getOffset(this.game.canvas, this.offset); - - this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); - - this.setGameSize(this.game.width, this.game.height); - - // Don't use updateOrientationState so events are not fired - this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); - - this.grid = new Phaser.FlexGrid(this, this.width, this.height); - - this._booted = true; - - if (this._pendingScaleMode) - { - this.scaleMode = this._pendingScaleMode; - this._pendingScaleMode = null; - } - - }, - - /** - * Load configuration settings. - * - * @method Phaser.ScaleManager#parseConfig - * @protected - * @param {object} config - The game configuration object. - */ - parseConfig: function (config) { - - if (config['scaleMode']) - { - if (this._booted) - { - this.scaleMode = config['scaleMode']; - } - else - { - this._pendingScaleMode = config['scaleMode']; - } - } - - if (config['fullScreenScaleMode']) - { - this.fullScreenScaleMode = config['fullScreenScaleMode']; - } - - if (config['fullScreenTarget']) - { - this.fullScreenTarget = config['fullScreenTarget']; - } - - }, - - /** - * Calculates and sets the game dimensions based on the given width and height. - * - * This should _not_ be called when in fullscreen mode. - * - * @method Phaser.ScaleManager#setupScale - * @protected - * @param {number|string} width - The width of the game. - * @param {number|string} height - The height of the game. - */ - setupScale: function (width, height) { - - var target; - var rect = new Phaser.Rectangle(); - - if (this.game.parent !== '') - { - if (typeof this.game.parent === 'string') - { - // hopefully an element ID - target = document.getElementById(this.game.parent); - } - else if (this.game.parent && this.game.parent.nodeType === 1) - { - // quick test for a HTMLelement - target = this.game.parent; - } - } - - // Fallback, covers an invalid ID and a non HTMLelement object - if (!target) - { - // Use the full window - this.parentNode = null; - this.parentIsWindow = true; - - rect.width = this.dom.visualBounds.width; - rect.height = this.dom.visualBounds.height; - - this.offset.set(0, 0); - } - else - { - this.parentNode = target; - this.parentIsWindow = false; - - this.getParentBounds(this._parentBounds); - - rect.width = this._parentBounds.width; - rect.height = this._parentBounds.height; - - this.offset.set(this._parentBounds.x, this._parentBounds.y); - } - - var newWidth = 0; - var newHeight = 0; - - if (typeof width === 'number') - { - newWidth = width; - } - else - { - // Percentage based - this.parentScaleFactor.x = parseInt(width, 10) / 100; - newWidth = rect.width * this.parentScaleFactor.x; - } - - if (typeof height === 'number') - { - newHeight = height; - } - else - { - // Percentage based - this.parentScaleFactor.y = parseInt(height, 10) / 100; - newHeight = rect.height * this.parentScaleFactor.y; - } - - this._gameSize.setTo(0, 0, newWidth, newHeight); - - this.updateDimensions(newWidth, newHeight, false); - - }, - - /** - * Invoked when the game is resumed. - * - * @method Phaser.ScaleManager#_gameResumed - * @private - */ - _gameResumed: function () { - - this.queueUpdate(true); - - }, - - /** - * Set the actual Game size. - * Use this instead of directly changing `game.width` or `game.height`. - * - * The actual physical display (Canvas element size) depends on various settings including - * - Scale mode - * - Scaling factor - * - Size of Canvas's parent element or CSS rules such as min-height/max-height; - * - The size of the Window - * - * @method Phaser.ScaleManager#setGameSize - * @public - * @param {integer} width - _Game width_, in pixels. - * @param {integer} height - _Game height_, in pixels. - */ - setGameSize: function (width, height) { - - this._gameSize.setTo(0, 0, width, height); - - if (this.currentScaleMode !== Phaser.ScaleManager.RESIZE) - { - this.updateDimensions(width, height, true); - } - - this.queueUpdate(true); - - }, - - /** - * Set a User scaling factor used in the USER_SCALE scaling mode. - * - * The target canvas size is computed by: - * - * canvas.width = (game.width * hScale) - hTrim - * canvas.height = (game.height * vScale) - vTrim - * - * This method can be used in the {@link Phaser.ScaleManager#setResizeCallback resize callback}. - * - * @method Phaser.ScaleManager#setUserScale - * @param {number} hScale - Horizontal scaling factor. - * @param {numer} vScale - Vertical scaling factor. - * @param {integer} [hTrim=0] - Horizontal trim, applied after scaling. - * @param {integer} [vTrim=0] - Vertical trim, applied after scaling. - */ - setUserScale: function (hScale, vScale, hTrim, vTrim) { - - this._userScaleFactor.setTo(hScale, vScale); - this._userScaleTrim.setTo(hTrim | 0, vTrim | 0); - this.queueUpdate(true); - - }, - - /** - * Sets the callback that will be invoked before sizing calculations. - * - * This is the appropriate place to call {@link #setUserScale} if needing custom dynamic scaling. - * - * The callback is supplied with two arguments `scale` and `parentBounds` where `scale` is the ScaleManager - * and `parentBounds`, a Phaser.Rectangle, is the size of the Parent element. - * - * This callback - * - May be invoked even though the parent container or canvas sizes have not changed - * - Unlike {@link #onSizeChange}, it runs _before_ the canvas is guaranteed to be updated - * - Will be invoked from `preUpdate`, _even when_ the game is paused - * - * See {@link #onSizeChange} for a better way of reacting to layout updates. - * - * @method Phaser.ScaleManager#setResizeCallback - * @public - * @param {function} callback - The callback that will be called each time a window.resize event happens or if set, the parent container resizes. - * @param {object} context - The context in which the callback will be called. - */ - setResizeCallback: function (callback, context) { - - this.onResize = callback; - this.onResizeContext = context; - - }, - - /** - * Signals a resize - IF the canvas or Game size differs from the last signal. - * - * This also triggers updates on {@link #grid} (FlexGrid) and, if in a RESIZE mode, `game.state` (StateManager). - * - * @method Phaser.ScaleManager#signalSizeChange - * @private - */ - signalSizeChange: function () { - - if (!Phaser.Rectangle.sameDimensions(this, this._lastReportedCanvasSize) || - !Phaser.Rectangle.sameDimensions(this.game, this._lastReportedGameSize)) - { - var width = this.width; - var height = this.height; - - this._lastReportedCanvasSize.setTo(0, 0, width, height); - this._lastReportedGameSize.setTo(0, 0, this.game.width, this.game.height); - - this.grid.onResize(width, height); - - this.onSizeChange.dispatch(this, width, height); - - // Per StateManager#onResizeCallback, it only occurs when in RESIZE mode. - if (this.currentScaleMode === Phaser.ScaleManager.RESIZE) - { - this.game.state.resize(width, height); - this.game.load.resize(width, height); - } - } - - }, - - /** - * Set the min and max dimensions for the Display canvas. - * - * _Note:_ The min/max dimensions are only applied in some cases - * - When the device is not in an incorrect orientation; or - * - The scale mode is EXACT_FIT when not in fullscreen - * - * @method Phaser.ScaleManager#setMinMax - * @public - * @param {number} minWidth - The minimum width the game is allowed to scale down to. - * @param {number} minHeight - The minimum height the game is allowed to scale down to. - * @param {number} [maxWidth] - The maximum width the game is allowed to scale up to; only changed if specified. - * @param {number} [maxHeight] - The maximum height the game is allowed to scale up to; only changed if specified. - * @todo These values are only sometimes honored. - */ - setMinMax: function (minWidth, minHeight, maxWidth, maxHeight) { - - this.minWidth = minWidth; - this.minHeight = minHeight; - - if (typeof maxWidth !== 'undefined') - { - this.maxWidth = maxWidth; - } - - if (typeof maxHeight !== 'undefined') - { - this.maxHeight = maxHeight; - } - - }, - - /** - * The ScaleManager.preUpdate is called automatically by the core Game loop. - * - * @method Phaser.ScaleManager#preUpdate - * @protected - */ - preUpdate: function () { - - if (this.game.time.time < (this._lastUpdate + this._updateThrottle)) - { - return; - } - - var prevThrottle = this._updateThrottle; - this._updateThrottleReset = prevThrottle >= 400 ? 0 : 100; - - this.dom.getOffset(this.game.canvas, this.offset); - - var prevWidth = this._parentBounds.width; - var prevHeight = this._parentBounds.height; - var bounds = this.getParentBounds(this._parentBounds); - - var boundsChanged = bounds.width !== prevWidth || bounds.height !== prevHeight; - - // Always invalidate on a newly detected orientation change - var orientationChanged = this.updateOrientationState(); - - if (boundsChanged || orientationChanged) - { - if (this.onResize) - { - this.onResize.call(this.onResizeContext, this, bounds); - } - - this.updateLayout(); - - this.signalSizeChange(); - } - - // Next throttle, eg. 25, 50, 100, 200.. - var throttle = this._updateThrottle * 2; - - // Don't let an update be too eager about resetting the throttle. - if (this._updateThrottle < prevThrottle) - { - throttle = Math.min(prevThrottle, this._updateThrottleReset); - } - - this._updateThrottle = Phaser.Math.clamp(throttle, 25, this.trackParentInterval); - this._lastUpdate = this.game.time.time; - - }, - - /** - * Update method while paused. - * - * @method Phaser.ScaleManager#pauseUpdate - * @private - */ - pauseUpdate: function () { - - this.preUpdate(); - - // Updates at slowest. - this._updateThrottle = this.trackParentInterval; - - }, - - /** - * Update the dimensions taking the parent scaling factor into account. - * - * @method Phaser.ScaleManager#updateDimensions - * @private - * @param {number} width - The new width of the parent container. - * @param {number} height - The new height of the parent container. - * @param {boolean} resize - True if the renderer should be resized, otherwise false to just update the internal vars. - */ - updateDimensions: function (width, height, resize) { - - this.width = width * this.parentScaleFactor.x; - this.height = height * this.parentScaleFactor.y; - - this.game.width = this.width; - this.game.height = this.height; - - this.sourceAspectRatio = this.width / this.height; - this.updateScalingAndBounds(); - - if (resize) - { - // Resize the renderer (which in turn resizes the Display canvas!) - this.game.renderer.resize(this.width, this.height); - - // The Camera can never be smaller than the Game size - this.game.camera.setSize(this.width, this.height); - - // This should only happen if the world is smaller than the new canvas size - this.game.world.resize(this.width, this.height); - } - - }, - - /** - * Update relevant scaling values based on the ScaleManager dimension and game dimensions, - * which should already be set. This does not change {@link #sourceAspectRatio}. - * - * @method Phaser.ScaleManager#updateScalingAndBounds - * @private - */ - updateScalingAndBounds: function () { - - this.scaleFactor.x = this.game.width / this.width; - this.scaleFactor.y = this.game.height / this.height; - - this.scaleFactorInversed.x = this.width / this.game.width; - this.scaleFactorInversed.y = this.height / this.game.height; - - this.aspectRatio = this.width / this.height; - - // This can be invoked in boot pre-canvas - if (this.game.canvas) - { - this.dom.getOffset(this.game.canvas, this.offset); - } - - this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); - - // Can be invoked in boot pre-input - if (this.game.input && this.game.input.scale) - { - this.game.input.scale.setTo(this.scaleFactor.x, this.scaleFactor.y); - } - - }, - - /** - * Force the game to run in only one orientation. - * - * This enables generation of incorrect orientation signals and affects resizing but does not otherwise rotate or lock the orientation. - * - * Orientation checks are performed via the Screen Orientation API, if available in browser. This means it will check your monitor - * orientation on desktop, or your device orientation on mobile, rather than comparing actual game dimensions. If you need to check the - * viewport dimensions instead and bypass the Screen Orientation API then set: `ScaleManager.compatibility.orientationFallback = 'viewport'` - * - * @method Phaser.ScaleManager#forceOrientation - * @public - * @param {boolean} forceLandscape - true if the game should run in landscape mode only. - * @param {boolean} [forcePortrait=false] - true if the game should run in portrait mode only. - */ - forceOrientation: function (forceLandscape, forcePortrait) { - - if (forcePortrait === undefined) { forcePortrait = false; } - - this.forceLandscape = forceLandscape; - this.forcePortrait = forcePortrait; - - this.queueUpdate(true); - - }, - - /** - * Classify the orientation, per `getScreenOrientation`. - * - * @method Phaser.ScaleManager#classifyOrientation - * @private - * @param {string} orientation - The orientation string, e.g. 'portrait-primary'. - * @return {?string} The classified orientation: 'portrait', 'landscape`, or null. - */ - classifyOrientation: function (orientation) { - - if (orientation === 'portrait-primary' || orientation === 'portrait-secondary') - { - return 'portrait'; - } - else if (orientation === 'landscape-primary' || orientation === 'landscape-secondary') - { - return 'landscape'; - } - else - { - return null; - } - - }, - - /** - * Updates the current orientation and dispatches orientation change events. - * - * @method Phaser.ScaleManager#updateOrientationState - * @private - * @return {boolean} True if the orientation state changed which means a forced update is likely required. - */ - updateOrientationState: function () { - - var previousOrientation = this.screenOrientation; - var previouslyIncorrect = this.incorrectOrientation; - - this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); - - this.incorrectOrientation = (this.forceLandscape && !this.isLandscape) || - (this.forcePortrait && !this.isPortrait); - - var changed = previousOrientation !== this.screenOrientation; - var correctnessChanged = previouslyIncorrect !== this.incorrectOrientation; - - if (correctnessChanged) - { - if (this.incorrectOrientation) - { - this.enterIncorrectOrientation.dispatch(); - } - else - { - this.leaveIncorrectOrientation.dispatch(); - } - } - - if (changed || correctnessChanged) - { - this.onOrientationChange.dispatch(this, previousOrientation, previouslyIncorrect); - } - - return changed || correctnessChanged; - - }, - - /** - * window.orientationchange event handler. - * - * @method Phaser.ScaleManager#orientationChange - * @private - * @param {Event} event - The orientationchange event data. - */ - orientationChange: function (event) { - - this.event = event; - - this.queueUpdate(true); - - }, - - /** - * window.resize event handler. - * - * @method Phaser.ScaleManager#windowResize - * @private - * @param {Event} event - The resize event data. - */ - windowResize: function (event) { - - this.event = event; - - this.queueUpdate(true); - - }, - - /** - * Scroll to the top - in some environments. See `compatibility.scrollTo`. - * - * @method Phaser.ScaleManager#scrollTop - * @private - */ - scrollTop: function () { - - var scrollTo = this.compatibility.scrollTo; - - if (scrollTo) - { - window.scrollTo(scrollTo.x, scrollTo.y); - } - - }, - - /** - * The "refresh" methods informs the ScaleManager that a layout refresh is required. - * - * The ScaleManager automatically queues a layout refresh (eg. updates the Game size or Display canvas layout) - * when the browser is resized, the orientation changes, or when there is a detected change - * of the Parent size. Refreshing is also done automatically when public properties, - * such as {@link #scaleMode}, are updated or state-changing methods are invoked. - * - * The "refresh" method _may_ need to be used in a few (rare) situtations when - * - * - a device change event is not correctly detected; or - * - the Parent size changes (and an immediate reflow is desired); or - * - the ScaleManager state is updated by non-standard means; or - * - certain {@link #compatibility} properties are manually changed. - * - * The queued layout refresh is not immediate but will run promptly in an upcoming `preRender`. - * - * @method Phaser.ScaleManager#refresh - * @public - */ - refresh: function () { - - this.scrollTop(); - this.queueUpdate(true); - - }, - - /** - * Updates the game / canvas position and size. - * - * @method Phaser.ScaleManager#updateLayout - * @private - */ - updateLayout: function () { - - var scaleMode = this.currentScaleMode; - - if (scaleMode === Phaser.ScaleManager.RESIZE) - { - this.reflowGame(); - return; - } - - this.scrollTop(); - - if (this.compatibility.forceMinimumDocumentHeight) - { - // (This came from older code, by why is it here?) - // Set minimum height of content to new window height - document.documentElement.style.minHeight = window.innerHeight + 'px'; - } - - if (this.incorrectOrientation) - { - this.setMaximum(); - } - else - { - if (scaleMode === Phaser.ScaleManager.EXACT_FIT) - { - this.setExactFit(); - } - else if (scaleMode === Phaser.ScaleManager.SHOW_ALL) - { - if (!this.isFullScreen && this.boundingParent && - this.compatibility.canExpandParent) - { - // Try to expand parent out, but choosing maximizing dimensions. - // Then select minimize dimensions which should then honor parent - // maximum bound applications. - this.setShowAll(true); - this.resetCanvas(); - this.setShowAll(); - } - else - { - this.setShowAll(); - } - } - else if (scaleMode === Phaser.ScaleManager.NO_SCALE) - { - this.width = this.game.width; - this.height = this.game.height; - } - else if (scaleMode === Phaser.ScaleManager.USER_SCALE) - { - this.width = (this.game.width * this._userScaleFactor.x) - this._userScaleTrim.x; - this.height = (this.game.height * this._userScaleFactor.y) - this._userScaleTrim.y; - } - } - - if (!this.compatibility.canExpandParent && - (scaleMode === Phaser.ScaleManager.SHOW_ALL || scaleMode === Phaser.ScaleManager.USER_SCALE)) - { - var bounds = this.getParentBounds(this._tempBounds); - this.width = Math.min(this.width, bounds.width); - this.height = Math.min(this.height, bounds.height); - } - - // Always truncate / force to integer - this.width = this.width | 0; - this.height = this.height | 0; - - this.reflowCanvas(); - - }, - - /** - * Returns the computed Parent size/bounds that the Display canvas is allowed/expected to fill. - * - * If in fullscreen mode or without parent (see {@link #parentIsWindow}), - * this will be the bounds of the visual viewport itself. - * - * This function takes the {@link #windowConstraints} into consideration - if the parent is partially outside - * the viewport then this function may return a smaller than expected size. - * - * Values are rounded to the nearest pixel. - * - * @method Phaser.ScaleManager#getParentBounds - * @protected - * @param {Phaser.Rectangle} [target=(new Rectangle)] - The rectangle to update; a new one is created as needed. - * @return {Phaser.Rectangle} The established parent bounds. - */ - getParentBounds: function (target) { - - var bounds = target || new Phaser.Rectangle(); - var parentNode = this.boundingParent; - var visualBounds = this.dom.visualBounds; - var layoutBounds = this.dom.layoutBounds; - - if (!parentNode) - { - bounds.setTo(0, 0, visualBounds.width, visualBounds.height); - } - else - { - // Ref. http://msdn.microsoft.com/en-us/library/hh781509(v=vs.85).aspx for getBoundingClientRect - var clientRect = parentNode.getBoundingClientRect(); - - bounds.setTo(clientRect.left, clientRect.top, clientRect.width, clientRect.height); - - var wc = this.windowConstraints; - - if (wc.right) - { - var windowBounds = wc.right === 'layout' ? layoutBounds : visualBounds; - bounds.right = Math.min(bounds.right, windowBounds.width); - } - - if (wc.bottom) - { - var windowBounds = wc.bottom === 'layout' ? layoutBounds : visualBounds; - bounds.bottom = Math.min(bounds.bottom, windowBounds.height); - } - } - - bounds.setTo( - Math.round(bounds.x), Math.round(bounds.y), - Math.round(bounds.width), Math.round(bounds.height)); - - return bounds; - - }, - - /** - * Update the canvas position/margins - for alignment within the parent container. - * - * The canvas margins _must_ be reset/cleared prior to invoking this. - * - * @method Phaser.ScaleManager#alignCanvas - * @private - * @param {boolean} horizontal - Align horizontally? - * @param {boolean} vertical - Align vertically? - */ - alignCanvas: function (horizontal, vertical) { - - var parentBounds = this.getParentBounds(this._tempBounds); - var canvas = this.game.canvas; - var margin = this.margin; - - if (horizontal) - { - margin.left = margin.right = 0; - - var canvasBounds = canvas.getBoundingClientRect(); - - if (this.width < parentBounds.width && !this.incorrectOrientation) - { - var currentEdge = canvasBounds.left - parentBounds.x; - var targetEdge = (parentBounds.width / 2) - (this.width / 2); - - targetEdge = Math.max(targetEdge, 0); - - var offset = targetEdge - currentEdge; - - margin.left = Math.round(offset); - } - - canvas.style.marginLeft = margin.left + 'px'; - - if (margin.left !== 0) - { - margin.right = -(parentBounds.width - canvasBounds.width - margin.left); - canvas.style.marginRight = margin.right + 'px'; - } - } - - if (vertical) - { - margin.top = margin.bottom = 0; - - var canvasBounds = canvas.getBoundingClientRect(); - - if (this.height < parentBounds.height && !this.incorrectOrientation) - { - var currentEdge = canvasBounds.top - parentBounds.y; - var targetEdge = (parentBounds.height / 2) - (this.height / 2); - - targetEdge = Math.max(targetEdge, 0); - - var offset = targetEdge - currentEdge; - margin.top = Math.round(offset); - } - - canvas.style.marginTop = margin.top + 'px'; - - if (margin.top !== 0) - { - margin.bottom = -(parentBounds.height - canvasBounds.height - margin.top); - canvas.style.marginBottom = margin.bottom + 'px'; - } - } - - // Silly backwards compatibility.. - margin.x = margin.left; - margin.y = margin.top; - - }, - - /** - * Updates the Game state / size. - * - * The canvas margins may always be adjusted, even if alignment is not in effect. - * - * @method Phaser.ScaleManager#reflowGame - * @private - */ - reflowGame: function () { - - this.resetCanvas('', ''); - - var bounds = this.getParentBounds(this._tempBounds); - this.updateDimensions(bounds.width, bounds.height, true); - - }, - - /** - * Updates the Display canvas size. - * - * The canvas margins may always be adjusted, even alignment is not in effect. - * - * @method Phaser.ScaleManager#reflowCanvas - * @private - */ - reflowCanvas: function () { - - if (!this.incorrectOrientation) - { - this.width = Phaser.Math.clamp(this.width, this.minWidth || 0, this.maxWidth || this.width); - this.height = Phaser.Math.clamp(this.height, this.minHeight || 0, this.maxHeight || this.height); - } - - this.resetCanvas(); - - if (!this.compatibility.noMargins) - { - if (this.isFullScreen && this._createdFullScreenTarget) - { - this.alignCanvas(true, true); - } - else - { - this.alignCanvas(this.pageAlignHorizontally, this.pageAlignVertically); - } - } - - this.updateScalingAndBounds(); - - }, - - /** - * "Reset" the Display canvas and set the specified width/height. - * - * @method Phaser.ScaleManager#resetCanvas - * @private - * @param {string} [cssWidth=(current width)] - The css width to set. - * @param {string} [cssHeight=(current height)] - The css height to set. - */ - resetCanvas: function (cssWidth, cssHeight) { - - if (cssWidth === undefined) { cssWidth = this.width + 'px'; } - if (cssHeight === undefined) { cssHeight = this.height + 'px'; } - - var canvas = this.game.canvas; - - if (!this.compatibility.noMargins) - { - canvas.style.marginLeft = ''; - canvas.style.marginTop = ''; - canvas.style.marginRight = ''; - canvas.style.marginBottom = ''; - } - - canvas.style.width = cssWidth; - canvas.style.height = cssHeight; - - }, - - /** - * Queues/marks a size/bounds check as needing to occur (from `preUpdate`). - * - * @method Phaser.ScaleManager#queueUpdate - * @private - * @param {boolean} force - If true resets the parent bounds to ensure the check is dirty. - */ - queueUpdate: function (force) { - - if (force) - { - this._parentBounds.width = 0; - this._parentBounds.height = 0; - } - - this._updateThrottle = this._updateThrottleReset; - - }, - - /** - * Reset internal data/state. - * - * @method Phaser.ScaleManager#reset - * @private - */ - reset: function (clearWorld) { - - if (clearWorld) - { - this.grid.reset(); - } - - }, - - /** - * Updates the width/height to that of the window. - * - * @method Phaser.ScaleManager#setMaximum - * @private - */ - setMaximum: function () { - - this.width = this.dom.visualBounds.width; - this.height = this.dom.visualBounds.height; - - }, - - /** - * Updates the width/height such that the game is scaled proportionally. - * - * @method Phaser.ScaleManager#setShowAll - * @private - * @param {boolean} expanding - If true then the maximizing dimension is chosen. - */ - setShowAll: function (expanding) { - - var bounds = this.getParentBounds(this._tempBounds); - var width = bounds.width; - var height = bounds.height; - - var multiplier; - - if (expanding) - { - multiplier = Math.max((height / this.game.height), (width / this.game.width)); - } - else - { - multiplier = Math.min((height / this.game.height), (width / this.game.width)); - } - - this.width = Math.round(this.game.width * multiplier); - this.height = Math.round(this.game.height * multiplier); - - }, - - /** - * Updates the width/height such that the game is stretched to the available size. - * Honors {@link #maxWidth} and {@link #maxHeight} when _not_ in fullscreen. - * - * @method Phaser.ScaleManager#setExactFit - * @private - */ - setExactFit: function () { - - var bounds = this.getParentBounds(this._tempBounds); - - this.width = bounds.width; - this.height = bounds.height; - - if (this.isFullScreen) - { - // Max/min not honored fullscreen - return; - } - - if (this.maxWidth) - { - this.width = Math.min(this.width, this.maxWidth); - } - - if (this.maxHeight) - { - this.height = Math.min(this.height, this.maxHeight); - } - - }, - - /** - * Creates a fullscreen target. This is called automatically as as needed when entering - * fullscreen mode and the resulting element is supplied to {@link #onFullScreenInit}. - * - * Use {@link #onFullScreenInit} to customize the created object. - * - * @method Phaser.ScaleManager#createFullScreenTarget - * @protected - */ - createFullScreenTarget: function () { - - var fsTarget = document.createElement('div'); - - fsTarget.style.margin = '0'; - fsTarget.style.padding = '0'; - fsTarget.style.background = '#000'; - - return fsTarget; - - }, - - /** - * Start the browsers fullscreen mode - this _must_ be called from a user input Pointer or Mouse event. - * - * The Fullscreen API must be supported by the browser for this to work - it is not the same as setting - * the game size to fill the browser window. See {@link Phaser.ScaleManager#compatibility compatibility.supportsFullScreen} to check if the current - * device is reported to support fullscreen mode. - * - * The {@link #fullScreenFailed} signal will be dispatched if the fullscreen change request failed or the game does not support the Fullscreen API. - * - * @method Phaser.ScaleManager#startFullScreen - * @public - * @param {boolean} [antialias] - Changes the anti-alias feature of the canvas before jumping in to fullscreen (false = retain pixel art, true = smooth art). If not specified then no change is made. Only works in CANVAS mode. - * @param {boolean} [allowTrampoline=undefined] - Internal argument. If `false` click trampolining is suppressed. - * @return {boolean} Returns true if the device supports fullscreen mode and fullscreen mode was attempted to be started. (It might not actually start, wait for the signals.) - */ - startFullScreen: function (antialias, allowTrampoline) { - - if (this.isFullScreen) - { - return false; - } - - if (!this.compatibility.supportsFullScreen) - { - // Error is called in timeout to emulate the real fullscreenerror event better - var _this = this; - setTimeout(function () { - _this.fullScreenError(); - }, 10); - return; - } - - if (this.compatibility.clickTrampoline === 'when-not-mouse') - { - var input = this.game.input; - - if (input.activePointer && - input.activePointer !== input.mousePointer && - (allowTrampoline || allowTrampoline !== false)) - { - input.activePointer.addClickTrampoline("startFullScreen", this.startFullScreen, this, [antialias, false]); - return; - } - } - - if (typeof antialias !== 'undefined' && this.game.renderType === Phaser.CANVAS) - { - this.game.stage.smoothed = antialias; - } - - var fsTarget = this.fullScreenTarget; - - if (!fsTarget) - { - this.cleanupCreatedTarget(); - - this._createdFullScreenTarget = this.createFullScreenTarget(); - fsTarget = this._createdFullScreenTarget; - } - - var initData = { - targetElement: fsTarget - }; - - this.onFullScreenInit.dispatch(this, initData); - - if (this._createdFullScreenTarget) - { - // Move the Display canvas inside of the target and add the target to the DOM - // (The target has to be added for the Fullscreen API to work.) - var canvas = this.game.canvas; - var parent = canvas.parentNode; - parent.insertBefore(fsTarget, canvas); - fsTarget.appendChild(canvas); - } - - if (this.game.device.fullscreenKeyboard) - { - fsTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); - } - else - { - fsTarget[this.game.device.requestFullscreen](); - } - - return true; - - }, - - /** - * Stops / exits fullscreen mode, if active. - * - * @method Phaser.ScaleManager#stopFullScreen - * @public - * @return {boolean} Returns true if the browser supports fullscreen mode and fullscreen mode will be exited. - */ - stopFullScreen: function () { - - if (!this.isFullScreen || !this.compatibility.supportsFullScreen) - { - return false; - } - - document[this.game.device.cancelFullscreen](); - - return true; - - }, - - /** - * Cleans up the previous fullscreen target, if such was automatically created. - * This ensures the canvas is restored to its former parent, assuming the target didn't move. - * - * @method Phaser.ScaleManager#cleanupCreatedTarget - * @private - */ - cleanupCreatedTarget: function () { - - var fsTarget = this._createdFullScreenTarget; - - if (fsTarget && fsTarget.parentNode) - { - // Make sure to cleanup synthetic target for sure; - // swap the canvas back to the parent. - var parent = fsTarget.parentNode; - parent.insertBefore(this.game.canvas, fsTarget); - parent.removeChild(fsTarget); - } - - this._createdFullScreenTarget = null; - - }, - - /** - * Used to prepare/restore extra fullscreen mode settings. - * (This does move any elements within the DOM tree.) - * - * @method Phaser.ScaleManager#prepScreenMode - * @private - * @param {boolean} enteringFullscreen - True if _entering_ fullscreen, false if _leaving_. - */ - prepScreenMode: function (enteringFullscreen) { - - var createdTarget = !!this._createdFullScreenTarget; - var fsTarget = this._createdFullScreenTarget || this.fullScreenTarget; - - if (enteringFullscreen) - { - if (createdTarget || this.fullScreenScaleMode === Phaser.ScaleManager.EXACT_FIT) - { - // Resize target, as long as it's not the canvas - if (fsTarget !== this.game.canvas) - { - this._fullScreenRestore = { - targetWidth: fsTarget.style.width, - targetHeight: fsTarget.style.height - }; - - fsTarget.style.width = '100%'; - fsTarget.style.height = '100%'; - } - } - } - else - { - // Have restore information - if (this._fullScreenRestore) - { - fsTarget.style.width = this._fullScreenRestore.targetWidth; - fsTarget.style.height = this._fullScreenRestore.targetHeight; - - this._fullScreenRestore = null; - } - - // Always reset to game size - this.updateDimensions(this._gameSize.width, this._gameSize.height, true); - this.resetCanvas(); - } - - }, - - /** - * Called automatically when the browser enters of leaves fullscreen mode. - * - * @method Phaser.ScaleManager#fullScreenChange - * @private - * @param {Event} [event=undefined] - The fullscreenchange event - */ - fullScreenChange: function (event) { - - this.event = event; - - if (this.isFullScreen) - { - this.prepScreenMode(true); - - this.updateLayout(); - this.queueUpdate(true); - } - else - { - this.prepScreenMode(false); - - this.cleanupCreatedTarget(); - - this.updateLayout(); - this.queueUpdate(true); - } - - this.onFullScreenChange.dispatch(this, this.width, this.height); - - }, - - /** - * Called automatically when the browser fullscreen request fails; - * or called when a fullscreen request is made on a device for which it is not supported. - * - * @method Phaser.ScaleManager#fullScreenError - * @private - * @param {Event} [event=undefined] - The fullscreenerror event; undefined if invoked on a device that does not support the Fullscreen API. - */ - fullScreenError: function (event) { - - this.event = event; - - this.cleanupCreatedTarget(); - - console.warn('Phaser.ScaleManager: requestFullscreen failed or device does not support the Fullscreen API'); - - this.onFullScreenError.dispatch(this); - - }, - - /** - * Takes a Sprite or Image object and scales it to fit the given dimensions. - * Scaling happens proportionally without distortion to the sprites texture. - * The letterBox parameter controls if scaling will produce a letter-box effect or zoom the - * sprite until it fills the given values. Note that with letterBox set to false the scaled sprite may spill out over either - * the horizontal or vertical sides of the target dimensions. If you wish to stop this you can crop the Sprite. - * - * @method Phaser.ScaleManager#scaleSprite - * @protected - * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite we want to scale. - * @param {integer} [width] - The target width that we want to fit the sprite in to. If not given it defaults to ScaleManager.width. - * @param {integer} [height] - The target height that we want to fit the sprite in to. If not given it defaults to ScaleManager.height. - * @param {boolean} [letterBox=false] - True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. - * @return {Phaser.Sprite|Phaser.Image} The scaled sprite. - */ - scaleSprite: function (sprite, width, height, letterBox) { - - if (width === undefined) { width = this.width; } - if (height === undefined) { height = this.height; } - if (letterBox === undefined) { letterBox = false; } - - if (!sprite || !sprite['scale']) - { - return sprite; - } - - sprite.scale.x = 1; - sprite.scale.y = 1; - - if ((sprite.width <= 0) || (sprite.height <= 0) || (width <= 0) || (height <= 0)) - { - return sprite; - } - - var scaleX1 = width; - var scaleY1 = (sprite.height * width) / sprite.width; - - var scaleX2 = (sprite.width * height) / sprite.height; - var scaleY2 = height; - - var scaleOnWidth = (scaleX2 > width); - - if (scaleOnWidth) - { - scaleOnWidth = letterBox; - } - else - { - scaleOnWidth = !letterBox; - } - - if (scaleOnWidth) - { - sprite.width = Math.floor(scaleX1); - sprite.height = Math.floor(scaleY1); - } - else - { - sprite.width = Math.floor(scaleX2); - sprite.height = Math.floor(scaleY2); - } - - // Enable at some point? - // sprite.x = Math.floor((width - sprite.width) / 2); - // sprite.y = Math.floor((height - sprite.height) / 2); - - return sprite; - - }, - - /** - * Destroys the ScaleManager and removes any event listeners. - * This should probably only be called when the game is destroyed. - * - * @method Phaser.ScaleManager#destroy - * @protected - */ - destroy: function () { - - this.game.onResume.remove(this._gameResumed, this); - - window.removeEventListener('orientationchange', this._orientationChange, false); - window.removeEventListener('resize', this._windowResize, false); - - if (this.compatibility.supportsFullScreen) - { - document.removeEventListener('webkitfullscreenchange', this._fullScreenChange, false); - document.removeEventListener('mozfullscreenchange', this._fullScreenChange, false); - document.removeEventListener('MSFullscreenChange', this._fullScreenChange, false); - document.removeEventListener('fullscreenchange', this._fullScreenChange, false); - - document.removeEventListener('webkitfullscreenerror', this._fullScreenError, false); - document.removeEventListener('mozfullscreenerror', this._fullScreenError, false); - document.removeEventListener('MSFullscreenError', this._fullScreenError, false); - document.removeEventListener('fullscreenerror', this._fullScreenError, false); - } - - } - -}; - -Phaser.ScaleManager.prototype.constructor = Phaser.ScaleManager; - -/** -* The DOM element that is considered the Parent bounding element, if any. -* -* This `null` if {@link #parentIsWindow} is true or if fullscreen mode is entered and {@link #fullScreenTarget} is specified. -* It will also be null if there is no game canvas or if the game canvas has no parent. -* -* @name Phaser.ScaleManager#boundingParent -* @property {?DOMElement} boundingParent -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "boundingParent", { - - get: function () { - if (this.parentIsWindow || - (this.isFullScreen && !this._createdFullScreenTarget)) - { - return null; - } - - var parentNode = this.game.canvas && this.game.canvas.parentNode; - return parentNode || null; - } - -}); - -/** -* The scaling method used by the ScaleManager when not in fullscreen. -* -*
-*
{@link Phaser.ScaleManager.NO_SCALE}
-*
-* The Game display area will not be scaled - even if it is too large for the canvas/screen. -* This mode _ignores_ any applied scaling factor and displays the canvas at the Game size. -*
-*
{@link Phaser.ScaleManager.EXACT_FIT}
-*
-* The Game display area will be _stretched_ to fill the entire size of the canvas's parent element and/or screen. -* Proportions are not mainted. -*
-*
{@link Phaser.ScaleManager.SHOW_ALL}
-*
-* Show the entire game display area while _maintaining_ the original aspect ratio. -*
-*
{@link Phaser.ScaleManager.RESIZE}
-*
-* The dimensions of the game display area are changed to match the size of the parent container. -* That is, this mode _changes the Game size_ to match the display size. -*

-* Any manually set Game size (see {@link #setGameSize}) is ignored while in effect. -*

-*
{@link Phaser.ScaleManager.USER_SCALE}
-*
-* The game Display is scaled according to the user-specified scale set by {@link Phaser.ScaleManager#setUserScale setUserScale}. -*

-* This scale can be adjusted in the {@link Phaser.ScaleManager#setResizeCallback resize callback} -* for flexible custom-sizing needs. -*

-*
-* -* @name Phaser.ScaleManager#scaleMode -* @property {integer} scaleMode -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "scaleMode", { - - get: function () { - - return this._scaleMode; - - }, - - set: function (value) { - - if (value !== this._scaleMode) - { - if (!this.isFullScreen) - { - this.updateDimensions(this._gameSize.width, this._gameSize.height, true); - this.queueUpdate(true); - } - - this._scaleMode = value; - } - - return this._scaleMode; - - } - -}); - -/** -* The scaling method used by the ScaleManager when in fullscreen. -* -* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. -* -* @name Phaser.ScaleManager#fullScreenScaleMode -* @property {integer} fullScreenScaleMode -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "fullScreenScaleMode", { - - get: function () { - - return this._fullScreenScaleMode; - - }, - - set: function (value) { - - if (value !== this._fullScreenScaleMode) - { - // If in fullscreen then need a wee bit more work - if (this.isFullScreen) - { - this.prepScreenMode(false); - this._fullScreenScaleMode = value; - this.prepScreenMode(true); - - this.queueUpdate(true); - } - else - { - this._fullScreenScaleMode = value; - } - } - - return this._fullScreenScaleMode; - - } - -}); - -/** -* Returns the current scale mode - for normal or fullscreen operation. -* -* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. -* -* @name Phaser.ScaleManager#currentScaleMode -* @property {number} currentScaleMode -* @protected -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "currentScaleMode", { - - get: function () { - - return this.isFullScreen ? this._fullScreenScaleMode : this._scaleMode; - - } - -}); - -/** -* When enabled the Display canvas will be horizontally-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). -* -* To align horizontally across the page the Display canvas should be added directly to page; -* or the parent container should itself be horizontally aligned. -* -* Horizontal alignment is not applicable with the {@link .RESIZE} scaling mode. -* -* @name Phaser.ScaleManager#pageAlignHorizontally -* @property {boolean} pageAlignHorizontally -* @default false -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignHorizontally", { - - get: function () { - - return this._pageAlignHorizontally; - - }, - - set: function (value) { - - if (value !== this._pageAlignHorizontally) - { - this._pageAlignHorizontally = value; - this.queueUpdate(true); - } - - } - -}); - -/** -* When enabled the Display canvas will be vertically-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). -* -* To align vertically the Parent element should have a _non-collapsible_ height, such that it will maintain -* a height _larger_ than the height of the contained Game canvas - the game canvas will then be scaled vertically -* _within_ the remaining available height dictated by the Parent element. -* -* One way to prevent the parent from collapsing is to add an absolute "min-height" CSS property to the parent element. -* If specifying a relative "min-height/height" or adjusting margins, the Parent height must still be non-collapsible (see note). -* -* _Note_: In version 2.2 the minimum document height is _not_ automatically set to the viewport/window height. -* To automatically update the minimum document height set {@link Phaser.ScaleManager#compatibility compatibility.forceMinimumDocumentHeight} to true. -* -* Vertical alignment is not applicable with the {@link .RESIZE} scaling mode. -* -* @name Phaser.ScaleManager#pageAlignVertically -* @property {boolean} pageAlignVertically -* @default false -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignVertically", { - - get: function () { - - return this._pageAlignVertically; - - }, - - set: function (value) { - - if (value !== this._pageAlignVertically) - { - this._pageAlignVertically = value; - this.queueUpdate(true); - } - - } - -}); - -/** -* Returns true if the browser is in fullscreen mode, otherwise false. -* @name Phaser.ScaleManager#isFullScreen -* @property {boolean} isFullScreen -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isFullScreen", { - - get: function () { - return !!(document['fullscreenElement'] || - document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || - document['msFullscreenElement']); - } - -}); - -/** -* Returns true if the screen orientation is in portrait mode. -* -* @name Phaser.ScaleManager#isPortrait -* @property {boolean} isPortrait -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isPortrait", { - - get: function () { - return this.classifyOrientation(this.screenOrientation) === 'portrait'; - } - -}); - -/** -* Returns true if the screen orientation is in landscape mode. -* -* @name Phaser.ScaleManager#isLandscape -* @property {boolean} isLandscape -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isLandscape", { - - get: function () { - return this.classifyOrientation(this.screenOrientation) === 'landscape'; - } - -}); - -/** -* Returns true if the game dimensions are portrait (height > width). -* This is especially useful to check when using the RESIZE scale mode -* but wanting to maintain game orientation on desktop browsers, -* where typically the screen orientation will always be landscape regardless of the browser viewport. -* -* @name Phaser.ScaleManager#isGamePortrait -* @property {boolean} isGamePortrait -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isGamePortrait", { - - get: function () { - return (this.height > this.width); - } - -}); - -/** -* Returns true if the game dimensions are landscape (width > height). -* This is especially useful to check when using the RESIZE scale mode -* but wanting to maintain game orientation on desktop browsers, -* where typically the screen orientation will always be landscape regardless of the browser viewport. -* -* @name Phaser.ScaleManager#isGameLandscape -* @property {boolean} isGameLandscape -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { - - get: function () { - return (this.width > this.height); - } - -}); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * This is where the magic happens. The Game object is the heart of your game, * providing quick access to common functions and handling the boot process. @@ -24599,6 +20262,14 @@ Phaser.Game = function (width, height, renderer, parent, state, transparent, ant */ this.preserveDrawingBuffer = false; + /** + * Clear the Canvas each frame before rendering the display list. + * You can set this to `false` to gain some performance if your game always contains a background that completely fills the display. + * @property {boolean} clearBeforeRender + * @default + */ + this.clearBeforeRender = true; + /** * @property {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The Pixi Renderer. * @protected @@ -25021,6 +20692,8 @@ Phaser.Game.prototype = { this.isBooted = true; + PIXI.game = this; + this.math = Phaser.Math; this.scale = new Phaser.ScaleManager(this, this._width, this._height); @@ -25174,37 +20847,20 @@ Phaser.Game.prototype = { this.canvas.style['-webkit-full-screen'] = 'width: 100%; height: 100%'; } - if (this.device.cocoonJS) - { - if (this.renderType === Phaser.CANVAS) - { - this.canvas.screencanvas = true; - } - else - { - // Some issue related to scaling arise with Cocoon using screencanvas and webgl renderer. - this.canvas.screencanvas = false; - } - } - - if (this.renderType === Phaser.HEADLESS || this.renderType === Phaser.CANVAS || (this.renderType === Phaser.AUTO && this.device.webGL === false)) + if (this.renderType === Phaser.HEADLESS || this.renderType === Phaser.CANVAS || (this.renderType === Phaser.AUTO && !this.device.webGL)) { if (this.device.canvas) { - if (this.renderType === Phaser.AUTO) - { - this.renderType = Phaser.CANVAS; - } + // They requested Canvas and their browser supports it + this.renderType = Phaser.CANVAS; + + this.renderer = new PIXI.CanvasRenderer(this); - this.renderer = new PIXI.CanvasRenderer(this.width, this.height, { "view": this.canvas, - "transparent": this.transparent, - "resolution": this.resolution, - "clearBeforeRender": true }); this.context = this.renderer.context; } else { - throw new Error('Phaser.Game - cannot create Canvas or WebGL context, aborting.'); + throw new Error('Phaser.Game - Cannot create Canvas or WebGL context, aborting.'); } } else @@ -25212,17 +20868,19 @@ Phaser.Game.prototype = { // They requested WebGL and their browser supports it this.renderType = Phaser.WEBGL; - this.renderer = new PIXI.WebGLRenderer(this.width, this.height, { "view": this.canvas, - "transparent": this.transparent, - "resolution": this.resolution, - "antialias": this.antialias, - "preserveDrawingBuffer": this.preserveDrawingBuffer }); + this.renderer = new PIXI.WebGLRenderer(this); + this.context = null; this.canvas.addEventListener('webglcontextlost', this.contextLost.bind(this), false); this.canvas.addEventListener('webglcontextrestored', this.contextRestored.bind(this), false); } + if (this.device.cocoonJS) + { + this.canvas.screencanvas = (this.renderType === Phaser.CANVAS) ? true : false; + } + if (this.renderType !== Phaser.HEADLESS) { this.stage.smoothed = this.antialias; @@ -25277,7 +20935,7 @@ Phaser.Game.prototype = { if (this._kickstart) { - this.updateLogic(1.0 / this.time.desiredFps); + this.updateLogic(this.time.desiredFpsMult); // Sync the scene graph after _every_ logic update to account for moved game objects this.stage.updateTransform(); @@ -25297,7 +20955,7 @@ Phaser.Game.prototype = { if (this.time.time > this._nextFpsNotification) { // only permit one fps notification per 10 seconds - this._nextFpsNotification = this.time.time + 1000 * 10; + this._nextFpsNotification = this.time.time + 10000; // dispatch the notification signal this.fpsProblemNotifier.dispatch(); @@ -25334,7 +20992,7 @@ Phaser.Game.prototype = { this._deltaTime -= slowStep; this.currentUpdateID = count; - this.updateLogic(1.0 / this.time.desiredFps); + this.updateLogic(this.time.desiredFpsMult); // Sync the scene graph after _every_ logic update to account for moved game objects this.stage.updateTransform(); @@ -25345,6 +21003,10 @@ Phaser.Game.prototype = { { break; } + else + { + this.time.refresh(); + } } // detect spiraling (if the catch-up loop isn't fast enough, the number of iterations will increase constantly) @@ -25392,7 +21054,7 @@ Phaser.Game.prototype = { this.state.update(); this.stage.update(); - this.tweens.update(timeStep); + this.tweens.update(); this.sound.update(); this.input.update(); this.physics.update(); @@ -25435,10 +21097,13 @@ Phaser.Game.prototype = { } this.state.preRender(elapsedTime); + this.renderer.render(this.stage); this.plugins.render(elapsedTime); + this.state.render(elapsedTime); + this.plugins.postRender(elapsedTime); }, @@ -26035,7 +21700,7 @@ Phaser.Input.prototype = { */ boot: function () { - this.mousePointer = new Phaser.Pointer(this.game, 0); + this.mousePointer = new Phaser.Pointer(this.game, 0, Phaser.PointerMode.CURSOR); this.addPointer(); this.addPointer(); @@ -26178,7 +21843,7 @@ Phaser.Input.prototype = { } var id = this.pointers.length + 1; - var pointer = new Phaser.Pointer(this.game, id); + var pointer = new Phaser.Pointer(this.game, id, Phaser.PointerMode.TOUCH); this.pointers.push(pointer); this['pointer' + id] = pointer; @@ -27852,20 +23517,23 @@ Phaser.MSPointer.prototype = { var canvas = this.game.canvas; - canvas.removeEventListener('MSPointerDown', this._onMSPointerDown); - canvas.removeEventListener('MSPointerMove', this._onMSPointerMove); - canvas.removeEventListener('MSPointerUp', this._onMSPointerUp); - canvas.removeEventListener('MSPointerOver', this._onMSPointerOver); - canvas.removeEventListener('MSPointerOut', this._onMSPointerOut); + canvas.removeEventListener('MSPointerDown', this._onMSPointerDown, false); + canvas.removeEventListener('MSPointerMove', this._onMSPointerMove, false); + canvas.removeEventListener('MSPointerUp', this._onMSPointerUp, false); - canvas.removeEventListener('pointerdown', this._onMSPointerDown); - canvas.removeEventListener('pointermove', this._onMSPointerMove); - canvas.removeEventListener('pointerup', this._onMSPointerUp); - canvas.removeEventListener('pointerover', this._onMSPointerOver); - canvas.removeEventListener('pointerout', this._onMSPointerOut); + // IE11+ uses non-prefix events + canvas.removeEventListener('pointerdown', this._onMSPointerDown, false); + canvas.removeEventListener('pointermove', this._onMSPointerMove, false); + canvas.removeEventListener('pointerup', this._onMSPointerUp, false); - window.removeEventListener('MSPointerUp', this._onMSPointerUpGlobal); - window.removeEventListener('pointerup', this._onMSPointerUpGlobal); + window.removeEventListener('MSPointerUp', this._onMSPointerUpGlobal, true); + canvas.removeEventListener('MSPointerOver', this._onMSPointerOver, true); + canvas.removeEventListener('MSPointerOut', this._onMSPointerOut, true); + + // IE11+ uses non-prefix events + window.removeEventListener('pointerup', this._onMSPointerUpGlobal, true); + canvas.removeEventListener('pointerover', this._onMSPointerOver, true); + canvas.removeEventListener('pointerout', this._onMSPointerOut, true); } @@ -27939,15 +23607,6 @@ Phaser.DeviceButton = function (parent, buttonCode) { */ this.timeDown = 0; - /** - * If the button is down this value holds the duration of that button press and is constantly updated. - * If the button is up it holds the duration of the previous down session. - * The value is stored in milliseconds. - * @property {number} duration - * @default - */ - this.duration = 0; - /** * @property {number} timeUp - The timestamp when the button was last released. * @default @@ -28044,7 +23703,6 @@ Phaser.DeviceButton.prototype = { this.isDown = true; this.isUp = false; this.timeDown = this.game.time.time; - this.duration = 0; this.repeats = 0; this.event = event; @@ -28153,7 +23811,6 @@ Phaser.DeviceButton.prototype = { this.isUp = true; this.timeDown = this.game.time.time; - this.duration = 0; this.repeats = 0; this.altKey = false; @@ -28184,7 +23841,7 @@ Phaser.DeviceButton.prototype = { Phaser.DeviceButton.prototype.constructor = Phaser.DeviceButton; /** -* How long the button has been held down. +* How long the button has been held down for in milliseconds. * If not currently down it returns -1. * * @name Phaser.DeviceButton#duration @@ -28219,8 +23876,9 @@ Object.defineProperty(Phaser.DeviceButton.prototype, "duration", { * @constructor * @param {Phaser.Game} game - A reference to the currently running game. * @param {number} id - The ID of the Pointer object within the game. Each game can have up to 10 active pointers. +* @param {Phaser.PointerMode} pointerMode=(CURSOR|CONTACT) - The operational mode of this pointer, eg. CURSOR or TOUCH. */ -Phaser.Pointer = function (game, id) { +Phaser.Pointer = function (game, id, pointerMode) { /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -28256,6 +23914,11 @@ Phaser.Pointer = function (game, id) { */ this.pointerId = null; + /** + * @property {Phaser.PointerMode} pointerMode - The operational mode of this pointer. + */ + this.pointerMode = pointerMode || (Phaser.PointerMode.CURSOR | Phaser.PointerMode.CONTACT); + /** * @property {any} target - The target property of the Pointer as set by the DOM event when this Pointer is started. * @default @@ -28780,6 +24443,8 @@ Phaser.Pointer.prototype = { */ start: function (event) { + var input = this.game.input; + if (event['pointerId']) { this.pointerId = event.pointerId; @@ -28817,18 +24482,19 @@ Phaser.Pointer.prototype = { // x and y are the old values here? this.positionDown.setTo(this.x, this.y); - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.x = this.x; - this.game.input.y = this.y; - this.game.input.position.setTo(this.x, this.y); - this.game.input.onDown.dispatch(this, event); - this.game.input.resetSpeed(this.x, this.y); + input.x = this.x; + input.y = this.y; + input.position.setTo(this.x, this.y); + input.onDown.dispatch(this, event); + input.resetSpeed(this.x, this.y); } this._stateReset = false; + this.totalTouches++; if (this.targetObject !== null) @@ -28846,12 +24512,14 @@ Phaser.Pointer.prototype = { */ update: function () { + var input = this.game.input; + if (this.active) { // Force a check? if (this.dirty) { - if (this.game.input.interactiveItems.total > 0) + if (input.interactiveItems.total > 0) { this.processInteractiveObjects(false); } @@ -28859,29 +24527,29 @@ Phaser.Pointer.prototype = { this.dirty = false; } - if (this._holdSent === false && this.duration >= this.game.input.holdRate) + if (this._holdSent === false && this.duration >= input.holdRate) { - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.onHold.dispatch(this); + input.onHold.dispatch(this); } this._holdSent = true; } // Update the droppings history - if (this.game.input.recordPointerHistory && this.game.time.time >= this._nextDrop) + if (input.recordPointerHistory && this.game.time.time >= this._nextDrop) { - this._nextDrop = this.game.time.time + this.game.input.recordRate; + this._nextDrop = this.game.time.time + input.recordRate; this._history.push({ x: this.position.x, y: this.position.y }); - if (this._history.length > this.game.input.recordLimit) + if (this._history.length > input.recordLimit) { this._history.shift(); } @@ -29035,7 +24703,7 @@ Phaser.Pointer.prototype = { var currentNode = this.game.input.interactiveItems.first; - while(currentNode) + while (currentNode) { if (!currentNode.checked && currentNode.validForInput(highestInputPriorityID, highestRenderOrderID, true)) @@ -29118,6 +24786,8 @@ Phaser.Pointer.prototype = { */ stop: function (event) { + var input = this.game.input; + if (this._stateReset && this.withinGame) { event.preventDefault(); @@ -29126,25 +24796,25 @@ Phaser.Pointer.prototype = { this.timeUp = this.game.time.time; - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.onUp.dispatch(this, event); + input.onUp.dispatch(this, event); // Was it a tap? - if (this.duration >= 0 && this.duration <= this.game.input.tapRate) + if (this.duration >= 0 && this.duration <= input.tapRate) { // Was it a double-tap? - if (this.timeUp - this.previousTapTime < this.game.input.doubleTapRate) + if (this.timeUp - this.previousTapTime < input.doubleTapRate) { // Yes, let's dispatch the signal then with the 2nd parameter set to true - this.game.input.onTap.dispatch(this, true); + input.onTap.dispatch(this, true); } else { // Wasn't a double-tap, so dispatch a single tap signal - this.game.input.onTap.dispatch(this, false); + input.onTap.dispatch(this, false); } this.previousTapTime = this.timeUp; @@ -29175,10 +24845,10 @@ Phaser.Pointer.prototype = { if (this.isMouse === false) { - this.game.input.currentPointers--; + input.currentPointers--; } - this.game.input.interactiveItems.callAll('_releasedHandler', this); + input.interactiveItems.callAll('_releasedHandler', this); if (this._clickTrampolines) { @@ -29398,6 +25068,35 @@ Object.defineProperty(Phaser.Pointer.prototype, "worldY", { }); +/** +* Enumeration categorizing operational modes of pointers. +* +* PointerType values represent valid bitmasks. +* For example, a value representing both Mouse and Touch devices +* can be expressed as `PointerMode.CURSOR | PointerMode.CONTACT`. +* +* Values may be added for future mode categorizations. +* @class Phaser.PointerMode +*/ +Phaser.PointerMode = { + + /** + * A 'CURSOR' is a pointer with a *passive cursor* such as a mouse, touchpad, watcom stylus, or even TV-control arrow-pad. + * + * It has the property that a cursor is passively moved without activating the input. + * This currently corresponds with {@link Phaser.Pointer#isMouse} property. + * @constant + */ + CURSOR: 1 << 0, + + /** + * A 'CONTACT' pointer has an *active cursor* that only tracks movement when actived; notably this is a touch-style input. + * @constant + */ + CONTACT: 1 << 1 + +}; + /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -29428,7 +25127,7 @@ Phaser.Touch = function (game) { this.enabled = true; /** - * An array of callbacks that will be fired every time a native touch start event is received from the browser. + * An array of callbacks that will be fired every time a native touch start or touch end event is received from the browser. * This is used internally to handle audio and video unlocking on mobile devices. * To add a callback to this array please use `Touch.addTouchLockCallback`. * @property {array} touchLockCallbacks @@ -29598,7 +25297,7 @@ Phaser.Touch.prototype = { }, /** - * Adds a callback that is fired when a browser touchstart event is received. + * Adds a callback that is fired when a browser touchstart or touchend event is received. * * This is used internally to handle audio and video unlocking on mobile devices. * @@ -29609,10 +25308,13 @@ Phaser.Touch.prototype = { * @method Phaser.Touch#addTouchLockCallback * @param {function} callback - The callback that will be called when a touchstart event is received. * @param {object} context - The context in which the callback will be called. + * @param {boolean} [onEnd=false] - Will the callback fire on a touchstart (default) or touchend event? */ - addTouchLockCallback: function (callback, context) { + addTouchLockCallback: function (callback, context, onEnd) { - this.touchLockCallbacks.push({ callback: callback, context: context }); + if (onEnd === undefined) { onEnd = false; } + + this.touchLockCallbacks.push({ callback: callback, context: context, onEnd: onEnd }); }, @@ -29652,7 +25354,9 @@ Phaser.Touch.prototype = { while (i--) { - if (this.touchLockCallbacks[i].callback.call(this.touchLockCallbacks[i].context, this, event)) + var cb = this.touchLockCallbacks[i]; + + if (!cb.onEnd && cb.callback.call(cb.context, this, event)) { this.touchLockCallbacks.splice(i, 1); } @@ -29801,6 +25505,18 @@ Phaser.Touch.prototype = { */ onTouchEnd: function (event) { + var i = this.touchLockCallbacks.length; + + while (i--) + { + var cb = this.touchLockCallbacks[i]; + + if (cb.onEnd && cb.callback.call(cb.context, this, event)) + { + this.touchLockCallbacks.splice(i, 1); + } + } + this.event = event; if (this.touchEndCallback) @@ -30285,7 +26001,7 @@ Phaser.InputHandler.prototype = { if (includePixelPerfect === undefined) { includePixelPerfect = true; } - if (this.sprite.scale.x === 0 || this.sprite.scale.y === 0 || this.priorityID < this.game.input.minPriorityID) + if (!this.enabled || this.sprite.scale.x === 0 || this.sprite.scale.y === 0 || this.priorityID < this.game.input.minPriorityID) { return false; } @@ -30322,14 +26038,14 @@ Phaser.InputHandler.prototype = { * This value is only set when the pointer is over this Sprite. * * @method Phaser.InputHandler#pointerX - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {number} The x coordinate of the Input pointer. */ - pointerX: function (pointer) { + pointerX: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].x; + return this._pointerData[pointerId].x; }, @@ -30338,44 +26054,46 @@ Phaser.InputHandler.prototype = { * This value is only set when the pointer is over this Sprite. * * @method Phaser.InputHandler#pointerY - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {number} The y coordinate of the Input pointer. */ - pointerY: function (pointer) { + pointerY: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].y; + return this._pointerData[pointerId].y; }, /** - * If the Pointer is down this returns true. Please note that it only checks if the Pointer is down, not if it's down over any specific Sprite. + * If the Pointer is down this returns true. + * This *only* checks if the Pointer is down, not if it's down over any specific Sprite. * * @method Phaser.InputHandler#pointerDown - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {boolean} - True if the given pointer is down, otherwise false. */ - pointerDown: function (pointer) { + pointerDown: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isDown; + return this._pointerData[pointerId].isDown; }, /** - * If the Pointer is up this returns true. Please note that it only checks if the Pointer is up, not if it's up over any specific Sprite. + * If the Pointer is up this returns true. + * This *only* checks if the Pointer is up, not if it's up over any specific Sprite. * * @method Phaser.InputHandler#pointerUp - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {boolean} - True if the given pointer is up, otherwise false. */ - pointerUp: function (pointer) { + pointerUp: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isUp; + return this._pointerData[pointerId].isUp; }, @@ -30383,28 +26101,29 @@ Phaser.InputHandler.prototype = { * A timestamp representing when the Pointer first touched the touchscreen. * * @method Phaser.InputHandler#pointerTimeDown - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=(check all)] * @return {number} */ - pointerTimeDown: function (pointer) { + pointerTimeDown: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeDown; + return this._pointerData[pointerId].timeDown; }, /** * A timestamp representing when the Pointer left the touchscreen. + * * @method Phaser.InputHandler#pointerTimeUp - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeUp: function (pointer) { + pointerTimeUp: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeUp; + return this._pointerData[pointerId].timeUp; }, @@ -30412,102 +26131,106 @@ Phaser.InputHandler.prototype = { * Is the Pointer over this Sprite? * * @method Phaser.InputHandler#pointerOver - * @param {number} [index] - The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. + * @param {integer} [pointerId=(check all)] The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. * @return {boolean} - True if the given pointer (if a index was given, or any pointer if not) is over this object. */ - pointerOver: function (index) { + pointerOver: function (pointerId) { - if (this.enabled) + if (!this.enabled) { - if (index === undefined) - { - for (var i = 0; i < 10; i++) - { - if (this._pointerData[i].isOver) - { - return true; - } - } - } - else - { - return this._pointerData[index].isOver; - } + return false; } - return false; + if (pointerId === undefined) + { + for (var i = 0; i < 10; i++) + { + if (this._pointerData[i].isOver) + { + return true; + } + } + } + else + { + return this._pointerData[pointerId].isOver; + } }, /** * Is the Pointer outside of this Sprite? + * * @method Phaser.InputHandler#pointerOut - * @param {number} [index] - The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. + * @param {integer} [pointerId=(check all)] The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. * @return {boolean} True if the given pointer (if a index was given, or any pointer if not) is out of this object. */ - pointerOut: function (index) { + pointerOut: function (pointerId) { - if (this.enabled) + if (!this.enabled) { - if (index === undefined) - { - for (var i = 0; i < 10; i++) - { - if (this._pointerData[i].isOut) - { - return true; - } - } - } - else - { - return this._pointerData[index].isOut; - } + return false; } - return false; + if (pointerId === undefined) + { + for (var i = 0; i < 10; i++) + { + if (this._pointerData[i].isOut) + { + return true; + } + } + } + else + { + return this._pointerData[pointerId].isOut; + } }, /** * A timestamp representing when the Pointer first touched the touchscreen. + * * @method Phaser.InputHandler#pointerTimeOver - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeOver: function (pointer) { + pointerTimeOver: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeOver; + return this._pointerData[pointerId].timeOver; }, /** * A timestamp representing when the Pointer left the touchscreen. + * * @method Phaser.InputHandler#pointerTimeOut - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeOut: function (pointer) { + pointerTimeOut: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeOut; + return this._pointerData[pointerId].timeOut; }, /** * Is this sprite being dragged by the mouse or not? + * * @method Phaser.InputHandler#pointerDragged - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {boolean} True if the pointer is dragging an object, otherwise false. */ - pointerDragged: function (pointer) { + pointerDragged: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isDragged; + return this._pointerData[pointerId].isDragged; }, @@ -30590,6 +26313,7 @@ Phaser.InputHandler.prototype = { /** * Runs a pixel perfect check against the given x/y coordinates of the Sprite this InputHandler is bound to. * It compares the alpha value of the pixel and if >= InputHandler.pixelPerfectAlpha it returns true. + * * @method Phaser.InputHandler#checkPixel * @param {number} x - The x coordinate to check. * @param {number} y - The y coordinate to check. @@ -30964,81 +26688,86 @@ Phaser.InputHandler.prototype = { /** * Returns true if the pointer has entered the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justOver - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just over. * @return {boolean} */ - justOver: function (pointer, delay) { + justOver: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isOver && this.overDuration(pointer) < delay); + return (this._pointerData[pointerId].isOver && this.overDuration(pointerId) < delay); }, /** * Returns true if the pointer has left the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justOut - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just out. * @return {boolean} */ - justOut: function (pointer, delay) { + justOut: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isOut && (this.game.time.time - this._pointerData[pointer].timeOut < delay)); + return (this._pointerData[pointerId].isOut && (this.game.time.time - this._pointerData[pointerId].timeOut < delay)); }, /** * Returns true if the pointer has touched or clicked on the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justPressed - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just over. * @return {boolean} */ - justPressed: function (pointer, delay) { + justPressed: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isDown && this.downDuration(pointer) < delay); + return (this._pointerData[pointerId].isDown && this.downDuration(pointerId) < delay); }, /** * Returns true if the pointer was touching this Sprite, but has been released within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justReleased - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just out. * @return {boolean} */ - justReleased: function (pointer, delay) { + justReleased: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isUp && (this.game.time.time - this._pointerData[pointer].timeUp < delay)); + return (this._pointerData[pointerId].isUp && (this.game.time.time - this._pointerData[pointerId].timeUp < delay)); }, /** * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. + * * @method Phaser.InputHandler#overDuration - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} The number of milliseconds the pointer has been over the Sprite, or -1 if not over. */ - overDuration: function (pointer) { + overDuration: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - if (this._pointerData[pointer].isOver) + if (this._pointerData[pointerId].isOver) { - return this.game.time.time - this._pointerData[pointer].timeOver; + return this.game.time.time - this._pointerData[pointerId].timeOver; } return -1; @@ -31047,17 +26776,18 @@ Phaser.InputHandler.prototype = { /** * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. + * * @method Phaser.InputHandler#downDuration - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} The number of milliseconds the pointer has been pressed down on the Sprite, or -1 if not over. */ - downDuration: function (pointer) { + downDuration: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - if (this._pointerData[pointer].isDown) + if (this._pointerData[pointerId].isDown) { - return this.game.time.time - this._pointerData[pointer].timeDown; + return this.game.time.time - this._pointerData[pointerId].timeDown; } return -1; @@ -31113,7 +26843,9 @@ Phaser.InputHandler.prototype = { }, /** - * Stops this sprite from being able to be dragged. If it is currently the target of an active drag it will be stopped immediately. Also disables any set callbacks. + * Stops this sprite from being able to be dragged. + * If it is currently the target of an active drag it will be stopped immediately; also disables any set callbacks. + * * @method Phaser.InputHandler#disableDrag */ disableDrag: function () { @@ -31134,6 +26866,7 @@ Phaser.InputHandler.prototype = { /** * Called by Pointer when drag starts on this Sprite. Should not usually be called directly. + * * @method Phaser.InputHandler#startDrag * @param {Phaser.Pointer} pointer */ @@ -31186,6 +26919,7 @@ Phaser.InputHandler.prototype = { /** * Warning: EXPERIMENTAL + * * @method Phaser.InputHandler#globalToLocalX * @param {number} x */ @@ -31203,6 +26937,7 @@ Phaser.InputHandler.prototype = { /** * Warning: EXPERIMENTAL + * * @method Phaser.InputHandler#globalToLocalY * @param {number} y */ @@ -31220,6 +26955,7 @@ Phaser.InputHandler.prototype = { /** * Called by Pointer when drag is stopped on this Sprite. Should not usually be called directly. + * * @method Phaser.InputHandler#stopDrag * @param {Phaser.Pointer} pointer */ @@ -31255,6 +26991,7 @@ Phaser.InputHandler.prototype = { /** * Restricts this sprite to drag movement only on the given axis. Note: If both are set to false the sprite will never move! + * * @method Phaser.InputHandler#setDragLock * @param {boolean} [allowHorizontal=true] - To enable the sprite to be dragged horizontally set to true, otherwise false. * @param {boolean} [allowVertical=true] - To enable the sprite to be dragged vertically set to true, otherwise false. @@ -31272,6 +27009,7 @@ Phaser.InputHandler.prototype = { /** * Make this Sprite snap to the given grid either during drag or when it's released. * For example 16x16 as the snapX and snapY would make the sprite snap to every 16 pixels. + * * @method Phaser.InputHandler#enableSnap * @param {number} snapX - The width of the grid cell to snap to. * @param {number} snapY - The height of the grid cell to snap to. @@ -31298,6 +27036,7 @@ Phaser.InputHandler.prototype = { /** * Stops the sprite from snapping to a grid during drag or release. + * * @method Phaser.InputHandler#disableSnap */ disableSnap: function () { @@ -31310,6 +27049,7 @@ Phaser.InputHandler.prototype = { /** * Bounds Rect check for the sprite drag + * * @method Phaser.InputHandler#checkBoundsRect */ checkBoundsRect: function () { @@ -31359,6 +27099,7 @@ Phaser.InputHandler.prototype = { /** * Parent Sprite Bounds check for the sprite drag. + * * @method Phaser.InputHandler#checkBoundsSprite */ checkBoundsSprite: function () { @@ -32657,7 +28398,7 @@ Phaser.SinglePad.prototype.constructor = Phaser.SinglePad; * @class Phaser.Key * @constructor * @param {Phaser.Game} game - Current game instance. -* @param {number} keycode - The key code this Key is responsible for. +* @param {integer} keycode - The key code this Key is responsible for. See {@link Phaser.KeyCode}. */ Phaser.Key = function (game, keycode) { @@ -33019,8 +28760,8 @@ Phaser.Key.prototype.constructor = Phaser.Key; /** * The Keyboard class monitors keyboard input and dispatches keyboard events. * -* _Be aware_ that many keyboards are unable to process certain combinations of keys due to hardware -* limitations known as ghosting. Full details here: http://www.html5gamedevs.com/topic/4876-impossible-to-use-more-than-2-keyboard-input-buttons-at-the-same-time/ +* _Note_: many keyboards are unable to process certain combinations of keys due to hardware limitations known as ghosting. +* See http://www.html5gamedevs.com/topic/4876-impossible-to-use-more-than-2-keyboard-input-buttons-at-the-same-time/ for more details. * * @class Phaser.Keyboard * @constructor @@ -33132,17 +28873,17 @@ Phaser.Keyboard.prototype = { this.callbackContext = context; - if (typeof onDown !== 'undefined') + if (onDown !== undefined && onDown !== null) { this.onDownCallback = onDown; } - if (typeof onUp !== 'undefined') + if (onUp !== undefined && onUp !== null) { this.onUpCallback = onUp; } - if (typeof onPress !== 'undefined') + if (onPress !== undefined && onPress !== null) { this.onPressCallback = onPress; } @@ -33154,7 +28895,7 @@ Phaser.Keyboard.prototype = { * The Key object can then be polled, have events attached to it, etc. * * @method Phaser.Keyboard#addKey - * @param {number} keycode - The keycode of the key, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key. * @return {Phaser.Key} The Key object which you can store locally and reference directly. */ addKey: function (keycode) { @@ -33173,13 +28914,15 @@ Phaser.Keyboard.prototype = { /** * A practical way to create an object containing user selected hotkeys. * - * For example: `addKeys( { 'up': Phaser.Keyboard.W, 'down': Phaser.Keyboard.S, 'left': Phaser.Keyboard.A, 'right': Phaser.Keyboard.D } );` + * For example, * - * Would return an object containing the properties `up`, `down`, `left` and `right` that you could poll just like a Phaser.Key object. + * addKeys( { 'up': Phaser.KeyCode.W, 'down': Phaser.KeyCode.S, 'left': Phaser.KeyCode.A, 'right': Phaser.KeyCode.D } ); + * + * would return an object containing properties (`up`, `down`, `left` and `right`) referring to {@link Phaser.Key} object. * * @method Phaser.Keyboard#addKeys - * @param {object} keys - A key mapping object, i.e. `{ 'up': Phaser.Keyboard.W, 'down': Phaser.Keyboard.S }` or `{ 'up': 52, 'down': 53 }`. - * @return {object} An object containing user selected properties + * @param {object} keys - A key mapping object, i.e. `{ 'up': Phaser.KeyCode.W, 'down': Phaser.KeyCode.S }` or `{ 'up': 52, 'down': 53 }`. + * @return {object} An object containing the properties mapped to {@link Phaser.Key} values. */ addKeys: function (keys) { @@ -33198,7 +28941,7 @@ Phaser.Keyboard.prototype = { * Removes a Key object from the Keyboard manager. * * @method Phaser.Keyboard#removeKey - * @param {number} keycode - The keycode of the key to remove, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to remove. */ removeKey: function (keycode) { @@ -33215,11 +28958,11 @@ Phaser.Keyboard.prototype = { * Creates and returns an object containing 4 hotkeys for Up, Down, Left and Right. * * @method Phaser.Keyboard#createCursorKeys - * @return {object} An object containing properties: up, down, left and right. Which can be polled like any other Phaser.Key object. + * @return {object} An object containing properties: `up`, `down`, `left` and `right` of {@link Phaser.Key} objects. */ createCursorKeys: function () { - return this.addKeys({ 'up': Phaser.Keyboard.UP, 'down': Phaser.Keyboard.DOWN, 'left': Phaser.Keyboard.LEFT, 'right': Phaser.Keyboard.RIGHT }); + return this.addKeys({ 'up': Phaser.KeyCode.UP, 'down': Phaser.KeyCode.DOWN, 'left': Phaser.KeyCode.LEFT, 'right': Phaser.KeyCode.RIGHT }); }, @@ -33228,6 +28971,7 @@ Phaser.Keyboard.prototype = { * This is called automatically by Phaser.Input and should not normally be invoked directly. * * @method Phaser.Keyboard#start + * @protected */ start: function () { @@ -33299,11 +29043,14 @@ Phaser.Keyboard.prototype = { /** * By default when a key is pressed Phaser will not stop the event from propagating up to the browser. * There are some keys this can be annoying for, like the arrow keys or space bar, which make the browser window scroll. - * You can use addKeyCapture to consume the keyboard event for specific keys so it doesn't bubble up to the the browser. + * + * The `addKeyCapture` method enables consuming keyboard event for specific keys so it doesn't bubble up to the the browser + * and cause the default browser behavior. + * * Pass in either a single keycode or an array/hash of keycodes. * * @method Phaser.Keyboard#addKeyCapture - * @param {number|array|object} keycode - Either a single numeric keycode or an array/hash of keycodes: [65, 67, 68]. + * @param {integer|integer[]|object} keycode - Either a single {@link Phaser.KeyCode keycode} or an array/hash of keycodes such as `[65, 67, 68]`. */ addKeyCapture: function (keycode) { @@ -33324,7 +29071,7 @@ Phaser.Keyboard.prototype = { * Removes an existing key capture. * * @method Phaser.Keyboard#removeKeyCapture - * @param {number} keycode + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} to remove capturing of. */ removeKeyCapture: function (keycode) { @@ -33487,7 +29234,7 @@ Phaser.Keyboard.prototype = { * or was pressed down longer ago than then given duration. * * @method Phaser.Keyboard#downDuration - * @param {number} keycode - The keycode of the key to check, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to check: i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. * @param {number} [duration=50] - The duration within which the key is considered as being just pressed. Given in ms. * @return {boolean} True if the key was pressed down within the given duration, false if not or null if the Key wasn't found. */ @@ -33509,7 +29256,7 @@ Phaser.Keyboard.prototype = { * or was pressed down longer ago than then given duration. * * @method Phaser.Keyboard#upDuration - * @param {number} keycode - The keycode of the key to check, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {Phaser.KeyCode|integer} keycode - The keycode of the key to check, i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. * @param {number} [duration=50] - The duration within which the key is considered as being just released. Given in ms. * @return {boolean} True if the key was released within the given duration, false if not or null if the Key wasn't found. */ @@ -33530,7 +29277,7 @@ Phaser.Keyboard.prototype = { * Returns true of the key is currently pressed down. Note that it can only detect key presses on the web browser. * * @method Phaser.Keyboard#isDown - * @param {number} keycode - The keycode of the key to check, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to check: i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. * @return {boolean} True if the key is currently down, false if not or null if the Key wasn't found. */ isDown: function (keycode) { @@ -33589,108 +29336,234 @@ Object.defineProperty(Phaser.Keyboard.prototype, "lastKey", { Phaser.Keyboard.prototype.constructor = Phaser.Keyboard; -Phaser.Keyboard.A = "A".charCodeAt(0); -Phaser.Keyboard.B = "B".charCodeAt(0); -Phaser.Keyboard.C = "C".charCodeAt(0); -Phaser.Keyboard.D = "D".charCodeAt(0); -Phaser.Keyboard.E = "E".charCodeAt(0); -Phaser.Keyboard.F = "F".charCodeAt(0); -Phaser.Keyboard.G = "G".charCodeAt(0); -Phaser.Keyboard.H = "H".charCodeAt(0); -Phaser.Keyboard.I = "I".charCodeAt(0); -Phaser.Keyboard.J = "J".charCodeAt(0); -Phaser.Keyboard.K = "K".charCodeAt(0); -Phaser.Keyboard.L = "L".charCodeAt(0); -Phaser.Keyboard.M = "M".charCodeAt(0); -Phaser.Keyboard.N = "N".charCodeAt(0); -Phaser.Keyboard.O = "O".charCodeAt(0); -Phaser.Keyboard.P = "P".charCodeAt(0); -Phaser.Keyboard.Q = "Q".charCodeAt(0); -Phaser.Keyboard.R = "R".charCodeAt(0); -Phaser.Keyboard.S = "S".charCodeAt(0); -Phaser.Keyboard.T = "T".charCodeAt(0); -Phaser.Keyboard.U = "U".charCodeAt(0); -Phaser.Keyboard.V = "V".charCodeAt(0); -Phaser.Keyboard.W = "W".charCodeAt(0); -Phaser.Keyboard.X = "X".charCodeAt(0); -Phaser.Keyboard.Y = "Y".charCodeAt(0); -Phaser.Keyboard.Z = "Z".charCodeAt(0); -Phaser.Keyboard.ZERO = "0".charCodeAt(0); -Phaser.Keyboard.ONE = "1".charCodeAt(0); -Phaser.Keyboard.TWO = "2".charCodeAt(0); -Phaser.Keyboard.THREE = "3".charCodeAt(0); -Phaser.Keyboard.FOUR = "4".charCodeAt(0); -Phaser.Keyboard.FIVE = "5".charCodeAt(0); -Phaser.Keyboard.SIX = "6".charCodeAt(0); -Phaser.Keyboard.SEVEN = "7".charCodeAt(0); -Phaser.Keyboard.EIGHT = "8".charCodeAt(0); -Phaser.Keyboard.NINE = "9".charCodeAt(0); -Phaser.Keyboard.NUMPAD_0 = 96; -Phaser.Keyboard.NUMPAD_1 = 97; -Phaser.Keyboard.NUMPAD_2 = 98; -Phaser.Keyboard.NUMPAD_3 = 99; -Phaser.Keyboard.NUMPAD_4 = 100; -Phaser.Keyboard.NUMPAD_5 = 101; -Phaser.Keyboard.NUMPAD_6 = 102; -Phaser.Keyboard.NUMPAD_7 = 103; -Phaser.Keyboard.NUMPAD_8 = 104; -Phaser.Keyboard.NUMPAD_9 = 105; -Phaser.Keyboard.NUMPAD_MULTIPLY = 106; -Phaser.Keyboard.NUMPAD_ADD = 107; -Phaser.Keyboard.NUMPAD_ENTER = 108; -Phaser.Keyboard.NUMPAD_SUBTRACT = 109; -Phaser.Keyboard.NUMPAD_DECIMAL = 110; -Phaser.Keyboard.NUMPAD_DIVIDE = 111; -Phaser.Keyboard.F1 = 112; -Phaser.Keyboard.F2 = 113; -Phaser.Keyboard.F3 = 114; -Phaser.Keyboard.F4 = 115; -Phaser.Keyboard.F5 = 116; -Phaser.Keyboard.F6 = 117; -Phaser.Keyboard.F7 = 118; -Phaser.Keyboard.F8 = 119; -Phaser.Keyboard.F9 = 120; -Phaser.Keyboard.F10 = 121; -Phaser.Keyboard.F11 = 122; -Phaser.Keyboard.F12 = 123; -Phaser.Keyboard.F13 = 124; -Phaser.Keyboard.F14 = 125; -Phaser.Keyboard.F15 = 126; -Phaser.Keyboard.COLON = 186; -Phaser.Keyboard.EQUALS = 187; -Phaser.Keyboard.COMMA = 188; -Phaser.Keyboard.UNDERSCORE = 189; -Phaser.Keyboard.PERIOD = 190; -Phaser.Keyboard.QUESTION_MARK = 191; -Phaser.Keyboard.TILDE = 192; -Phaser.Keyboard.OPEN_BRACKET = 219; -Phaser.Keyboard.BACKWARD_SLASH = 220; -Phaser.Keyboard.CLOSED_BRACKET = 221; -Phaser.Keyboard.QUOTES = 222; -Phaser.Keyboard.BACKSPACE = 8; -Phaser.Keyboard.TAB = 9; -Phaser.Keyboard.CLEAR = 12; -Phaser.Keyboard.ENTER = 13; -Phaser.Keyboard.SHIFT = 16; -Phaser.Keyboard.CONTROL = 17; -Phaser.Keyboard.ALT = 18; -Phaser.Keyboard.CAPS_LOCK = 20; -Phaser.Keyboard.ESC = 27; -Phaser.Keyboard.SPACEBAR = 32; -Phaser.Keyboard.PAGE_UP = 33; -Phaser.Keyboard.PAGE_DOWN = 34; -Phaser.Keyboard.END = 35; -Phaser.Keyboard.HOME = 36; -Phaser.Keyboard.LEFT = 37; -Phaser.Keyboard.UP = 38; -Phaser.Keyboard.RIGHT = 39; -Phaser.Keyboard.DOWN = 40; -Phaser.Keyboard.PLUS = 43; -Phaser.Keyboard.MINUS = 44; -Phaser.Keyboard.INSERT = 45; -Phaser.Keyboard.DELETE = 46; -Phaser.Keyboard.HELP = 47; -Phaser.Keyboard.NUM_LOCK = 144; +/** +* A key code represents a physical key on a keyboard. +* +* The KeyCode class contains commonly supported keyboard key codes which can be used +* as keycode`-parameters in several {@link Phaser.Keyboard} and {@link Phaser.Key} methods. +* +* _Note_: These values should only be used indirectly, eg. as `Phaser.KeyCode.KEY`. +* Future versions may replace the actual values, such that they remain compatible with `keycode`-parameters. +* The current implementation maps to the {@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode KeyboardEvent.keyCode} property. +* +* _Note_: Use `Phaser.KeyCode.KEY` instead of `Phaser.Keyboard.KEY` to refer to a key code; +* the latter approach is supported for compatibility. +* +* @namespace +*/ +Phaser.KeyCode = { + /** @static */ + A: "A".charCodeAt(0), + /** @static */ + B: "B".charCodeAt(0), + /** @static */ + C: "C".charCodeAt(0), + /** @static */ + D: "D".charCodeAt(0), + /** @static */ + E: "E".charCodeAt(0), + /** @static */ + F: "F".charCodeAt(0), + /** @static */ + G: "G".charCodeAt(0), + /** @static */ + H: "H".charCodeAt(0), + /** @static */ + I: "I".charCodeAt(0), + /** @static */ + J: "J".charCodeAt(0), + /** @static */ + K: "K".charCodeAt(0), + /** @static */ + L: "L".charCodeAt(0), + /** @static */ + M: "M".charCodeAt(0), + /** @static */ + N: "N".charCodeAt(0), + /** @static */ + O: "O".charCodeAt(0), + /** @static */ + P: "P".charCodeAt(0), + /** @static */ + Q: "Q".charCodeAt(0), + /** @static */ + R: "R".charCodeAt(0), + /** @static */ + S: "S".charCodeAt(0), + /** @static */ + T: "T".charCodeAt(0), + /** @static */ + U: "U".charCodeAt(0), + /** @static */ + V: "V".charCodeAt(0), + /** @static */ + W: "W".charCodeAt(0), + /** @static */ + X: "X".charCodeAt(0), + /** @static */ + Y: "Y".charCodeAt(0), + /** @static */ + Z: "Z".charCodeAt(0), + /** @static */ + ZERO: "0".charCodeAt(0), + /** @static */ + ONE: "1".charCodeAt(0), + /** @static */ + TWO: "2".charCodeAt(0), + /** @static */ + THREE: "3".charCodeAt(0), + /** @static */ + FOUR: "4".charCodeAt(0), + /** @static */ + FIVE: "5".charCodeAt(0), + /** @static */ + SIX: "6".charCodeAt(0), + /** @static */ + SEVEN: "7".charCodeAt(0), + /** @static */ + EIGHT: "8".charCodeAt(0), + /** @static */ + NINE: "9".charCodeAt(0), + /** @static */ + NUMPAD_0: 96, + /** @static */ + NUMPAD_1: 97, + /** @static */ + NUMPAD_2: 98, + /** @static */ + NUMPAD_3: 99, + /** @static */ + NUMPAD_4: 100, + /** @static */ + NUMPAD_5: 101, + /** @static */ + NUMPAD_6: 102, + /** @static */ + NUMPAD_7: 103, + /** @static */ + NUMPAD_8: 104, + /** @static */ + NUMPAD_9: 105, + /** @static */ + NUMPAD_MULTIPLY: 106, + /** @static */ + NUMPAD_ADD: 107, + /** @static */ + NUMPAD_ENTER: 108, + /** @static */ + NUMPAD_SUBTRACT: 109, + /** @static */ + NUMPAD_DECIMAL: 110, + /** @static */ + NUMPAD_DIVIDE: 111, + /** @static */ + F1: 112, + /** @static */ + F2: 113, + /** @static */ + F3: 114, + /** @static */ + F4: 115, + /** @static */ + F5: 116, + /** @static */ + F6: 117, + /** @static */ + F7: 118, + /** @static */ + F8: 119, + /** @static */ + F9: 120, + /** @static */ + F10: 121, + /** @static */ + F11: 122, + /** @static */ + F12: 123, + /** @static */ + F13: 124, + /** @static */ + F14: 125, + /** @static */ + F15: 126, + /** @static */ + COLON: 186, + /** @static */ + EQUALS: 187, + /** @static */ + COMMA: 188, + /** @static */ + UNDERSCORE: 189, + /** @static */ + PERIOD: 190, + /** @static */ + QUESTION_MARK: 191, + /** @static */ + TILDE: 192, + /** @static */ + OPEN_BRACKET: 219, + /** @static */ + BACKWARD_SLASH: 220, + /** @static */ + CLOSED_BRACKET: 221, + /** @static */ + QUOTES: 222, + /** @static */ + BACKSPACE: 8, + /** @static */ + TAB: 9, + /** @static */ + CLEAR: 12, + /** @static */ + ENTER: 13, + /** @static */ + SHIFT: 16, + /** @static */ + CONTROL: 17, + /** @static */ + ALT: 18, + /** @static */ + CAPS_LOCK: 20, + /** @static */ + ESC: 27, + /** @static */ + SPACEBAR: 32, + /** @static */ + PAGE_UP: 33, + /** @static */ + PAGE_DOWN: 34, + /** @static */ + END: 35, + /** @static */ + HOME: 36, + /** @static */ + LEFT: 37, + /** @static */ + UP: 38, + /** @static */ + RIGHT: 39, + /** @static */ + DOWN: 40, + /** @static */ + PLUS: 43, + /** @static */ + MINUS: 44, + /** @static */ + INSERT: 45, + /** @static */ + DELETE: 46, + /** @static */ + HELP: 47, + /** @static */ + NUM_LOCK: 144 +}; + +// Duplicate Phaser.KeyCode values in Phaser.Keyboard for compatibility +for (var key in Phaser.KeyCode) { + if (Phaser.KeyCode.hasOwnProperty(key) && !key.match(/[a-z]/)) { + Phaser.Keyboard[key] = Phaser.KeyCode[key]; + } +} /** * @author Richard Davey @@ -34225,7 +30098,9 @@ Phaser.Component.Core.prototype = { * The z depth of this Game Object within its parent Group. * No two objects in a Group can have the same z value. * This value is adjusted automatically whenever the Group hierarchy changes. + * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. * @property {number} z + * @readOnly */ z: 0, @@ -34726,9 +30601,13 @@ Phaser.Component.Destroy.prototype = { // In case Pixi is still going to try and render it even though destroyed this.renderable = false; + if (this.transformCallback) + { + this.transformCallback = null; + this.transformCallbackContext = null; + } + // Pixi level DisplayObject destroy - this.transformCallback = null; - this.transformCallbackContext = null; this.hitArea = null; this.parent = null; this.stage = null; @@ -34738,8 +30617,6 @@ Phaser.Component.Destroy.prototype = { this._currentBounds = null; this._mask = null; - - this._destroyCachedSprite(); this.destroyPhase = false; @@ -35393,10 +31270,10 @@ Phaser.Component.LifeSpan.prototype = { /** * A useful flag to control if the Game Object is alive or dead. - * + * * This is set automatically by the Health components `damage` method should the object run out of health. * Or you can toggle it via your game code. - * + * * This property is mostly just provided to be used by your game - it doesn't effect rendering or logic updates. * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. * @property {boolean} alive @@ -35406,12 +31283,12 @@ Phaser.Component.LifeSpan.prototype = { /** * The lifespan allows you to give a Game Object a lifespan in milliseconds. - * + * * Once the Game Object is 'born' you can set this to a positive value. - * + * * It is automatically decremented by the millisecond equivalent of `game.time.physicsElapsed` each frame. * When it reaches zero it will call the `kill` method. - * + * * Very handy for particles, bullets, collectibles, or any other short-lived entity. * * @property {number} lifespan @@ -35421,9 +31298,9 @@ Phaser.Component.LifeSpan.prototype = { /** * Brings a 'dead' Game Object back to life, optionally resetting its health value in the process. - * + * * A resurrected Game Object has its `alive`, `exists` and `visible` properties all set to true. - * + * * It will dispatch the `onRevived` event. Listen to `events.onRevived` for the signal. * * @method @@ -35437,10 +31314,10 @@ Phaser.Component.LifeSpan.prototype = { this.alive = true; this.exists = true; this.visible = true; - - if (typeof this.health === 'number') + + if (typeof this.heal === 'function') { - this.health = health; + this.heal(health); } if (this.events) @@ -35454,12 +31331,12 @@ Phaser.Component.LifeSpan.prototype = { /** * Kills a Game Object. A killed Game Object has its `alive`, `exists` and `visible` properties all set to false. - * + * * It will dispatch the `onKilled` event. You can listen to `events.onKilled` for the signal. - * - * Note that killing a Game Object is a way for you to quickly recycle it in an object pool, + * + * Note that killing a Game Object is a way for you to quickly recycle it in an object pool, * it doesn't destroy the object or free it up from memory. - * + * * If you don't need this Game Object any more you should call `destroy` instead. * * @method @@ -36003,7 +31880,7 @@ Phaser.Component.ScaleMinMax.prototype = { * The callback that will apply any scale limiting to the worldTransform. * @property {function} transformCallback */ - transformCallback: this.checkTransform, + transformCallback: null, /** * The context under which `transformCallback` is called. @@ -36139,6 +32016,16 @@ Phaser.Component.ScaleMinMax.prototype = { } } + if (this.scaleMin === null) + { + this.transformCallback = null; + } + else + { + this.transformCallback = this.checkTransform; + this.transformCallbackContext = this; + } + } }; @@ -36362,7 +32249,7 @@ Phaser.GameObjectFactory.prototype = { * are automatically given a physics body. * * @method Phaser.GameObjectFactory#physicsGroup - * @param {number} [physicsBodyType=Phaser.Physics.ARCADE] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, etc. + * @param {number} [physicsBodyType=Phaser.Physics.ARCADE] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2JS, Phaser.Physics.NINJA, etc. * @param {any} [parent] - The parent Group or DisplayObjectContainer that will hold this group, if any. If set to null the Group won't be added to the display list. If undefined it will be added to World by default. * @param {string} [name='group'] - A name for this Group. Not used internally but useful for debugging. * @param {boolean} [addToStage=false] - If set to true this Group will be added directly to the Game.Stage instead of Game.World. @@ -36729,7 +32616,7 @@ Phaser.GameObjectFactory.prototype = { */ filter: function (filter) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var filter = new Phaser.Filter[filter](this.game); @@ -37175,7 +33062,7 @@ Phaser.GameObjectCreator.prototype = { */ filter: function (filter) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var filter = new Phaser.Filter[filter](this.game); @@ -37405,450 +33292,6 @@ Phaser.Image.prototype.preUpdate = function() { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* A TileSprite is a Sprite that has a repeating texture. The texture can be scrolled and scaled independently of the TileSprite itself. -* Textures will automatically wrap and are designed so that you can create game backdrops using seamless textures as a source. -* -* TileSprites have no input handler or physics bodies by default, both need enabling in the same way as for normal Sprites. -* -* You shouldn't ever create a TileSprite any larger than your actual screen size. If you want to create a large repeating background -* that scrolls across the whole map of your game, then you create a TileSprite that fits the screen size and then use the `tilePosition` -* property to scroll the texture as the player moves. If you create a TileSprite that is thousands of pixels in size then it will -* consume huge amounts of memory and cause performance issues. Remember: use `tilePosition` to scroll your texture and `tileScale` to -* adjust the scale of the texture - don't resize the sprite itself or make it larger than it needs. -* -* An important note about texture dimensions: -* -* When running under Canvas a TileSprite can use any texture size without issue. When running under WebGL the texture should ideally be -* a power of two in size (i.e. 4, 8, 16, 32, 64, 128, 256, 512, etch pixels width by height). If the texture isn't a power of two -* it will be rendered to a blank canvas that is the correct size, which means you may have 'blank' areas appearing to the right and -* bottom of your frame. To avoid this ensure your textures are perfect powers of two. -* -* TileSprites support animations in the same way that Sprites do. You add and play animations using the AnimationManager. However -* if your game is running under WebGL please note that each frame of the animation must be a power of two in size, or it will receive -* additional padding to enforce it to be so. -* -* @class Phaser.TileSprite -* @constructor -* @extends PIXI.TilingSprite -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.Health -* @extends Phaser.Component.InCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the TileSprite at. -* @param {number} y - The y coordinate (in world space) to position the TileSprite at. -* @param {number} width - The width of the TileSprite. -* @param {number} height - The height of the TileSprite. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the TileSprite during rendering. It can be a string which is a reference to the Phaser Image Cache entry, or an instance of a RenderTexture, PIXI.Texture or BitmapData. -* @param {string|number} frame - If this TileSprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.TileSprite = function (game, x, y, width, height, key, frame) { - - x = x || 0; - y = y || 0; - width = width || 256; - height = height || 256; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.TILESPRITE; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.SPRITE; - - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - - var def = game.cache.getImage('__default', true); - - PIXI.TilingSprite.call(this, new PIXI.Texture(def.base), width, height); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.TileSprite.prototype = Object.create(PIXI.TilingSprite.prototype); -Phaser.TileSprite.prototype.constructor = Phaser.TileSprite; - -Phaser.Component.Core.install.call(Phaser.TileSprite.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Destroy', - 'FixedToCamera', - 'Health', - 'InCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'Smoothed' -]); - -Phaser.TileSprite.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.TileSprite.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.TileSprite.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.TileSprite.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.TileSprite#preUpdate -* @memberof Phaser.TileSprite -*/ -Phaser.TileSprite.prototype.preUpdate = function() { - - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Sets this TileSprite to automatically scroll in the given direction until stopped via TileSprite.stopScroll(). -* The scroll speed is specified in pixels per second. -* A negative x value will scroll to the left. A positive x value will scroll to the right. -* A negative y value will scroll up. A positive y value will scroll down. -* -* @method Phaser.TileSprite#autoScroll -* @memberof Phaser.TileSprite -* @param {number} x - Horizontal scroll speed in pixels per second. -* @param {number} y - Vertical scroll speed in pixels per second. -*/ -Phaser.TileSprite.prototype.autoScroll = function(x, y) { - - this._scroll.set(x, y); - -}; - -/** -* Stops an automatically scrolling TileSprite. -* -* @method Phaser.TileSprite#stopScroll -* @memberof Phaser.TileSprite -*/ -Phaser.TileSprite.prototype.stopScroll = function() { - - this._scroll.set(0, 0); - -}; - -/** -* Destroys the TileSprite. This removes it from its parent group, destroys the event and animation handlers if present -* and nulls its reference to game, freeing it up for garbage collection. -* -* @method Phaser.TileSprite#destroy -* @memberof Phaser.TileSprite -* @param {boolean} [destroyChildren=true] - Should every child of this object have its destroy method called? -*/ -Phaser.TileSprite.prototype.destroy = function(destroyChildren) { - - Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren); - - PIXI.TilingSprite.prototype.destroy.call(this); - -}; - -/** -* Resets the TileSprite. This places the TileSprite at the given x/y world coordinates, resets the tilePosition and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. -* If the TileSprite has a physics body that too is reset. -* -* @method Phaser.TileSprite#reset -* @memberof Phaser.TileSprite -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @return (Phaser.TileSprite) This instance. -*/ -Phaser.TileSprite.prototype.reset = function(x, y) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y); - - this.tilePosition.x = 0; - this.tilePosition.y = 0; - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd, Richard Davey -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Rope is a Sprite that has a repeating texture. The texture can be scrolled and scaled and will automatically wrap on the edges as it does so. -* Please note that Ropes, as with normal Sprites, have no input handler or physics bodies by default. Both need enabling. -* Example usage: https://github.com/codevinsky/phaser-rope-demo/blob/master/dist/demo.js -* -* @class Phaser.Rope -* @constructor -* @extends PIXI.Rope -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Crop -* @extends Phaser.Component.Delta -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.ScaleMinMax -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Rope at. -* @param {number} y - The y coordinate (in world space) to position the Rope at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Rope during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Rope is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @param {Array} points - An array of {Phaser.Point}. -*/ -Phaser.Rope = function (game, x, y, key, frame, points) { - - this.points = []; - this.points = points; - this._hasUpdateAnimation = false; - this._updateAnimationCallback = null; - x = x || 0; - y = y || 0; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.ROPE; - - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.Rope.prototype = Object.create(PIXI.Rope.prototype); -Phaser.Rope.prototype.constructor = Phaser.Rope; - -Phaser.Component.Core.install.call(Phaser.Rope.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Crop', - 'Delta', - 'Destroy', - 'FixedToCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'ScaleMinMax', - 'Smoothed' -]); - -Phaser.Rope.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.Rope.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.Rope.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.Rope.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.Rope#preUpdate -* @memberof Phaser.Rope -*/ -Phaser.Rope.prototype.preUpdate = function() { - - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Override and use this function in your own custom objects to handle any update requirements you may have. -* -* @method Phaser.Rope#update -* @memberof Phaser.Rope -*/ -Phaser.Rope.prototype.update = function() { - - if (this._hasUpdateAnimation) - { - this.updateAnimation.call(this); - } - -}; - -/** -* Resets the Rope. This places the Rope at the given x/y world coordinates, resets the tilePosition and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. -* If the Rope has a physics body that too is reset. -* -* @method Phaser.Rope#reset -* @memberof Phaser.Rope -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @return (Phaser.Rope) This instance. -*/ -Phaser.Rope.prototype.reset = function(x, y) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y); - - this.tilePosition.x = 0; - this.tilePosition.y = 0; - - return this; - -}; - -/** -* A Rope will call it's updateAnimation function on each update loop if it has one -* -* @name Phaser.Rope#updateAnimation -* @property {function} updateAnimation - Set to a function if you'd like the rope to animate during the update phase. Set to false or null to remove it. -*/ -Object.defineProperty(Phaser.Rope.prototype, "updateAnimation", { - - get: function () { - - return this._updateAnimation; - - }, - - set: function (value) { - - if (value && typeof value === 'function') - { - this._hasUpdateAnimation = true; - this._updateAnimation = value; - } - else - { - this._hasUpdateAnimation = false; - this._updateAnimation = null; - } - - } - -}); - -/** -* The segments that make up the rope body as an array of Phaser.Rectangles -* -* @name Phaser.Rope#segments -* @property {Phaser.Rectangles[]} updateAnimation - Returns an array of Phaser.Rectangles that represent the segments of the given rope -*/ -Object.defineProperty(Phaser.Rope.prototype, "segments", { - - get: function() { - - var segments = []; - var index, x1, y1, x2, y2, width, height, rect; - - for (var i = 0; i < this.points.length; i++) - { - index = i * 4; - - x1 = this.vertices[index] * this.scale.x; - y1 = this.vertices[index + 1] * this.scale.y; - x2 = this.vertices[index + 4] * this.scale.x; - y2 = this.vertices[index + 3] * this.scale.y; - - width = Phaser.Math.difference(x1, x2); - height = Phaser.Math.difference(y1, y2); - - x1 += this.world.x; - y1 += this.world.y; - rect = new Phaser.Rectangle(x1, y1, width, height); - segments.push(rect); - } - - return segments; - } - -}); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * Create a new `Button` object. A Button is a special type of Sprite that is set-up to handle Pointer events automatically. * @@ -38011,10 +33454,20 @@ Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame, /** * If true then onOver events (such as onOverSound) will only be triggered if the Pointer object causing them was the Mouse Pointer. * The frame will still be changed as applicable. + * * @property {boolean} onOverMouseOnly * @default */ - this.onOverMouseOnly = false; + this.onOverMouseOnly = true; + + /** + * Suppresse the over event if a pointer was just released and it matches the given {@link Phaser.PointerModer pointer mode bitmask}. + * + * This behavior was introduced in Phaser 2.3.1; this property is a soft-revert of the change. + * + * @property {Phaser.PointerMode?} justReleasedPreventsOver=ACTIVE_CURSOR + */ + this.justReleasedPreventsOver = Phaser.PointerMode.TOUCH; /** * When true the the texture frame will not be automatically switched on up/down/over/out events. @@ -38025,7 +33478,10 @@ Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame, /** * When the Button is touched / clicked and then released you can force it to enter a state of "out" instead of "up". - * @property {boolean} forceOut + * + * This can also accept a {@link Phaser.PointerModer pointer mode bitmask} for more refined control. + * + * @property {boolean|Phaser.PointerMode} forceOut=false * @default */ this.forceOut = false; @@ -38317,9 +33773,10 @@ Phaser.Button.prototype.setUpSound = function (sound, marker) { */ Phaser.Button.prototype.onInputOverHandler = function (sprite, pointer) { - // If the Pointer was only just released then we don't fire an over event - if (pointer.justReleased()) + if (pointer.justReleased() && + (this.justReleasedPreventsOver & pointer.pointerMode) === pointer.pointerMode) { + // If the Pointer was only just released then we don't fire an over event return; } @@ -38402,7 +33859,7 @@ Phaser.Button.prototype.onInputUpHandler = function (sprite, pointer, isOver) { return; } - if (this.forceOut) + if (this.forceOut === true || (this.forceOut & pointer.pointerMode) === pointer.pointerMode) { this.changeStateFrame(STATE_OUT); } @@ -38473,172 +33930,6 @@ Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* Create a new `Particle` object. Particles are extended Sprites that are emitted by a particle emitter such as Phaser.Particles.Arcade.Emitter. -* -* @class Phaser.Particle -* @constructor -* @extends Phaser.Sprite -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.Particle = function (game, x, y, key, frame) { - - Phaser.Sprite.call(this, game, x, y, key, frame); - - /** - * @property {boolean} autoScale - If this Particle automatically scales this is set to true by Particle.setScaleData. - * @protected - */ - this.autoScale = false; - - /** - * @property {array} scaleData - A reference to the scaleData array owned by the Emitter that emitted this Particle. - * @protected - */ - this.scaleData = null; - - /** - * @property {number} _s - Internal cache var for tracking auto scale. - * @private - */ - this._s = 0; - - /** - * @property {boolean} autoAlpha - If this Particle automatically changes alpha this is set to true by Particle.setAlphaData. - * @protected - */ - this.autoAlpha = false; - - /** - * @property {array} alphaData - A reference to the alphaData array owned by the Emitter that emitted this Particle. - * @protected - */ - this.alphaData = null; - - /** - * @property {number} _a - Internal cache var for tracking auto alpha. - * @private - */ - this._a = 0; - -}; - -Phaser.Particle.prototype = Object.create(Phaser.Sprite.prototype); -Phaser.Particle.prototype.constructor = Phaser.Particle; - -/** -* Updates the Particle scale or alpha if autoScale and autoAlpha are set. -* -* @method Phaser.Particle#update -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.update = function() { - - if (this.autoScale) - { - this._s--; - - if (this._s) - { - this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); - } - else - { - this.autoScale = false; - } - } - - if (this.autoAlpha) - { - this._a--; - - if (this._a) - { - this.alpha = this.alphaData[this._a].v; - } - else - { - this.autoAlpha = false; - } - } - -}; - -/** -* Called by the Emitter when this particle is emitted. Left empty for you to over-ride as required. -* -* @method Phaser.Particle#onEmit -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.onEmit = function() { -}; - -/** -* Called by the Emitter if autoAlpha has been enabled. Passes over the alpha ease data and resets the alpha counter. -* -* @method Phaser.Particle#setAlphaData -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.setAlphaData = function(data) { - - this.alphaData = data; - this._a = data.length - 1; - this.alpha = this.alphaData[this._a].v; - this.autoAlpha = true; - -}; - -/** -* Called by the Emitter if autoScale has been enabled. Passes over the scale ease data and resets the scale counter. -* -* @method Phaser.Particle#setScaleData -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.setScaleData = function(data) { - - this.scaleData = data; - this._s = data.length - 1; - this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); - this.autoScale = true; - -}; - -/** -* Resets the Particle. This places the Particle at the given x/y world coordinates and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state and health values. -* If the Particle has a physics body that too is reset. -* -* @method Phaser.Particle#reset -* @memberof Phaser.Particle -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {number} [health=1] - The health to give the Particle. -* @return (Phaser.Particle) This instance. -*/ -Phaser.Particle.prototype.reset = function(x, y, health) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y, health); - - this.alpha = 1; - this.scale.set(1); - - this.autoScale = false; - this.autoAlpha = false; - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * A BitmapData object contains a Canvas element to which you can draw anything you like via normal Canvas context operations. * A single BitmapData can be used as the texture for one or many Images/Sprites. @@ -38860,23 +34151,24 @@ Phaser.BitmapData.prototype = { /** * Shifts the contents of this BitmapData by the distances given. * - * The image will wrap-around the edges on all sides. + * The image will wrap-around the edges on all sides if the wrap argument is true (the default). * * @method Phaser.BitmapData#move * @param {integer} x - The amount of pixels to horizontally shift the canvas by. Use a negative value to shift to the left, positive to the right. * @param {integer} y - The amount of pixels to vertically shift the canvas by. Use a negative value to shift up, positive to shift down. + * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. * @return {Phaser.BitmapData} This BitmapData object for method chaining. */ - move: function (x, y) { + move: function (x, y, wrap) { if (x !== 0) { - this.moveH(x); + this.moveH(x, wrap); } if (y !== 0) { - this.moveV(y); + this.moveV(y, wrap); } return this; @@ -38886,13 +34178,16 @@ Phaser.BitmapData.prototype = { /** * Shifts the contents of this BitmapData horizontally. * - * The image will wrap-around the sides. + * The image will wrap-around the sides if the wrap argument is true (the default). * * @method Phaser.BitmapData#moveH * @param {integer} distance - The amount of pixels to horizontally shift the canvas by. Use a negative value to shift to the left, positive to the right. + * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. * @return {Phaser.BitmapData} This BitmapData object for method chaining. */ - moveH: function (distance) { + moveH: function (distance, wrap) { + + if (wrap === undefined) { wrap = true; } var c = this._swapCanvas; var ctx = c.getContext('2d'); @@ -38909,7 +34204,10 @@ Phaser.BitmapData.prototype = { var w = this.width - distance; // Left-hand chunk - ctx.drawImage(src, 0, 0, distance, h, w, 0, distance, h); + if (wrap) + { + ctx.drawImage(src, 0, 0, distance, h, w, 0, distance, h); + } // Rest of the image ctx.drawImage(src, distance, 0, w, h, 0, 0, w, h); @@ -38920,7 +34218,10 @@ Phaser.BitmapData.prototype = { var w = this.width - distance; // Right-hand chunk - ctx.drawImage(src, w, 0, distance, h, 0, 0, distance, h); + if (wrap) + { + ctx.drawImage(src, w, 0, distance, h, 0, 0, distance, h); + } // Rest of the image ctx.drawImage(src, 0, 0, w, h, distance, 0, w, h); @@ -38935,13 +34236,16 @@ Phaser.BitmapData.prototype = { /** * Shifts the contents of this BitmapData vertically. * - * The image will wrap-around the sides. + * The image will wrap-around the sides if the wrap argument is true (the default). * * @method Phaser.BitmapData#moveV * @param {integer} distance - The amount of pixels to vertically shift the canvas by. Use a negative value to shift up, positive to shift down. + * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. * @return {Phaser.BitmapData} This BitmapData object for method chaining. */ - moveV: function (distance) { + moveV: function (distance, wrap) { + + if (wrap === undefined) { wrap = true; } var c = this._swapCanvas; var ctx = c.getContext('2d'); @@ -38958,7 +34262,10 @@ Phaser.BitmapData.prototype = { var h = this.height - distance; // Top chunk - ctx.drawImage(src, 0, 0, w, distance, 0, h, w, distance); + if (wrap) + { + ctx.drawImage(src, 0, 0, w, distance, 0, h, w, distance); + } // Rest of the image ctx.drawImage(src, 0, distance, w, h, 0, 0, w, h); @@ -38969,7 +34276,10 @@ Phaser.BitmapData.prototype = { var h = this.height - distance; // Bottom chunk - ctx.drawImage(src, 0, h, w, distance, 0, 0, w, distance); + if (wrap) + { + ctx.drawImage(src, 0, h, w, distance, 0, 0, w, distance); + } // Rest of the image ctx.drawImage(src, 0, 0, w, h, 0, distance, w, h); @@ -39073,6 +34383,8 @@ Phaser.BitmapData.prototype = { this.context.clearRect(x, y, width, height); + this.update(); + this.dirty = true; return this; @@ -41492,6 +36804,8 @@ PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode) canvasBuffer.context.scale(resolution, resolution); canvasBuffer.context.translate(-bounds.x, -bounds.y); + + // Call here PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); @@ -41609,6 +36923,7 @@ PIXI.Graphics.prototype._renderCanvas = function(renderSession) } this._cachedSprite.alpha = this.alpha; + PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); return; @@ -42149,6 +37464,1405 @@ PIXI.GraphicsData.prototype.clone = function() { ); }; +/* + PolyK library + url: http://polyk.ivank.net + Released under MIT licence. + + Copyright (c) 2012 Ivan Kuckir + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + This is an amazing lib! + + Slightly modified by Mat Groves (matgroves.com); +*/ + +/** + * Based on the Polyk library http://polyk.ivank.net released under MIT licence. + * This is an amazing lib! + * Slightly modified by Mat Groves (matgroves.com); + * @class PolyK + */ +PIXI.PolyK = {}; + +/** + * Triangulates shapes for webGL graphic fills. + * + * @method Triangulate + */ +PIXI.PolyK.Triangulate = function(p) +{ + var sign = true; + + var n = p.length >> 1; + if(n < 3) return []; + + var tgs = []; + var avl = []; + for(var i = 0; i < n; i++) avl.push(i); + + i = 0; + var al = n; + while(al > 3) + { + var i0 = avl[(i+0)%al]; + var i1 = avl[(i+1)%al]; + var i2 = avl[(i+2)%al]; + + var ax = p[2*i0], ay = p[2*i0+1]; + var bx = p[2*i1], by = p[2*i1+1]; + var cx = p[2*i2], cy = p[2*i2+1]; + + var earFound = false; + if(PIXI.PolyK._convex(ax, ay, bx, by, cx, cy, sign)) + { + earFound = true; + for(var j = 0; j < al; j++) + { + var vi = avl[j]; + if(vi === i0 || vi === i1 || vi === i2) continue; + + if(PIXI.PolyK._PointInTriangle(p[2*vi], p[2*vi+1], ax, ay, bx, by, cx, cy)) { + earFound = false; + break; + } + } + } + + if(earFound) + { + tgs.push(i0, i1, i2); + avl.splice((i+1)%al, 1); + al--; + i = 0; + } + else if(i++ > 3*al) + { + // need to flip flip reverse it! + // reset! + if(sign) + { + tgs = []; + avl = []; + for(i = 0; i < n; i++) avl.push(i); + + i = 0; + al = n; + + sign = false; + } + else + { + // window.console.log("PIXI Warning: shape too complex to fill"); + return null; + } + } + } + + tgs.push(avl[0], avl[1], avl[2]); + return tgs; +}; + +/** + * Checks whether a point is within a triangle + * + * @method _PointInTriangle + * @param px {Number} x coordinate of the point to test + * @param py {Number} y coordinate of the point to test + * @param ax {Number} x coordinate of the a point of the triangle + * @param ay {Number} y coordinate of the a point of the triangle + * @param bx {Number} x coordinate of the b point of the triangle + * @param by {Number} y coordinate of the b point of the triangle + * @param cx {Number} x coordinate of the c point of the triangle + * @param cy {Number} y coordinate of the c point of the triangle + * @private + * @return {Boolean} + */ +PIXI.PolyK._PointInTriangle = function(px, py, ax, ay, bx, by, cx, cy) +{ + var v0x = cx-ax; + var v0y = cy-ay; + var v1x = bx-ax; + var v1y = by-ay; + var v2x = px-ax; + var v2y = py-ay; + + var dot00 = v0x*v0x+v0y*v0y; + var dot01 = v0x*v1x+v0y*v1y; + var dot02 = v0x*v2x+v0y*v2y; + var dot11 = v1x*v1x+v1y*v1y; + var dot12 = v1x*v2x+v1y*v2y; + + var invDenom = 1 / (dot00 * dot11 - dot01 * dot01); + var u = (dot11 * dot02 - dot01 * dot12) * invDenom; + var v = (dot00 * dot12 - dot01 * dot02) * invDenom; + + // Check if point is in triangle + return (u >= 0) && (v >= 0) && (u + v < 1); +}; + +/** + * Checks whether a shape is convex + * + * @method _convex + * @private + * @return {Boolean} + */ +PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) +{ + return ((ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0) === sign; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * A set of functions used by the webGL renderer to draw the primitive graphics data + * + * @class WebGLGraphics + * @private + * @static + */ +PIXI.WebGLGraphics = function() +{ +}; + +/** + * Renders the graphics object + * + * @static + * @private + * @method renderGraphics + * @param graphics {Graphics} + * @param renderSession {Object} + */ +PIXI.WebGLGraphics.renderGraphics = function(graphics, renderSession)//projection, offset) +{ + var gl = renderSession.gl; + var projection = renderSession.projection, + offset = renderSession.offset, + shader = renderSession.shaderManager.primitiveShader, + webGLData; + + if(graphics.dirty) + { + PIXI.WebGLGraphics.updateGraphics(graphics, gl); + } + + var webGL = graphics._webGL[gl.id]; + + // This could be speeded up for sure! + + for (var i = 0; i < webGL.data.length; i++) + { + if(webGL.data[i].mode === 1) + { + webGLData = webGL.data[i]; + + renderSession.stencilManager.pushStencil(graphics, webGLData, renderSession); + + // render quad.. + gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); + + renderSession.stencilManager.popStencil(graphics, webGLData, renderSession); + } + else + { + webGLData = webGL.data[i]; + + + renderSession.shaderManager.setShader( shader );//activatePrimitiveShader(); + shader = renderSession.shaderManager.primitiveShader; + gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); + + gl.uniform1f(shader.flipY, 1); + + gl.uniform2f(shader.projectionVector, projection.x, -projection.y); + gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); + + gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); + + gl.uniform1f(shader.alpha, graphics.worldAlpha); + + + gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); + + gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); + gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); + + // set the index buffer! + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); + gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); + } + } +}; + +/** + * Updates the graphics object + * + * @static + * @private + * @method updateGraphics + * @param graphicsData {Graphics} The graphics object to update + * @param gl {WebGLContext} the current WebGL drawing context + */ +PIXI.WebGLGraphics.updateGraphics = function(graphics, gl) +{ + // get the contexts graphics object + var webGL = graphics._webGL[gl.id]; + // if the graphics object does not exist in the webGL context time to create it! + if(!webGL)webGL = graphics._webGL[gl.id] = {lastIndex:0, data:[], gl:gl}; + + // flag the graphics as not dirty as we are about to update it... + graphics.dirty = false; + + var i; + + // if the user cleared the graphics object we will need to clear every object + if(graphics.clearDirty) + { + graphics.clearDirty = false; + + // lop through and return all the webGLDatas to the object pool so than can be reused later on + for (i = 0; i < webGL.data.length; i++) + { + var graphicsData = webGL.data[i]; + graphicsData.reset(); + PIXI.WebGLGraphics.graphicsDataPool.push( graphicsData ); + } + + // clear the array and reset the index.. + webGL.data = []; + webGL.lastIndex = 0; + } + + var webGLData; + + // loop through the graphics datas and construct each one.. + // if the object is a complex fill then the new stencil buffer technique will be used + // other wise graphics objects will be pushed into a batch.. + for (i = webGL.lastIndex; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + + if(data.type === PIXI.Graphics.POLY) + { + // need to add the points the the graphics object.. + data.points = data.shape.points.slice(); + if(data.shape.closed) + { + // close the poly if the value is true! + if(data.points[0] !== data.points[data.points.length-2] || data.points[1] !== data.points[data.points.length-1]) + { + data.points.push(data.points[0], data.points[1]); + } + } + + // MAKE SURE WE HAVE THE CORRECT TYPE.. + if(data.fill) + { + if(data.points.length >= 6) + { + if(data.points.length < 6 * 2) + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); + + var canDrawUsingSimple = PIXI.WebGLGraphics.buildPoly(data, webGLData); + // console.log(canDrawUsingSimple); + + if(!canDrawUsingSimple) + { + // console.log("<>>>") + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); + PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); + } + + } + else + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); + PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); + } + } + } + + if(data.lineWidth > 0) + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); + PIXI.WebGLGraphics.buildLine(data, webGLData); + + } + } + else + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); + + if(data.type === PIXI.Graphics.RECT) + { + PIXI.WebGLGraphics.buildRectangle(data, webGLData); + } + else if(data.type === PIXI.Graphics.CIRC || data.type === PIXI.Graphics.ELIP) + { + PIXI.WebGLGraphics.buildCircle(data, webGLData); + } + else if(data.type === PIXI.Graphics.RREC) + { + PIXI.WebGLGraphics.buildRoundedRectangle(data, webGLData); + } + } + + webGL.lastIndex++; + } + + // upload all the dirty data... + for (i = 0; i < webGL.data.length; i++) + { + webGLData = webGL.data[i]; + if(webGLData.dirty)webGLData.upload(); + } +}; + +/** + * @static + * @private + * @method switchMode + * @param webGL {WebGLContext} + * @param type {Number} + */ +PIXI.WebGLGraphics.switchMode = function(webGL, type) +{ + var webGLData; + + if(!webGL.data.length) + { + webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); + webGLData.mode = type; + webGL.data.push(webGLData); + } + else + { + webGLData = webGL.data[webGL.data.length-1]; + + if(webGLData.mode !== type || type === 1) + { + webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); + webGLData.mode = type; + webGL.data.push(webGLData); + } + } + + webGLData.dirty = true; + + return webGLData; +}; + +/** + * Builds a rectangle to draw + * + * @static + * @private + * @method buildRectangle + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.shape; + var x = rectData.x; + var y = rectData.y; + var width = rectData.width; + var height = rectData.height; + + if(graphicsData.fill) + { + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + var indices = webGLData.indices; + + var vertPos = verts.length/6; + + // start + verts.push(x, y); + verts.push(r, g, b, alpha); + + verts.push(x + width, y); + verts.push(r, g, b, alpha); + + verts.push(x , y + height); + verts.push(r, g, b, alpha); + + verts.push(x + width, y + height); + verts.push(r, g, b, alpha); + + // insert 2 dead triangles.. + indices.push(vertPos, vertPos, vertPos+1, vertPos+2, vertPos+3, vertPos+3); + } + + if(graphicsData.lineWidth) + { + var tempPoints = graphicsData.points; + + graphicsData.points = [x, y, + x + width, y, + x + width, y + height, + x, y + height, + x, y]; + + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + + graphicsData.points = tempPoints; + } +}; + +/** + * Builds a rounded rectangle to draw + * + * @static + * @private + * @method buildRoundedRectangle + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildRoundedRectangle = function(graphicsData, webGLData) +{ + var rrectData = graphicsData.shape; + var x = rrectData.x; + var y = rrectData.y; + var width = rrectData.width; + var height = rrectData.height; + + var radius = rrectData.radius; + + var recPoints = []; + recPoints.push(x, y + radius); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x, y + height - radius, x, y + height, x + radius, y + height)); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width - radius, y + height, x + width, y + height, x + width, y + height - radius)); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width, y + radius, x + width, y, x + width - radius, y)); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + radius, y, x, y, x, y + radius)); + + if (graphicsData.fill) { + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + var indices = webGLData.indices; + + var vecPos = verts.length/6; + + var triangles = PIXI.PolyK.Triangulate(recPoints); + + // + + var i = 0; + for (i = 0; i < triangles.length; i+=3) + { + indices.push(triangles[i] + vecPos); + indices.push(triangles[i] + vecPos); + indices.push(triangles[i+1] + vecPos); + indices.push(triangles[i+2] + vecPos); + indices.push(triangles[i+2] + vecPos); + } + + + for (i = 0; i < recPoints.length; i++) + { + verts.push(recPoints[i], recPoints[++i], r, g, b, alpha); + } + } + + if (graphicsData.lineWidth) { + var tempPoints = graphicsData.points; + + graphicsData.points = recPoints; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + + graphicsData.points = tempPoints; + } +}; + +/** + * Calculate the points for a quadratic bezier curve. (helper function..) + * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c + * + * @static + * @private + * @method quadraticBezierCurve + * @param fromX {Number} Origin point x + * @param fromY {Number} Origin point x + * @param cpX {Number} Control point x + * @param cpY {Number} Control point y + * @param toX {Number} Destination point x + * @param toY {Number} Destination point y + * @return {Array(Number)} + */ +PIXI.WebGLGraphics.quadraticBezierCurve = function(fromX, fromY, cpX, cpY, toX, toY) { + + var xa, + ya, + xb, + yb, + x, + y, + n = 20, + points = []; + + function getPt(n1 , n2, perc) { + var diff = n2 - n1; + + return n1 + ( diff * perc ); + } + + var j = 0; + for (var i = 0; i <= n; i++ ) + { + j = i / n; + + // The Green Line + xa = getPt( fromX , cpX , j ); + ya = getPt( fromY , cpY , j ); + xb = getPt( cpX , toX , j ); + yb = getPt( cpY , toY , j ); + + // The Black Dot + x = getPt( xa , xb , j ); + y = getPt( ya , yb , j ); + + points.push(x, y); + } + return points; +}; + +/** + * Builds a circle to draw + * + * @static + * @private + * @method buildCircle + * @param graphicsData {Graphics} The graphics object to draw + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) +{ + // need to convert points to a nice regular data + var circleData = graphicsData.shape; + var x = circleData.x; + var y = circleData.y; + var width; + var height; + + // TODO - bit hacky?? + if(graphicsData.type === PIXI.Graphics.CIRC) + { + width = circleData.radius; + height = circleData.radius; + } + else + { + width = circleData.width; + height = circleData.height; + } + + var totalSegs = 40; + var seg = (Math.PI * 2) / totalSegs ; + + var i = 0; + + if(graphicsData.fill) + { + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + var indices = webGLData.indices; + + var vecPos = verts.length/6; + + indices.push(vecPos); + + for (i = 0; i < totalSegs + 1 ; i++) + { + verts.push(x,y, r, g, b, alpha); + + verts.push(x + Math.sin(seg * i) * width, + y + Math.cos(seg * i) * height, + r, g, b, alpha); + + indices.push(vecPos++, vecPos++); + } + + indices.push(vecPos-1); + } + + if(graphicsData.lineWidth) + { + var tempPoints = graphicsData.points; + + graphicsData.points = []; + + for (i = 0; i < totalSegs + 1; i++) + { + graphicsData.points.push(x + Math.sin(seg * i) * width, + y + Math.cos(seg * i) * height); + } + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + + graphicsData.points = tempPoints; + } +}; + +/** + * Builds a line to draw + * + * @static + * @private + * @method buildLine + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) +{ + // TODO OPTIMISE! + var i = 0; + var points = graphicsData.points; + if(points.length === 0)return; + + // if the line width is an odd number add 0.5 to align to a whole pixel + if(graphicsData.lineWidth%2) + { + for (i = 0; i < points.length; i++) { + points[i] += 0.5; + } + } + + // get first and last point.. figure out the middle! + var firstPoint = new PIXI.Point( points[0], points[1] ); + var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + // if the first point is the last point - gonna have issues :) + if(firstPoint.x === lastPoint.x && firstPoint.y === lastPoint.y) + { + // need to clone as we are going to slightly modify the shape.. + points = points.slice(); + + points.pop(); + points.pop(); + + lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; + var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; + + points.unshift(midPointX, midPointY); + points.push(midPointX, midPointY); + } + + var verts = webGLData.points; + var indices = webGLData.indices; + var length = points.length / 2; + var indexCount = points.length; + var indexStart = verts.length/6; + + // DRAW the Line + var width = graphicsData.lineWidth / 2; + + // sort color + var color = PIXI.hex2rgb(graphicsData.lineColor); + var alpha = graphicsData.lineAlpha; + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var px, py, p1x, p1y, p2x, p2y, p3x, p3y; + var perpx, perpy, perp2x, perp2y, perp3x, perp3y; + var a1, b1, c1, a2, b2, c2; + var denom, pdist, dist; + + p1x = points[0]; + p1y = points[1]; + + p2x = points[2]; + p2y = points[3]; + + perpx = -(p1y - p2y); + perpy = p1x - p2x; + + dist = Math.sqrt(perpx*perpx + perpy*perpy); + + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + + // start + verts.push(p1x - perpx , p1y - perpy, + r, g, b, alpha); + + verts.push(p1x + perpx , p1y + perpy, + r, g, b, alpha); + + for (i = 1; i < length-1; i++) + { + p1x = points[(i-1)*2]; + p1y = points[(i-1)*2 + 1]; + + p2x = points[(i)*2]; + p2y = points[(i)*2 + 1]; + + p3x = points[(i+1)*2]; + p3y = points[(i+1)*2 + 1]; + + perpx = -(p1y - p2y); + perpy = p1x - p2x; + + dist = Math.sqrt(perpx*perpx + perpy*perpy); + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + + perp2x = -(p2y - p3y); + perp2y = p2x - p3x; + + dist = Math.sqrt(perp2x*perp2x + perp2y*perp2y); + perp2x /= dist; + perp2y /= dist; + perp2x *= width; + perp2y *= width; + + a1 = (-perpy + p1y) - (-perpy + p2y); + b1 = (-perpx + p2x) - (-perpx + p1x); + c1 = (-perpx + p1x) * (-perpy + p2y) - (-perpx + p2x) * (-perpy + p1y); + a2 = (-perp2y + p3y) - (-perp2y + p2y); + b2 = (-perp2x + p2x) - (-perp2x + p3x); + c2 = (-perp2x + p3x) * (-perp2y + p2y) - (-perp2x + p2x) * (-perp2y + p3y); + + denom = a1*b2 - a2*b1; + + if(Math.abs(denom) < 0.1 ) + { + + denom+=10.1; + verts.push(p2x - perpx , p2y - perpy, + r, g, b, alpha); + + verts.push(p2x + perpx , p2y + perpy, + r, g, b, alpha); + + continue; + } + + px = (b1*c2 - b2*c1)/denom; + py = (a2*c1 - a1*c2)/denom; + + + pdist = (px -p2x) * (px -p2x) + (py -p2y) + (py -p2y); + + + if(pdist > 140 * 140) + { + perp3x = perpx - perp2x; + perp3y = perpy - perp2y; + + dist = Math.sqrt(perp3x*perp3x + perp3y*perp3y); + perp3x /= dist; + perp3y /= dist; + perp3x *= width; + perp3y *= width; + + verts.push(p2x - perp3x, p2y -perp3y); + verts.push(r, g, b, alpha); + + verts.push(p2x + perp3x, p2y +perp3y); + verts.push(r, g, b, alpha); + + verts.push(p2x - perp3x, p2y -perp3y); + verts.push(r, g, b, alpha); + + indexCount++; + } + else + { + + verts.push(px , py); + verts.push(r, g, b, alpha); + + verts.push(p2x - (px-p2x), p2y - (py - p2y)); + verts.push(r, g, b, alpha); + } + } + + p1x = points[(length-2)*2]; + p1y = points[(length-2)*2 + 1]; + + p2x = points[(length-1)*2]; + p2y = points[(length-1)*2 + 1]; + + perpx = -(p1y - p2y); + perpy = p1x - p2x; + + dist = Math.sqrt(perpx*perpx + perpy*perpy); + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + + verts.push(p2x - perpx , p2y - perpy); + verts.push(r, g, b, alpha); + + verts.push(p2x + perpx , p2y + perpy); + verts.push(r, g, b, alpha); + + indices.push(indexStart); + + for (i = 0; i < indexCount; i++) + { + indices.push(indexStart++); + } + + indices.push(indexStart-1); +}; + +/** + * Builds a complex polygon to draw + * + * @static + * @private + * @method buildComplexPoly + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildComplexPoly = function(graphicsData, webGLData) +{ + //TODO - no need to copy this as it gets turned into a FLoat32Array anyways.. + var points = graphicsData.points.slice(); + if(points.length < 6)return; + + // get first and last point.. figure out the middle! + var indices = webGLData.indices; + webGLData.points = points; + webGLData.alpha = graphicsData.fillAlpha; + webGLData.color = PIXI.hex2rgb(graphicsData.fillColor); + + /* + calclate the bounds.. + */ + var minX = Infinity; + var maxX = -Infinity; + + var minY = Infinity; + var maxY = -Infinity; + + var x,y; + + // get size.. + for (var i = 0; i < points.length; i+=2) + { + x = points[i]; + y = points[i+1]; + + minX = x < minX ? x : minX; + maxX = x > maxX ? x : maxX; + + minY = y < minY ? y : minY; + maxY = y > maxY ? y : maxY; + } + + // add a quad to the end cos there is no point making another buffer! + points.push(minX, minY, + maxX, minY, + maxX, maxY, + minX, maxY); + + // push a quad onto the end.. + + //TODO - this aint needed! + var length = points.length / 2; + for (i = 0; i < length; i++) + { + indices.push( i ); + } + +}; + +/** + * Builds a polygon to draw + * + * @static + * @private + * @method buildPoly + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildPoly = function(graphicsData, webGLData) +{ + var points = graphicsData.points; + + if(points.length < 6)return; + // get first and last point.. figure out the middle! + var verts = webGLData.points; + var indices = webGLData.indices; + + var length = points.length / 2; + + // sort color + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var triangles = PIXI.PolyK.Triangulate(points); + + if(!triangles)return false; + + var vertPos = verts.length / 6; + + var i = 0; + + for (i = 0; i < triangles.length; i+=3) + { + indices.push(triangles[i] + vertPos); + indices.push(triangles[i] + vertPos); + indices.push(triangles[i+1] + vertPos); + indices.push(triangles[i+2] +vertPos); + indices.push(triangles[i+2] + vertPos); + } + + for (i = 0; i < length; i++) + { + verts.push(points[i * 2], points[i * 2 + 1], + r, g, b, alpha); + } + + return true; +}; + +PIXI.WebGLGraphics.graphicsDataPool = []; + +/** + * @class WebGLGraphicsData + * @private + * @static + */ +PIXI.WebGLGraphicsData = function(gl) +{ + this.gl = gl; + + //TODO does this need to be split before uploding?? + this.color = [0,0,0]; // color split! + this.points = []; + this.indices = []; + this.buffer = gl.createBuffer(); + this.indexBuffer = gl.createBuffer(); + this.mode = 1; + this.alpha = 1; + this.dirty = true; +}; + +/** + * @method reset + */ +PIXI.WebGLGraphicsData.prototype.reset = function() +{ + this.points = []; + this.indices = []; +}; + +/** + * @method upload + */ +PIXI.WebGLGraphicsData.prototype.upload = function() +{ + var gl = this.gl; + +// this.lastIndex = graphics.graphicsData.length; + this.glPoints = new PIXI.Float32Array(this.points); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); + gl.bufferData(gl.ARRAY_BUFFER, this.glPoints, gl.STATIC_DRAW); + + this.glIndicies = new PIXI.Uint16Array(this.indices); + + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.glIndicies, gl.STATIC_DRAW); + + this.dirty = false; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A set of functions used by the canvas renderer to draw the primitive graphics data. + * + * @class CanvasGraphics + * @static + */ +PIXI.CanvasGraphics = function() +{ +}; + +/* + * Renders a PIXI.Graphics object to a canvas. + * + * @method renderGraphics + * @static + * @param graphics {Graphics} the actual graphics object to render + * @param context {CanvasRenderingContext2D} the 2d drawing method of the canvas + */ +PIXI.CanvasGraphics.renderGraphics = function(graphics, context) +{ + var worldAlpha = graphics.worldAlpha; + + if (graphics.dirty) + { + this.updateGraphicsTint(graphics); + graphics.dirty = false; + } + + for (var i = 0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + var shape = data.shape; + + var fillColor = data._fillTint; + var lineColor = data._lineTint; + + context.lineWidth = data.lineWidth; + + if (data.type === PIXI.Graphics.POLY) + { + context.beginPath(); + + var points = shape.points; + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + if (shape.closed) + { + context.lineTo(points[0], points[1]); + } + + // if the first and last point are the same close the path - much neater :) + if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) + { + context.closePath(); + } + + if (data.fill) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + else if (data.type === PIXI.Graphics.RECT) + { + if (data.fillColor || data.fillColor === 0) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fillRect(shape.x, shape.y, shape.width, shape.height); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.strokeRect(shape.x, shape.y, shape.width, shape.height); + } + } + else if (data.type === PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.beginPath(); + context.arc(shape.x, shape.y, shape.radius,0,2*Math.PI); + context.closePath(); + + if (data.fill) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + else if (data.type === PIXI.Graphics.ELIP) + { + // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + + var w = shape.width * 2; + var h = shape.height * 2; + + var x = shape.x - w/2; + var y = shape.y - h/2; + + context.beginPath(); + + var kappa = 0.5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle + + context.moveTo(x, ym); + context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + + context.closePath(); + + if (data.fill) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + else if (data.type === PIXI.Graphics.RREC) + { + var rx = shape.x; + var ry = shape.y; + var width = shape.width; + var height = shape.height; + var radius = shape.radius; + + var maxRadius = Math.min(width, height) / 2 | 0; + radius = radius > maxRadius ? maxRadius : radius; + + context.beginPath(); + context.moveTo(rx, ry + radius); + context.lineTo(rx, ry + height - radius); + context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); + context.lineTo(rx + width - radius, ry + height); + context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); + context.lineTo(rx + width, ry + radius); + context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); + context.lineTo(rx + radius, ry); + context.quadraticCurveTo(rx, ry, rx, ry + radius); + context.closePath(); + + if (data.fillColor || data.fillColor === 0) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + } + +}; + +/* + * Renders a graphics mask + * + * @static + * @private + * @method renderGraphicsMask + * @param graphics {Graphics} the graphics which will be used as a mask + * @param context {CanvasRenderingContext2D} the context 2d method of the canvas + */ +PIXI.CanvasGraphics.renderGraphicsMask = function(graphics, context) +{ + var len = graphics.graphicsData.length; + + if (len === 0) + { + return; + } + + context.beginPath(); + + for (var i = 0; i < len; i++) + { + var data = graphics.graphicsData[i]; + var shape = data.shape; + + if (data.type === PIXI.Graphics.POLY) + { + + var points = shape.points; + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + // if the first and last point are the same close the path - much neater :) + if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) + { + context.closePath(); + } + + } + else if (data.type === PIXI.Graphics.RECT) + { + context.rect(shape.x, shape.y, shape.width, shape.height); + context.closePath(); + } + else if (data.type === PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.arc(shape.x, shape.y, shape.radius, 0, 2 * Math.PI); + context.closePath(); + } + else if (data.type === PIXI.Graphics.ELIP) + { + + // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + + var w = shape.width * 2; + var h = shape.height * 2; + + var x = shape.x - w/2; + var y = shape.y - h/2; + + var kappa = 0.5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle + + context.moveTo(x, ym); + context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + context.closePath(); + } + else if (data.type === PIXI.Graphics.RREC) + { + + var rx = shape.x; + var ry = shape.y; + var width = shape.width; + var height = shape.height; + var radius = shape.radius; + + var maxRadius = Math.min(width, height) / 2 | 0; + radius = radius > maxRadius ? maxRadius : radius; + + context.moveTo(rx, ry + radius); + context.lineTo(rx, ry + height - radius); + context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); + context.lineTo(rx + width - radius, ry + height); + context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); + context.lineTo(rx + width, ry + radius); + context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); + context.lineTo(rx + radius, ry); + context.quadraticCurveTo(rx, ry, rx, ry + radius); + context.closePath(); + } + } +}; + +PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) +{ + if (graphics.tint === 0xFFFFFF) + { + return; + } + + var tintR = (graphics.tint >> 16 & 0xFF) / 255; + var tintG = (graphics.tint >> 8 & 0xFF) / 255; + var tintB = (graphics.tint & 0xFF)/ 255; + + for (var i = 0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + + var fillColor = data.fillColor | 0; + var lineColor = data.lineColor | 0; + + data._fillTint = (((fillColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((fillColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (fillColor & 0xFF) / 255 * tintB*255); + data._lineTint = (((lineColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((lineColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (lineColor & 0xFF) / 255 * tintB*255); + + } + +}; + /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -42727,16 +39441,6 @@ Phaser.Text.prototype.destroy = function (destroyChildren) { PIXI.CanvasPool.remove(this); - // if (this.canvas && this.canvas.parentNode) - // { - // this.canvas.parentNode.removeChild(this.canvas); - // } - // else - // { - // this.canvas = null; - // this.context = null; - // } - Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren); }; @@ -42889,6 +39593,12 @@ Phaser.Text.prototype.updateText = function () { { // Simple layout (no tabs) var lineWidth = this.context.measureText(lines[i]).width + this.style.strokeThickness + this.padding.x; + + // Adjust for wrapped text + if (this.style.wordWrap) + { + lineWidth -= this.context.measureText(' ').width; + } } else { @@ -42930,9 +39640,7 @@ Phaser.Text.prototype.updateText = function () { maxLineWidth = Math.max(maxLineWidth, lineWidths[i]); } - var width = maxLineWidth + this.style.strokeThickness; - - this.canvas.width = width * this._res; + this.canvas.width = maxLineWidth * this._res; // Calculate text height var lineHeight = fontProperties.fontSize + this.style.strokeThickness + this.padding.y; @@ -45762,9 +42470,11 @@ Object.defineProperty(Phaser.RetroFont.prototype, "smoothed", { */ /** -* A Rope is a Sprite that has a repeating texture. The texture can be scrolled and scaled and will automatically wrap on the edges as it does so. -* Please note that Ropes, as with normal Sprites, have no input handler or physics bodies by default. Both need enabling. -* Example usage: https://github.com/codevinsky/phaser-rope-demo/blob/master/dist/demo.js +* A Rope is a Sprite that has a repeating texture. +* +* The texture will automatically wrap on the edges as it moves. +* +* Please note that Ropes cannot have an input handler. * * @class Phaser.Rope * @constructor @@ -45779,7 +42489,6 @@ Object.defineProperty(Phaser.RetroFont.prototype, "smoothed", { * @extends Phaser.Component.Delta * @extends Phaser.Component.Destroy * @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InputEnabled * @extends Phaser.Component.InWorld * @extends Phaser.Component.LifeSpan * @extends Phaser.Component.LoadTexture @@ -45812,12 +42521,6 @@ Phaser.Rope = function (game, x, y, key, frame, points) { */ this.type = Phaser.ROPE; - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -45837,7 +42540,6 @@ Phaser.Component.Core.install.call(Phaser.Rope.prototype, [ 'Delta', 'Destroy', 'FixedToCamera', - 'InputEnabled', 'InWorld', 'LifeSpan', 'LoadTexture', @@ -45861,16 +42563,6 @@ Phaser.Rope.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; */ Phaser.Rope.prototype.preUpdate = function() { - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) { return false; @@ -45896,7 +42588,7 @@ Phaser.Rope.prototype.update = function() { }; /** -* Resets the Rope. This places the Rope at the given x/y world coordinates, resets the tilePosition and then +* Resets the Rope. This places the Rope at the given x/y world coordinates and then * sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. * If the Rope has a physics body that too is reset. * @@ -45910,15 +42602,12 @@ Phaser.Rope.prototype.reset = function(x, y) { Phaser.Component.Reset.prototype.reset.call(this, x, y); - this.tilePosition.x = 0; - this.tilePosition.y = 0; - return this; }; /** -* A Rope will call it's updateAnimation function on each update loop if it has one +* A Rope will call its updateAnimation function on each update loop if it has one. * * @name Phaser.Rope#updateAnimation * @property {function} updateAnimation - Set to a function if you'd like the rope to animate during the update phase. Set to false or null to remove it. @@ -46258,6 +42947,12 @@ Phaser.Device = function () { */ this.iOS = false; + /** + * @property {number} iOSVersion - If running in iOS this will contain the major version number. + * @default + */ + this.iOSVersion = 0; + /** * @property {boolean} cocoonJS - Is the game running under CocoonJS? * @default @@ -46859,6 +43554,8 @@ Phaser.Device._initialize = function () { else if (/iP[ao]d|iPhone/i.test(ua)) { device.iOS = true; + (navigator.appVersion).match(/OS (\d+)/); + device.iOSVersion = parseInt(RegExp.$1, 10); } else if (/Linux/.test(ua)) { @@ -47522,439 +44219,6 @@ Phaser.Device.isAndroidStockBrowser = function () { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* DOM utility class. -* -* Provides a useful Window and Element functions as well as cross-browser compatibility buffer. -* -* Some code originally derived from {@link https://github.com/ryanve/verge verge}. -* Some parts were inspired by the research of Ryan Van Etten, released under MIT License 2013. -* -* @class Phaser.DOM -* @static -*/ -Phaser.DOM = { - - /** - * Get the [absolute] position of the element relative to the Document. - * - * The value may vary slightly as the page is scrolled due to rounding errors. - * - * @method Phaser.DOM.getOffset - * @param {DOMElement} element - The targeted element that we want to retrieve the offset. - * @param {Phaser.Point} [point] - The point we want to take the x/y values of the offset. - * @return {Phaser.Point} - A point objet with the offsetX and Y as its properties. - */ - getOffset: function (element, point) { - - point = point || new Phaser.Point(); - - var box = element.getBoundingClientRect(); - - var scrollTop = Phaser.DOM.scrollY; - var scrollLeft = Phaser.DOM.scrollX; - var clientTop = document.documentElement.clientTop; - var clientLeft = document.documentElement.clientLeft; - - point.x = box.left + scrollLeft - clientLeft; - point.y = box.top + scrollTop - clientTop; - - return point; - - }, - - /** - * A cross-browser element.getBoundingClientRect method with optional cushion. - * - * Returns a plain object containing the properties `top/bottom/left/right/width/height` with respect to the top-left corner of the current viewport. - * Its properties match the native rectangle. - * The cushion parameter is an amount of pixels (+/-) to cushion the element. - * It adjusts the measurements such that it is possible to detect when an element is near the viewport. - * - * @method Phaser.DOM.getBounds - * @param {DOMElement|Object} element - The element or stack (uses first item) to get the bounds for. - * @param {number} [cushion] - A +/- pixel adjustment amount. - * @return {Object|boolean} A plain object containing the properties `top/bottom/left/right/width/height` or `false` if a non-valid element is given. - */ - getBounds: function (element, cushion) { - - if (cushion === undefined) { cushion = 0; } - - element = element && !element.nodeType ? element[0] : element; - - if (!element || element.nodeType !== 1) - { - return false; - } - else - { - return this.calibrate(element.getBoundingClientRect(), cushion); - } - - }, - - /** - * Calibrates element coordinates for `inLayoutViewport` checks. - * - * @method Phaser.DOM.calibrate - * @private - * @param {object} coords - An object containing the following properties: `{top: number, right: number, bottom: number, left: number}` - * @param {number} [cushion] - A value to adjust the coordinates by. - * @return {object} The calibrated element coordinates - */ - calibrate: function (coords, cushion) { - - cushion = +cushion || 0; - - var output = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }; - - output.width = (output.right = coords.right + cushion) - (output.left = coords.left - cushion); - output.height = (output.bottom = coords.bottom + cushion) - (output.top = coords.top - cushion); - - return output; - - }, - - /** - * Get the Visual viewport aspect ratio (or the aspect ratio of an object or element) - * - * @method Phaser.DOM.getAspectRatio - * @param {(DOMElement|Object)} [object=(visualViewport)] - The object to determine the aspect ratio for. Must have public `width` and `height` properties or methods. - * @return {number} The aspect ratio. - */ - getAspectRatio: function (object) { - - object = null == object ? this.visualBounds : 1 === object.nodeType ? this.getBounds(object) : object; - - var w = object['width']; - var h = object['height']; - - if (typeof w === 'function') - { - w = w.call(object); - } - - if (typeof h === 'function') - { - h = h.call(object); - } - - return w / h; - - }, - - /** - * Tests if the given DOM element is within the Layout viewport. - * - * The optional cushion parameter allows you to specify a distance. - * - * inLayoutViewport(element, 100) is `true` if the element is in the viewport or 100px near it. - * inLayoutViewport(element, -100) is `true` if the element is in the viewport or at least 100px near it. - * - * @method Phaser.DOM.inLayoutViewport - * @param {DOMElement|Object} element - The DOM element to check. If no element is given it defaults to the Phaser game canvas. - * @param {number} [cushion] - The cushion allows you to specify a distance within which the element must be within the viewport. - * @return {boolean} True if the element is within the viewport, or within `cushion` distance from it. - */ - inLayoutViewport: function (element, cushion) { - - var r = this.getBounds(element, cushion); - - return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= this.layoutBounds.width && r.left <= this.layoutBounds.height; - - }, - - /** - * Returns the device screen orientation. - * - * Orientation values: 'portrait-primary', 'landscape-primary', 'portrait-secondary', 'landscape-secondary'. - * - * Order of resolving: - * - Screen Orientation API, or variation of - Future track. Most desktop and mobile browsers. - * - Screen size ratio check - If fallback is 'screen', suited for desktops. - * - Viewport size ratio check - If fallback is 'viewport', suited for mobile. - * - window.orientation - If fallback is 'window.orientation', works iOS and probably most Android; non-recommended track. - * - Media query - * - Viewport size ratio check (probably only IE9 and legacy mobile gets here..) - * - * See - * - https://w3c.github.io/screen-orientation/ (conflicts with mozOrientation/msOrientation) - * - https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation (mozOrientation) - * - http://msdn.microsoft.com/en-us/library/ie/dn342934(v=vs.85).aspx - * - https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries - * - http://stackoverflow.com/questions/4917664/detect-viewport-orientation - * - http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation - * - * @method Phaser.DOM.getScreenOrientation - * @protected - * @param {string} [primaryFallback=(none)] - Specify 'screen', 'viewport', or 'window.orientation'. - */ - getScreenOrientation: function (primaryFallback) { - - var screen = window.screen; - var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation; - - if (orientation && typeof orientation.type === 'string') - { - // Screen Orientation API specification - return orientation.type; - } - else if (typeof orientation === 'string') - { - // moz/ms-orientation are strings - return orientation; - } - - var PORTRAIT = 'portrait-primary'; - var LANDSCAPE = 'landscape-primary'; - - if (primaryFallback === 'screen') - { - return (screen.height > screen.width) ? PORTRAIT : LANDSCAPE; - } - else if (primaryFallback === 'viewport') - { - return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; - } - else if (primaryFallback === 'window.orientation' && typeof window.orientation === 'number') - { - // This may change by device based on "natural" orientation. - return (window.orientation === 0 || window.orientation === 180) ? PORTRAIT : LANDSCAPE; - } - else if (window.matchMedia) - { - if (window.matchMedia("(orientation: portrait)").matches) - { - return PORTRAIT; - } - else if (window.matchMedia("(orientation: landscape)").matches) - { - return LANDSCAPE; - } - } - - return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; - - }, - - /** - * The bounds of the Visual viewport, as discussed in - * {@link http://www.quirksmode.org/mobile/viewports.html A tale of two viewports — part one} - * with one difference: the viewport size _excludes_ scrollbars, as found on some desktop browsers. - * - * Supported mobile: - * iOS/Safari, Android 4, IE10, Firefox OS (maybe not Firefox Android), Opera Mobile 16 - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} x - Scroll, left offset - eg. "scrollX" - * @property {number} y - Scroll, top offset - eg. "scrollY" - * @property {number} width - Viewport width in pixels. - * @property {number} height - Viewport height in pixels. - * @readonly - */ - visualBounds: new Phaser.Rectangle(), - - /** - * The bounds of the Layout viewport, as discussed in - * {@link http://www.quirksmode.org/mobile/viewports2.html A tale of two viewports — part two}; - * but honoring the constraints as specified applicable viewport meta-tag. - * - * The bounds returned are not guaranteed to be fully aligned with CSS media queries (see - * {@link http://www.matanich.com/2013/01/07/viewport-size/ What size is my viewport?}). - * - * This is _not_ representative of the Visual bounds: in particular the non-primary axis will - * generally be significantly larger than the screen height on mobile devices when running with a - * constrained viewport. - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} width - Viewport width in pixels. - * @property {number} height - Viewport height in pixels. - * @readonly - */ - layoutBounds: new Phaser.Rectangle(), - - /** - * The size of the document / Layout viewport. - * - * This incorrectly reports the dimensions in IE. - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} width - Document width in pixels. - * @property {number} height - Document height in pixels. - * @readonly - */ - documentBounds: new Phaser.Rectangle() - -}; - -Phaser.Device.whenReady(function (device) { - - // All target browsers should support page[XY]Offset. - var scrollX = window && ('pageXOffset' in window) ? - function () { return window.pageXOffset; } : - function () { return document.documentElement.scrollLeft; }; - - var scrollY = window && ('pageYOffset' in window) ? - function () { return window.pageYOffset; } : - function () { return document.documentElement.scrollTop; }; - - /** - * A cross-browser window.scrollX. - * - * @name Phaser.DOM.scrollX - * @property {number} scrollX - * @readonly - * @protected - */ - Object.defineProperty(Phaser.DOM, "scrollX", { - get: scrollX - }); - - /** - * A cross-browser window.scrollY. - * - * @name Phaser.DOM.scrollY - * @property {number} scrollY - * @readonly - * @protected - */ - Object.defineProperty(Phaser.DOM, "scrollY", { - get: scrollY - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "x", { - get: scrollX - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "y", { - get: scrollY - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "x", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "y", { - value: 0 - }); - - var treatAsDesktop = device.desktop && - (document.documentElement.clientWidth <= window.innerWidth) && - (document.documentElement.clientHeight <= window.innerHeight); - - // Desktop browsers align the layout viewport with the visual viewport. - // This differs from mobile browsers with their zooming design. - // Ref. http://quirksmode.org/mobile/tableViewport.html - if (treatAsDesktop) - { - - // PST- When scrollbars are not included this causes upstream issues in ScaleManager. - // So reverted to the old "include scrollbars." - var clientWidth = function () { - return Math.max(window.innerWidth, document.documentElement.clientWidth); - }; - var clientHeight = function () { - return Math.max(window.innerHeight, document.documentElement.clientHeight); - }; - - // Interested in area sans-scrollbar - Object.defineProperty(Phaser.DOM.visualBounds, "width", { - get: clientWidth - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "height", { - get: clientHeight - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "width", { - get: clientWidth - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "height", { - get: clientHeight - }); - - } else { - - Object.defineProperty(Phaser.DOM.visualBounds, "width", { - get: function () { - return window.innerWidth; - } - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "height", { - get: function () { - return window.innerHeight; - } - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "width", { - - get: function () { - var a = document.documentElement.clientWidth; - var b = window.innerWidth; - - return a < b ? b : a; // max - } - - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "height", { - - get: function () { - var a = document.documentElement.clientHeight; - var b = window.innerHeight; - - return a < b ? b : a; // max - } - - }); - - } - - // For Phaser.DOM.documentBounds - // Ref. http://www.quirksmode.org/mobile/tableViewport_desktop.html - - Object.defineProperty(Phaser.DOM.documentBounds, "x", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "y", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "width", { - - get: function () { - var d = document.documentElement; - return Math.max(d.clientWidth, d.offsetWidth, d.scrollWidth); - } - - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "height", { - - get: function () { - var d = document.documentElement; - return Math.max(d.clientHeight, d.offsetHeight, d.scrollHeight); - } - - }); - -}, null, true); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * The Canvas class handles everything related to creating the `canvas` DOM tag that Phaser will use, * including styles, offset and aspect ratio. @@ -48007,7 +44271,7 @@ Phaser.Canvas = { * * @method Phaser.Canvas.setBackgroundColor * @param {HTMLCanvasElement} canvas - The canvas to set the background color on. - * @param {string} [color] - The color to set. Can be in the format 'rgb(r,g,b)', or '#RRGGBB' or any valid CSS color. + * @param {string} [color='rgb(0,0,0)'] - The color to set. Can be in the format 'rgb(r,g,b)', or '#RRGGBB' or any valid CSS color. * @return {HTMLCanvasElement} Returns the source canvas. */ setBackgroundColor: function (canvas, color) { @@ -48161,7 +44425,27 @@ Phaser.Canvas = { */ setSmoothingEnabled: function (context, value) { - var vendor = [ 'i', 'mozI', 'oI', 'webkitI', 'msI' ]; + var s = Phaser.Canvas.getSmoothingPrefix(context); + + if (s) + { + context[s] = value; + } + + return context; + + }, + + /** + * Gets the Smoothing Enabled vendor prefix being used on the given context, or null if not set. + * + * @method Phaser.Canvas.getSmoothingPrefix + * @param {CanvasRenderingContext2D} context - The context to enable or disable the image smoothing on. + * @return {string|null} Returns the smoothingEnabled vendor prefix, or null if not set on the context. + */ + getSmoothingPrefix: function (context) { + + var vendor = [ 'i', 'webkitI', 'msI', 'mozI', 'oI' ]; for (var prefix in vendor) { @@ -48169,12 +44453,11 @@ Phaser.Canvas = { if (s in context) { - context[s] = value; - return context; + return s; } } - return context; + return null; }, @@ -48187,7 +44470,12 @@ Phaser.Canvas = { */ getSmoothingEnabled: function (context) { - return (context['imageSmoothingEnabled'] || context['mozImageSmoothingEnabled'] || context['oImageSmoothingEnabled'] || context['webkitImageSmoothingEnabled'] || context['msImageSmoothingEnabled']); + var s = Phaser.Canvas.getSmoothingPrefix(context); + + if (s) + { + return context[s]; + } }, @@ -48201,12 +44489,13 @@ Phaser.Canvas = { */ setImageRenderingCrisp: function (canvas) { - canvas.style['image-rendering'] = 'optimizeSpeed'; - canvas.style['image-rendering'] = 'crisp-edges'; - canvas.style['image-rendering'] = '-moz-crisp-edges'; - canvas.style['image-rendering'] = '-webkit-optimize-contrast'; - canvas.style['image-rendering'] = 'optimize-contrast'; - canvas.style['image-rendering'] = 'pixelated'; + var types = [ 'optimizeSpeed', 'crisp-edges', '-moz-crisp-edges', '-webkit-optimize-contrast', 'optimize-contrast', 'pixelated' ]; + + for (var i = 0; i < types.length; i++) + { + canvas.style['image-rendering'] = types[i]; + } + canvas.style.msInterpolationMode = 'nearest-neighbor'; return canvas; @@ -48430,66 +44719,83 @@ Phaser.Math = { * Two number are fuzzyEqual if their difference is less than epsilon. * * @method Phaser.Math#fuzzyEqual - * @param {number} a - * @param {number} b - * @param {number} [epsilon=(small value)] + * @param {number} a - The first number to compare. + * @param {number} b - The second number to compare. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) * @return {boolean} True if |a-b|b+epsilon */ fuzzyGreaterThan: function (a, b, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return a > b - epsilon; + }, /** + * Applies a fuzzy ceil to the given value. + * * @method Phaser.Math#fuzzyCeil - * - * @param {number} val - * @param {number} [epsilon=(small value)] - * @return {boolean} ceiling(val-epsilon) + * @param {number} val - The value to ceil. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) + * @return {number} ceiling(val-epsilon) */ fuzzyCeil: function (val, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return Math.ceil(val - epsilon); + }, /** + * Applies a fuzzy floor to the given value. + * * @method Phaser.Math#fuzzyFloor - * - * @param {number} val - * @param {number} [epsilon=(small value)] - * @return {boolean} floor(val-epsilon) + * @param {number} val - The value to floor. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) + * @return {number} floor(val+epsilon) */ fuzzyFloor: function (val, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return Math.floor(val + epsilon); + }, /** @@ -48502,12 +44808,14 @@ Phaser.Math = { average: function () { var sum = 0; + var len = arguments.length; - for (var i = 0; i < arguments.length; i++) { + for (var i = 0; i < len; i++) + { sum += (+arguments[i]); } - return sum / arguments.length; + return sum / len; }, @@ -48549,7 +44857,7 @@ Phaser.Math = { /** * Snap a value to nearest grid slice, using floor. * - * Example: if you have an interval gap of 5 and a position of 12... you will snap to 10. + * Example: if you have an interval gap of 5 and a position of 12... you will snap to 10. * As will 14 snap to 10... but 16 will snap to 15. * * @method Phaser.Math#snapToFloor @@ -49450,7 +45758,7 @@ Phaser.Math.radToDeg = function radToDeg (radians) { * * @class Phaser.RandomDataGenerator * @constructor -* @param {any[]} [seeds] - An array of values to use as the seed. +* @param {any[]|string} [seeds] - An array of values to use as the seed, or a generator state (from {#state}). */ Phaser.RandomDataGenerator = function (seeds) { @@ -49480,7 +45788,14 @@ Phaser.RandomDataGenerator = function (seeds) { */ this.s2 = 0; - this.sow(seeds); + if (typeof seeds === 'string') + { + this.state(seeds); + } + else + { + this.sow(seeds); + } }; @@ -49730,6 +46045,39 @@ Phaser.RandomDataGenerator.prototype = { return this.integerInRange(-180, 180); + }, + + /** + * Gets or Sets the state of the generator. This allows you to retain the values + * that the generator is using between games, i.e. in a game save file. + * + * To seed this generator with a previously saved state you can pass it as the + * `seed` value in your game config, or call this method directly after Phaser has booted. + * + * Call this method with no parameters to return the current state. + * + * If providing a state it should match the same format that this method + * returns, which is a string with a header `!rnd` followed by the `c`, + * `s0`, `s1` and `s2` values respectively, each comma-delimited. + * + * @method Phaser.RandomDataGenerator#state + * @param {string} [state] - Generator state to be set. + * @return {string} The current state of the generator. + */ + state: function (state) { + + if (typeof state === 'string' && state.match(/^!rnd/)) + { + state = state.split(','); + + this.c = parseFloat(state[1]); + this.s0 = parseFloat(state[2]); + this.s1 = parseFloat(state[3]); + this.s2 = parseFloat(state[4]); + } + + return ['!rnd', this.c, this.s0, this.s1, this.s2].join(','); + } }; @@ -52687,6 +49035,25 @@ Phaser.Easing.Power4 = Phaser.Easing.Quintic.Out; * * To create a general timed event, use the master {@link Phaser.Timer} accessible through {@link Phaser.Time.events events}. * +* There are different *types* of time in Phaser: +* +* - ***Game time*** always runs at the speed of time in real life. +* +* Unlike wall-clock time, *game time stops when Phaser is paused*. +* +* Game time is used for {@link Phaser.Timer timer events}. +* +* - ***Physics time*** represents the amount of time given to physics calculations. +* +* *When {@link #slowMotion} is in effect physics time runs slower than game time.* +* Like game time, physics time stops when Phaser is paused. +* +* Physics time is used for physics calculations and {@link Phaser.Tween tweens}. +* +* - {@link https://en.wikipedia.org/wiki/Wall-clock_time ***Wall-clock time***} represents the duration between two events in real life time. +* +* This time is independent of Phaser and always progresses, regardless of if Phaser is paused. +* * @class Phaser.Time * @constructor * @param {Phaser.Game} game A reference to the currently running game. @@ -52765,35 +49132,44 @@ Phaser.Time = function (game) { * * @property {number} physicsElapsed */ - this.physicsElapsed = 0; + this.physicsElapsed = 1 / 60; /** * The physics update delta, in milliseconds - equivalent to `physicsElapsed * 1000`. * * @property {number} physicsElapsedMS */ - this.physicsElapsedMS = 0; + this.physicsElapsedMS = (1 / 60) * 1000; + + /** + * The desiredFps multiplier as used by Game.update. + * @property {integer} desiredFpsMult + * @protected + */ + this.desiredFpsMult = 1.0 / 60; /** * The desired frame rate of the game. * * This is used is used to calculate the physic/logic multiplier and how to apply catch-up logic updates. * - * @property {number} desiredFps + * @property {number} _desiredFps + * @private * @default */ - this.desiredFps = 60; + this._desiredFps = 60; /** * The suggested frame rate for your game, based on an averaged real frame rate. * This value is only populated if `Time.advancedTiming` is enabled. * - * _Note:_ This is not available until after a few frames have passed; use it after a few seconds (eg. after the menus) + * _Note:_ This is not available until after a few frames have passed; until then + * it's set to the same value as desiredFps. * * @property {number} suggestedFps * @default */ - this.suggestedFps = null; + this.suggestedFps = this.desiredFps; /** * Scaling factor to make the game move smoothly in slow motion @@ -53003,6 +49379,24 @@ Phaser.Time.prototype = { }, + /** + * Refreshes the Time.time and Time.elapsedMS properties from the system clock. + * + * @method Phaser.Time#refresh + */ + refresh: function () { + + // Set to the old Date.now value + var previousDateNow = this.time; + + // this.time always holds a Date.now value + this.time = Date.now(); + + // Adjust accordingly. + this.elapsedMS = this.time - previousDateNow; + + }, + /** * Updates the game clock and if enabled the advanced timing data. This is called automatically by Phaser.Game. * @@ -53012,13 +49406,32 @@ Phaser.Time.prototype = { */ update: function (time) { + // Set to the old Date.now value + var previousDateNow = this.time; + + // this.time always holds a Date.now value + this.time = Date.now(); + + // Adjust accordingly. + this.elapsedMS = this.time - previousDateNow; + + // 'now' is currently still holding the time of the last call, move it into prevTime + this.prevTime = this.now; + + // update 'now' to hold the current time + // this.now may hold the RAF high resolution time value if RAF is available (otherwise it also holds Date.now) + this.now = time; + + // elapsed time between previous call and now - this could be a high resolution value + this.elapsed = this.now - this.prevTime; + if (this.game.raf._isSetTimeOut) { - this.updateSetTimeout(time); - } - else - { - this.updateRAF(time); + // time to call this function again in ms in case we're using timers instead of RequestAnimationFrame to update the game + this.timeToCall = Math.floor(Math.max(0, (1000.0 / this._desiredFps) - (this.timeExpected - time))); + + // time when the next call is expected if using timers + this.timeExpected = time + this.timeToCall; } if (this.advancedTiming) @@ -53040,82 +49453,6 @@ Phaser.Time.prototype = { }, - /** - * setTimeOut specific time update handler. - * Called automatically by Time.update. - * - * @method Phaser.Time#updateSetTimeout - * @private - * @param {number} time - The current relative timestamp; see {@link Phaser.Time#now now}. - */ - updateSetTimeout: function (time) { - - // Set to the old Date.now value - var previousDateNow = this.time; - - // With SetTimeout the time value is always the same as Date.now, so no need to get it again - this.time = time; - - // Adjust accordingly. - this.elapsedMS = this.time - previousDateNow; - - // 'now' is currently still holding the time of the last call, move it into prevTime - this.prevTime = this.now; - - // update 'now' to hold the current time - this.now = time; - - // elapsed time between previous call and now - this.elapsed = this.now - this.prevTime; - - // time to call this function again in ms in case we're using timers instead of RequestAnimationFrame to update the game - this.timeToCall = Math.floor(Math.max(0, (1000.0 / this.desiredFps) - (this.timeCallExpected - time))); - - // time when the next call is expected if using timers - this.timeCallExpected = time + this.timeToCall; - - // Set the physics elapsed time... this will always be 1 / this.desiredFps because we're using fixed time steps in game.update now - this.physicsElapsed = 1 / this.desiredFps; - - this.physicsElapsedMS = this.physicsElapsed * 1000; - - }, - - /** - * raf specific time update handler. - * Called automatically by Time.update. - * - * @method Phaser.Time#updateRAF - * @private - * @param {number} time - The current relative timestamp; see {@link Phaser.Time#now now}. - */ - updateRAF: function (time) { - - // Set to the old Date.now value - var previousDateNow = this.time; - - // this.time always holds Date.now, this.now may hold the RAF high resolution time value if RAF is available (otherwise it also holds Date.now) - this.time = Date.now(); - - // Adjust accordingly. - this.elapsedMS = this.time - previousDateNow; - - // 'now' is currently still holding the time of the last call, move it into prevTime - this.prevTime = this.now; - - // update 'now' to hold the current time - this.now = time; - - // elapsed time between previous call and now - this.elapsed = this.now - this.prevTime; - - // Set the physics elapsed time... this will always be 1 / this.desiredFps because we're using fixed time steps in game.update now - this.physicsElapsed = 1 / this.desiredFps; - - this.physicsElapsedMS = this.physicsElapsed * 1000; - - }, - /** * Handles the updating of the Phaser.Timers (if any) * Called automatically by Time.update. @@ -53159,7 +49496,7 @@ Phaser.Time.prototype = { this._elapsedAccumulator += this.elapsed; // occasionally recalculate the suggestedFps based on the accumulated elapsed time - if (this._frameCount >= this.desiredFps * 2) + if (this._frameCount >= this._desiredFps * 2) { // this formula calculates suggestedFps in multiples of 5 fps this.suggestedFps = Math.floor(200 / (this._elapsedAccumulator / this._frameCount)) * 5; @@ -53274,6 +49611,38 @@ Phaser.Time.prototype = { }; +/** +* The desired frame rate of the game. +* +* This is used is used to calculate the physic / logic multiplier and how to apply catch-up logic updates. +* +* @name Phaser.Time#desiredFps +* @property {integer} desiredFps - The desired frame rate of the game. Defaults to 60. +*/ +Object.defineProperty(Phaser.Time.prototype, "desiredFps", { + + get: function () { + + return this._desiredFps; + + }, + + set: function (value) { + + this._desiredFps = value; + + // Set the physics elapsed time... this will always be 1 / this.desiredFps + // because we're using fixed time steps in game.update + this.physicsElapsed = 1 / value; + + this.physicsElapsedMS = this.physicsElapsed * 1000; + + this.desiredFpsMult = 1.0 / value; + + } + +}); + Phaser.Time.prototype.constructor = Phaser.Time; /** @@ -53283,13 +49652,13 @@ Phaser.Time.prototype.constructor = Phaser.Time; */ /** -* A Timer is a way to create small re-usable (or disposable) objects that wait for a specific moment in time, -* and then run the specified callbacks. +* A Timer is a way to create and manage {@link Phaser.TimerEvent timer events} that wait for a specific duration and then run a callback. +* Many different timer events, with individual delays, can be added to the same Timer. * -* You can add many events to a Timer, each with their own delays. A Timer uses milliseconds as its unit of time (there are 1000 ms in 1 second). -* So a delay to 250 would fire the event every quarter of a second. +* All Timer delays are in milliseconds (there are 1000 ms in 1 second); so a delay value of 250 represents a quarter of a second. * -* Timers are based on real-world (not physics) time, adjusted for game pause durations. +* Timers are based on real life time, adjusted for game pause durations. +* That is, *timer events are based on elapsed {@link Phaser.Time game time}* and do *not* take physics time or slow motion into account. * * @class Phaser.Timer * @constructor @@ -53468,10 +49837,10 @@ Phaser.Timer.prototype = { * * @method Phaser.Timer#create * @private - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. This value should be an integer, not a float. Math.round() is applied to it by this method. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. * @param {boolean} loop - Should the event loop or not? * @param {number} repeatCount - The number of times the event will repeat. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {any[]} arguments - The values to be sent to your callback function when it is called. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. @@ -53512,15 +49881,15 @@ Phaser.Timer.prototype = { * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#add - * @param {number} delay - The number of milliseconds that should elapse before the callback is invoked. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ add: function (delay, callback, callbackContext) { - return this.create(delay, false, 0, callback, callbackContext, Array.prototype.splice.call(arguments, 3)); + return this.create(delay, false, 0, callback, callbackContext, Array.prototype.slice.call(arguments, 3)); }, @@ -53528,21 +49897,22 @@ Phaser.Timer.prototype = { * Adds a new TimerEvent that will always play through once and then repeat for the given number of iterations. * * The event will fire after the given amount of `delay` in milliseconds has passed, once the Timer has started running. - * The delay is in relation to when the Timer starts, not the time it was added. If the Timer is already running the delay will be calculated based on the timers current time. + * The delay is in relation to when the Timer starts, not the time it was added. + * If the Timer is already running the delay will be calculated based on the timers current time. * * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#repeat - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. * @param {number} repeatCount - The number of times the event will repeat once is has finished playback. A repeatCount of 1 means it will repeat itself once, playing the event twice in total. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ repeat: function (delay, repeatCount, callback, callbackContext) { - return this.create(delay, false, repeatCount, callback, callbackContext, Array.prototype.splice.call(arguments, 4)); + return this.create(delay, false, repeatCount, callback, callbackContext, Array.prototype.slice.call(arguments, 4)); }, @@ -53555,22 +49925,22 @@ Phaser.Timer.prototype = { * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#loop - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ loop: function (delay, callback, callbackContext) { - return this.create(delay, true, 0, callback, callbackContext, Array.prototype.splice.call(arguments, 3)); + return this.create(delay, true, 0, callback, callbackContext, Array.prototype.slice.call(arguments, 3)); }, /** * Starts this Timer running. * @method Phaser.Timer#start - * @param {number} [delay=0] - The number of milliseconds that should elapse before the Timer will start. + * @param {integer} [delay=0] - The number of milliseconds, in {@link Phaser.Time game time}, that should elapse before the Timer will start. */ start: function (delay) { @@ -54832,7 +51202,7 @@ Phaser.Animation = function (game, parent, name, frameData, frames, frameRate, l this.onUpdate = null; /** - * @property {Phaser.Signal} onComplete - This event is dispatched when this Animation completes playback. If the animation is set to loop this is never fired, listen for onAnimationLoop instead. + * @property {Phaser.Signal} onComplete - This event is dispatched when this Animation completes playback. If the animation is set to loop this is never fired, listen for onLoop instead. */ this.onComplete = new Phaser.Signal(); @@ -55458,7 +51828,7 @@ Object.defineProperty(Phaser.Animation.prototype, 'enableUpdate', { * @param {number} start - The number to start sequentially counting from. If your frames are named 'explosion_0001' to 'explosion_0034' the start is 1. * @param {number} stop - The number to count to. If your frames are named 'explosion_0001' to 'explosion_0034' the stop value is 34. * @param {string} [suffix=''] - The end of the filename. If the filename was 'explosion_0001-large' the prefix would be '-large'. -* @param {number} [zeroPad=0] - The number of zeroes to pad the min and max values with. If your frames are named 'explosion_0001' to 'explosion_0034' then the zeroPad is 4. +* @param {number} [zeroPad=0] - The number of zeros to pad the min and max values with. If your frames are named 'explosion_0001' to 'explosion_0034' then the zeroPad is 4. * @return {string[]} An array of framenames. */ Phaser.Animation.generateFrameNames = function (prefix, start, stop, suffix, zeroPad) { @@ -56155,6 +52525,62 @@ Phaser.AnimationParser = { }, + /** + * Parse the JSON data and extract the animation frame data from it. + * + * @method Phaser.AnimationParser.JSONDataPyxel + * @param {Phaser.Game} game - A reference to the currently running game. + * @param {object} json - The JSON data from the Texture Atlas. Must be in Pyxel JSON format. + * @return {Phaser.FrameData} A FrameData object containing the parsed frames. + */ + JSONDataPyxel: function (game, json) { + + // Malformed? There are a few keys to check here. + var signature = ['layers', 'tilewidth','tileheight','tileswide', 'tileshigh']; + + signature.forEach( function(key) { + if (!json[key]) + { + console.warn("Phaser.AnimationParser.JSONDataPyxel: Invalid Pyxel Tilemap JSON given, missing '" + key + "' key."); + console.log(json); + return; + } + }); + + // For this purpose, I only care about parsing tilemaps with a single layer. + if(json['layers'].length != 1) { + console.warn("Phaser.AnimationParser.JSONDataPyxel: Too many layers, this parser only supports flat Tilemaps."); + console.log(json); + return; + } + + var data = new Phaser.FrameData(); + + var tileheight = json['tileheight']; + var tilewidth = json['tilewidth']; + + var frames = json['layers'][0]['tiles']; + var newFrame; + + for (var i = 0; i < frames.length; i++) + { + newFrame = data.addFrame(new Phaser.Frame( + i, + frames[i].x, + frames[i].y, + tilewidth, + tileheight, + "frame_" + i // No names are included in pyxel tilemap data. + )); + + // No trim data is included. + newFrame.setTrim(false); + } + + return data; + + }, + /** * Parse the JSON data and extract the animation frame data from it. * @@ -56248,7 +52674,7 @@ Phaser.AnimationParser = { for (var i = 0; i < frames.length; i++) { frame = frames[i].attributes; - + name = frame.name.value; x = parseInt(frame.x.value, 10); y = parseInt(frame.y.value, 10); @@ -56289,12 +52715,12 @@ Phaser.AnimationParser = { /** * Phaser has one single cache in which it stores all assets. -* +* * The cache is split up into sections, such as images, sounds, video, json, etc. All assets are stored using * a unique string-based key as their identifier. Assets stored in different areas of the cache can have the * same key, for example 'playerWalking' could be used as the key for both a sprite sheet and an audio file, * because they are unique data types. -* +* * The cache is automatically populated by the Phaser.Loader. When you use the loader to pull in external assets * such as images they are automatically placed into their respective cache. Most common Game Objects, such as * Sprites and Videos automatically query the cache to extract the assets they need on instantiation. @@ -56722,6 +53148,7 @@ Phaser.Cache.prototype = { * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. * @param {object} data - Extra font data. * @param {object} atlasData - Texture atlas frames data. + * @param {string} [atlasType='xml'] - The format of the texture atlas ( 'json' or 'xml' ). * @param {number} [xSpacing=0] - If you'd like to add additional horizontal spacing between the characters then set the pixel value here. * @param {number} [ySpacing=0] - If you'd like to add additional vertical spacing between the lines then set the pixel value here. */ @@ -56733,7 +53160,10 @@ Phaser.Cache.prototype = { font: null, base: new PIXI.BaseTexture(data) }; - + + if (xSpacing === undefined) { xSpacing = 0; } + if (ySpacing === undefined) { ySpacing = 0; } + if (atlasType === 'json') { obj.font = Phaser.LoaderParser.jsonBitmapFont(atlasData, obj.base, xSpacing, ySpacing); @@ -56887,6 +53317,10 @@ Phaser.Cache.prototype = { { obj.frameData = Phaser.AnimationParser.XMLData(this.game, atlasData, key); } + else if (format === Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL) + { + obj.frameData = Phaser.AnimationParser.JSONDataPyxel(this.game, atlasData, key); + } else { // Let's just work it out from the frames array @@ -57269,7 +53703,7 @@ Phaser.Cache.prototype = { /** * Get an item from a cache based on the given key and property. - * + * * This method is mostly used internally by other Cache methods such as `getImage` but is exposed * publicly for your own use as well. * @@ -57300,16 +53734,16 @@ Phaser.Cache.prototype = { return this._cacheMap[cache][key][property]; } } - + return null; }, /** * Gets a Canvas object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getCanvas @@ -57324,13 +53758,13 @@ Phaser.Cache.prototype = { /** * Gets a Image object from the cache. This returns a DOM Image object, not a Phaser.Image object. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * Only the Image cache is searched, which covers images loaded via Loader.image, Sprite Sheets and Texture Atlases. - * + * * If you need the image used by a bitmap font or similar then please use those respective 'get' methods. * * @method Phaser.Cache#getImage @@ -57367,7 +53801,7 @@ Phaser.Cache.prototype = { /** * Get a single texture frame by key. - * + * * You'd only do this to get the default Frame created for a non-atlas / spritesheet image. * * @method Phaser.Cache#getTextureFrame @@ -57382,9 +53816,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.Sound object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getSound @@ -57399,9 +53833,9 @@ Phaser.Cache.prototype = { /** * Gets a raw Sound data object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getSoundData @@ -57416,9 +53850,9 @@ Phaser.Cache.prototype = { /** * Gets a Text object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getText @@ -57433,11 +53867,11 @@ Phaser.Cache.prototype = { /** * Gets a Physics Data object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * You can get either the entire data set, a single object or a single fixture of an object from it. * * @method Phaser.Cache#getPhysicsData @@ -57495,9 +53929,9 @@ Phaser.Cache.prototype = { /** * Gets a raw Tilemap data object from the cache. This will be in either CSV or JSON format. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getTilemapData @@ -57512,9 +53946,9 @@ Phaser.Cache.prototype = { /** * Gets a binary object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBinary @@ -57529,9 +53963,9 @@ Phaser.Cache.prototype = { /** * Gets a BitmapData object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBitmapData @@ -57546,9 +53980,9 @@ Phaser.Cache.prototype = { /** * Gets a Bitmap Font object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBitmapFont @@ -57563,11 +53997,11 @@ Phaser.Cache.prototype = { /** * Gets a JSON object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * You can either return the object by reference (the default), or return a clone * of it by setting the `clone` argument to `true`. * @@ -57600,9 +54034,9 @@ Phaser.Cache.prototype = { /** * Gets an XML object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getXML @@ -57617,9 +54051,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.Video object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getVideo @@ -57634,9 +54068,9 @@ Phaser.Cache.prototype = { /** * Gets a fragment shader object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getShader @@ -57651,9 +54085,9 @@ Phaser.Cache.prototype = { /** * Gets a RenderTexture object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getRenderTexture @@ -57727,9 +54161,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.FrameData object from the Image Cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getFrameData @@ -57863,7 +54297,7 @@ Phaser.Cache.prototype = { /** * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * + * * If the texture isn't found in the cache, then it searches the Phaser Image Cache. * * @method Phaser.Cache#getPixiBaseTexture @@ -57967,7 +54401,7 @@ Phaser.Cache.prototype = { /** * Removes an image from the cache. - * + * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere @@ -58378,18 +54812,18 @@ Phaser.Loader = function (game) { /** * The value of `path`, if set, is placed before any _relative_ file path given. For example: - * + * * `load.path = "images/sprites/"; * load.image("ball", "ball.png"); * load.image("tree", "level1/oaktree.png"); * load.image("boom", "http://server.com/explode.png");` * - * Would load the `ball` file from `images/sprites/ball.png` and the tree from - * `images/sprites/level1/oaktree.png` but the file `boom` would load from the URL + * Would load the `ball` file from `images/sprites/ball.png` and the tree from + * `images/sprites/level1/oaktree.png` but the file `boom` would load from the URL * given as it's an absolute URL. * * Please note that the path is added before the filename but *after* the baseURL (if set.) - * + * * The string _must_ end with a "/". * * @property {string} path @@ -58440,11 +54874,11 @@ Phaser.Loader = function (game) { * progress, file key, success?, total loaded files, total files * * Where progress is a number between 1 and 100 (inclusive) representing the percentage of the load. - * + * * @property {Phaser.Signal} onFileComplete */ this.onFileComplete = new Phaser.Signal(); - + /** * This event is dispatched when a file (or pack) errors as a result of the load request. * @@ -58551,7 +54985,7 @@ Phaser.Loader = function (game) { * @private */ this._totalFileCount = 0; - + /** * Total packs loaded - adjusted just prior to `onPackComplete`. * @property {integer} _loadedPackCount @@ -58598,6 +55032,12 @@ Phaser.Loader.PHYSICS_LIME_CORONA_JSON = 3; */ Phaser.Loader.PHYSICS_PHASER_JSON = 4; +/** +* @constant +* @type {number} +*/ +Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL = 5; + Phaser.Loader.prototype = { /** @@ -58786,14 +55226,14 @@ Phaser.Loader.prototype = { * @param {string} key - The unique Cache ID key of this resource. * @param {string} [url] - The URL the asset will be loaded from. * @param {object} [properties=(none)] - Any additional properties needed to load the file. These are added directly to the added file object and overwrite any defaults. - * @param {boolean} [overwrite=false] - If true then this will overwrite a file asset of the same type/key. Otherwise it will will only add a new asset. If overwrite is true, and the asset is already being loaded (or has been loaded), then it is appended instead. + * @param {boolean} [overwrite=false] - If true then this will overwrite a file asset of the same type/key. Otherwise it will only add a new asset. If overwrite is true, and the asset is already being loaded (or has been loaded), then it is appended instead. * @param {string} [extension] - If no URL is given the Loader will sometimes auto-generate the URL based on the key, using this as the extension. * @return {Phaser.Loader} This instance of the Phaser Loader. */ addToFileList: function (type, key, url, properties, overwrite, extension) { if (overwrite === undefined) { overwrite = false; } - + if (key === undefined || key === '') { console.warn("Phaser.Loader: Invalid or no key given of type " + type); @@ -58834,7 +55274,7 @@ Phaser.Loader.prototype = { } var fileIndex = this.getAssetIndex(type, key); - + if (overwrite && fileIndex > -1) { var currentFile = this._fileList[fileIndex]; @@ -58882,10 +55322,10 @@ Phaser.Loader.prototype = { * Please see the example 'loader/asset pack' in the Phaser Examples repository. * * Packs are always put before the first non-pack file that is not loaded / loading. - * + * * This means that all packs added before any loading has started are added to the front * of the file queue, in the order added. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * The URL of the packfile can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. @@ -58930,13 +55370,13 @@ Phaser.Loader.prototype = { { data = JSON.parse(data); } - + pack.data = data || {}; // Already consider 'loaded' pack.loaded = true; } - + // Add before first non-pack/no-loaded ~ last pack from start prior to loading // (Read one past for splice-to-end) for (var i = 0; i < this._fileList.length + 1; i++) @@ -58957,17 +55397,17 @@ Phaser.Loader.prototype = { /** * Adds an Image to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * Phaser can load all common image types: png, jpg, gif and any other format the browser can natively handle. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the image via `Cache.getImage(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -58988,17 +55428,17 @@ Phaser.Loader.prototype = { * Adds an array of images to the current load queue. * * It works by passing each element of the array to the Loader.image method. - * + * * The files are **not** loaded immediately after calling this method. The files are added to the queue ready to be loaded when the loader starts. - * + * * Phaser can load all common image types: png, jpg, gif and any other format the browser can natively handle. - * + * * The keys must be unique Strings. They are used to add the files to the Phaser.Cache upon successful load. * * Retrieve the images via `Cache.getImage(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -59031,15 +55471,15 @@ Phaser.Loader.prototype = { /** * Adds a Text file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getText(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.txt". It will always add `.txt` as the extension. * If you do not desire this action then provide a URL. @@ -59058,16 +55498,16 @@ Phaser.Loader.prototype = { /** * Adds a JSON file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getJSON(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.json". It will always add `.json` as the extension. * If you do not desire this action then provide a URL. @@ -59086,15 +55526,15 @@ Phaser.Loader.prototype = { /** * Adds a fragment shader file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getShader(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "blur" * and no URL is given then the Loader will set the URL to be "blur.frag". It will always add `.frag` as the extension. * If you do not desire this action then provide a URL. @@ -59113,15 +55553,15 @@ Phaser.Loader.prototype = { /** * Adds an XML file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getXML(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.xml". It will always add `.xml` as the extension. * If you do not desire this action then provide a URL. @@ -59140,13 +55580,13 @@ Phaser.Loader.prototype = { /** * Adds a JavaScript file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.js". It will always add `.js` as the extension. * If you do not desire this action then provide a URL. @@ -59175,15 +55615,15 @@ Phaser.Loader.prototype = { /** * Adds a binary file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getBinary(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.bin". It will always add `.bin` as the extension. * If you do not desire this action then provide a URL. @@ -59213,22 +55653,22 @@ Phaser.Loader.prototype = { /** * Adds a Sprite Sheet to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. * * To clarify the terminology that Phaser uses: A Sprite Sheet is an image containing frames, usually of an animation, that are all equal - * dimensions and often in sequence. For example if the frame size is 32x32 then every frame in the sprite sheet will be that size. + * dimensions and often in sequence. For example if the frame size is 32x32 then every frame in the sprite sheet will be that size. * Sometimes (outside of Phaser) the term "sprite sheet" is used to refer to a texture atlas. * A Texture Atlas works by packing together images as best it can, using whatever frame sizes it likes, often with cropping and trimming * the frames in the process. Software such as Texture Packer, Flash CC or Shoebox all generate texture atlases, not sprite sheets. * If you've got an atlas then use `Loader.atlas` instead. - * + * * The key must be a unique String. It is used to add the image to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getImage(key)`. Sprite sheets, being image based, live in the same Cache as all other Images. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -59255,13 +55695,13 @@ Phaser.Loader.prototype = { /** * Adds an audio file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getSound(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * Mobile warning: There are some mobile devices (certain iPad 2 and iPad Mini revisions) that cannot play 48000 Hz audio. @@ -59298,17 +55738,17 @@ Phaser.Loader.prototype = { /** * Adds an audio sprite file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Audio Sprites are a combination of audio files and a JSON configuration. - * + * * The JSON follows the format of that created by https://github.com/tonistiigi/audiosprite - * + * * Retrieve the file via `Cache.getSoundData(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * @method Phaser.Loader#audiosprite @@ -59358,13 +55798,13 @@ Phaser.Loader.prototype = { /** * Adds a video file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getVideo(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * You don't need to preload a video in order to play it in your game. See `Video.createVideoFromURL` for details. @@ -59416,20 +55856,20 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `data` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If a URL is provided the file is **not** loaded immediately after calling this method, but is added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getTilemapData(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified and no data is given then the Loader will take the key and create a filename from that. * For example if the key is "level1" and no URL or data is given then the Loader will set the URL to be "level1.json". * If you set the format to be Tilemap.CSV it will set the URL to be "level1.csv" instead. - * + * * If you do not desire this action then provide a URL or data object. * * @method Phaser.Loader#tilemap @@ -59491,24 +55931,24 @@ Phaser.Loader.prototype = { * Adds a physics data file to the current load queue. * * The data must be in `Lime + Corona` JSON format. [Physics Editor](https://www.codeandweb.com) by code'n'web exports in this format natively. - * + * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `data` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If a URL is provided the file is **not** loaded immediately after calling this method, but is added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getJSON(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified and no data is given then the Loader will take the key and create a filename from that. * For example if the key is "alien" and no URL or data is given then the Loader will set the URL to be "alien.json". * It will always use `.json` as the extension. - * + * * If you do not desire this action then provide a URL or data object. * * @method Phaser.Loader#physics @@ -59550,7 +55990,7 @@ Phaser.Loader.prototype = { /** * Adds Bitmap Font files to the current load queue. - * + * * To create the Bitmap Font files you can use: * * BMFont (Windows, free): http://www.angelcode.com/products/bmfont/ @@ -59560,27 +56000,27 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to an xml file. * Or you can pass in an XML object or String via the `xmlData` parameter. * If you pass a String the data is automatically run through `Loader.parseXML` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getBitmapFont(key)`. XML files are automatically parsed upon load. * If you need to control when the XML is parsed then use `Loader.text` instead and parse the XML file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "megaFont" and textureURL is null then the Loader will set the URL to be "megaFont.png". - * The same is true for the xmlURL. If xmlURL isn't specified and no xmlData has been provided then the Loader will - * set the xmlURL to be the key. For example if the key is "megaFont" the xmlURL will be set to "megaFont.xml". - * + * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will + * set the atlasURL to be the key. For example if the key is "megaFont" the atlasURL will be set to "megaFont.xml". + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#bitmapFont * @param {string} key - Unique asset key of the bitmap font. * @param {string} textureURL - URL of the Bitmap Font texture file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "megaFont" then the URL will be "megaFont.png". - * @param {string} atlasURL - URL of the Bitmap Font atlas file (xml/json). + * @param {string} atlasURL - URL of the Bitmap Font atlas file (xml/json). If undefined or `null` AND `atlasData` is null, the url will be set to `.xml`, i.e. if `key` was "megaFont" then the URL will be "megaFont.xml". * @param {object} atlasData - An optional Bitmap Font atlas in string form (stringified xml/json). * @param {number} [xSpacing=0] - If you'd like to add additional horizontal spacing between the characters then set the pixel value here. * @param {number} [ySpacing=0] - If you'd like to add additional vertical spacing between the lines then set the pixel value here. @@ -59595,6 +56035,12 @@ Phaser.Loader.prototype = { if (atlasURL === undefined) { atlasURL = null; } if (atlasData === undefined) { atlasData = null; } + + if (atlasURL === null && atlasData === null) + { + atlasURL = key + '.xml'; + } + if (xSpacing === undefined) { xSpacing = 0; } if (ySpacing === undefined) { ySpacing = 0; } @@ -59630,39 +56076,40 @@ Phaser.Loader.prototype = { } return this; + }, /** * Adds a Texture Atlas file to the current load queue. * * Unlike `Loader.atlasJSONHash` this call expects the atlas data to be in a JSON Array format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) * [Shoebox](http://renderhjs.net/shoebox/) - * + * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasJSONArray @@ -59682,33 +56129,33 @@ Phaser.Loader.prototype = { * Adds a Texture Atlas file to the current load queue. * * Unlike `Loader.atlas` this call expects the atlas data to be in a JSON Hash format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) * [Shoebox](http://renderhjs.net/shoebox/) - * + * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasJSONHash @@ -59728,7 +56175,7 @@ Phaser.Loader.prototype = { * Adds a Texture Atlas file to the current load queue. * * This call expects the atlas data to be in the Starling XML data format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) @@ -59736,25 +56183,25 @@ Phaser.Loader.prototype = { * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. - * + * * You can choose to either load the data externally, by providing a URL to an xml file. * Or you can pass in an XML object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `Loader.parseXML` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. XML files are automatically parsed upon load. * If you need to control when the XML is parsed then use `Loader.text` instead and parse the XML file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.xml". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasXML @@ -59792,21 +56239,21 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlas @@ -59912,7 +56359,7 @@ Phaser.Loader.prototype = { /** * Add a synchronization point to a specific file/asset in the load queue. * - * This has no effect on already loaded assets. + * This has no effect on already loaded assets. * * @method Phaser.Loader#addSyncPoint * @param {string} type - The type of resource to turn into a sync point (image, audio, xml, etc). @@ -60016,7 +56463,7 @@ Phaser.Loader.prototype = { for (var i = 0; i < this._flightQueue.length; i++) { var file = this._flightQueue[i]; - + if (file.loaded || file.error) { this._flightQueue.splice(i, 1); @@ -60096,7 +56543,7 @@ Phaser.Loader.prototype = { this._flightQueue.push(file); file.loading = true; this.onFileStart.dispatch(this.progress, file.key, file.url); - + this.loadFile(file); } } @@ -60299,7 +56746,8 @@ Phaser.Loader.prototype = { /** * Transforms the asset URL. - * The default implementation prepends the baseURL if the url doesn't being with http or // + * + * The default implementation prepends the baseURL if the url doesn't begin with http or // * * @method Phaser.Loader#transformUrl * @protected @@ -60314,7 +56762,7 @@ Phaser.Loader.prototype = { return false; } - if (url.substr(0, 4) === 'http' || url.substr(0, 2) === '//') + if (url.match(/^(?:blob:|data:|http:\/\/|https:\/\/|\/\/)/)) { return url; } @@ -60446,7 +56894,7 @@ Phaser.Loader.prototype = { { file.data.crossOrigin = this.crossOrigin; } - + file.data.onload = function () { if (file.data.onload) { @@ -60466,7 +56914,7 @@ Phaser.Loader.prototype = { }; file.data.src = this.transformUrl(file.url, file); - + // Image is immediately-available/cached if (file.data.complete && file.data.width && file.data.height) { @@ -60489,7 +56937,7 @@ Phaser.Loader.prototype = { file.data.name = file.key; file.data.controls = false; file.data.autoplay = false; - + var videoLoadEvent = function () { file.data.removeEventListener(file.loadEvent, videoLoadEvent, false); @@ -60505,7 +56953,7 @@ Phaser.Loader.prototype = { file.data.canplay = false; _this.fileError(file); }; - + file.data.addEventListener(file.loadEvent, videoLoadEvent, false); file.data.src = this.transformUrl(file.url, file); @@ -60535,7 +56983,7 @@ Phaser.Loader.prototype = { { file.data = new Audio(); file.data.name = file.key; - + var playThroughEvent = function () { file.data.removeEventListener('canplaythrough', playThroughEvent, false); file.data.onerror = null; @@ -60643,7 +57091,7 @@ Phaser.Loader.prototype = { /** * Starts the xhr loader - using XDomainRequest. * This should _only_ be used with IE 9. Phaser does not support IE 8 and XDR is deprecated in IE 10. - * + * * This is designed specifically to use with asset file processing. * * @method Phaser.Loader#xhrLoad @@ -60864,7 +57312,7 @@ Phaser.Loader.prototype = { switch (file.type) { case 'packfile': - + // Pack data must never be false-ish after it is fetched without error var data = JSON.parse(xhr.responseText); file.data = data || {}; @@ -60891,7 +57339,7 @@ Phaser.Loader.prototype = { // Load the JSON or XML before carrying on with the next file loadNext = false; - if (file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_HASH) + if (file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_HASH || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL) { this.xhrLoad(file, this.transformUrl(file.atlasURL, file), 'text', this.jsonLoadComplete); } @@ -60953,7 +57401,7 @@ Phaser.Loader.prototype = { throw new Error("Phaser.Loader. Unable to parse video file as Blob: " + file.key); } } - + this.cache.addVideo(file.key, file.url, file.data, file.asBlob); break; @@ -61973,6 +58421,7 @@ Phaser.Sound.prototype = { */ onEndedHandler: function () { + this._sound.onended = null; this.isPlaying = false; this.stop(); @@ -62994,7 +59443,15 @@ Phaser.SoundManager.prototype = { */ setTouchLock: function () { - this.game.input.touch.addTouchLockCallback(this.unlock, this); + if (this.game.device.iOSVersion > 8) + { + this.game.input.touch.addTouchLockCallback(this.unlock, this, true); + } + else + { + this.game.input.touch.addTouchLockCallback(this.unlock, this); + } + this.touchLocked = true; }, @@ -63555,6 +60012,2379 @@ Object.defineProperty(Phaser.SoundManager.prototype, "volume", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* @classdesc +* The ScaleManager object handles the the scaling, resizing, and alignment of the +* Game size and the game Display canvas. +* +* The Game size is the logical size of the game; the Display canvas has size as an HTML element. +* +* The calculations of these are heavily influenced by the bounding Parent size which is the computed +* dimensions of the Display canvas's Parent container/element - the _effective CSS rules of the +* canvas's Parent element play an important role_ in the operation of the ScaleManager. +* +* The Display canvas - or Game size, depending {@link #scaleMode} - is updated to best utilize the Parent size. +* When in Fullscreen mode or with {@link #parentIsWindow} the Parent size is that of the visual viewport (see {@link Phaser.ScaleManager#getParentBounds getParentBounds}). +* +* Parent and Display canvas containment guidelines: +* +* - Style the Parent element (of the game canvas) to control the Parent size and +* thus the Display canvas's size and layout. +* +* - The Parent element's CSS styles should _effectively_ apply maximum (and minimum) bounding behavior. +* +* - The Parent element should _not_ apply a padding as this is not accounted for. +* If a padding is required apply it to the Parent's parent or apply a margin to the Parent. +* If you need to add a border, margin or any other CSS around your game container, then use a parent element and +* apply the CSS to this instead, otherwise you'll be constantly resizing the shape of the game container. +* +* - The Display canvas layout CSS styles (i.e. margins, size) should not be altered/specified as +* they may be updated by the ScaleManager. +* +* @description +* Create a new ScaleManager object - this is done automatically by {@link Phaser.Game} +* +* The `width` and `height` constructor parameters can either be a number which represents pixels or a string that represents a percentage: e.g. `800` (for 800 pixels) or `"80%"` for 80%. +* +* @class +* @param {Phaser.Game} game - A reference to the currently running game. +* @param {number|string} width - The width of the game. See above. +* @param {number|string} height - The height of the game. See above. +*/ +Phaser.ScaleManager = function (game, width, height) { + + /** + * A reference to the currently running game. + * @property {Phaser.Game} game + * @protected + * @readonly + */ + this.game = game; + + /** + * Provides access to some cross-device DOM functions. + * @property {Phaser.DOM} dom + * @protected + * @readonly + */ + this.dom = Phaser.DOM; + + /** + * _EXPERIMENTAL:_ A responsive grid on which you can align game objects. + * @property {Phaser.FlexGrid} grid + * @public + */ + this.grid = null; + + /** + * Target width (in pixels) of the Display canvas. + * @property {number} width + * @readonly + */ + this.width = 0; + + /** + * Target height (in pixels) of the Display canvas. + * @property {number} height + * @readonly + */ + this.height = 0; + + /** + * Minimum width the canvas should be scaled to (in pixels). + * Change with {@link #setMinMax}. + * @property {?number} minWidth + * @readonly + * @protected + */ + this.minWidth = null; + + /** + * Maximum width the canvas should be scaled to (in pixels). + * If null it will scale to whatever width the browser can handle. + * Change with {@link #setMinMax}. + * @property {?number} maxWidth + * @readonly + * @protected + */ + this.maxWidth = null; + + /** + * Minimum height the canvas should be scaled to (in pixels). + * Change with {@link #setMinMax}. + * @property {?number} minHeight + * @readonly + * @protected + */ + this.minHeight = null; + + /** + * Maximum height the canvas should be scaled to (in pixels). + * If null it will scale to whatever height the browser can handle. + * Change with {@link #setMinMax}. + * @property {?number} maxHeight + * @readonly + * @protected + */ + this.maxHeight = null; + + /** + * The offset coordinates of the Display canvas from the top-left of the browser window. + * The is used internally by Phaser.Pointer (for Input) and possibly other types. + * @property {Phaser.Point} offset + * @readonly + * @protected + */ + this.offset = new Phaser.Point(); + + /** + * If true, the game should only run in a landscape orientation. + * Change with {@link #forceOrientation}. + * @property {boolean} forceLandscape + * @readonly + * @default + * @protected + */ + this.forceLandscape = false; + + /** + * If true, the game should only run in a portrait + * Change with {@link #forceOrientation}. + * @property {boolean} forcePortrait + * @readonly + * @default + * @protected + */ + this.forcePortrait = false; + + /** + * True if {@link #forceLandscape} or {@link #forcePortrait} are set and do not agree with the browser orientation. + * + * This value is not updated immediately. + * + * @property {boolean} incorrectOrientation + * @readonly + * @protected + */ + this.incorrectOrientation = false; + + /** + * See {@link #pageAlignHorizontally}. + * @property {boolean} _pageAlignHorizontally + * @private + */ + this._pageAlignHorizontally = false; + + /** + * See {@link #pageAlignVertically}. + * @property {boolean} _pageAlignVertically + * @private + */ + this._pageAlignVertically = false; + + /** + * This signal is dispatched when the orientation changes _or_ the validity of the current orientation changes. + * + * The signal is supplied with the following arguments: + * - `scale` - the ScaleManager object + * - `prevOrientation`, a string - The previous orientation as per {@link Phaser.ScaleManager#screenOrientation screenOrientation}. + * - `wasIncorrect`, a boolean - True if the previous orientation was last determined to be incorrect. + * + * Access the current orientation and validity with `scale.screenOrientation` and `scale.incorrectOrientation`. + * Thus the following tests can be done: + * + * // The orientation itself changed: + * scale.screenOrientation !== prevOrientation + * // The orientation just became incorrect: + * scale.incorrectOrientation && !wasIncorrect + * + * It is possible that this signal is triggered after {@link #forceOrientation} so the orientation + * correctness changes even if the orientation itself does not change. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} onOrientationChange + * @public + */ + this.onOrientationChange = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser enters an incorrect orientation, as defined by {@link #forceOrientation}. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} enterIncorrectOrientation + * @public + */ + this.enterIncorrectOrientation = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser leaves an incorrect orientation, as defined by {@link #forceOrientation}. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} leaveIncorrectOrientation + * @public + */ + this.leaveIncorrectOrientation = new Phaser.Signal(); + + /** + * If specified, this is the DOM element on which the Fullscreen API enter request will be invoked. + * The target element must have the correct CSS styling and contain the Display canvas. + * + * The elements style will be modified (ie. the width and height might be set to 100%) + * but it will not be added to, removed from, or repositioned within the DOM. + * An attempt is made to restore relevant style changes when fullscreen mode is left. + * + * For pre-2.2.0 behavior set `game.scale.fullScreenTarget = game.canvas`. + * + * @property {?DOMElement} fullScreenTarget + * @default + */ + this.fullScreenTarget = null; + + /** + * The fullscreen target, as created by {@link #createFullScreenTarget}. + * This is not set if {@link #fullScreenTarget} is used and is cleared when fullscreen mode ends. + * @property {?DOMElement} _createdFullScreenTarget + * @private + */ + this._createdFullScreenTarget = null; + + /** + * This signal is dispatched when fullscreen mode is ready to be initialized but + * before the fullscreen request. + * + * The signal is passed two arguments: `scale` (the ScaleManager), and an object in the form `{targetElement: DOMElement}`. + * + * The `targetElement` is the {@link #fullScreenTarget} element, + * if such is assigned, or a new element created by {@link #createFullScreenTarget}. + * + * Custom CSS styling or resets can be applied to `targetElement` as required. + * + * If `targetElement` is _not_ the same element as {@link #fullScreenTarget}: + * - After initialization the Display canvas is moved onto the `targetElement` for + * the duration of the fullscreen mode, and restored to it's original DOM location when fullscreen is exited. + * - The `targetElement` is moved/re-parented within the DOM and may have its CSS styles updated. + * + * The behavior of a pre-assigned target element is covered in {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget}. + * + * @property {Phaser.Signal} onFullScreenInit + * @public + */ + this.onFullScreenInit = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser enters or leaves fullscreen mode, if supported. + * + * The signal is supplied with a single argument: `scale` (the ScaleManager). Use `scale.isFullScreen` to determine + * if currently running in Fullscreen mode. + * + * @property {Phaser.Signal} onFullScreenChange + * @public + */ + this.onFullScreenChange = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser fails to enter fullscreen mode; + * or if the device does not support fullscreen mode and `startFullScreen` is invoked. + * + * The signal is supplied with a single argument: `scale` (the ScaleManager). + * + * @property {Phaser.Signal} onFullScreenError + * @public + */ + this.onFullScreenError = new Phaser.Signal(); + + /** + * The _last known_ orientation of the screen, as defined in the Window Screen Web API. + * See {@link Phaser.DOM.getScreenOrientation} for possible values. + * + * @property {string} screenOrientation + * @readonly + * @public + */ + this.screenOrientation = this.dom.getScreenOrientation(); + + /** + * The _current_ scale factor based on the game dimensions vs. the scaled dimensions. + * @property {Phaser.Point} scaleFactor + * @readonly + */ + this.scaleFactor = new Phaser.Point(1, 1); + + /** + * The _current_ inversed scale factor. The displayed dimensions divided by the game dimensions. + * @property {Phaser.Point} scaleFactorInversed + * @readonly + * @protected + */ + this.scaleFactorInversed = new Phaser.Point(1, 1); + + /** + * The Display canvas is aligned by adjusting the margins; the last margins are stored here. + * + * @property {Bounds-like} margin + * @readonly + * @protected + */ + this.margin = {left: 0, top: 0, right: 0, bottom: 0, x: 0, y: 0}; + + /** + * The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height. + * @property {Phaser.Rectangle} bounds + * @readonly + */ + this.bounds = new Phaser.Rectangle(); + + /** + * The aspect ratio of the scaled Display canvas. + * @property {number} aspectRatio + * @readonly + */ + this.aspectRatio = 0; + + /** + * The aspect ratio of the original game dimensions. + * @property {number} sourceAspectRatio + * @readonly + */ + this.sourceAspectRatio = 0; + + /** + * The native browser events from Fullscreen API changes. + * @property {any} event + * @readonly + * @private + */ + this.event = null; + + /** + * The edges on which to constrain the game Display/canvas in _addition_ to the restrictions of the parent container. + * + * The properties are strings and can be '', 'visual', 'layout', or 'layout-soft'. + * - If 'visual', the edge will be constrained to the Window / displayed screen area + * - If 'layout', the edge will be constrained to the CSS Layout bounds + * - An invalid value is treated as 'visual' + * + * @member + * @property {string} bottom + * @property {string} right + * @default + */ + this.windowConstraints = { + right: 'layout', + bottom: '' + }; + + /** + * Various compatibility settings. + * A value of "(auto)" indicates the setting is configured based on device and runtime information. + * + * A {@link #refresh} may need to be performed after making changes. + * + * @protected + * + * @property {boolean} [supportsFullscreen=(auto)] - True only if fullscreen support will be used. (Changing to fullscreen still might not work.) + * + * @property {boolean} [orientationFallback=(auto)] - See {@link Phaser.DOM.getScreenOrientation}. + * + * @property {boolean} [noMargins=false] - If true then the Display canvas's margins will not be updated anymore: existing margins must be manually cleared. Disabling margins prevents automatic canvas alignment/centering, possibly in fullscreen. + * + * @property {?Phaser.Point} [scrollTo=(auto)] - If specified the window will be scrolled to this position on every refresh. + * + * @property {boolean} [forceMinimumDocumentHeight=false] - If enabled the document elements minimum height is explicitly set on updates. + * The height set varies by device and may either be the height of the window or the viewport. + * + * @property {boolean} [canExpandParent=true] - If enabled then SHOW_ALL and USER_SCALE modes can try and expand the parent element. It may be necessary for the parent element to impose CSS width/height restrictions. + * + * @property {string} [clickTrampoline=(auto)] - On certain browsers (eg. IE) FullScreen events need to be triggered via 'click' events. + * A value of 'when-not-mouse' uses a click trampoline when a pointer that is not the primary mouse is used. + * Any other string value (including the empty string) prevents using click trampolines. + * For more details on click trampolines see {@link Phaser.Pointer#addClickTrampoline}. + */ + this.compatibility = { + supportsFullScreen: false, + orientationFallback: null, + noMargins: false, + scrollTo: null, + forceMinimumDocumentHeight: false, + canExpandParent: true, + clickTrampoline: '' + }; + + /** + * Scale mode to be used when not in fullscreen. + * @property {number} _scaleMode + * @private + */ + this._scaleMode = Phaser.ScaleManager.NO_SCALE; + + /* + * Scale mode to be used in fullscreen. + * @property {number} _fullScreenScaleMode + * @private + */ + this._fullScreenScaleMode = Phaser.ScaleManager.NO_SCALE; + + /** + * If the parent container of the Game canvas is the browser window itself (i.e. document.body), + * rather than another div, this should set to `true`. + * + * The {@link #parentNode} property is generally ignored while this is in effect. + * + * @property {boolean} parentIsWindow + */ + this.parentIsWindow = false; + + /** + * The _original_ DOM element for the parent of the Display canvas. + * This may be different in fullscreen - see {@link #createFullScreenTarget}. + * + * This should only be changed after moving the Game canvas to a different DOM parent. + * + * @property {?DOMElement} parentNode + */ + this.parentNode = null; + + /** + * The scale of the game in relation to its parent container. + * @property {Phaser.Point} parentScaleFactor + * @readonly + */ + this.parentScaleFactor = new Phaser.Point(1, 1); + + /** + * The maximum time (in ms) between dimension update checks for the Canvas's parent element (or window). + * Update checks normally happen quicker in response to other events. + * + * @property {integer} trackParentInterval + * @default + * @protected + * @see {@link Phaser.ScaleManager#refresh refresh} + */ + this.trackParentInterval = 2000; + + /** + * This signal is dispatched when the size of the Display canvas changes _or_ the size of the Game changes. + * When invoked this is done _after_ the Canvas size/position have been updated. + * + * This signal is _only_ called when a change occurs and a reflow may be required. + * For example, if the canvas does not change sizes because of CSS settings (such as min-width) + * then this signal will _not_ be triggered. + * + * Use this to handle responsive game layout options. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} onSizeChange + * @todo Formalize the arguments, if any, supplied to this signal. + */ + this.onSizeChange = new Phaser.Signal(); + + /** + * The callback that will be called each the parent container resizes. + * @property {function} onResize + * @private + */ + this.onResize = null; + + /** + * The context in which the {@link #onResize} callback will be called. + * @property {object} onResizeContext + * @private + */ + this.onResizeContext = null; + + /** + * @property {integer} _pendingScaleMode - Used to retain the scale mode if set from config before Boot. + * @private + */ + this._pendingScaleMode = null; + + /** + * Information saved when fullscreen mode is started. + * @property {?object} _fullScreenRestore + * @private + */ + this._fullScreenRestore = null; + + /** + * The _actual_ game dimensions, as initially set or set by {@link #setGameSize}. + * @property {Phaser.Rectangle} _gameSize + * @private + */ + this._gameSize = new Phaser.Rectangle(); + + /** + * The user-supplied scale factor, used with the USER_SCALE scaling mode. + * @property {Phaser.Point} _userScaleFactor + * @private + */ + this._userScaleFactor = new Phaser.Point(1, 1); + + /** + * The user-supplied scale trim, used with the USER_SCALE scaling mode. + * @property {Phaser.Point} _userScaleTrim + * @private + */ + this._userScaleTrim = new Phaser.Point(0, 0); + + /** + * The last time the bounds were checked in `preUpdate`. + * @property {number} _lastUpdate + * @private + */ + this._lastUpdate = 0; + + /** + * Size checks updates are delayed according to the throttle. + * The throttle increases to `trackParentInterval` over time and is used to more + * rapidly detect changes in certain browsers (eg. IE) while providing back-off safety. + * @property {integer} _updateThrottle + * @private + */ + this._updateThrottle = 0; + + /** + * The minimum throttle allowed until it has slowed down sufficiently. + * @property {integer} _updateThrottleReset + * @private + */ + this._updateThrottleReset = 100; + + /** + * The cached result of the parent (possibly window) bounds; used to invalidate sizing. + * @property {Phaser.Rectangle} _parentBounds + * @private + */ + this._parentBounds = new Phaser.Rectangle(); + + /** + * Temporary bounds used for internal work to cut down on new objects created. + * @property {Phaser.Rectangle} _parentBounds + * @private + */ + this._tempBounds = new Phaser.Rectangle(); + + /** + * The Canvas size at which the last onSizeChange signal was triggered. + * @property {Phaser.Rectangle} _lastReportedCanvasSize + * @private + */ + this._lastReportedCanvasSize = new Phaser.Rectangle(); + + /** + * The Game size at which the last onSizeChange signal was triggered. + * @property {Phaser.Rectangle} _lastReportedGameSize + * @private + */ + this._lastReportedGameSize = new Phaser.Rectangle(); + + /** + * @property {boolean} _booted - ScaleManager booted state. + * @private + */ + this._booted = false; + + if (game.config) + { + this.parseConfig(game.config); + } + + this.setupScale(width, height); + +}; + +/** +* A scale mode that stretches content to fill all available space - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.EXACT_FIT = 0; + +/** +* A scale mode that prevents any scaling - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.NO_SCALE = 1; + +/** +* A scale mode that shows the entire game while maintaining proportions - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.SHOW_ALL = 2; + +/** +* A scale mode that causes the Game size to change - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.RESIZE = 3; + +/** +* A scale mode that allows a custom scale factor - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.USER_SCALE = 4; + +Phaser.ScaleManager.prototype = { + + /** + * Start the ScaleManager. + * + * @method Phaser.ScaleManager#boot + * @protected + */ + boot: function () { + + // Configure device-dependent compatibility + + var compat = this.compatibility; + + compat.supportsFullScreen = this.game.device.fullscreen && !this.game.device.cocoonJS; + + // We can't do anything about the status bars in iPads, web apps or desktops + if (!this.game.device.iPad && !this.game.device.webApp && !this.game.device.desktop) + { + if (this.game.device.android && !this.game.device.chrome) + { + compat.scrollTo = new Phaser.Point(0, 1); + } + else + { + compat.scrollTo = new Phaser.Point(0, 0); + } + } + + if (this.game.device.desktop) + { + compat.orientationFallback = 'screen'; + compat.clickTrampoline = 'when-not-mouse'; + } + else + { + compat.orientationFallback = ''; + compat.clickTrampoline = ''; + } + + // Configure event listeners + + var _this = this; + + this._orientationChange = function(event) { + return _this.orientationChange(event); + }; + + this._windowResize = function(event) { + return _this.windowResize(event); + }; + + // This does not appear to be on the standards track + window.addEventListener('orientationchange', this._orientationChange, false); + window.addEventListener('resize', this._windowResize, false); + + if (this.compatibility.supportsFullScreen) + { + this._fullScreenChange = function(event) { + return _this.fullScreenChange(event); + }; + + this._fullScreenError = function(event) { + return _this.fullScreenError(event); + }; + + document.addEventListener('webkitfullscreenchange', this._fullScreenChange, false); + document.addEventListener('mozfullscreenchange', this._fullScreenChange, false); + document.addEventListener('MSFullscreenChange', this._fullScreenChange, false); + document.addEventListener('fullscreenchange', this._fullScreenChange, false); + + document.addEventListener('webkitfullscreenerror', this._fullScreenError, false); + document.addEventListener('mozfullscreenerror', this._fullScreenError, false); + document.addEventListener('MSFullscreenError', this._fullScreenError, false); + document.addEventListener('fullscreenerror', this._fullScreenError, false); + } + + this.game.onResume.add(this._gameResumed, this); + + // Initialize core bounds + + this.dom.getOffset(this.game.canvas, this.offset); + + this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); + + this.setGameSize(this.game.width, this.game.height); + + // Don't use updateOrientationState so events are not fired + this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); + + if (Phaser.FlexGrid) + { + this.grid = new Phaser.FlexGrid(this, this.width, this.height); + } + + this._booted = true; + + if (this._pendingScaleMode) + { + this.scaleMode = this._pendingScaleMode; + this._pendingScaleMode = null; + } + + }, + + /** + * Load configuration settings. + * + * @method Phaser.ScaleManager#parseConfig + * @protected + * @param {object} config - The game configuration object. + */ + parseConfig: function (config) { + + if (config['scaleMode']) + { + if (this._booted) + { + this.scaleMode = config['scaleMode']; + } + else + { + this._pendingScaleMode = config['scaleMode']; + } + } + + if (config['fullScreenScaleMode']) + { + this.fullScreenScaleMode = config['fullScreenScaleMode']; + } + + if (config['fullScreenTarget']) + { + this.fullScreenTarget = config['fullScreenTarget']; + } + + }, + + /** + * Calculates and sets the game dimensions based on the given width and height. + * + * This should _not_ be called when in fullscreen mode. + * + * @method Phaser.ScaleManager#setupScale + * @protected + * @param {number|string} width - The width of the game. + * @param {number|string} height - The height of the game. + */ + setupScale: function (width, height) { + + var target; + var rect = new Phaser.Rectangle(); + + if (this.game.parent !== '') + { + if (typeof this.game.parent === 'string') + { + // hopefully an element ID + target = document.getElementById(this.game.parent); + } + else if (this.game.parent && this.game.parent.nodeType === 1) + { + // quick test for a HTMLelement + target = this.game.parent; + } + } + + // Fallback, covers an invalid ID and a non HTMLelement object + if (!target) + { + // Use the full window + this.parentNode = null; + this.parentIsWindow = true; + + rect.width = this.dom.visualBounds.width; + rect.height = this.dom.visualBounds.height; + + this.offset.set(0, 0); + } + else + { + this.parentNode = target; + this.parentIsWindow = false; + + this.getParentBounds(this._parentBounds); + + rect.width = this._parentBounds.width; + rect.height = this._parentBounds.height; + + this.offset.set(this._parentBounds.x, this._parentBounds.y); + } + + var newWidth = 0; + var newHeight = 0; + + if (typeof width === 'number') + { + newWidth = width; + } + else + { + // Percentage based + this.parentScaleFactor.x = parseInt(width, 10) / 100; + newWidth = rect.width * this.parentScaleFactor.x; + } + + if (typeof height === 'number') + { + newHeight = height; + } + else + { + // Percentage based + this.parentScaleFactor.y = parseInt(height, 10) / 100; + newHeight = rect.height * this.parentScaleFactor.y; + } + + this._gameSize.setTo(0, 0, newWidth, newHeight); + + this.updateDimensions(newWidth, newHeight, false); + + }, + + /** + * Invoked when the game is resumed. + * + * @method Phaser.ScaleManager#_gameResumed + * @private + */ + _gameResumed: function () { + + this.queueUpdate(true); + + }, + + /** + * Set the actual Game size. + * Use this instead of directly changing `game.width` or `game.height`. + * + * The actual physical display (Canvas element size) depends on various settings including + * - Scale mode + * - Scaling factor + * - Size of Canvas's parent element or CSS rules such as min-height/max-height; + * - The size of the Window + * + * @method Phaser.ScaleManager#setGameSize + * @public + * @param {integer} width - _Game width_, in pixels. + * @param {integer} height - _Game height_, in pixels. + */ + setGameSize: function (width, height) { + + this._gameSize.setTo(0, 0, width, height); + + if (this.currentScaleMode !== Phaser.ScaleManager.RESIZE) + { + this.updateDimensions(width, height, true); + } + + this.queueUpdate(true); + + }, + + /** + * Set a User scaling factor used in the USER_SCALE scaling mode. + * + * The target canvas size is computed by: + * + * canvas.width = (game.width * hScale) - hTrim + * canvas.height = (game.height * vScale) - vTrim + * + * This method can be used in the {@link Phaser.ScaleManager#setResizeCallback resize callback}. + * + * @method Phaser.ScaleManager#setUserScale + * @param {number} hScale - Horizontal scaling factor. + * @param {numer} vScale - Vertical scaling factor. + * @param {integer} [hTrim=0] - Horizontal trim, applied after scaling. + * @param {integer} [vTrim=0] - Vertical trim, applied after scaling. + */ + setUserScale: function (hScale, vScale, hTrim, vTrim) { + + this._userScaleFactor.setTo(hScale, vScale); + this._userScaleTrim.setTo(hTrim | 0, vTrim | 0); + this.queueUpdate(true); + + }, + + /** + * Sets the callback that will be invoked before sizing calculations. + * + * This is the appropriate place to call {@link #setUserScale} if needing custom dynamic scaling. + * + * The callback is supplied with two arguments `scale` and `parentBounds` where `scale` is the ScaleManager + * and `parentBounds`, a Phaser.Rectangle, is the size of the Parent element. + * + * This callback + * - May be invoked even though the parent container or canvas sizes have not changed + * - Unlike {@link #onSizeChange}, it runs _before_ the canvas is guaranteed to be updated + * - Will be invoked from `preUpdate`, _even when_ the game is paused + * + * See {@link #onSizeChange} for a better way of reacting to layout updates. + * + * @method Phaser.ScaleManager#setResizeCallback + * @public + * @param {function} callback - The callback that will be called each time a window.resize event happens or if set, the parent container resizes. + * @param {object} context - The context in which the callback will be called. + */ + setResizeCallback: function (callback, context) { + + this.onResize = callback; + this.onResizeContext = context; + + }, + + /** + * Signals a resize - IF the canvas or Game size differs from the last signal. + * + * This also triggers updates on {@link #grid} (FlexGrid) and, if in a RESIZE mode, `game.state` (StateManager). + * + * @method Phaser.ScaleManager#signalSizeChange + * @private + */ + signalSizeChange: function () { + + if (!Phaser.Rectangle.sameDimensions(this, this._lastReportedCanvasSize) || + !Phaser.Rectangle.sameDimensions(this.game, this._lastReportedGameSize)) + { + var width = this.width; + var height = this.height; + + this._lastReportedCanvasSize.setTo(0, 0, width, height); + this._lastReportedGameSize.setTo(0, 0, this.game.width, this.game.height); + + if (this.grid) + { + this.grid.onResize(width, height); + } + + this.onSizeChange.dispatch(this, width, height); + + // Per StateManager#onResizeCallback, it only occurs when in RESIZE mode. + if (this.currentScaleMode === Phaser.ScaleManager.RESIZE) + { + this.game.state.resize(width, height); + this.game.load.resize(width, height); + } + } + + }, + + /** + * Set the min and max dimensions for the Display canvas. + * + * _Note:_ The min/max dimensions are only applied in some cases + * - When the device is not in an incorrect orientation; or + * - The scale mode is EXACT_FIT when not in fullscreen + * + * @method Phaser.ScaleManager#setMinMax + * @public + * @param {number} minWidth - The minimum width the game is allowed to scale down to. + * @param {number} minHeight - The minimum height the game is allowed to scale down to. + * @param {number} [maxWidth] - The maximum width the game is allowed to scale up to; only changed if specified. + * @param {number} [maxHeight] - The maximum height the game is allowed to scale up to; only changed if specified. + * @todo These values are only sometimes honored. + */ + setMinMax: function (minWidth, minHeight, maxWidth, maxHeight) { + + this.minWidth = minWidth; + this.minHeight = minHeight; + + if (typeof maxWidth !== 'undefined') + { + this.maxWidth = maxWidth; + } + + if (typeof maxHeight !== 'undefined') + { + this.maxHeight = maxHeight; + } + + }, + + /** + * The ScaleManager.preUpdate is called automatically by the core Game loop. + * + * @method Phaser.ScaleManager#preUpdate + * @protected + */ + preUpdate: function () { + + if (this.game.time.time < (this._lastUpdate + this._updateThrottle)) + { + return; + } + + var prevThrottle = this._updateThrottle; + this._updateThrottleReset = prevThrottle >= 400 ? 0 : 100; + + this.dom.getOffset(this.game.canvas, this.offset); + + var prevWidth = this._parentBounds.width; + var prevHeight = this._parentBounds.height; + var bounds = this.getParentBounds(this._parentBounds); + + var boundsChanged = bounds.width !== prevWidth || bounds.height !== prevHeight; + + // Always invalidate on a newly detected orientation change + var orientationChanged = this.updateOrientationState(); + + if (boundsChanged || orientationChanged) + { + if (this.onResize) + { + this.onResize.call(this.onResizeContext, this, bounds); + } + + this.updateLayout(); + + this.signalSizeChange(); + } + + // Next throttle, eg. 25, 50, 100, 200.. + var throttle = this._updateThrottle * 2; + + // Don't let an update be too eager about resetting the throttle. + if (this._updateThrottle < prevThrottle) + { + throttle = Math.min(prevThrottle, this._updateThrottleReset); + } + + this._updateThrottle = Phaser.Math.clamp(throttle, 25, this.trackParentInterval); + this._lastUpdate = this.game.time.time; + + }, + + /** + * Update method while paused. + * + * @method Phaser.ScaleManager#pauseUpdate + * @private + */ + pauseUpdate: function () { + + this.preUpdate(); + + // Updates at slowest. + this._updateThrottle = this.trackParentInterval; + + }, + + /** + * Update the dimensions taking the parent scaling factor into account. + * + * @method Phaser.ScaleManager#updateDimensions + * @private + * @param {number} width - The new width of the parent container. + * @param {number} height - The new height of the parent container. + * @param {boolean} resize - True if the renderer should be resized, otherwise false to just update the internal vars. + */ + updateDimensions: function (width, height, resize) { + + this.width = width * this.parentScaleFactor.x; + this.height = height * this.parentScaleFactor.y; + + this.game.width = this.width; + this.game.height = this.height; + + this.sourceAspectRatio = this.width / this.height; + this.updateScalingAndBounds(); + + if (resize) + { + // Resize the renderer (which in turn resizes the Display canvas!) + this.game.renderer.resize(this.width, this.height); + + // The Camera can never be smaller than the Game size + this.game.camera.setSize(this.width, this.height); + + // This should only happen if the world is smaller than the new canvas size + this.game.world.resize(this.width, this.height); + } + + }, + + /** + * Update relevant scaling values based on the ScaleManager dimension and game dimensions, + * which should already be set. This does not change {@link #sourceAspectRatio}. + * + * @method Phaser.ScaleManager#updateScalingAndBounds + * @private + */ + updateScalingAndBounds: function () { + + this.scaleFactor.x = this.game.width / this.width; + this.scaleFactor.y = this.game.height / this.height; + + this.scaleFactorInversed.x = this.width / this.game.width; + this.scaleFactorInversed.y = this.height / this.game.height; + + this.aspectRatio = this.width / this.height; + + // This can be invoked in boot pre-canvas + if (this.game.canvas) + { + this.dom.getOffset(this.game.canvas, this.offset); + } + + this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); + + // Can be invoked in boot pre-input + if (this.game.input && this.game.input.scale) + { + this.game.input.scale.setTo(this.scaleFactor.x, this.scaleFactor.y); + } + + }, + + /** + * Force the game to run in only one orientation. + * + * This enables generation of incorrect orientation signals and affects resizing but does not otherwise rotate or lock the orientation. + * + * Orientation checks are performed via the Screen Orientation API, if available in browser. This means it will check your monitor + * orientation on desktop, or your device orientation on mobile, rather than comparing actual game dimensions. If you need to check the + * viewport dimensions instead and bypass the Screen Orientation API then set: `ScaleManager.compatibility.orientationFallback = 'viewport'` + * + * @method Phaser.ScaleManager#forceOrientation + * @public + * @param {boolean} forceLandscape - true if the game should run in landscape mode only. + * @param {boolean} [forcePortrait=false] - true if the game should run in portrait mode only. + */ + forceOrientation: function (forceLandscape, forcePortrait) { + + if (forcePortrait === undefined) { forcePortrait = false; } + + this.forceLandscape = forceLandscape; + this.forcePortrait = forcePortrait; + + this.queueUpdate(true); + + }, + + /** + * Classify the orientation, per `getScreenOrientation`. + * + * @method Phaser.ScaleManager#classifyOrientation + * @private + * @param {string} orientation - The orientation string, e.g. 'portrait-primary'. + * @return {?string} The classified orientation: 'portrait', 'landscape`, or null. + */ + classifyOrientation: function (orientation) { + + if (orientation === 'portrait-primary' || orientation === 'portrait-secondary') + { + return 'portrait'; + } + else if (orientation === 'landscape-primary' || orientation === 'landscape-secondary') + { + return 'landscape'; + } + else + { + return null; + } + + }, + + /** + * Updates the current orientation and dispatches orientation change events. + * + * @method Phaser.ScaleManager#updateOrientationState + * @private + * @return {boolean} True if the orientation state changed which means a forced update is likely required. + */ + updateOrientationState: function () { + + var previousOrientation = this.screenOrientation; + var previouslyIncorrect = this.incorrectOrientation; + + this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); + + this.incorrectOrientation = (this.forceLandscape && !this.isLandscape) || + (this.forcePortrait && !this.isPortrait); + + var changed = previousOrientation !== this.screenOrientation; + var correctnessChanged = previouslyIncorrect !== this.incorrectOrientation; + + if (correctnessChanged) + { + if (this.incorrectOrientation) + { + this.enterIncorrectOrientation.dispatch(); + } + else + { + this.leaveIncorrectOrientation.dispatch(); + } + } + + if (changed || correctnessChanged) + { + this.onOrientationChange.dispatch(this, previousOrientation, previouslyIncorrect); + } + + return changed || correctnessChanged; + + }, + + /** + * window.orientationchange event handler. + * + * @method Phaser.ScaleManager#orientationChange + * @private + * @param {Event} event - The orientationchange event data. + */ + orientationChange: function (event) { + + this.event = event; + + this.queueUpdate(true); + + }, + + /** + * window.resize event handler. + * + * @method Phaser.ScaleManager#windowResize + * @private + * @param {Event} event - The resize event data. + */ + windowResize: function (event) { + + this.event = event; + + this.queueUpdate(true); + + }, + + /** + * Scroll to the top - in some environments. See `compatibility.scrollTo`. + * + * @method Phaser.ScaleManager#scrollTop + * @private + */ + scrollTop: function () { + + var scrollTo = this.compatibility.scrollTo; + + if (scrollTo) + { + window.scrollTo(scrollTo.x, scrollTo.y); + } + + }, + + /** + * The "refresh" methods informs the ScaleManager that a layout refresh is required. + * + * The ScaleManager automatically queues a layout refresh (eg. updates the Game size or Display canvas layout) + * when the browser is resized, the orientation changes, or when there is a detected change + * of the Parent size. Refreshing is also done automatically when public properties, + * such as {@link #scaleMode}, are updated or state-changing methods are invoked. + * + * The "refresh" method _may_ need to be used in a few (rare) situtations when + * + * - a device change event is not correctly detected; or + * - the Parent size changes (and an immediate reflow is desired); or + * - the ScaleManager state is updated by non-standard means; or + * - certain {@link #compatibility} properties are manually changed. + * + * The queued layout refresh is not immediate but will run promptly in an upcoming `preRender`. + * + * @method Phaser.ScaleManager#refresh + * @public + */ + refresh: function () { + + this.scrollTop(); + this.queueUpdate(true); + + }, + + /** + * Updates the game / canvas position and size. + * + * @method Phaser.ScaleManager#updateLayout + * @private + */ + updateLayout: function () { + + var scaleMode = this.currentScaleMode; + + if (scaleMode === Phaser.ScaleManager.RESIZE) + { + this.reflowGame(); + return; + } + + this.scrollTop(); + + if (this.compatibility.forceMinimumDocumentHeight) + { + // (This came from older code, by why is it here?) + // Set minimum height of content to new window height + document.documentElement.style.minHeight = window.innerHeight + 'px'; + } + + if (this.incorrectOrientation) + { + this.setMaximum(); + } + else + { + if (scaleMode === Phaser.ScaleManager.EXACT_FIT) + { + this.setExactFit(); + } + else if (scaleMode === Phaser.ScaleManager.SHOW_ALL) + { + if (!this.isFullScreen && this.boundingParent && + this.compatibility.canExpandParent) + { + // Try to expand parent out, but choosing maximizing dimensions. + // Then select minimize dimensions which should then honor parent + // maximum bound applications. + this.setShowAll(true); + this.resetCanvas(); + this.setShowAll(); + } + else + { + this.setShowAll(); + } + } + else if (scaleMode === Phaser.ScaleManager.NO_SCALE) + { + this.width = this.game.width; + this.height = this.game.height; + } + else if (scaleMode === Phaser.ScaleManager.USER_SCALE) + { + this.width = (this.game.width * this._userScaleFactor.x) - this._userScaleTrim.x; + this.height = (this.game.height * this._userScaleFactor.y) - this._userScaleTrim.y; + } + } + + if (!this.compatibility.canExpandParent && + (scaleMode === Phaser.ScaleManager.SHOW_ALL || scaleMode === Phaser.ScaleManager.USER_SCALE)) + { + var bounds = this.getParentBounds(this._tempBounds); + this.width = Math.min(this.width, bounds.width); + this.height = Math.min(this.height, bounds.height); + } + + // Always truncate / force to integer + this.width = this.width | 0; + this.height = this.height | 0; + + this.reflowCanvas(); + + }, + + /** + * Returns the computed Parent size/bounds that the Display canvas is allowed/expected to fill. + * + * If in fullscreen mode or without parent (see {@link #parentIsWindow}), + * this will be the bounds of the visual viewport itself. + * + * This function takes the {@link #windowConstraints} into consideration - if the parent is partially outside + * the viewport then this function may return a smaller than expected size. + * + * Values are rounded to the nearest pixel. + * + * @method Phaser.ScaleManager#getParentBounds + * @protected + * @param {Phaser.Rectangle} [target=(new Rectangle)] - The rectangle to update; a new one is created as needed. + * @return {Phaser.Rectangle} The established parent bounds. + */ + getParentBounds: function (target) { + + var bounds = target || new Phaser.Rectangle(); + var parentNode = this.boundingParent; + var visualBounds = this.dom.visualBounds; + var layoutBounds = this.dom.layoutBounds; + + if (!parentNode) + { + bounds.setTo(0, 0, visualBounds.width, visualBounds.height); + } + else + { + // Ref. http://msdn.microsoft.com/en-us/library/hh781509(v=vs.85).aspx for getBoundingClientRect + var clientRect = parentNode.getBoundingClientRect(); + var parentRect = (parentNode.offsetParent) ? parentNode.offsetParent.getBoundingClientRect() : parentNode.getBoundingClientRect(); + + bounds.setTo(clientRect.left - parentRect.left, clientRect.top - parentRect.top, clientRect.width, clientRect.height); + + var wc = this.windowConstraints; + + if (wc.right) + { + var windowBounds = wc.right === 'layout' ? layoutBounds : visualBounds; + bounds.right = Math.min(bounds.right, windowBounds.width); + } + + if (wc.bottom) + { + var windowBounds = wc.bottom === 'layout' ? layoutBounds : visualBounds; + bounds.bottom = Math.min(bounds.bottom, windowBounds.height); + } + } + + bounds.setTo( + Math.round(bounds.x), Math.round(bounds.y), + Math.round(bounds.width), Math.round(bounds.height)); + + return bounds; + + }, + + /** + * Update the canvas position/margins - for alignment within the parent container. + * + * The canvas margins _must_ be reset/cleared prior to invoking this. + * + * @method Phaser.ScaleManager#alignCanvas + * @private + * @param {boolean} horizontal - Align horizontally? + * @param {boolean} vertical - Align vertically? + */ + alignCanvas: function (horizontal, vertical) { + + var parentBounds = this.getParentBounds(this._tempBounds); + var canvas = this.game.canvas; + var margin = this.margin; + + if (horizontal) + { + margin.left = margin.right = 0; + + var canvasBounds = canvas.getBoundingClientRect(); + + if (this.width < parentBounds.width && !this.incorrectOrientation) + { + var currentEdge = canvasBounds.left - parentBounds.x; + var targetEdge = (parentBounds.width / 2) - (this.width / 2); + + targetEdge = Math.max(targetEdge, 0); + + var offset = targetEdge - currentEdge; + + margin.left = Math.round(offset); + } + + canvas.style.marginLeft = margin.left + 'px'; + + if (margin.left !== 0) + { + margin.right = -(parentBounds.width - canvasBounds.width - margin.left); + canvas.style.marginRight = margin.right + 'px'; + } + } + + if (vertical) + { + margin.top = margin.bottom = 0; + + var canvasBounds = canvas.getBoundingClientRect(); + + if (this.height < parentBounds.height && !this.incorrectOrientation) + { + var currentEdge = canvasBounds.top - parentBounds.y; + var targetEdge = (parentBounds.height / 2) - (this.height / 2); + + targetEdge = Math.max(targetEdge, 0); + + var offset = targetEdge - currentEdge; + margin.top = Math.round(offset); + } + + canvas.style.marginTop = margin.top + 'px'; + + if (margin.top !== 0) + { + margin.bottom = -(parentBounds.height - canvasBounds.height - margin.top); + canvas.style.marginBottom = margin.bottom + 'px'; + } + } + + // Silly backwards compatibility.. + margin.x = margin.left; + margin.y = margin.top; + + }, + + /** + * Updates the Game state / size. + * + * The canvas margins may always be adjusted, even if alignment is not in effect. + * + * @method Phaser.ScaleManager#reflowGame + * @private + */ + reflowGame: function () { + + this.resetCanvas('', ''); + + var bounds = this.getParentBounds(this._tempBounds); + this.updateDimensions(bounds.width, bounds.height, true); + + }, + + /** + * Updates the Display canvas size. + * + * The canvas margins may always be adjusted, even alignment is not in effect. + * + * @method Phaser.ScaleManager#reflowCanvas + * @private + */ + reflowCanvas: function () { + + if (!this.incorrectOrientation) + { + this.width = Phaser.Math.clamp(this.width, this.minWidth || 0, this.maxWidth || this.width); + this.height = Phaser.Math.clamp(this.height, this.minHeight || 0, this.maxHeight || this.height); + } + + this.resetCanvas(); + + if (!this.compatibility.noMargins) + { + if (this.isFullScreen && this._createdFullScreenTarget) + { + this.alignCanvas(true, true); + } + else + { + this.alignCanvas(this.pageAlignHorizontally, this.pageAlignVertically); + } + } + + this.updateScalingAndBounds(); + + }, + + /** + * "Reset" the Display canvas and set the specified width/height. + * + * @method Phaser.ScaleManager#resetCanvas + * @private + * @param {string} [cssWidth=(current width)] - The css width to set. + * @param {string} [cssHeight=(current height)] - The css height to set. + */ + resetCanvas: function (cssWidth, cssHeight) { + + if (cssWidth === undefined) { cssWidth = this.width + 'px'; } + if (cssHeight === undefined) { cssHeight = this.height + 'px'; } + + var canvas = this.game.canvas; + + if (!this.compatibility.noMargins) + { + canvas.style.marginLeft = ''; + canvas.style.marginTop = ''; + canvas.style.marginRight = ''; + canvas.style.marginBottom = ''; + } + + canvas.style.width = cssWidth; + canvas.style.height = cssHeight; + + }, + + /** + * Queues/marks a size/bounds check as needing to occur (from `preUpdate`). + * + * @method Phaser.ScaleManager#queueUpdate + * @private + * @param {boolean} force - If true resets the parent bounds to ensure the check is dirty. + */ + queueUpdate: function (force) { + + if (force) + { + this._parentBounds.width = 0; + this._parentBounds.height = 0; + } + + this._updateThrottle = this._updateThrottleReset; + + }, + + /** + * Reset internal data/state. + * + * @method Phaser.ScaleManager#reset + * @private + */ + reset: function (clearWorld) { + + if (clearWorld && this.grid) + { + this.grid.reset(); + } + + }, + + /** + * Updates the width/height to that of the window. + * + * @method Phaser.ScaleManager#setMaximum + * @private + */ + setMaximum: function () { + + this.width = this.dom.visualBounds.width; + this.height = this.dom.visualBounds.height; + + }, + + /** + * Updates the width/height such that the game is scaled proportionally. + * + * @method Phaser.ScaleManager#setShowAll + * @private + * @param {boolean} expanding - If true then the maximizing dimension is chosen. + */ + setShowAll: function (expanding) { + + var bounds = this.getParentBounds(this._tempBounds); + var width = bounds.width; + var height = bounds.height; + + var multiplier; + + if (expanding) + { + multiplier = Math.max((height / this.game.height), (width / this.game.width)); + } + else + { + multiplier = Math.min((height / this.game.height), (width / this.game.width)); + } + + this.width = Math.round(this.game.width * multiplier); + this.height = Math.round(this.game.height * multiplier); + + }, + + /** + * Updates the width/height such that the game is stretched to the available size. + * Honors {@link #maxWidth} and {@link #maxHeight} when _not_ in fullscreen. + * + * @method Phaser.ScaleManager#setExactFit + * @private + */ + setExactFit: function () { + + var bounds = this.getParentBounds(this._tempBounds); + + this.width = bounds.width; + this.height = bounds.height; + + if (this.isFullScreen) + { + // Max/min not honored fullscreen + return; + } + + if (this.maxWidth) + { + this.width = Math.min(this.width, this.maxWidth); + } + + if (this.maxHeight) + { + this.height = Math.min(this.height, this.maxHeight); + } + + }, + + /** + * Creates a fullscreen target. This is called automatically as as needed when entering + * fullscreen mode and the resulting element is supplied to {@link #onFullScreenInit}. + * + * Use {@link #onFullScreenInit} to customize the created object. + * + * @method Phaser.ScaleManager#createFullScreenTarget + * @protected + */ + createFullScreenTarget: function () { + + var fsTarget = document.createElement('div'); + + fsTarget.style.margin = '0'; + fsTarget.style.padding = '0'; + fsTarget.style.background = '#000'; + + return fsTarget; + + }, + + /** + * Start the browsers fullscreen mode - this _must_ be called from a user input Pointer or Mouse event. + * + * The Fullscreen API must be supported by the browser for this to work - it is not the same as setting + * the game size to fill the browser window. See {@link Phaser.ScaleManager#compatibility compatibility.supportsFullScreen} to check if the current + * device is reported to support fullscreen mode. + * + * The {@link #fullScreenFailed} signal will be dispatched if the fullscreen change request failed or the game does not support the Fullscreen API. + * + * @method Phaser.ScaleManager#startFullScreen + * @public + * @param {boolean} [antialias] - Changes the anti-alias feature of the canvas before jumping in to fullscreen (false = retain pixel art, true = smooth art). If not specified then no change is made. Only works in CANVAS mode. + * @param {boolean} [allowTrampoline=undefined] - Internal argument. If `false` click trampolining is suppressed. + * @return {boolean} Returns true if the device supports fullscreen mode and fullscreen mode was attempted to be started. (It might not actually start, wait for the signals.) + */ + startFullScreen: function (antialias, allowTrampoline) { + + if (this.isFullScreen) + { + return false; + } + + if (!this.compatibility.supportsFullScreen) + { + // Error is called in timeout to emulate the real fullscreenerror event better + var _this = this; + setTimeout(function () { + _this.fullScreenError(); + }, 10); + return; + } + + if (this.compatibility.clickTrampoline === 'when-not-mouse') + { + var input = this.game.input; + + if (input.activePointer && + input.activePointer !== input.mousePointer && + (allowTrampoline || allowTrampoline !== false)) + { + input.activePointer.addClickTrampoline("startFullScreen", this.startFullScreen, this, [antialias, false]); + return; + } + } + + if (typeof antialias !== 'undefined' && this.game.renderType === Phaser.CANVAS) + { + this.game.stage.smoothed = antialias; + } + + var fsTarget = this.fullScreenTarget; + + if (!fsTarget) + { + this.cleanupCreatedTarget(); + + this._createdFullScreenTarget = this.createFullScreenTarget(); + fsTarget = this._createdFullScreenTarget; + } + + var initData = { + targetElement: fsTarget + }; + + this.onFullScreenInit.dispatch(this, initData); + + if (this._createdFullScreenTarget) + { + // Move the Display canvas inside of the target and add the target to the DOM + // (The target has to be added for the Fullscreen API to work.) + var canvas = this.game.canvas; + var parent = canvas.parentNode; + parent.insertBefore(fsTarget, canvas); + fsTarget.appendChild(canvas); + } + + if (this.game.device.fullscreenKeyboard) + { + fsTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); + } + else + { + fsTarget[this.game.device.requestFullscreen](); + } + + return true; + + }, + + /** + * Stops / exits fullscreen mode, if active. + * + * @method Phaser.ScaleManager#stopFullScreen + * @public + * @return {boolean} Returns true if the browser supports fullscreen mode and fullscreen mode will be exited. + */ + stopFullScreen: function () { + + if (!this.isFullScreen || !this.compatibility.supportsFullScreen) + { + return false; + } + + document[this.game.device.cancelFullscreen](); + + return true; + + }, + + /** + * Cleans up the previous fullscreen target, if such was automatically created. + * This ensures the canvas is restored to its former parent, assuming the target didn't move. + * + * @method Phaser.ScaleManager#cleanupCreatedTarget + * @private + */ + cleanupCreatedTarget: function () { + + var fsTarget = this._createdFullScreenTarget; + + if (fsTarget && fsTarget.parentNode) + { + // Make sure to cleanup synthetic target for sure; + // swap the canvas back to the parent. + var parent = fsTarget.parentNode; + parent.insertBefore(this.game.canvas, fsTarget); + parent.removeChild(fsTarget); + } + + this._createdFullScreenTarget = null; + + }, + + /** + * Used to prepare/restore extra fullscreen mode settings. + * (This does move any elements within the DOM tree.) + * + * @method Phaser.ScaleManager#prepScreenMode + * @private + * @param {boolean} enteringFullscreen - True if _entering_ fullscreen, false if _leaving_. + */ + prepScreenMode: function (enteringFullscreen) { + + var createdTarget = !!this._createdFullScreenTarget; + var fsTarget = this._createdFullScreenTarget || this.fullScreenTarget; + + if (enteringFullscreen) + { + if (createdTarget || this.fullScreenScaleMode === Phaser.ScaleManager.EXACT_FIT) + { + // Resize target, as long as it's not the canvas + if (fsTarget !== this.game.canvas) + { + this._fullScreenRestore = { + targetWidth: fsTarget.style.width, + targetHeight: fsTarget.style.height + }; + + fsTarget.style.width = '100%'; + fsTarget.style.height = '100%'; + } + } + } + else + { + // Have restore information + if (this._fullScreenRestore) + { + fsTarget.style.width = this._fullScreenRestore.targetWidth; + fsTarget.style.height = this._fullScreenRestore.targetHeight; + + this._fullScreenRestore = null; + } + + // Always reset to game size + this.updateDimensions(this._gameSize.width, this._gameSize.height, true); + this.resetCanvas(); + } + + }, + + /** + * Called automatically when the browser enters of leaves fullscreen mode. + * + * @method Phaser.ScaleManager#fullScreenChange + * @private + * @param {Event} [event=undefined] - The fullscreenchange event + */ + fullScreenChange: function (event) { + + this.event = event; + + if (this.isFullScreen) + { + this.prepScreenMode(true); + + this.updateLayout(); + this.queueUpdate(true); + } + else + { + this.prepScreenMode(false); + + this.cleanupCreatedTarget(); + + this.updateLayout(); + this.queueUpdate(true); + } + + this.onFullScreenChange.dispatch(this, this.width, this.height); + + }, + + /** + * Called automatically when the browser fullscreen request fails; + * or called when a fullscreen request is made on a device for which it is not supported. + * + * @method Phaser.ScaleManager#fullScreenError + * @private + * @param {Event} [event=undefined] - The fullscreenerror event; undefined if invoked on a device that does not support the Fullscreen API. + */ + fullScreenError: function (event) { + + this.event = event; + + this.cleanupCreatedTarget(); + + console.warn('Phaser.ScaleManager: requestFullscreen failed or device does not support the Fullscreen API'); + + this.onFullScreenError.dispatch(this); + + }, + + /** + * Takes a Sprite or Image object and scales it to fit the given dimensions. + * Scaling happens proportionally without distortion to the sprites texture. + * The letterBox parameter controls if scaling will produce a letter-box effect or zoom the + * sprite until it fills the given values. Note that with letterBox set to false the scaled sprite may spill out over either + * the horizontal or vertical sides of the target dimensions. If you wish to stop this you can crop the Sprite. + * + * @method Phaser.ScaleManager#scaleSprite + * @protected + * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite we want to scale. + * @param {integer} [width] - The target width that we want to fit the sprite in to. If not given it defaults to ScaleManager.width. + * @param {integer} [height] - The target height that we want to fit the sprite in to. If not given it defaults to ScaleManager.height. + * @param {boolean} [letterBox=false] - True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. + * @return {Phaser.Sprite|Phaser.Image} The scaled sprite. + */ + scaleSprite: function (sprite, width, height, letterBox) { + + if (width === undefined) { width = this.width; } + if (height === undefined) { height = this.height; } + if (letterBox === undefined) { letterBox = false; } + + if (!sprite || !sprite['scale']) + { + return sprite; + } + + sprite.scale.x = 1; + sprite.scale.y = 1; + + if ((sprite.width <= 0) || (sprite.height <= 0) || (width <= 0) || (height <= 0)) + { + return sprite; + } + + var scaleX1 = width; + var scaleY1 = (sprite.height * width) / sprite.width; + + var scaleX2 = (sprite.width * height) / sprite.height; + var scaleY2 = height; + + var scaleOnWidth = (scaleX2 > width); + + if (scaleOnWidth) + { + scaleOnWidth = letterBox; + } + else + { + scaleOnWidth = !letterBox; + } + + if (scaleOnWidth) + { + sprite.width = Math.floor(scaleX1); + sprite.height = Math.floor(scaleY1); + } + else + { + sprite.width = Math.floor(scaleX2); + sprite.height = Math.floor(scaleY2); + } + + // Enable at some point? + // sprite.x = Math.floor((width - sprite.width) / 2); + // sprite.y = Math.floor((height - sprite.height) / 2); + + return sprite; + + }, + + /** + * Destroys the ScaleManager and removes any event listeners. + * This should probably only be called when the game is destroyed. + * + * @method Phaser.ScaleManager#destroy + * @protected + */ + destroy: function () { + + this.game.onResume.remove(this._gameResumed, this); + + window.removeEventListener('orientationchange', this._orientationChange, false); + window.removeEventListener('resize', this._windowResize, false); + + if (this.compatibility.supportsFullScreen) + { + document.removeEventListener('webkitfullscreenchange', this._fullScreenChange, false); + document.removeEventListener('mozfullscreenchange', this._fullScreenChange, false); + document.removeEventListener('MSFullscreenChange', this._fullScreenChange, false); + document.removeEventListener('fullscreenchange', this._fullScreenChange, false); + + document.removeEventListener('webkitfullscreenerror', this._fullScreenError, false); + document.removeEventListener('mozfullscreenerror', this._fullScreenError, false); + document.removeEventListener('MSFullscreenError', this._fullScreenError, false); + document.removeEventListener('fullscreenerror', this._fullScreenError, false); + } + + } + +}; + +Phaser.ScaleManager.prototype.constructor = Phaser.ScaleManager; + +/** +* The DOM element that is considered the Parent bounding element, if any. +* +* This `null` if {@link #parentIsWindow} is true or if fullscreen mode is entered and {@link #fullScreenTarget} is specified. +* It will also be null if there is no game canvas or if the game canvas has no parent. +* +* @name Phaser.ScaleManager#boundingParent +* @property {?DOMElement} boundingParent +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "boundingParent", { + + get: function () { + if (this.parentIsWindow || + (this.isFullScreen && !this._createdFullScreenTarget)) + { + return null; + } + + var parentNode = this.game.canvas && this.game.canvas.parentNode; + return parentNode || null; + } + +}); + +/** +* The scaling method used by the ScaleManager when not in fullscreen. +* +*
+*
{@link Phaser.ScaleManager.NO_SCALE}
+*
+* The Game display area will not be scaled - even if it is too large for the canvas/screen. +* This mode _ignores_ any applied scaling factor and displays the canvas at the Game size. +*
+*
{@link Phaser.ScaleManager.EXACT_FIT}
+*
+* The Game display area will be _stretched_ to fill the entire size of the canvas's parent element and/or screen. +* Proportions are not maintained. +*
+*
{@link Phaser.ScaleManager.SHOW_ALL}
+*
+* Show the entire game display area while _maintaining_ the original aspect ratio. +*
+*
{@link Phaser.ScaleManager.RESIZE}
+*
+* The dimensions of the game display area are changed to match the size of the parent container. +* That is, this mode _changes the Game size_ to match the display size. +*

+* Any manually set Game size (see {@link #setGameSize}) is ignored while in effect. +*

+*
{@link Phaser.ScaleManager.USER_SCALE}
+*
+* The game Display is scaled according to the user-specified scale set by {@link Phaser.ScaleManager#setUserScale setUserScale}. +*

+* This scale can be adjusted in the {@link Phaser.ScaleManager#setResizeCallback resize callback} +* for flexible custom-sizing needs. +*

+*
+* +* @name Phaser.ScaleManager#scaleMode +* @property {integer} scaleMode +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "scaleMode", { + + get: function () { + + return this._scaleMode; + + }, + + set: function (value) { + + if (value !== this._scaleMode) + { + if (!this.isFullScreen) + { + this.updateDimensions(this._gameSize.width, this._gameSize.height, true); + this.queueUpdate(true); + } + + this._scaleMode = value; + } + + return this._scaleMode; + + } + +}); + +/** +* The scaling method used by the ScaleManager when in fullscreen. +* +* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. +* +* @name Phaser.ScaleManager#fullScreenScaleMode +* @property {integer} fullScreenScaleMode +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "fullScreenScaleMode", { + + get: function () { + + return this._fullScreenScaleMode; + + }, + + set: function (value) { + + if (value !== this._fullScreenScaleMode) + { + // If in fullscreen then need a wee bit more work + if (this.isFullScreen) + { + this.prepScreenMode(false); + this._fullScreenScaleMode = value; + this.prepScreenMode(true); + + this.queueUpdate(true); + } + else + { + this._fullScreenScaleMode = value; + } + } + + return this._fullScreenScaleMode; + + } + +}); + +/** +* Returns the current scale mode - for normal or fullscreen operation. +* +* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. +* +* @name Phaser.ScaleManager#currentScaleMode +* @property {number} currentScaleMode +* @protected +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "currentScaleMode", { + + get: function () { + + return this.isFullScreen ? this._fullScreenScaleMode : this._scaleMode; + + } + +}); + +/** +* When enabled the Display canvas will be horizontally-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). +* +* To align horizontally across the page the Display canvas should be added directly to page; +* or the parent container should itself be horizontally aligned. +* +* Horizontal alignment is not applicable with the {@link .RESIZE} scaling mode. +* +* @name Phaser.ScaleManager#pageAlignHorizontally +* @property {boolean} pageAlignHorizontally +* @default false +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignHorizontally", { + + get: function () { + + return this._pageAlignHorizontally; + + }, + + set: function (value) { + + if (value !== this._pageAlignHorizontally) + { + this._pageAlignHorizontally = value; + this.queueUpdate(true); + } + + } + +}); + +/** +* When enabled the Display canvas will be vertically-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). +* +* To align vertically the Parent element should have a _non-collapsible_ height, such that it will maintain +* a height _larger_ than the height of the contained Game canvas - the game canvas will then be scaled vertically +* _within_ the remaining available height dictated by the Parent element. +* +* One way to prevent the parent from collapsing is to add an absolute "min-height" CSS property to the parent element. +* If specifying a relative "min-height/height" or adjusting margins, the Parent height must still be non-collapsible (see note). +* +* _Note_: In version 2.2 the minimum document height is _not_ automatically set to the viewport/window height. +* To automatically update the minimum document height set {@link Phaser.ScaleManager#compatibility compatibility.forceMinimumDocumentHeight} to true. +* +* Vertical alignment is not applicable with the {@link .RESIZE} scaling mode. +* +* @name Phaser.ScaleManager#pageAlignVertically +* @property {boolean} pageAlignVertically +* @default false +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignVertically", { + + get: function () { + + return this._pageAlignVertically; + + }, + + set: function (value) { + + if (value !== this._pageAlignVertically) + { + this._pageAlignVertically = value; + this.queueUpdate(true); + } + + } + +}); + +/** +* Returns true if the browser is in fullscreen mode, otherwise false. +* @name Phaser.ScaleManager#isFullScreen +* @property {boolean} isFullScreen +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isFullScreen", { + + get: function () { + return !!(document['fullscreenElement'] || + document['webkitFullscreenElement'] || + document['mozFullScreenElement'] || + document['msFullscreenElement']); + } + +}); + +/** +* Returns true if the screen orientation is in portrait mode. +* +* @name Phaser.ScaleManager#isPortrait +* @property {boolean} isPortrait +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isPortrait", { + + get: function () { + return this.classifyOrientation(this.screenOrientation) === 'portrait'; + } + +}); + +/** +* Returns true if the screen orientation is in landscape mode. +* +* @name Phaser.ScaleManager#isLandscape +* @property {boolean} isLandscape +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isLandscape", { + + get: function () { + return this.classifyOrientation(this.screenOrientation) === 'landscape'; + } + +}); + +/** +* Returns true if the game dimensions are portrait (height > width). +* This is especially useful to check when using the RESIZE scale mode +* but wanting to maintain game orientation on desktop browsers, +* where typically the screen orientation will always be landscape regardless of the browser viewport. +* +* @name Phaser.ScaleManager#isGamePortrait +* @property {boolean} isGamePortrait +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isGamePortrait", { + + get: function () { + return (this.height > this.width); + } + +}); + +/** +* Returns true if the game dimensions are landscape (width > height). +* This is especially useful to check when using the RESIZE scale mode +* but wanting to maintain game orientation on desktop browsers, +* where typically the screen orientation will always be landscape regardless of the browser viewport. +* +* @name Phaser.ScaleManager#isGameLandscape +* @property {boolean} isGameLandscape +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { + + get: function () { + return (this.width > this.height); + } + +}); + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * A collection of methods for displaying debug information about game objects. * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture @@ -64386,6 +63216,439 @@ Phaser.Utils.Debug.prototype.constructor = Phaser.Utils.Debug; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* DOM utility class. +* +* Provides a useful Window and Element functions as well as cross-browser compatibility buffer. +* +* Some code originally derived from {@link https://github.com/ryanve/verge verge}. +* Some parts were inspired by the research of Ryan Van Etten, released under MIT License 2013. +* +* @class Phaser.DOM +* @static +*/ +Phaser.DOM = { + + /** + * Get the [absolute] position of the element relative to the Document. + * + * The value may vary slightly as the page is scrolled due to rounding errors. + * + * @method Phaser.DOM.getOffset + * @param {DOMElement} element - The targeted element that we want to retrieve the offset. + * @param {Phaser.Point} [point] - The point we want to take the x/y values of the offset. + * @return {Phaser.Point} - A point objet with the offsetX and Y as its properties. + */ + getOffset: function (element, point) { + + point = point || new Phaser.Point(); + + var box = element.getBoundingClientRect(); + + var scrollTop = Phaser.DOM.scrollY; + var scrollLeft = Phaser.DOM.scrollX; + var clientTop = document.documentElement.clientTop; + var clientLeft = document.documentElement.clientLeft; + + point.x = box.left + scrollLeft - clientLeft; + point.y = box.top + scrollTop - clientTop; + + return point; + + }, + + /** + * A cross-browser element.getBoundingClientRect method with optional cushion. + * + * Returns a plain object containing the properties `top/bottom/left/right/width/height` with respect to the top-left corner of the current viewport. + * Its properties match the native rectangle. + * The cushion parameter is an amount of pixels (+/-) to cushion the element. + * It adjusts the measurements such that it is possible to detect when an element is near the viewport. + * + * @method Phaser.DOM.getBounds + * @param {DOMElement|Object} element - The element or stack (uses first item) to get the bounds for. + * @param {number} [cushion] - A +/- pixel adjustment amount. + * @return {Object|boolean} A plain object containing the properties `top/bottom/left/right/width/height` or `false` if a non-valid element is given. + */ + getBounds: function (element, cushion) { + + if (cushion === undefined) { cushion = 0; } + + element = element && !element.nodeType ? element[0] : element; + + if (!element || element.nodeType !== 1) + { + return false; + } + else + { + return this.calibrate(element.getBoundingClientRect(), cushion); + } + + }, + + /** + * Calibrates element coordinates for `inLayoutViewport` checks. + * + * @method Phaser.DOM.calibrate + * @private + * @param {object} coords - An object containing the following properties: `{top: number, right: number, bottom: number, left: number}` + * @param {number} [cushion] - A value to adjust the coordinates by. + * @return {object} The calibrated element coordinates + */ + calibrate: function (coords, cushion) { + + cushion = +cushion || 0; + + var output = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }; + + output.width = (output.right = coords.right + cushion) - (output.left = coords.left - cushion); + output.height = (output.bottom = coords.bottom + cushion) - (output.top = coords.top - cushion); + + return output; + + }, + + /** + * Get the Visual viewport aspect ratio (or the aspect ratio of an object or element) + * + * @method Phaser.DOM.getAspectRatio + * @param {(DOMElement|Object)} [object=(visualViewport)] - The object to determine the aspect ratio for. Must have public `width` and `height` properties or methods. + * @return {number} The aspect ratio. + */ + getAspectRatio: function (object) { + + object = null == object ? this.visualBounds : 1 === object.nodeType ? this.getBounds(object) : object; + + var w = object['width']; + var h = object['height']; + + if (typeof w === 'function') + { + w = w.call(object); + } + + if (typeof h === 'function') + { + h = h.call(object); + } + + return w / h; + + }, + + /** + * Tests if the given DOM element is within the Layout viewport. + * + * The optional cushion parameter allows you to specify a distance. + * + * inLayoutViewport(element, 100) is `true` if the element is in the viewport or 100px near it. + * inLayoutViewport(element, -100) is `true` if the element is in the viewport or at least 100px near it. + * + * @method Phaser.DOM.inLayoutViewport + * @param {DOMElement|Object} element - The DOM element to check. If no element is given it defaults to the Phaser game canvas. + * @param {number} [cushion] - The cushion allows you to specify a distance within which the element must be within the viewport. + * @return {boolean} True if the element is within the viewport, or within `cushion` distance from it. + */ + inLayoutViewport: function (element, cushion) { + + var r = this.getBounds(element, cushion); + + return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= this.layoutBounds.width && r.left <= this.layoutBounds.height; + + }, + + /** + * Returns the device screen orientation. + * + * Orientation values: 'portrait-primary', 'landscape-primary', 'portrait-secondary', 'landscape-secondary'. + * + * Order of resolving: + * - Screen Orientation API, or variation of - Future track. Most desktop and mobile browsers. + * - Screen size ratio check - If fallback is 'screen', suited for desktops. + * - Viewport size ratio check - If fallback is 'viewport', suited for mobile. + * - window.orientation - If fallback is 'window.orientation', works iOS and probably most Android; non-recommended track. + * - Media query + * - Viewport size ratio check (probably only IE9 and legacy mobile gets here..) + * + * See + * - https://w3c.github.io/screen-orientation/ (conflicts with mozOrientation/msOrientation) + * - https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation (mozOrientation) + * - http://msdn.microsoft.com/en-us/library/ie/dn342934(v=vs.85).aspx + * - https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries + * - http://stackoverflow.com/questions/4917664/detect-viewport-orientation + * - http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation + * + * @method Phaser.DOM.getScreenOrientation + * @protected + * @param {string} [primaryFallback=(none)] - Specify 'screen', 'viewport', or 'window.orientation'. + */ + getScreenOrientation: function (primaryFallback) { + + var screen = window.screen; + var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation; + + if (orientation && typeof orientation.type === 'string') + { + // Screen Orientation API specification + return orientation.type; + } + else if (typeof orientation === 'string') + { + // moz/ms-orientation are strings + return orientation; + } + + var PORTRAIT = 'portrait-primary'; + var LANDSCAPE = 'landscape-primary'; + + if (primaryFallback === 'screen') + { + return (screen.height > screen.width) ? PORTRAIT : LANDSCAPE; + } + else if (primaryFallback === 'viewport') + { + return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; + } + else if (primaryFallback === 'window.orientation' && typeof window.orientation === 'number') + { + // This may change by device based on "natural" orientation. + return (window.orientation === 0 || window.orientation === 180) ? PORTRAIT : LANDSCAPE; + } + else if (window.matchMedia) + { + if (window.matchMedia("(orientation: portrait)").matches) + { + return PORTRAIT; + } + else if (window.matchMedia("(orientation: landscape)").matches) + { + return LANDSCAPE; + } + } + + return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; + + }, + + /** + * The bounds of the Visual viewport, as discussed in + * {@link http://www.quirksmode.org/mobile/viewports.html A tale of two viewports — part one} + * with one difference: the viewport size _excludes_ scrollbars, as found on some desktop browsers. + * + * Supported mobile: + * iOS/Safari, Android 4, IE10, Firefox OS (maybe not Firefox Android), Opera Mobile 16 + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} x - Scroll, left offset - eg. "scrollX" + * @property {number} y - Scroll, top offset - eg. "scrollY" + * @property {number} width - Viewport width in pixels. + * @property {number} height - Viewport height in pixels. + * @readonly + */ + visualBounds: new Phaser.Rectangle(), + + /** + * The bounds of the Layout viewport, as discussed in + * {@link http://www.quirksmode.org/mobile/viewports2.html A tale of two viewports — part two}; + * but honoring the constraints as specified applicable viewport meta-tag. + * + * The bounds returned are not guaranteed to be fully aligned with CSS media queries (see + * {@link http://www.matanich.com/2013/01/07/viewport-size/ What size is my viewport?}). + * + * This is _not_ representative of the Visual bounds: in particular the non-primary axis will + * generally be significantly larger than the screen height on mobile devices when running with a + * constrained viewport. + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} width - Viewport width in pixels. + * @property {number} height - Viewport height in pixels. + * @readonly + */ + layoutBounds: new Phaser.Rectangle(), + + /** + * The size of the document / Layout viewport. + * + * This incorrectly reports the dimensions in IE. + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} width - Document width in pixels. + * @property {number} height - Document height in pixels. + * @readonly + */ + documentBounds: new Phaser.Rectangle() + +}; + +Phaser.Device.whenReady(function (device) { + + // All target browsers should support page[XY]Offset. + var scrollX = window && ('pageXOffset' in window) ? + function () { return window.pageXOffset; } : + function () { return document.documentElement.scrollLeft; }; + + var scrollY = window && ('pageYOffset' in window) ? + function () { return window.pageYOffset; } : + function () { return document.documentElement.scrollTop; }; + + /** + * A cross-browser window.scrollX. + * + * @name Phaser.DOM.scrollX + * @property {number} scrollX + * @readonly + * @protected + */ + Object.defineProperty(Phaser.DOM, "scrollX", { + get: scrollX + }); + + /** + * A cross-browser window.scrollY. + * + * @name Phaser.DOM.scrollY + * @property {number} scrollY + * @readonly + * @protected + */ + Object.defineProperty(Phaser.DOM, "scrollY", { + get: scrollY + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "x", { + get: scrollX + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "y", { + get: scrollY + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "x", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "y", { + value: 0 + }); + + var treatAsDesktop = device.desktop && + (document.documentElement.clientWidth <= window.innerWidth) && + (document.documentElement.clientHeight <= window.innerHeight); + + // Desktop browsers align the layout viewport with the visual viewport. + // This differs from mobile browsers with their zooming design. + // Ref. http://quirksmode.org/mobile/tableViewport.html + if (treatAsDesktop) + { + + // PST- When scrollbars are not included this causes upstream issues in ScaleManager. + // So reverted to the old "include scrollbars." + var clientWidth = function () { + return Math.max(window.innerWidth, document.documentElement.clientWidth); + }; + var clientHeight = function () { + return Math.max(window.innerHeight, document.documentElement.clientHeight); + }; + + // Interested in area sans-scrollbar + Object.defineProperty(Phaser.DOM.visualBounds, "width", { + get: clientWidth + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "height", { + get: clientHeight + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "width", { + get: clientWidth + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "height", { + get: clientHeight + }); + + } else { + + Object.defineProperty(Phaser.DOM.visualBounds, "width", { + get: function () { + return window.innerWidth; + } + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "height", { + get: function () { + return window.innerHeight; + } + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "width", { + + get: function () { + var a = document.documentElement.clientWidth; + var b = window.innerWidth; + + return a < b ? b : a; // max + } + + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "height", { + + get: function () { + var a = document.documentElement.clientHeight; + var b = window.innerHeight; + + return a < b ? b : a; // max + } + + }); + + } + + // For Phaser.DOM.documentBounds + // Ref. http://www.quirksmode.org/mobile/tableViewport_desktop.html + + Object.defineProperty(Phaser.DOM.documentBounds, "x", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "y", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "width", { + + get: function () { + var d = document.documentElement; + return Math.max(d.clientWidth, d.offsetWidth, d.scrollWidth); + } + + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "height", { + + get: function () { + var d = document.documentElement; + return Math.max(d.clientHeight, d.offsetHeight, d.scrollHeight); + } + + }); + +}, null, true); + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * ArraySet is a Set data structure (items must be unique within the set) that also maintains order. * This allows specific items to be easily added or removed from the Set. @@ -64550,7 +63813,7 @@ Phaser.ArraySet.prototype = { */ callAll: function (key) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var i = this.list.length; @@ -64961,6 +64224,844 @@ Phaser.ArrayUtils = { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* A basic Linked List data structure. +* +* This implementation _modifies_ the `prev` and `next` properties of each item added: +* - The `prev` and `next` properties must be writable and should not be used for any other purpose. +* - Items _cannot_ be added to multiple LinkedLists at the same time. +* - Only objects can be added. +* +* @class Phaser.LinkedList +* @constructor +*/ +Phaser.LinkedList = function () { + + /** + * Next element in the list. + * @property {object} next + * @default + */ + this.next = null; + + /** + * Previous element in the list. + * @property {object} prev + * @default + */ + this.prev = null; + + /** + * First element in the list. + * @property {object} first + * @default + */ + this.first = null; + + /** + * Last element in the list. + * @property {object} last + * @default + */ + this.last = null; + + /** + * Number of elements in the list. + * @property {integer} total + * @default + */ + this.total = 0; + +}; + +Phaser.LinkedList.prototype = { + + /** + * Adds a new element to this linked list. + * + * @method Phaser.LinkedList#add + * @param {object} item - The element to add to this list. Can be a Phaser.Sprite or any other object you need to quickly iterate through. + * @return {object} The item that was added. + */ + add: function (item) { + + // If the list is empty + if (this.total === 0 && this.first === null && this.last === null) + { + this.first = item; + this.last = item; + this.next = item; + item.prev = this; + this.total++; + return item; + } + + // Gets appended to the end of the list, regardless of anything, and it won't have any children of its own (non-nested list) + this.last.next = item; + + item.prev = this.last; + + this.last = item; + + this.total++; + + return item; + + }, + + /** + * Resets the first, last, next and previous node pointers in this list. + * + * @method Phaser.LinkedList#reset + */ + reset: function () { + + this.first = null; + this.last = null; + this.next = null; + this.prev = null; + this.total = 0; + + }, + + /** + * Removes the given element from this linked list if it exists. + * + * @method Phaser.LinkedList#remove + * @param {object} item - The item to be removed from the list. + */ + remove: function (item) { + + if (this.total === 1) + { + this.reset(); + item.next = item.prev = null; + return; + } + + if (item === this.first) + { + // It was 'first', make 'first' point to first.next + this.first = this.first.next; + } + else if (item === this.last) + { + // It was 'last', make 'last' point to last.prev + this.last = this.last.prev; + } + + if (item.prev) + { + // make item.prev.next point to childs.next instead of item + item.prev.next = item.next; + } + + if (item.next) + { + // make item.next.prev point to item.prev instead of item + item.next.prev = item.prev; + } + + item.next = item.prev = null; + + if (this.first === null ) + { + this.last = null; + } + + this.total--; + + }, + + /** + * Calls a function on all members of this list, using the member as the context for the callback. + * The function must exist on the member. + * + * @method Phaser.LinkedList#callAll + * @param {function} callback - The function to call. + */ + callAll: function (callback) { + + if (!this.first || !this.last) + { + return; + } + + var entity = this.first; + + do + { + if (entity && entity[callback]) + { + entity[callback].call(entity); + } + + entity = entity.next; + + } + while(entity != this.last.next); + + } + +}; + +Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content +* quickly and easily, without the need for any external files. You can create textures for sprites and in +* coming releases we'll add dynamic sound effect generation support as well (like sfxr). +* +* Access this via `State.create` (or `this.create` from within a State object) +* +* @class Phaser.Create +* @constructor +* @param {Phaser.Game} game - Game reference to the currently running game. + */ +Phaser.Create = function (game) { + + /** + * @property {Phaser.Game} game - A reference to the currently running Game. + */ + this.game = game; + + /** + * @property {Phaser.BitmapData} bmd - The internal BitmapData Create uses to generate textures from. + */ + this.bmd = null; + + /** + * @property {HTMLCanvasElement} canvas - The canvas the BitmapData uses. + */ + this.canvas = null; + + /** + * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. + */ + this.ctx = null; + + /** + * @property {array} palettes - A range of 16 color palettes for use with sprite generation. + */ + this.palettes = [ + { 0: '#000', 1: '#9D9D9D', 2: '#FFF', 3: '#BE2633', 4: '#E06F8B', 5: '#493C2B', 6: '#A46422', 7: '#EB8931', 8: '#F7E26B', 9: '#2F484E', A: '#44891A', B: '#A3CE27', C: '#1B2632', D: '#005784', E: '#31A2F2', F: '#B2DCEF' }, + { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#f5f4eb' }, + { 0: '#000', 1: '#2234d1', 2: '#0c7e45', 3: '#44aacc', 4: '#8a3622', 5: '#5c2e78', 6: '#aa5c3d', 7: '#b5b5b5', 8: '#5e606e', 9: '#4c81fb', A: '#6cd947', B: '#7be2f9', C: '#eb8a60', D: '#e23d69', E: '#ffd93f', F: '#fff' }, + { 0: '#000', 1: '#fff', 2: '#8b4131', 3: '#7bbdc5', 4: '#8b41ac', 5: '#6aac41', 6: '#3931a4', 7: '#d5de73', 8: '#945a20', 9: '#5a4100', A: '#bd736a', B: '#525252', C: '#838383', D: '#acee8b', E: '#7b73de', F: '#acacac' }, + { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#fff' } + ]; + +}; + +/** +* A 16 color palette by [Arne](http://androidarts.com/palette/16pal.htm) +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_ARNE = 0; + +/** +* A 16 color JMP inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_JMP = 1; + +/** +* A 16 color CGA inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_CGA = 2; + +/** +* A 16 color C64 inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_C64 = 3; + +/** +* A 16 color palette inspired by Japanese computers like the MSX. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_JAPANESE_MACHINE = 4; + +Phaser.Create.prototype = { + + /** + * Generates a new PIXI.Texture from the given data, which can be applied to a Sprite. + * + * This allows you to create game graphics quickly and easily, with no external files but that use actual proper images + * rather than Phaser.Graphics objects, which are expensive to render and limited in scope. + * + * Each element of the array is a string holding the pixel color values, as mapped to one of the Phaser.Create PALETTE consts. + * + * For example: + * + * `var data = [ + * ' 333 ', + * ' 777 ', + * 'E333E', + * ' 333 ', + * ' 3 3 ' + * ];` + * + * `game.create.texture('bob', data);` + * + * The above will create a new texture called `bob`, which will look like a little man wearing a hat. You can then use it + * for sprites the same way you use any other texture: `game.add.sprite(0, 0, 'bob');` + * + * @method Phaser.Create#texture + * @param {string} key - The key used to store this texture in the Phaser Cache. + * @param {array} data - An array of pixel data. + * @param {integer} [pixelWidth=8] - The width of each pixel. + * @param {integer} [pixelHeight=8] - The height of each pixel. + * @param {integer} [palette=0] - The palette to use when rendering the texture. One of the Phaser.Create.PALETTE consts. + * @return {PIXI.Texture} The newly generated texture. + */ + texture: function (key, data, pixelWidth, pixelHeight, palette) { + + if (pixelWidth === undefined) { pixelWidth = 8; } + if (pixelHeight === undefined) { pixelHeight = pixelWidth; } + if (palette === undefined) { palette = 0; } + + var w = data[0].length * pixelWidth; + var h = data.length * pixelHeight; + + // No bmd? Let's make one + if (this.bmd === null) + { + this.bmd = this.game.make.bitmapData(); + this.canvas = this.bmd.canvas; + this.ctx = this.bmd.context; + } + + this.bmd.resize(w, h); + this.bmd.clear(); + + // Draw it + for (var y = 0; y < data.length; y++) + { + var row = data[y]; + + for (var x = 0; x < row.length; x++) + { + var d = row[x]; + + if (d !== '.' && d !== ' ') + { + this.ctx.fillStyle = this.palettes[palette][d]; + this.ctx.fillRect(x * pixelWidth, y * pixelHeight, pixelWidth, pixelHeight); + } + } + } + + return this.bmd.generateTexture(key); + + }, + + /** + * Creates a grid texture based on the given dimensions. + * + * @method Phaser.Create#grid + * @param {string} key - The key used to store this texture in the Phaser Cache. + * @param {integer} width - The width of the grid in pixels. + * @param {integer} height - The height of the grid in pixels. + * @param {integer} cellWidth - The width of the grid cells in pixels. + * @param {integer} cellHeight - The height of the grid cells in pixels. + * @param {string} color - The color to draw the grid lines in. Should be a Canvas supported color string like `#ff5500` or `rgba(200,50,3,0.5)`. + * @return {PIXI.Texture} The newly generated texture. + */ + grid: function (key, width, height, cellWidth, cellHeight, color) { + + // No bmd? Let's make one + if (this.bmd === null) + { + this.bmd = this.game.make.bitmapData(); + this.canvas = this.bmd.canvas; + this.ctx = this.bmd.context; + } + + this.bmd.resize(width, height); + + this.ctx.fillStyle = color; + + for (var y = 0; y < height; y += cellHeight) + { + this.ctx.fillRect(0, y, width, 1); + } + + for (var x = 0; x < width; x += cellWidth) + { + this.ctx.fillRect(x, 0, 1, height); + } + + return this.bmd.generateTexture(key); + + } + +}; + +Phaser.Create.prototype.constructor = Phaser.Create; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. +* Please try to avoid using in production games with a long time to build. +* This is also why the documentation is incomplete. +* +* FlexGrid is a a responsive grid manager that works in conjunction with the ScaleManager RESIZE scaling mode and FlexLayers +* to provide for game object positioning in a responsive manner. +* +* @class Phaser.FlexGrid +* @constructor +* @param {Phaser.ScaleManager} manager - The ScaleManager. +* @param {number} width - The width of the game. +* @param {number} height - The height of the game. +*/ +Phaser.FlexGrid = function (manager, width, height) { + + /** + * @property {Phaser.Game} game - A reference to the currently running Game. + */ + this.game = manager.game; + + /** + * @property {Phaser.ScaleManager} manager - A reference to the ScaleManager. + */ + this.manager = manager; + + // The perfect dimensions on which everything else is based + this.width = width; + this.height = height; + + this.boundsCustom = new Phaser.Rectangle(0, 0, width, height); + this.boundsFluid = new Phaser.Rectangle(0, 0, width, height); + this.boundsFull = new Phaser.Rectangle(0, 0, width, height); + this.boundsNone = new Phaser.Rectangle(0, 0, width, height); + + /** + * @property {Phaser.Point} position - + * @readonly + */ + this.positionCustom = new Phaser.Point(0, 0); + this.positionFluid = new Phaser.Point(0, 0); + this.positionFull = new Phaser.Point(0, 0); + this.positionNone = new Phaser.Point(0, 0); + + /** + * @property {Phaser.Point} scaleFactor - The scale factor based on the game dimensions vs. the scaled dimensions. + * @readonly + */ + this.scaleCustom = new Phaser.Point(1, 1); + this.scaleFluid = new Phaser.Point(1, 1); + this.scaleFluidInversed = new Phaser.Point(1, 1); + this.scaleFull = new Phaser.Point(1, 1); + this.scaleNone = new Phaser.Point(1, 1); + + this.customWidth = 0; + this.customHeight = 0; + this.customOffsetX = 0; + this.customOffsetY = 0; + + this.ratioH = width / height; + this.ratioV = height / width; + + this.multiplier = 0; + + this.layers = []; + +}; + +Phaser.FlexGrid.prototype = { + + /** + * Sets the core game size. This resets the w/h parameters and bounds. + * + * @method Phaser.FlexGrid#setSize + * @param {number} width - The new dimensions. + * @param {number} height - The new dimensions. + */ + setSize: function (width, height) { + + // These are locked and don't change until setSize is called again + this.width = width; + this.height = height; + + this.ratioH = width / height; + this.ratioV = height / width; + + this.scaleNone = new Phaser.Point(1, 1); + + this.boundsNone.width = this.width; + this.boundsNone.height = this.height; + + this.refresh(); + + }, + + // Need ability to create your own layers with custom scaling, etc. + + /** + * A custom layer is centered on the game and maintains its aspect ratio as it scales up and down. + * + * @method Phaser.FlexGrid#createCustomLayer + * @param {number} width - Width of this layer in pixels. + * @param {number} height - Height of this layer in pixels. + * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createCustomLayer: function (width, height, children, addToWorld) { + + if (addToWorld === undefined) { addToWorld = true; } + + this.customWidth = width; + this.customHeight = height; + + this.boundsCustom.width = width; + this.boundsCustom.height = height; + + var layer = new Phaser.FlexLayer(this, this.positionCustom, this.boundsCustom, this.scaleCustom); + + if (addToWorld) + { + this.game.world.add(layer); + } + + this.layers.push(layer); + + if (typeof children !== 'undefined' && typeof children !== null) + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A fluid layer is centered on the game and maintains its aspect ratio as it scales up and down. + * + * @method Phaser.FlexGrid#createFluidLayer + * @param {array} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFluidLayer: function (children, addToWorld) { + + if (addToWorld === undefined) { addToWorld = true; } + + var layer = new Phaser.FlexLayer(this, this.positionFluid, this.boundsFluid, this.scaleFluid); + + if (addToWorld) + { + this.game.world.add(layer); + } + + this.layers.push(layer); + + if (typeof children !== 'undefined' && typeof children !== null) + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A full layer is placed at 0,0 and extends to the full size of the game. Children are scaled according to the fluid ratios. + * + * @method Phaser.FlexGrid#createFullLayer + * @param {array} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFullLayer: function (children) { + + var layer = new Phaser.FlexLayer(this, this.positionFull, this.boundsFull, this.scaleFluid); + + this.game.world.add(layer); + + this.layers.push(layer); + + if (typeof children !== 'undefined') + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A fixed layer is centered on the game and is the size of the required dimensions and is never scaled. + * + * @method Phaser.FlexGrid#createFixedLayer + * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFixedLayer: function (children) { + + var layer = new Phaser.FlexLayer(this, this.positionNone, this.boundsNone, this.scaleNone); + + this.game.world.add(layer); + + this.layers.push(layer); + + if (typeof children !== 'undefined') + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * Resets the layer children references + * + * @method Phaser.FlexGrid#reset + */ + reset: function () { + + var i = this.layers.length; + + while (i--) + { + if (!this.layers[i].persist) + { + // Remove references to this class + this.layers[i].position = null; + this.layers[i].scale = null; + this.layers.slice(i, 1); + } + } + + }, + + /** + * Called when the game container changes dimensions. + * + * @method Phaser.FlexGrid#onResize + * @param {number} width - The new width of the game container. + * @param {number} height - The new height of the game container. + */ + onResize: function (width, height) { + + this.ratioH = width / height; + this.ratioV = height / width; + + this.refresh(width, height); + + }, + + /** + * Updates all internal vars such as the bounds and scale values. + * + * @method Phaser.FlexGrid#refresh + */ + refresh: function () { + + this.multiplier = Math.min((this.manager.height / this.height), (this.manager.width / this.width)); + + this.boundsFluid.width = Math.round(this.width * this.multiplier); + this.boundsFluid.height = Math.round(this.height * this.multiplier); + + this.scaleFluid.set(this.boundsFluid.width / this.width, this.boundsFluid.height / this.height); + this.scaleFluidInversed.set(this.width / this.boundsFluid.width, this.height / this.boundsFluid.height); + + this.scaleFull.set(this.boundsFull.width / this.width, this.boundsFull.height / this.height); + + this.boundsFull.width = Math.round(this.manager.width * this.scaleFluidInversed.x); + this.boundsFull.height = Math.round(this.manager.height * this.scaleFluidInversed.y); + + this.boundsFluid.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); + this.boundsNone.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); + + this.positionFluid.set(this.boundsFluid.x, this.boundsFluid.y); + this.positionNone.set(this.boundsNone.x, this.boundsNone.y); + + }, + + /** + * Fits a sprites width to the bounds. + * + * @method Phaser.FlexGrid#fitSprite + * @param {Phaser.Sprite} sprite - The Sprite to fit. + */ + fitSprite: function (sprite) { + + this.manager.scaleSprite(sprite); + + sprite.x = this.manager.bounds.centerX; + sprite.y = this.manager.bounds.centerY; + + }, + + /** + * Call in the render function to output the bounds rects. + * + * @method Phaser.FlexGrid#debug + */ + debug: function () { + + // for (var i = 0; i < this.layers.length; i++) + // { + // this.layers[i].debug(); + // } + + // this.game.debug.text(this.boundsFull.width + ' x ' + this.boundsFull.height, this.boundsFull.x + 4, this.boundsFull.y + 16); + // this.game.debug.geom(this.boundsFull, 'rgba(0,0,255,0.9', false); + + this.game.debug.text(this.boundsFluid.width + ' x ' + this.boundsFluid.height, this.boundsFluid.x + 4, this.boundsFluid.y + 16); + this.game.debug.geom(this.boundsFluid, 'rgba(255,0,0,0.9', false); + + // this.game.debug.text(this.boundsNone.width + ' x ' + this.boundsNone.height, this.boundsNone.x + 4, this.boundsNone.y + 16); + // this.game.debug.geom(this.boundsNone, 'rgba(0,255,0,0.9', false); + + // this.game.debug.text(this.boundsCustom.width + ' x ' + this.boundsCustom.height, this.boundsCustom.x + 4, this.boundsCustom.y + 16); + // this.game.debug.geom(this.boundsCustom, 'rgba(255,255,0,0.9', false); + + } + +}; + +Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. +* Please try to avoid using in production games with a long time to build. +* This is also why the documentation is incomplete. +* +* A responsive grid layer. +* +* @class Phaser.FlexLayer +* @extends Phaser.Group +* @constructor +* @param {Phaser.FlexGrid} manager - The FlexGrid that owns this FlexLayer. +* @param {Phaser.Point} position - A reference to the Point object used for positioning. +* @param {Phaser.Rectangle} bounds - A reference to the Rectangle used for the layer bounds. +* @param {Phaser.Point} scale - A reference to the Point object used for layer scaling. +*/ +Phaser.FlexLayer = function (manager, position, bounds, scale) { + + Phaser.Group.call(this, manager.game, null, '__flexLayer' + manager.game.rnd.uuid(), false); + + /** + * @property {Phaser.ScaleManager} scale - A reference to the ScaleManager. + */ + this.manager = manager.manager; + + /** + * @property {Phaser.FlexGrid} grid - A reference to the FlexGrid that owns this layer. + */ + this.grid = manager; + + /** + * Should the FlexLayer remain through a State swap? + * + * @type {boolean} + */ + this.persist = false; + + /** + * @property {Phaser.Point} position + */ + this.position = position; + + /** + * @property {Phaser.Rectangle} bounds + */ + this.bounds = bounds; + + /** + * @property {Phaser.Point} scale + */ + this.scale = scale; + + /** + * @property {Phaser.Point} topLeft + */ + this.topLeft = bounds.topLeft; + + /** + * @property {Phaser.Point} topMiddle + */ + this.topMiddle = new Phaser.Point(bounds.halfWidth, 0); + + /** + * @property {Phaser.Point} topRight + */ + this.topRight = bounds.topRight; + + /** + * @property {Phaser.Point} bottomLeft + */ + this.bottomLeft = bounds.bottomLeft; + + /** + * @property {Phaser.Point} bottomMiddle + */ + this.bottomMiddle = new Phaser.Point(bounds.halfWidth, bounds.bottom); + + /** + * @property {Phaser.Point} bottomRight + */ + this.bottomRight = bounds.bottomRight; + +}; + +Phaser.FlexLayer.prototype = Object.create(Phaser.Group.prototype); +Phaser.FlexLayer.prototype.constructor = Phaser.FlexLayer; + +/** + * Resize. + * + * @method Phaser.FlexLayer#resize + */ +Phaser.FlexLayer.prototype.resize = function () { +}; + +/** + * Debug. + * + * @method Phaser.FlexLayer#debug + */ +Phaser.FlexLayer.prototype.debug = function () { + + this.game.debug.text(this.bounds.width + ' x ' + this.bounds.height, this.bounds.x + 4, this.bounds.y + 16); + this.game.debug.geom(this.bounds, 'rgba(0,0,255,0.9', false); + + this.game.debug.geom(this.topLeft, 'rgba(255,255,255,0.9'); + this.game.debug.geom(this.topMiddle, 'rgba(255,255,255,0.9'); + this.game.debug.geom(this.topRight, 'rgba(255,255,255,0.9'); + +}; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * The Phaser.Color class is a set of static methods that assist in color manipulation and conversion. * @@ -65777,9 +65878,9 @@ Phaser.Color = { * * @method Phaser.Color.getRandomColor * @static - * @param {number} min - The lowest value to use for the color. - * @param {number} max - The highest value to use for the color. - * @param {number} alpha - The alpha value of the returning color (default 255 = fully opaque). + * @param {number} [min=0] - The lowest value to use for the color. + * @param {number} [max=255] - The highest value to use for the color. + * @param {number} [alpha=255] - The alpha value of the returning color (default 255 = fully opaque). * @returns {number} 32-bit color value with alpha. */ getRandomColor: function (min, max, alpha) { @@ -66301,195 +66402,6 @@ Phaser.Color = { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* A basic Linked List data structure. -* -* This implementation _modifies_ the `prev` and `next` properties of each item added: -* - The `prev` and `next` properties must be writable and should not be used for any other purpose. -* - Items _cannot_ be added to multiple LinkedLists at the same time. -* - Only objects can be added. -* -* @class Phaser.LinkedList -* @constructor -*/ -Phaser.LinkedList = function () { - - /** - * Next element in the list. - * @property {object} next - * @default - */ - this.next = null; - - /** - * Previous element in the list. - * @property {object} prev - * @default - */ - this.prev = null; - - /** - * First element in the list. - * @property {object} first - * @default - */ - this.first = null; - - /** - * Last element in the list. - * @property {object} last - * @default - */ - this.last = null; - - /** - * Number of elements in the list. - * @property {integer} total - * @default - */ - this.total = 0; - -}; - -Phaser.LinkedList.prototype = { - - /** - * Adds a new element to this linked list. - * - * @method Phaser.LinkedList#add - * @param {object} item - The element to add to this list. Can be a Phaser.Sprite or any other object you need to quickly iterate through. - * @return {object} The item that was added. - */ - add: function (item) { - - // If the list is empty - if (this.total === 0 && this.first === null && this.last === null) - { - this.first = item; - this.last = item; - this.next = item; - item.prev = this; - this.total++; - return item; - } - - // Gets appended to the end of the list, regardless of anything, and it won't have any children of its own (non-nested list) - this.last.next = item; - - item.prev = this.last; - - this.last = item; - - this.total++; - - return item; - - }, - - /** - * Resets the first, last, next and previous node pointers in this list. - * - * @method Phaser.LinkedList#reset - */ - reset: function () { - - this.first = null; - this.last = null; - this.next = null; - this.prev = null; - this.total = 0; - - }, - - /** - * Removes the given element from this linked list if it exists. - * - * @method Phaser.LinkedList#remove - * @param {object} item - The item to be removed from the list. - */ - remove: function (item) { - - if (this.total === 1) - { - this.reset(); - item.next = item.prev = null; - return; - } - - if (item === this.first) - { - // It was 'first', make 'first' point to first.next - this.first = this.first.next; - } - else if (item === this.last) - { - // It was 'last', make 'last' point to last.prev - this.last = this.last.prev; - } - - if (item.prev) - { - // make item.prev.next point to childs.next instead of item - item.prev.next = item.next; - } - - if (item.next) - { - // make item.next.prev point to item.prev instead of item - item.next.prev = item.prev; - } - - item.next = item.prev = null; - - if (this.first === null ) - { - this.last = null; - } - - this.total--; - - }, - - /** - * Calls a function on all members of this list, using the member as the context for the callback. - * The function must exist on the member. - * - * @method Phaser.LinkedList#callAll - * @param {function} callback - The function to call. - */ - callAll: function (callback) { - - if (!this.first || !this.last) - { - return; - } - - var entity = this.first; - - do - { - if (entity && entity[callback]) - { - entity[callback].call(entity); - } - - entity = entity.next; - - } - while(entity != this.last.next); - - } - -}; - -Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * The Physics Manager is responsible for looking after all of the running physics systems. * Phaser supports 4 physics systems: Arcade Physics, P2, Ninja Physics and Box2D via a commercial plugin. @@ -69501,17 +69413,14 @@ Phaser.Physics.Arcade.Body.prototype.constructor = Phaser.Physics.Arcade.Body; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -Phaser.Physics.Arcade.TilemapCollision = function () { - -}; - /** -* The Arcade Physics tilemap collision methods. +* The Arcade Physics Tile map collision methods. * * @class Phaser.Physics.Arcade.TilemapCollision * @constructor -* @param {Phaser.Game} game - reference to the current game instance. */ +Phaser.Physics.Arcade.TilemapCollision = function () {}; + Phaser.Physics.Arcade.TilemapCollision.prototype = { /** @@ -73689,6 +73598,7 @@ Phaser.TilemapParser = { * However if your map is small, or you need to update the tiles (perhaps the map dynamically changes * during the game) then leave the default value set. * + * @constant * @type {boolean} */ INSERT_NULL: false, @@ -73900,6 +73810,24 @@ Phaser.TilemapParser = { } var curl = json.layers[i]; + + // Base64 decode data if necessary + // NOTE: uncompressed base64 only. + if (!curl.compression && curl.encoding && curl.encoding === "base64") { + var binaryString = window.atob(curl.data); + var len = binaryString.length; + var bytes = new Array( len ); + // Interpret binaryString as an array of bytes representing + // little-endian encoded uint32 values. + for (var i = 0; i < len; i+=4) { + bytes[i/4] = (binaryString.charCodeAt(i) | + binaryString.charCodeAt(i+1) << 8 | + binaryString.charCodeAt(i+2) << 16 | + binaryString.charCodeAt(i+3) << 24) >>> 0; + } + curl.data = bytes; + } + var layer = { @@ -74599,6 +74527,172 @@ Phaser.Tileset.prototype.constructor = Phaser.Tileset; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* Create a new `Particle` object. Particles are extended Sprites that are emitted by a particle emitter such as Phaser.Particles.Arcade.Emitter. +* +* @class Phaser.Particle +* @constructor +* @extends Phaser.Sprite +* @param {Phaser.Game} game - A reference to the currently running game. +* @param {number} x - The x coordinate (in world space) to position the Particle at. +* @param {number} y - The y coordinate (in world space) to position the Particle at. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. +* @param {string|number} frame - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +*/ +Phaser.Particle = function (game, x, y, key, frame) { + + Phaser.Sprite.call(this, game, x, y, key, frame); + + /** + * @property {boolean} autoScale - If this Particle automatically scales this is set to true by Particle.setScaleData. + * @protected + */ + this.autoScale = false; + + /** + * @property {array} scaleData - A reference to the scaleData array owned by the Emitter that emitted this Particle. + * @protected + */ + this.scaleData = null; + + /** + * @property {number} _s - Internal cache var for tracking auto scale. + * @private + */ + this._s = 0; + + /** + * @property {boolean} autoAlpha - If this Particle automatically changes alpha this is set to true by Particle.setAlphaData. + * @protected + */ + this.autoAlpha = false; + + /** + * @property {array} alphaData - A reference to the alphaData array owned by the Emitter that emitted this Particle. + * @protected + */ + this.alphaData = null; + + /** + * @property {number} _a - Internal cache var for tracking auto alpha. + * @private + */ + this._a = 0; + +}; + +Phaser.Particle.prototype = Object.create(Phaser.Sprite.prototype); +Phaser.Particle.prototype.constructor = Phaser.Particle; + +/** +* Updates the Particle scale or alpha if autoScale and autoAlpha are set. +* +* @method Phaser.Particle#update +* @memberof Phaser.Particle +*/ +Phaser.Particle.prototype.update = function() { + + if (this.autoScale) + { + this._s--; + + if (this._s) + { + this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); + } + else + { + this.autoScale = false; + } + } + + if (this.autoAlpha) + { + this._a--; + + if (this._a) + { + this.alpha = this.alphaData[this._a].v; + } + else + { + this.autoAlpha = false; + } + } + +}; + +/** +* Called by the Emitter when this particle is emitted. Left empty for you to over-ride as required. +* +* @method Phaser.Particle#onEmit +* @memberof Phaser.Particle +*/ +Phaser.Particle.prototype.onEmit = function() { +}; + +/** +* Called by the Emitter if autoAlpha has been enabled. Passes over the alpha ease data and resets the alpha counter. +* +* @method Phaser.Particle#setAlphaData +* @memberof Phaser.Particle +*/ +Phaser.Particle.prototype.setAlphaData = function(data) { + + this.alphaData = data; + this._a = data.length - 1; + this.alpha = this.alphaData[this._a].v; + this.autoAlpha = true; + +}; + +/** +* Called by the Emitter if autoScale has been enabled. Passes over the scale ease data and resets the scale counter. +* +* @method Phaser.Particle#setScaleData +* @memberof Phaser.Particle +*/ +Phaser.Particle.prototype.setScaleData = function(data) { + + this.scaleData = data; + this._s = data.length - 1; + this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); + this.autoScale = true; + +}; + +/** +* Resets the Particle. This places the Particle at the given x/y world coordinates and then +* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state and health values. +* If the Particle has a physics body that too is reset. +* +* @method Phaser.Particle#reset +* @memberof Phaser.Particle +* @param {number} x - The x coordinate (in world space) to position the Particle at. +* @param {number} y - The y coordinate (in world space) to position the Particle at. +* @param {number} [health=1] - The health to give the Particle. +* @return (Phaser.Particle) This instance. +*/ +Phaser.Particle.prototype.reset = function(x, y, health) { + + Phaser.Component.Reset.prototype.reset.call(this, x, y, health); + + this.alpha = 1; + this.scale.set(1); + + this.autoScale = false; + this.autoAlpha = false; + + return this; + +}; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * Phaser.Particles is the Particle Manager for the game. It is called during the game update loop and in turn updates any Emitters attached to it. * @@ -75224,12 +75318,23 @@ Phaser.Particles.Arcade.Emitter.prototype.start = function (explode, lifespan, f }; /** -* This function can be used both internally and externally to emit the next particle in the queue. +* This function is used internally to emit the next particle in the queue. +* +* However it can also be called externally to emit a particle. +* +* When called externally you can use the arguments to override any defaults the Emitter has set. * * @method Phaser.Particles.Arcade.Emitter#emitParticle +* @param {number} [x] - The x coordinate to emit the particle from. If `null` or `undefined` it will use `Emitter.emitX` or if the Emitter has a width > 1 a random value between `Emitter.left` and `Emitter.right`. +* @param {number} [y] - The y coordinate to emit the particle from. If `null` or `undefined` it will use `Emitter.emitY` or if the Emitter has a height > 1 a random value between `Emitter.top` and `Emitter.bottom`. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @return {boolean} True if a particle was emitted, otherwise false. */ -Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function () { +Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function (x, y, key, frame) { + + if (x === undefined) { x = null; } + if (y === undefined) { y = null; } var particle = this.getFirstExists(false); @@ -75238,15 +75343,40 @@ Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function () { return false; } - if (this.width > 1 || this.height > 1) + var rnd = this.game.rnd; + + if (key !== undefined && frame !== undefined) { - particle.reset(this.game.rnd.integerInRange(this.left, this.right), this.game.rnd.integerInRange(this.top, this.bottom)); + particle.loadTexture(key, frame); } - else + else if (key !== undefined) { - particle.reset(this.emitX, this.emitY); + particle.loadTexture(key); } + var emitX = this.emitX; + var emitY = this.emitY; + + if (x !== null) + { + emitX = x; + } + else if (this.width > 1) + { + emitX = rnd.between(this.left, this.right); + } + + if (y !== null) + { + emitY = y; + } + else if (this.height > 1) + { + emitY = rnd.between(this.top, this.bottom); + } + + particle.reset(emitX, emitY); + particle.angle = 0; particle.lifespan = this.lifespan; @@ -75265,20 +75395,23 @@ Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function () { } else if (this.minParticleScale !== 1 || this.maxParticleScale !== 1) { - particle.scale.set(this.game.rnd.realInRange(this.minParticleScale, this.maxParticleScale)); + particle.scale.set(rnd.realInRange(this.minParticleScale, this.maxParticleScale)); } else if ((this._minParticleScale.x !== this._maxParticleScale.x) || (this._minParticleScale.y !== this._maxParticleScale.y)) { - particle.scale.set(this.game.rnd.realInRange(this._minParticleScale.x, this._maxParticleScale.x), this.game.rnd.realInRange(this._minParticleScale.y, this._maxParticleScale.y)); + particle.scale.set(rnd.realInRange(this._minParticleScale.x, this._maxParticleScale.x), rnd.realInRange(this._minParticleScale.y, this._maxParticleScale.y)); } - if (Array.isArray(this._frames === 'object')) + if (frame === undefined) { - particle.frame = this.game.rnd.pick(this._frames); - } - else - { - particle.frame = this._frames; + if (Array.isArray(this._frames)) + { + particle.frame = this.game.rnd.pick(this._frames); + } + else + { + particle.frame = this._frames; + } } if (this.autoAlpha) @@ -75287,25 +75420,24 @@ Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function () { } else { - particle.alpha = this.game.rnd.realInRange(this.minParticleAlpha, this.maxParticleAlpha); + particle.alpha = rnd.realInRange(this.minParticleAlpha, this.maxParticleAlpha); } particle.blendMode = this.blendMode; - particle.body.updateBounds(); + var body = particle.body; - particle.body.bounce.setTo(this.bounce.x, this.bounce.y); + body.updateBounds(); - particle.body.velocity.x = this.game.rnd.between(this.minParticleSpeed.x, this.maxParticleSpeed.x); - particle.body.velocity.y = this.game.rnd.between(this.minParticleSpeed.y, this.maxParticleSpeed.y); - particle.body.angularVelocity = this.game.rnd.between(this.minRotation, this.maxRotation); + body.bounce.copyFrom(this.bounce); + body.drag.copyFrom(this.particleDrag); - particle.body.gravity.y = this.gravity; + body.velocity.x = rnd.between(this.minParticleSpeed.x, this.maxParticleSpeed.x); + body.velocity.y = rnd.between(this.minParticleSpeed.y, this.maxParticleSpeed.y); + body.angularVelocity = rnd.between(this.minRotation, this.maxRotation); - particle.body.drag.x = this.particleDrag.x; - particle.body.drag.y = this.particleDrag.y; - - particle.body.angularDrag = this.angularDrag; + body.gravity.y = this.gravity; + body.angularDrag = this.angularDrag; particle.onEmit(); @@ -77025,7 +77157,7 @@ if (PIXI.RenderTexture.tempMatrix === undefined) PIXI.RenderTexture.tempMatrix = new PIXI.Matrix(); } -if (PIXI.Graphics.POLY === undefined) +if (PIXI.Graphics && PIXI.Graphics.POLY === undefined) { PIXI.Graphics.POLY = Phaser.POLYGON; PIXI.Graphics.RECT = Phaser.RECTANGLE; diff --git a/build/custom/phaser-arcade-physics.map b/build/custom/phaser-arcade-physics.map index a26cecf51..5147a37f8 100644 --- a/build/custom/phaser-arcade-physics.map +++ b/build/custom/phaser-arcade-physics.map @@ -1 +1 @@ -{"version":3,"file":"phaser-arcade-physics.min.js","sources":["phaser-arcade-physics.js"],"names":["root","this","PIXI","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","defaultRenderOptions","view","transparent","antialias","preserveDrawingBuffer","resolution","clearBeforeRender","autoResize","DisplayObject","position","Point","scale","transformCallback","transformCallbackContext","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","game","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","call","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","valid","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","Stage","backgroundColor","setBackgroundColor","backgroundColorSplit","hex2rgb","hex","toString","substr","backgroundColorString","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","PolyK","Triangulate","sign","n","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","u","v","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","WebGLGraphics","renderGraphics","graphics","webGLData","projection","offset","primitiveShader","updateGraphics","webGL","_webGL","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","toArray","uniform1f","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","buffer","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","clearDirty","graphicsData","reset","graphicsDataPool","Graphics","POLY","points","shape","slice","closed","fill","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","lineWidth","buildLine","RECT","buildRectangle","CIRC","ELIP","buildCircle","RREC","buildRoundedRectangle","upload","pop","WebGLGraphicsData","rectData","fillColor","fillAlpha","r","g","verts","vertPos","tempPoints","rrectData","radius","recPoints","concat","quadraticBezierCurve","vecPos","triangles","fromX","fromY","cpX","cpY","toX","toY","getPt","n1","n2","perc","diff","xa","ya","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","a1","b1","c1","a2","b2","c2","denom","pdist","dist","indexCount","indexStart","lineColor","lineAlpha","abs","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","glContexts","WebGLRenderer","options","defaultRenderer","_contextOptions","premultipliedAlpha","stencil","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","__stage","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","clear","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","stencilStack","reverse","count","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","EQUAL","DECR","INCR","_currentGraphics","complexPrimitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","temp","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","navigator","isCocoonJS","screencanvas","removeView","updateGraphicsTint","_fillTint","_lineTint","beginPath","moveTo","lineTo","closePath","strokeStyle","stroke","strokeRect","arc","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","rx","ry","maxRadius","min","quadraticCurveTo","len","rect","tintR","tintG","tintB","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","Phaser","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","updateFrame","rawX","rawY","Rope","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","trunc","ceil","floor","Function","bind","thisArg","bound","args","boundArgs","arguments","TypeError","F","proto","arg","forEach","fun","t","CheapArray","assert","warn","Utils","getProperty","obj","prop","parts","split","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","uc","ua","ub","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","empty","inflatePoint","containsRaw","rw","rh","containsPoint","volume","sameDimensions","aabb","MIN_VALUE","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","_targetPosition","_edge","_position","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","unfollow","focusOn","setPosition","focusOnXY","update","updateTarget","checkBounds","setBoundsToWorld","setSize","Create","bmd","make","bitmapData","ctx","palettes",1,2,3,4,5,6,7,8,9,"A","B","C","D","E","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","row","grid","cellWidth","cellHeight","State","camera","cache","input","load","math","sound","time","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","Signal","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","state","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","dispatch","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","disableVisibilityChange","exists","currentRenderOrderID","_hiddenVar","_onChange","_backgroundColor","config","parseConfig","DOM","getOffset","Canvas","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","getColor","RGBtoString","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","addToHash","events","onAddedToGroup$dispatch","removeFromHash","addMultiple","moveAll","addAt","updateZ","getAt","createMultiple","quantity","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","oldChild","newChild","hasProperty","operation","force","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","getFirstAlive","getFirstDead","getTop","getBottom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","horizontal","vertical","between","FlexGrid","manager","boundsCustom","boundsFluid","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFluidInversed","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","multiplier","layers","createCustomLayer","addToWorld","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","onResize","fitSprite","scaleSprite","text","geom","uuid","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","ScaleManager","dom","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","margin","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentNode","parentScaleFactor","trackParentInterval","onSizeChange","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","fullscreen","cocoonJS","iPad","webApp","desktop","android","chrome","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","fullScreenScaleMode","getElementById","getParentBounds","visualBounds","newWidth","newHeight","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","documentElement","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","setTimeout","activePointer","mousePointer","addClickTrampoline","smoothed","cleanupCreatedTarget","initData","targetElement","insertBefore","appendChild","fullscreenKeyboard","requestFullscreen","Element","ALLOW_KEYBOARD_INPUT","stopFullScreen","cancelFullscreen","prepScreenMode","enteringFullscreen","createdTarget","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","webAudio","contextRestored","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFps","updateRender","slowMotion","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","addMoveCallback","deleteMoveCallback","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","duration","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","leftButton","middleButton","rightButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","removeTouchLockCallback","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","scaleLayer","dragOffset","dragFromCenter","dragStartPoint","snapPoint","_dragPoint","_dragPhase","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","_draggedPointerID","updateDrag","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","startDrag","onInputUp$dispatch","stopDrag","globalToLocalX","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_rawPad","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","processKeyPress","clearCaptures","String","fromCharCode","charCode","charCodeAt","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","loadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","heal","InCamera","InputEnabled","inputEnabled","InWorld","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","img","base","frameData","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","checkTransform","scaleMin","scaleMax","setScaleMinMax","Smoothed","existing","object","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","Tilemap","addToCache","addRenderTexture","video","url","addBitmapData","Tween","align","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_scroll","def","physicsElapsed","autoScroll","stopScroll","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","segments","difference","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","imageData","textureFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","HSLtoRGB","shiftHSL","limitValue","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","direction","scan","anchorX","anchorY","op","copyRect","drawGroup","drawFull","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","drawShape","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","beginFill","endFill","drawRect","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","updateCachedSpriteTexture","_prevTint","updateLocalBounds","tempPoint","cachedSprite","destroyCachedSprite","GraphicsData","drawTriangle","cull","triangle","cameraToFace","ab","cb","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","spaceLeft","words","wordWidth","wordWidthWithSpace","updateFont","match","fontFamily","setText","parseList","list","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","exec","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","prevCharCode","test","charAt","charData","kerning","xAdvance","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","FrameData","currentX","currentY","addFrame","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","deviceReadyAt","initialized","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","silk","audioData","ogg","opus","mp3","wav","m4a","webm","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","pixelRatio","littleEndian","support32bit","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","_initialize","_checkOS","vita","kindle","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","_checkBrowser","RegExp","$1","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","PORTRAIT","LANDSCAPE","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","skipPool","display","msTouchAction","overflowHidden","overflow","vendor","prefix","setImageRenderingCrisp","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","sum","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","frac","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","re","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","removeFrom","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","elapsedMS","fps","blob","reversed","asin","prevTime","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","updateAdvancedTiming","updateTimers","previousDateNow","timeCallExpected","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","spacing","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","audiosprite","jsonURL","jsonData","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","Blob","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","onFadeComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","onended","noteGrainOn","muted","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","mute","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","columnWidth","renderShadow","currentAlpha","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","POSITIVE_INFINITY","numberArray","numberArrayStep","rgba","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","q","hueToColor","updateColor","HSVtoRGB","color32","getColor32","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","LinkedList","entity","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","group1","group2","body1","body2","separateX","separateY","immovable","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","customSeparateX","bounce","moves","friction","nv1","mass","nv2","avg","deltaAbsY","overlapY","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","allowRotation","preRotation","newVelocity","deltaMax","facing","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","_sx","_sy","updateBounds","asx","asy","check","onFloor","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","collides","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","collision","currentLayer","debugMap","_results","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","columns","rows","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","getLayer","customClass","lw","lh","createLayer","getLayerIndex","TilemapLayer","indexes","bodies","getImageIndex","getObjectIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","getTileRight","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","map","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","tileColor","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","tilewidth","tileheight","curl","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","curo","polyline","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","on","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"phaser-arcade-physics.min.js","sources":["phaser-arcade-physics.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","transformCallback","call","transformCallbackContext","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","valid","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","trunc","ceil","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","warn","Utils","getProperty","obj","prop","parts","split","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","MIN_VALUE","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","_targetPosition","_edge","_position","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","unfollow","focusOn","setPosition","focusOnXY","update","updateTarget","checkBounds","setBoundsToWorld","setSize","reset","State","make","camera","cache","input","load","math","sound","time","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","Signal","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","state","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","dispatch","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","exists","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","addToHash","events","onAddedToGroup$dispatch","removeFromHash","addMultiple","moveAll","addAt","updateZ","getAt","createMultiple","quantity","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","oldChild","newChild","hasProperty","operation","force","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","horizontal","vertical","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","Graphics","graphicsData","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","duration","justReleased","pointerMode","CONTACT","leftButton","middleButton","rightButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","scaleLayer","dragOffset","dragFromCenter","dragStartPoint","snapPoint","_dragPoint","_dragPhase","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","_draggedPointerID","updateDrag","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","startDrag","onInputUp$dispatch","stopDrag","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_rawPad","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","rect","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","heal","InCamera","InputEnabled","inputEnabled","InWorld","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","img","base","frameData","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","object","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","Tilemap","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","align","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","ctx","imageData","textureFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","HSLtoRGB","shiftHSL","limitValue","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","direction","scan","newWidth","newHeight","op","copyRect","drawGroup","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","beginFill","fillColor","endFill","drawRect","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","updateCachedSpriteTexture","_prevTint","updateLocalBounds","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","triangles","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","spaceLeft","words","wordWidth","wordWidthWithSpace","updateFont","fontFamily","setText","parseList","list","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","exec","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","FrameData","currentX","currentY","addFrame","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","segments","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","sum","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","frac","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","re","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","removeFrom","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","elapsedMS","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","audiosprite","jsonURL","jsonData","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","Blob","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","onFadeComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","mute","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","PORTRAIT","LANDSCAPE","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","POSITIVE_INFINITY","numberArray","numberArrayStep","LinkedList","entity","palettes",1,2,3,4,5,6,7,8,9,"PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","cellWidth","cellHeight","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","q","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","group1","group2","body1","body2","separateX","separateY","immovable","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","customSeparateX","bounce","moves","friction","nv1","mass","nv2","avg","deltaAbsY","overlapY","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","allowRotation","preRotation","newVelocity","deltaMax","facing","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","_sx","_sy","updateBounds","asx","asy","check","onFloor","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","collides","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","collision","currentLayer","debugMap","_results","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","columns","rows","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","getLayer","customClass","lw","lh","createLayer","getLayerIndex","TilemapLayer","indexes","bodies","getImageIndex","getObjectIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","getTileRight","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","map","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","tileColor","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","curo","polyline","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","on","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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"} \ No newline at end of file diff --git a/build/custom/phaser-arcade-physics.min.js b/build/custom/phaser-arcade-physics.min.js index 591475eb3..3edc88ae0 100644 --- a/build/custom/phaser-arcade-physics.min.js +++ b/build/custom/phaser-arcade-physics.min.js @@ -1,22 +1,21 @@ -/* Phaser v2.4.3 - http://phaser.io - @photonstorm - (c) 2015 Photon Storm Ltd. */ +/* Phaser v2.4.4 - http://phaser.io - @photonstorm - (c) 2015 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.8",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0,autoResize:!1},b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.transformCallback=null,this.transformCallbackContext=null,this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.transformCallback=null,this.transformCallbackContext=null,this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gj;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a;for(var b=0;bi&&(i*=-1),0>l&&(l*=-1),q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n;else{var s=i*e+k*g+m,t=l*g+j*e+n,u=i*d+k*g+m,v=l*g+j*d+n,w=i*d+k*f+m,x=l*f+j*d+n,y=i*e+k*f+m,z=l*f+j*e+n;q=q>s?s:q,q=q>u?u:q,q=q>w?w:q,q=q>y?y:q,r=r>t?t:r,r=r>v?v:r,r=r>x?x:r,r=r>z?z:r,o=s>o?s:o,o=u>o?u:o,o=w>o?w:o,o=y>o?y:o,p=t>p?t:p,p=v>p?v:p,p=x>p?x:p,p=z>p?z:p}var A=this._bounds;return A.x=q,A.width=o-q,A.y=r,A.height=p-r,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return null;for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;c=6)if(h.points.length<12){g=b.WebGLGraphics.switchMode(d,0);var i=b.WebGLGraphics.buildPoly(h,g);i||(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g))}else g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g);h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))}else g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g);d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d);if(!m)return!1;var n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i);return!0}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new b.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new b.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.instances=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)void 0===d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.autoResize=d.autoResize||!1,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,b.instances[this.glContextId]=this,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(this.__stage=a),a.updateTransform();var b=this.gl;b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d,e){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.flipY=d?-1:1,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession,e),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.autoResize&&(this.view.style.width=this.width/this.resolution+"px",this.view.style.height=this.height/this.resolution+"px"),this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a.mipmap&&b.isPowerOfTwo(a.width,a.height)?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR_MIPMAP_LINEAR:c.NEAREST_MIPMAP_NEAREST),c.generateMipmap(c.TEXTURE_2D)):c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.destroy=function(){b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null,b.CanvasPool.remove(this),b.instances[this.glContextId]=null,b.WebGLRenderer.glContextId--},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniform1f(e.flipY,d.flipY),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform1f(e.flipY,d.flipY),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g -},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(f.fillColor||0===f.fillColor)&&(c.globalAlpha=f.fillAlpha*d,c.fillStyle="#"+("00000"+(0|h).toString(16)).substr(-6),c.fill()),f.lineWidth&&(c.globalAlpha=f.lineAlpha*d,c.strokeStyle="#"+("00000"+(0|i).toString(16)).substr(-6),c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){c.beginPath();for(var e=0;d>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iz?z:y,c.moveTo(u,v+y),c.lineTo(u,v+x-y),c.quadraticCurveTo(u,v+x,u+y,v+x),c.lineTo(u+w-y,v+x),c.quadraticCurveTo(u+w,v+x,u+w,v+x-y),c.lineTo(u+w,v+y),c.quadraticCurveTo(u+w,v,u+w-y,v),c.lineTo(u+y,v),c.quadraticCurveTo(u,v,u,v+y),c.closePath()}}}},b.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this.mipmap=!1,this._dirty=[!0,!0,!0,!0],a&&((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height&&(this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty()),this.imageUrl=null,this._powerOf2=!1)},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.forceLoaded=function(a,b){this.hasLoaded=!0,this.width=a,this.height=b,this.dirty()},b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,navigator.isCocoonJS||(this.source.src="")):this.source&&this.source._pixiId&&(b.CanvasPool.removeByCanvas(this.source),delete b.BaseTextureCache[this.source._pixiId]),this.source=null,this.unloadFromGPU()},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;a=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|d.tx,0|d.ty):c.setTransform(d.a,d.b,d.c,d.d,d.tx,d.ty),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-1/0,k=-1/0,l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-1/0||1/0===k)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh() -},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){this.canvasBuffer.destroy(),b.Sprite.prototype.destroy.call(this),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.4.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*Math.PI*this._radius},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},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){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.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(c.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(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,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},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){a=a||1,b=b||0,d=d||0,e=e||1,f=f||0,g=g||0,this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return 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},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.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},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,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)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(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 c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.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(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width -}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.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(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.prototype={preUpdate:function(){this.totalInView=0},follow:function(a,b){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(b){case c.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new c.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case c.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=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.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target),this.target.parent&&this._targetPosition.multiply(this.target.parent.worldTransform.a,this.target.parent.worldTransform.d),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),c.Create=function(a){this.game=a,this.bmd=a.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.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.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},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.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);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){if(!this._bindings)return-1;void 0===b&&(b=null);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){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e){void 0===e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.events&&f.events.onAddedToGroup$dispatch(f,this),null===this.cursor&&(this.cursor=f),f},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.resetCursor=function(a){return void 0===a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0 -},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.replace=function(a,b){var d=this.getIndex(a);return-1!==d?(b.parent&&(b.parent instanceof c.Group?b.parent.remove(b):b.parent.removeChild(b)),this.remove(a),this.addAt(b,d),a):void 0},c.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},c.Group.prototype.setProperty=function(a,b,c,d,e){if(void 0===e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?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===f?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===f?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===f&&(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)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b){if(void 0===a&&(a=!1),void 0===b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);this.removeFromHash(c),a&&c&&c.destroy(!0)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){a=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Game=function(a,b,d,e,f,g,h,i){return this.id=c.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.resolution=1,this._width=800,this._height=600,this.transparent=!1,this.antialias=!0,this.preserveDrawingBuffer=!1,this.renderer=null,this.renderType=c.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.plugins=null,this.rnd=null,this.device=c.Device,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.create=null,this.lockRender=!1,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,this.currentUpdateID=0,this.updatesThisFrame=1,this._deltaTime=0,this._lastCount=0,this._spiraling=0,this._kickstart=!0,this.fpsProblemNotifier=new c.Signal,this.forceSingleUpdate=!1,this._nextFpsNotification=0,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):(this.config={enableDebug:!0},"undefined"!=typeof a&&(this._width=a),"undefined"!=typeof b&&(this._height=b),"undefined"!=typeof d&&(this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new c.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new c.StateManager(this,f)),this.device.whenReady(this.boot,this),this},c.Game.prototype={parseConfig:function(a){this.config=a,void 0===a.enableDebug&&(this.config.enableDebug=!0),a.width&&(this._width=a.width),a.height&&(this._height=a.height),a.renderer&&(this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.resolution&&(this.resolution=a.resolution),a.preserveDrawingBuffer&&(this.preserveDrawingBuffer=a.preserveDrawingBuffer),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var b=[(Date.now()*Math.random()).toString()];a.seed&&(b=a.seed),this.rnd=new c.RandomDataGenerator(b);var d=null;a.state&&(d=a.state),this.state=new c.StateManager(this,d)},boot:function(){this.isBooted||(this.onPause=new c.Signal,this.onResume=new c.Signal,this.onBlur=new c.Signal,this.onFocus=new c.Signal,this.isBooted=!0,this.math=c.Math,this.scale=new c.ScaleManager(this,this._width,this._height),this.stage=new c.Stage(this),this.setUpRenderer(),this.world=new c.World(this),this.add=new c.GameObjectFactory(this),this.make=new c.GameObjectCreator(this),this.cache=new c.Cache(this),this.load=new c.Loader(this),this.time=new c.Time(this),this.tweens=new c.TweenManager(this),this.input=new c.Input(this),this.sound=new c.SoundManager(this),this.physics=new c.Physics(this,this.physicsConfig),this.particles=new c.Particles(this),this.create=new c.Create(this),this.plugins=new c.PluginManager(this),this.net=new c.Net(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.scale.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.config.enableDebug?(this.debug=new c.Utils.Debug(this),this.debug.boot()):this.debug={preUpdate:function(){},update:function(){},reset:function(){}},this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new c.RequestAnimationFrame(this,this.config.forceSetTimeOut):new c.RequestAnimationFrame(this,!1),this._kickstart=!0,window.focus&&(!window.PhaserGlobal||window.PhaserGlobal&&!window.PhaserGlobal.stopFocus)&&window.focus(),this.raf.start())},showDebugHeader:function(){if(!window.PhaserGlobal||!window.PhaserGlobal.hideBanner){var a=c.VERSION,b="Canvas",d="HTML Audio",e=1;if(this.renderType===c.WEBGL?(b="WebGL",e++):this.renderType==c.HEADLESS&&(b="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" %c %c %c http://phaser.io %c♥%c♥%c♥","background: #9854d8","background: #6c2ca7","color: #ffffff; background: #450f78;","background: #6c2ca7","background: #9854d8","background: #ffffff"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===c.AUTO&&(this.renderType=c.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:this.resolution,clearBeforeRender:!0}),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:this.resolution,antialias:this.antialias,preserveDrawingBuffer:this.preserveDrawingBuffer}),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(1/this.time.desiredFps),this.stage.updateTransform(),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(1/this.time.desiredFps),this.stage.updateTransform(),c++,!this.forceSingleUpdate||1!==c););c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],b,d))return!0;return!1},onClickTrampoline:function(){this.activePointer.processClickTrampolines()}},c.Input.prototype.constructor=c.Input,Object.defineProperty(c.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.duration=0,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),a.ctrlKey&&this.leftButton.isDown&&this.rightButton.start(a),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&(this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.x,this.y),this.game.input.onDown.dispatch(this,a),this.game.input.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){this.active&&(this.dirty&&(this.game.input.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=this.game.input.holdRate&&((this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+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,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),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.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){for(var b=Number.MAX_VALUE,c=-1,d=null,e=this.game.input.interactiveItems.first;e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e)),e=this.game.input.interactiveItems.next;for(var e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e),e=this.game.input.interactiveItems.next;return null===d?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=d,d._pointerOverHandler(this)):this.targetObject===d?d.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=d,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&(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=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!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.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderIDb;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];(b.isOver===!1||a.dirty)&&(b.isOver=!0,b.isOut=!1,b.timeOver=this.game.time.time,b.x=a.x-this.sprite.x,b.y=a.y-this.sprite.y,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a))}},_pointerOutHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];b.isOver=!1,b.isOut=!0,b.timeOut=this.game.time.time,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut$dispatch(this.sprite,a)}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown$dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var c=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.sprite.events.onInputUp$dispatch(this.sprite,a,c),c&&(c=this.checkPointerOver(a))),b.isOver=c,!c&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y))):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))),this.sprite.events.onDragUpdate.dispatch(this.sprite,a,b,c,this.snapPoint),!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){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if((this.autoCull||this.checkWorldBounds)&&(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull&&(this.game.world.camera.view.intersects(this._bounds)?(this.renderable=!0,this.game.world.camera.totalInView++):this.renderable=!1),this.checkWorldBounds))if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1;return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,"number"==typeof this.health&&(this.health=a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),e.hasFrameData(a.key,c.Cache.BITMAPDATA)&&(f=!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b));else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:this.checkTransform,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e)) -},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.splice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.splice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.TileSprite=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||256,f=f||256,g=g||null,h=h||null,this.type=c.TILESPRITE,this.physicsType=c.SPRITE,this._scroll=new c.Point;var i=a.cache.getImage("__default",!0);PIXI.TilingSprite.call(this,new PIXI.Texture(i.base),e,f),c.Component.Core.init.call(this,a,b,d,g,h)},c.TileSprite.prototype=Object.create(PIXI.TilingSprite.prototype),c.TileSprite.prototype.constructor=c.TileSprite,c.Component.Core.install.call(c.TileSprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","Smoothed"]),c.TileSprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.TileSprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.TileSprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.TileSprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TileSprite.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},c.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},c.TileSprite.prototype.destroy=function(a){c.Component.Destroy.prototype.destroy.call(this,a),PIXI.TilingSprite.prototype.destroy.call(this)},c.TileSprite.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,this._scroll=new c.Point,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;ka){a=Math.abs(a);var f=this.width-a;c.drawImage(e,0,0,a,d,f,0,a,d),c.drawImage(e,a,0,f,d,0,0,f,d)}else{var f=this.width-a;c.drawImage(e,f,0,a,d,0,0,a,d),c.drawImage(e,0,0,f,d,a,0,f,d)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a){var b=this._swapCanvas,c=b.getContext("2d"),d=this.width,e=this.canvas;if(c.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var f=this.height-a;c.drawImage(e,0,0,d,a,0,f,d,a),c.drawImage(e,0,a,d,f,0,0,d,f)}else{var f=this.height-a;c.drawImage(e,0,f,d,a,0,0,d,a),c.drawImage(e,0,0,d,f,0,a,d,f)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){if((void 0===a||null===a)&&(a=!1),(void 0===b||null===b)&&(b=!1),(void 0===d||null===d)&&(d=!1),a||b||d){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var f=c.Color.createColor(),g=e.y;g=0&&a<=this.width&&b>=0&&b<=this.height&&(this.pixels[b*this.width+a]=c.Device.LITTLE_ENDIAN?g<<24|f<<16|e<<8|d:d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.copy,this,null,null,null,null,null,null,null,null,null,null,null,null,null,null,b,c),this},drawFull:function(a,b,d){if(a.worldVisible===!1||0===a.worldAlpha||a.hasOwnProperty("exists")&&a.exists===!1)return this;if(a.type!==c.GROUP&&a.type!==c.EMITTER&&a.type!==c.BITMAPTEXT)if(a.type===c.GRAPHICS){var e=a.getBounds();this.ctx.save(),this.ctx.translate(e.x,e.y),PIXI.CanvasGraphics.renderGraphics(a,this.ctx),this.ctx.restore()}else this.copy(a,null,null,null,null,a.worldPosition.x,a.worldPosition.y,null,null,a.worldRotation,null,null,a.worldScale.x,a.worldScale.y,a.worldAlpha,b,d);if(a.children)for(var f=0;fb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i) -}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){if(d===e)return this;void 0===f&&(f=!1),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var g=f?-1*(d-e):e-d,h=40*Math.ceil(Math.abs(g)/(2*Math.PI));if(0===g)return this;var i=a+Math.cos(d)*c,j=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(i,j);for(var k=this.currentPath.shape.points,l=g/(2*h),m=2*l,n=Math.cos(l),o=Math.sin(l),p=h-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);k.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():(this.destroyCachedSprite(),this.dirty=!0)}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&(j+=c[k-1]),h=j+l}else for(var k=0;kq&&Math.abs(q)>o&&(q=-o),0!==q){var m=q*(b.length-1);p+=m}this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,g=0;g0&&(s+=q*g),"right"===this.style.align?r+=e-d[g]:"center"===this.style.align&&(r+=(e-d[g])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[g],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[g],r,s):this.renderTabLine(b[g],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[g],r,s):this.renderTabLine(b[g],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.runWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f,this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=null,h=this._maxWidth>0?this._maxWidth:null,i=[],j=0;j=h&&f>-1)return{width:e,text:c.substr(0,j-(j-f)),end:k,chars:i};e+=m.xAdvance*b,i.push(d+m.xOffset*b),d+=m.xAdvance*b,g=l}}return{width:e,text:c,end:k,chars:i}},c.BitmapText.prototype.updateText=function(){var a=this._data.font;if(a){var b=this.text,c=this._fontSize/a.size,d=[],e=0;this.textWidth=0;do{var f=this.scanLine(a,c,b);f.y=e,d.push(f),f.width>this.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText()) -}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){this._data.base.scaleMode=a?0:1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,this._scroll=new c.Point,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c0&&"none"!==a}var l=this;a(),g(),f(),e(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.DOM={getOffset:function(a,b){b=b||new c.Point;var d=a.getBoundingClientRect(),e=c.DOM.scrollY,f=c.DOM.scrollX,g=document.documentElement.clientTop,h=document.documentElement.clientLeft;return b.x=d.left+f-h,b.y=d.top+e-g,b},getBounds:function(a,b){return void 0===b&&(b=0),a=a&&!a.nodeType?a[0]:a,a&&1===a.nodeType?this.calibrate(a.getBoundingClientRect(),b):!1},calibrate:function(a,b){b=+b||0;var c={width:0,height:0,left:0,right:0,top:0,bottom:0};return c.width=(c.right=a.right+b)-(c.left=a.left-b),c.height=(c.bottom=a.bottom+b)-(c.top=a.top-b),c},getAspectRatio:function(a){a=null==a?this.visualBounds:1===a.nodeType?this.getBounds(a):a;var b=a.width,c=a.height;return"function"==typeof b&&(b=b.call(a)),"function"==typeof c&&(c=c.call(a)),b/c},inLayoutViewport:function(a,b){var c=this.getBounds(a,b);return!!c&&c.bottom>=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},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 void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var c=["i","mozI","oI","webkitI","msI"];for(var d in c){var e=c[d]+"mageSmoothingEnabled";if(e in a)return a[e]=b,a}return a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},c.RequestAnimationFrame=function(a,b){void 0===b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=0;b=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},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},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},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)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return 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)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===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}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,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 a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var j=Math.PI/180,k=180/Math.PI;return c.Math.degToRad=function(a){return a*j},c.Math.radToDeg=function(a){return a*k},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this) -},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),a?this.repeatAll(-1):this.repeatCounter=0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?!1:!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];this.parent.target[d]=Array.isArray(f)?this.interpolationFunction.call(this.interpolationContext,f,this.value):e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.dt=this.parent.reverse?this.duration:0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];e[f]=Array.isArray(h)?this.interpolationFunction(h,this.value):g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter)return c.TweenData.COMPLETE;this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.dt=this.parent.reverse?this.duration:0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.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 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.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*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=0,this.physicsElapsedMS=0,this.desiredFps=60,this.suggestedFps=null,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this.desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=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=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.splice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.splice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.splice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===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){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this) -},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.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,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(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)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break -}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.reset(),this.game.state.loadComplete())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayVideo(c))return a[b]}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayAudio(c))return a[b]}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=new Blob([new Uint8Array(b.response)])}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.data=a.callback?a.callback.call(a.callbackContext,a.key,b.response):b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio)if(this._sound.disconnect(this.externalNode?this.externalNode:this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if(this._sound.disconnect(this.externalNode?this.externalNode:this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.pendingPlayback=!1,this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(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(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,this.masterGain=void 0===this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.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 c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.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)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(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),void 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)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter&&this.matter.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body){var h;if(this.skipQuadTree||a.body.skipQuadTree){for(var i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,b.hash[i],d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var j=this.quadTree.retrieve(a),i=0;ij.body.right)continue;if(j.body.x>h.body.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.body.bottomj.body.bottom)continue;if(j.body.y>h.body.bottom)break}this.collideSpriteVsSprite(h,j,b,d,e,f)}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;h=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){if(a.immovable&&b.immovable)return!1;var d=0;if(this.intersects(a,b)){var e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;if(0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,0!==d){if(c||a.customSeparateX||b.customSeparateX)return!0;var f=a.velocity.x,g=b.velocity.x;if(a.immovable||b.immovable)a.immovable?b.immovable||(b.x+=d,b.velocity.x=f-g*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x=a.x-d,a.velocity.x=g-f*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x=a.x-d,b.x+=d;var h=Math.sqrt(g*g*b.mass/a.mass)*(g>0?1:-1),i=Math.sqrt(f*f*a.mass/b.mass)*(f>0?1:-1),j=.5*(h+i);h-=j,i-=j,a.velocity.x=j+h*a.bounce.x,b.velocity.x=j+i*b.bounce.x}return!0}}return!1},separateY:function(a,b,c){if(a.immovable&&b.immovable)return!1;var d=0;if(this.intersects(a,b)){var e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;if(0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,0!==d){if(c||a.customSeparateY||b.customSeparateY)return!0;var f=a.velocity.y,g=b.velocity.y;if(a.immovable||b.immovable)a.immovable?b.immovable||(b.y+=d,b.velocity.y=f-g*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y=a.y-d,a.velocity.y=g-f*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y=a.y-d,b.y+=d;var h=Math.sqrt(g*g*b.mass/a.mass)*(g>0?1:-1),i=Math.sqrt(f*f*a.mass/b.mass)*(f>0?1:-1),j=.5*(h+i);h-=j,i-=j,a.velocity.y=j+h*a.bounce.y,b.velocity.y=j+i*b.bounce.y}return!0}}return!1},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b) -},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)},distanceToXY:function(a,b,c){var d=a.x-b,e=a.y-c;return Math.sqrt(d*d+e*e)},distanceToPointer:function(a,b){b=b||this.game.input.activePointer;var c=a.x-b.worldX,d=a.y-b.worldY;return Math.sqrt(c*c+d*d)},angleBetween:function(a,b){var c=b.x-a.x,d=b.y-a.y;return Math.atan2(d,c)},angleToXY:function(a,b,c){var d=b-a.x,e=c-a.y;return Math.atan2(e,d)},angleToPointer:function(a,b){b=b||this.game.input.activePointer;var c=b.worldX-a.x,d=b.worldY-a.y;return Math.atan2(d,c)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point(0,0),this.deltaMax=new c.Point(0,0),this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point(0,0),this.bounce=new c.Point,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),(a.width!==this.width||a.height!==this.height)&&(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);(b!==this._sx||c!==this._sy)&&(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&this.dirty&&(this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision;a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,b){return c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?g=-1:b.deltaAbsX()g){if((c.faceLeft||c.faceRight)&&(e=this.tileCheckX(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(f=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(f=this.tileCheckY(b,c),0!==f&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(e=this.tileCheckX(b,c))}return 0!==e||0!==f},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&(a.customSeparateX?a.overlapX=c:this.processTileSeparationX(a,c)),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&(a.customSeparateY?a.overlapY=c:this.processTileSeparationY(a,c)),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if((void 0===b||null===b)&&(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+b+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new c.TilemapLayer(this.game,this,f,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){c.Component.FixedToCamera.postUpdate.call(this);var a=this.game.camera;this.scrollX=a.x*this.scrollFactorX/this.scale.x,this.scrollY=a.y*this.scrollFactorY/this.scale.y,this.render()},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._scrollY+(a-this._scrollY/this.scrollFactorY) -},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(g.fillStyle=this.tileColor,q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,(f.renderWidth!==b||f.renderHeight!==c)&&(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kp;p++){if(i=0,j=!1,l=g.data[p],l>536870912)switch(k=0,l>2147483648&&(l-=2147483648,k+=4),l>1073741824&&(l-=1073741824,k+=2),l>536870912&&(l-=536870912,k+=1),k){case 5:i=Math.PI/2;break;case 6:i=Math.PI;break;case 3:i=3*Math.PI/2;break;case 4:i=0,j=!0;break;case 7:i=Math.PI/2,j=!0;break;case 2:i=Math.PI,j=!0;break;case 1:i=3*Math.PI/2,j=!0}l>0?(n.push(new c.Tile(h,l,m,o.length,a.tilewidth,a.tileheight)),n[n.length-1].rotation=i,n[n.length-1].flipped=j):n.push(c.TilemapParser.INSERT_NULL?null:new c.Tile(h,-1,m,o.length,a.tilewidth,a.tileheight)),m++,m===g.width&&(o.push(n),m=0,n=[])}h.data=o,e.push(h)}d.layers=e;for(var r=[],f=0;fC;C++)if(B.objects[C].gid){var D={gid:B.objects[C].gid,name:B.objects[C].name,type:B.objects[C].hasOwnProperty("type")?B.objects[C].type:"",x:B.objects[C].x,y:B.objects[C].y,visible:B.objects[C].visible,properties:B.objects[C].properties};B.objects[C].rotation&&(D.rotation=B.objects[C].rotation),z[B.name].push(D)}else if(B.objects[C].polyline){var D={name:B.objects[C].name,type:B.objects[C].type,x:B.objects[C].x,y:B.objects[C].y,width:B.objects[C].width,height:B.objects[C].height,visible:B.objects[C].visible,properties:B.objects[C].properties};B.objects[C].rotation&&(D.rotation=B.objects[C].rotation),D.polyline=[];for(var E=0;E=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},c.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){this._flowTotal=0,this.start(!0,a,0,b,!1)},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){(void 0===c||0===c)&&(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c)},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),(void 0===c||null===c)&&(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity+=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion},c.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);return null===a?!1:(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.between(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit(),!0)},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},c.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(PIXI.TextureCache.__default.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this.video.addEventListener("ended",this.complete.bind(this),!0),this.video.loop=a?"loop":"",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):this.video.addEventListener("playing",this.playHandler.bind(this),!0)),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this.playHandler.bind(this)),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this.complete.bind(this),!0),this.video.removeEventListener("playing",this.playHandler.bind(this),!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0 -},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gj;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a;for(var b=0;bi){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|d.tx,0|d.ty):c.setTransform(d.a,d.b,d.c,d.d,d.tx,d.ty),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.4.4-RC1",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},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){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.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(c.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(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,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},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){a=a||1,b=b||0,d=d||0,e=e||1,f=f||0,g=g||0,this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return 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},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.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},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,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)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(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 c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.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(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.prototype={preUpdate:function(){this.totalInView=0},follow:function(a,b){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(b){case c.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new c.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case c.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=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.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target),this.target.parent&&this._targetPosition.multiply(this.target.parent.worldTransform.a,this.target.parent.worldTransform.d),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.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.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},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.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null, +this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);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){if(!this._bindings)return-1;void 0===b&&(b=null);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){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e){void 0===e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.events&&f.events.onAddedToGroup$dispatch(f,this),null===this.cursor&&(this.cursor=f),f},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.resetCursor=function(a){return void 0===a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.replace=function(a,b){var d=this.getIndex(a);return-1!==d?(b.parent&&(b.parent instanceof c.Group?b.parent.remove(b):b.parent.removeChild(b)),this.remove(a),this.addAt(b,d),a):void 0},c.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},c.Group.prototype.setProperty=function(a,b,c,d,e){if(void 0===e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?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===f?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===f?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===f&&(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)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b){if(void 0===a&&(a=!1),void 0===b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);this.removeFromHash(c),a&&c&&c.destroy(!0)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.stage.updateTransform(),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),this.stage.updateTransform(),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],b,d))return!0;return!1},onClickTrampoline:function(){this.activePointer.processClickTrampolines()}},c.Input.prototype.constructor=c.Input,Object.defineProperty(c.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),a.ctrlKey&&this.leftButton.isDown&&this.rightButton.start(a),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),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.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b), +this}},processInteractiveObjects:function(a){for(var b=Number.MAX_VALUE,c=-1,d=null,e=this.game.input.interactiveItems.first;e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e)),e=this.game.input.interactiveItems.next;for(var e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e),e=this.game.input.interactiveItems.next;return null===d?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=d,d._pointerOverHandler(this)):this.targetObject===d?d.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=d,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!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.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderIDb;b++)if(this._pointerData[b].isOver)return!0},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];(b.isOver===!1||a.dirty)&&(b.isOver=!0,b.isOut=!1,b.timeOver=this.game.time.time,b.x=a.x-this.sprite.x,b.y=a.y-this.sprite.y,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a))}},_pointerOutHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];b.isOver=!1,b.isOut=!0,b.timeOut=this.game.time.time,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut$dispatch(this.sprite,a)}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown$dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var c=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.sprite.events.onInputUp$dispatch(this.sprite,a,c),c&&(c=this.checkPointerOver(a))),b.isOver=c,!c&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y))):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))),this.sprite.events.onDragUpdate.dispatch(this.sprite,a,b,c,this.snapPoint),!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){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if((this.autoCull||this.checkWorldBounds)&&(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull&&(this.game.world.camera.view.intersects(this._bounds)?(this.renderable=!0,this.game.world.camera.totalInView++):this.renderable=!1),this.checkWorldBounds))if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1;return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.heal&&this.heal(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),e.hasFrameData(a.key,c.Cache.BITMAPDATA)&&(f=!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b));else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e), +!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),(!this.onOverMouseOnly||b.isMouse)&&(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){(void 0===b||null===b)&&(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,c.Group.prototype,PIXI.SpriteBatch.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e){(void 0===d||0===d)&&(d=256),(void 0===e||0===e)&&(e=256),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=PIXI.CanvasPool.create(this,d,e),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,d,e,"bitmapData"),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=PIXI.CanvasPool.create(this,d,e)},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0);var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0);var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){if((void 0===a||null===a)&&(a=!1),(void 0===b||null===b)&&(b=!1),(void 0===d||null===d)&&(d=!1),a||b||d){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var f=c.Color.createColor(),g=e.y;g=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.copy,this,null,null,null,null,null,null,null,null,null,null,null,null,null,null,b,c),this},drawFull:function(a,b,d){if(a.worldVisible===!1||0===a.worldAlpha||a.hasOwnProperty("exists")&&a.exists===!1)return this;if(a.type!==c.GROUP&&a.type!==c.EMITTER&&a.type!==c.BITMAPTEXT)if(a.type===c.GRAPHICS){var e=a.getBounds();this.ctx.save(),this.ctx.translate(e.x,e.y),PIXI.CanvasGraphics.renderGraphics(a,this.ctx),this.ctx.restore()}else this.copy(a,null,null,null,null,a.worldPosition.x,a.worldPosition.y,null,null,a.worldRotation,null,null,a.worldScale.x,a.worldScale.y,a.worldAlpha,b,d);if(a.children)for(var f=0;fb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){if(d===e)return this;void 0===f&&(f=!1),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var g=f?-1*(d-e):e-d,h=40*Math.ceil(Math.abs(g)/(2*Math.PI));if(0===g)return this;var i=a+Math.cos(d)*c,j=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(i,j);for(var k=this.currentPath.shape.points,l=g/(2*h),m=2*l,n=Math.cos(l),o=Math.sin(l),p=h-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);k.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():(this.destroyCachedSprite(),this.dirty=!0)}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.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},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=6)if(g.points.length<12){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+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)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-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(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[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),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.PolyK.Triangulate(c);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&(j+=c[k-1]),h=j+l}else for(var k=0;kp&&Math.abs(p)>n&&(p=-n),0!==p){var m=p*(b.length-1);o+=m}this.canvas.height=o*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var q,r;for(this._charCount=0,g=0;g0&&(r+=p*g),"right"===this.style.align?q+=e-d[g]:"center"===this.style.align&&(q+=(e-d[g])/2),this.autoRound&&(q=Math.round(q),r=Math.round(r)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[g],q,r):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[g],q,r):this.renderTabLine(b[g],q,r,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[g],q,r):this.renderTabLine(b[g],q,r,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.runWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f,this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=null,h=this._maxWidth>0?this._maxWidth:null,i=[],j=0;j=h&&f>-1)return{width:e,text:c.substr(0,j-(j-f)),end:k,chars:i};e+=m.xAdvance*b,i.push(d+m.xOffset*b),d+=m.xAdvance*b,g=l}}return{width:e,text:c,end:k,chars:i}},c.BitmapText.prototype.updateText=function(){var a=this._data.font;if(a){var b=this.text,c=this._fontSize/a.size,d=[],e=0;this.textWidth=0;do{var f=this.scanLine(a,c,b);f.y=e,d.push(f),f.width>this.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c0&&"none"!==a}var l=this;a(),g(),f(),e(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},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 void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},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},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},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)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return 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)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===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}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,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 a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){ +return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),a?this.repeatAll(-1):this.repeatCounter=0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter)return c.TweenData.COMPLETE;this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.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 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.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)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.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*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=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=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===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){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame), +this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.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,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(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)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.reset(),this.game.state.loadComplete())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayVideo(c))return a[b]}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayAudio(c))return a[b]}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=new Blob([new Uint8Array(b.response)])}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio)if(this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this.onPause.dispatch(this),this.stop())},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.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if(this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.pendingPlayback=!1,this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(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(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=this.game.make.bitmapData(this.game.width,this.game.height),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.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)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(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),void 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)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.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 c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter&&this.matter.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body){var h;if(this.skipQuadTree||a.body.skipQuadTree){for(var i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,b.hash[i],d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var j=this.quadTree.retrieve(a),i=0;ij.body.right)continue;if(j.body.x>h.body.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.body.bottomj.body.bottom)continue;if(j.body.y>h.body.bottom)break}this.collideSpriteVsSprite(h,j,b,d,e,f)}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;h=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){if(a.immovable&&b.immovable)return!1;var d=0;if(this.intersects(a,b)){var e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;if(0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,0!==d){if(c||a.customSeparateX||b.customSeparateX)return!0;var f=a.velocity.x,g=b.velocity.x;if(a.immovable||b.immovable)a.immovable?b.immovable||(b.x+=d,b.velocity.x=f-g*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x=a.x-d,a.velocity.x=g-f*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x=a.x-d,b.x+=d;var h=Math.sqrt(g*g*b.mass/a.mass)*(g>0?1:-1),i=Math.sqrt(f*f*a.mass/b.mass)*(f>0?1:-1),j=.5*(h+i);h-=j,i-=j,a.velocity.x=j+h*a.bounce.x,b.velocity.x=j+i*b.bounce.x}return!0}}return!1},separateY:function(a,b,c){if(a.immovable&&b.immovable)return!1;var d=0;if(this.intersects(a,b)){var e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;if(0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,0!==d){if(c||a.customSeparateY||b.customSeparateY)return!0;var f=a.velocity.y,g=b.velocity.y;if(a.immovable||b.immovable)a.immovable?b.immovable||(b.y+=d,b.velocity.y=f-g*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y=a.y-d,a.velocity.y=g-f*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y=a.y-d,b.y+=d;var h=Math.sqrt(g*g*b.mass/a.mass)*(g>0?1:-1),i=Math.sqrt(f*f*a.mass/b.mass)*(f>0?1:-1),j=.5*(h+i);h-=j,i-=j,a.velocity.y=j+h*a.bounce.y,b.velocity.y=j+i*b.bounce.y}return!0}}return!1},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)},distanceToXY:function(a,b,c){var d=a.x-b,e=a.y-c;return Math.sqrt(d*d+e*e)},distanceToPointer:function(a,b){b=b||this.game.input.activePointer;var c=a.x-b.worldX,d=a.y-b.worldY;return Math.sqrt(c*c+d*d)},angleBetween:function(a,b){var c=b.x-a.x,d=b.y-a.y;return Math.atan2(d,c)},angleToXY:function(a,b,c){var d=b-a.x,e=c-a.y;return Math.atan2(e,d)},angleToPointer:function(a,b){b=b||this.game.input.activePointer;var c=b.worldX-a.x,d=b.worldY-a.y;return Math.atan2(d,c)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point(0,0),this.deltaMax=new c.Point(0,0),this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point(0,0),this.bounce=new c.Point,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),(a.width!==this.width||a.height!==this.height)&&(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);(b!==this._sx||c!==this._sy)&&(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1, +this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&this.dirty&&(this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision;a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,b){return c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?g=-1:b.deltaAbsX()g){if((c.faceLeft||c.faceRight)&&(e=this.tileCheckX(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(f=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(f=this.tileCheckY(b,c),0!==f&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(e=this.tileCheckX(b,c))}return 0!==e||0!==f},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&(a.customSeparateX?a.overlapX=c:this.processTileSeparationX(a,c)),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&(a.customSeparateY?a.overlapY=c:this.processTileSeparationY(a,c)),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if((void 0===b||null===b)&&(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+b+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new c.TilemapLayer(this.game,this,f,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,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.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){c.Component.FixedToCamera.postUpdate.call(this);var a=this.game.camera;this.scrollX=a.x*this.scrollFactorX/this.scale.x,this.scrollY=a.y*this.scrollFactorY/this.scale.y,this.render()},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(g.fillStyle=this.tileColor,q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h); +this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,(f.renderWidth!==b||f.renderHeight!==c)&&(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kf;f+=4)j[f/4]=(h.charCodeAt(f)|h.charCodeAt(f+1)<<8|h.charCodeAt(f+2)<<16|h.charCodeAt(f+3)<<24)>>>0;g.data=j}var k={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(k.properties=g.properties);for(var l,m,n,o,p=0,q=[],r=[],s=0,i=g.data.length;i>s;s++){if(l=0,m=!1,o=g.data[s],o>536870912)switch(n=0,o>2147483648&&(o-=2147483648,n+=4),o>1073741824&&(o-=1073741824,n+=2),o>536870912&&(o-=536870912,n+=1),n){case 5:l=Math.PI/2;break;case 6:l=Math.PI;break;case 3:l=3*Math.PI/2;break;case 4:l=0,m=!0;break;case 7:l=Math.PI/2,m=!0;break;case 2:l=Math.PI,m=!0;break;case 1:l=3*Math.PI/2,m=!0}o>0?(q.push(new c.Tile(k,o,p,r.length,a.tilewidth,a.tileheight)),q[q.length-1].rotation=l,q[q.length-1].flipped=m):c.TilemapParser.INSERT_NULL?q.push(null):q.push(new c.Tile(k,-1,p,r.length,a.tilewidth,a.tileheight)),p++,p===g.width&&(r.push(q),p=0,q=[])}k.data=r,e.push(k)}d.layers=e;for(var t=[],f=0;fE;E++)if(D.objects[E].gid){var F={gid:D.objects[E].gid,name:D.objects[E].name,type:D.objects[E].hasOwnProperty("type")?D.objects[E].type:"",x:D.objects[E].x,y:D.objects[E].y,visible:D.objects[E].visible,properties:D.objects[E].properties};D.objects[E].rotation&&(F.rotation=D.objects[E].rotation),B[D.name].push(F)}else if(D.objects[E].polyline){var F={name:D.objects[E].name,type:D.objects[E].type,x:D.objects[E].x,y:D.objects[E].y,width:D.objects[E].width,height:D.objects[E].height,visible:D.objects[E].visible,properties:D.objects[E].properties};D.objects[E].rotation&&(F.rotation=D.objects[E].rotation),F.polyline=[];for(var G=0;G=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},c.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){this._flowTotal=0,this.start(!0,a,0,b,!1)},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){(void 0===c||0===c)&&(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c)},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),(void 0===c||null===c)&&(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity+=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},c.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(PIXI.TextureCache.__default.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this.video.addEventListener("ended",this.complete.bind(this),!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):this.video.addEventListener("playing",this.playHandler.bind(this),!0)),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this.playHandler.bind(this)),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this.complete.bind(this),!0),this.video.removeEventListener("playing",this.playHandler.bind(this),!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser-arcade-physics.map \ No newline at end of file diff --git a/build/custom/phaser-minimum.js b/build/custom/phaser-minimum.js index 7bf5fdba8..dfac8e4c2 100644 --- a/build/custom/phaser-minimum.js +++ b/build/custom/phaser-minimum.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.4.3 "Coramen" - Built: Mon Aug 24 2015 13:54:37 +* v2.4.4 "Amador" - Built: Tue Oct 13 2015 14:10:17 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -56,6 +56,13 @@ */ var PIXI = PIXI || {}; +/** + * A reference to the Phaser Game instance that owns this Pixi renderer. + * @property {Phaser.Game} game + * @static + */ +PIXI.game = null; + /** * @property {Number} WEBGL_RENDERER * @protected @@ -75,7 +82,7 @@ PIXI.CANVAS_RENDERER = 1; * @property {String} VERSION * @static */ -PIXI.VERSION = "v2.2.8"; +PIXI.VERSION = "v2.2.9"; // used to create uids for various pixi objects. PIXI._UID = 0; @@ -137,7 +144,6 @@ PIXI.RETINA_PREFIX = "@2x"; * @property {Boolean} defaultRenderOptions.clearBeforeRender=true * @property {Boolean} defaultRenderOptions.autoResize=false * @static - */ PIXI.defaultRenderOptions = { view: null, transparent: false, @@ -147,6 +153,7 @@ PIXI.defaultRenderOptions = { clearBeforeRender: true, autoResize: false }; + */ /** * @author Mat Groves http://matgroves.com/ @Doormat23 @@ -177,25 +184,6 @@ PIXI.DisplayObject = function() */ this.scale = new PIXI.Point(1, 1); - /** - * The transform callback is an optional callback that if set will be called at the end of the updateTransform method and sent two parameters: - * This Display Objects worldTransform matrix and its parents transform matrix. Both are PIXI.Matrix object types. - * The matrix are passed by reference and can be modified directly without needing to return them. - * This ability allows you to check any of the matrix values and perform actions such as clamping scale or limiting rotation, regardless of the parent transforms. - * - * @property transformCallback - * @type Function - */ - this.transformCallback = null; - - /** - * The context under which the transformCallback is invoked. - * - * @property transformCallbackContext - * @type Object - */ - this.transformCallbackContext = null; - /** * The pivot point of the displayObject that it rotates around * @@ -409,8 +397,6 @@ PIXI.DisplayObject.prototype.destroy = function() this.children = []; } - this.transformCallback = null; - this.transformCallbackContext = null; this.hitArea = null; this.parent = null; this.stage = null; @@ -1433,6 +1419,7 @@ PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession) { renderSession.maskManager.popMask(renderSession); } + }; /** @@ -1661,8 +1648,21 @@ PIXI.Sprite.prototype.getBounds = function(matrix) if (b === 0 && c === 0) { // scale may be negative! - if (a < 0) a *= -1; - if (d < 0) d *= -1; + if (a < 0) + { + a *= -1; + var temp = w0; + w0 = -w1; + w1 = -temp; + } + + if (d < 0) + { + d *= -1; + var temp = h0; + h0 = -h1; + h1 = -temp; + } // this means there is no rotation going on right? RIGHT? // if thats the case then we can avoid checking the bound values! yay @@ -1801,7 +1801,7 @@ PIXI.Sprite.prototype._renderWebGL = function(renderSession, matrix) PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) { // If the sprite is not visible or the alpha is 0 then no need to render this element - if (this.visible === false || this.alpha === 0 || this.renderable === false || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) + if (!this.visible || this.alpha === 0 || !this.renderable || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) { return; } @@ -2109,82 +2109,6 @@ PIXI.SpriteBatch.prototype._renderCanvas = function(renderSession) }; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A Stage represents the root of the display tree. Everything connected to the stage is rendered - * - * @class Stage - * @extends DisplayObjectContainer - * @constructor - * @param backgroundColor {Number} the background color of the stage, you have to pass this in is in hex format - * like: 0xFFFFFF for white - * - * Creating a stage is a mandatory process when you use Pixi, which is as simple as this : - * var stage = new PIXI.Stage(0xFFFFFF); - * where the parameter given is the background colour of the stage, in hex - * you will use this stage instance to add your sprites to it and therefore to the renderer - * Here is how to add a sprite to the stage : - * stage.addChild(sprite); - */ -PIXI.Stage = function(backgroundColor) -{ - PIXI.DisplayObjectContainer.call( this ); - - /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ - this.worldTransform = new PIXI.Matrix(); - - //the stage is its own stage - this.stage = this; - - this.setBackgroundColor(backgroundColor); -}; - -// constructor -PIXI.Stage.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Stage.prototype.constructor = PIXI.Stage; - -/* - * Updates the object transform for rendering - * - * @method updateTransform - * @private - */ -PIXI.Stage.prototype.updateTransform = function() -{ - this.worldAlpha = 1; - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } -}; - -/** - * Sets the background color for the stage - * - * @method setBackgroundColor - * @param backgroundColor {Number} the color of the background, easiest way to pass this in is in hex format - * like: 0xFFFFFF for white - */ -PIXI.Stage.prototype.setBackgroundColor = function(backgroundColor) -{ - this.backgroundColor = backgroundColor || 0x000000; - this.backgroundColorSplit = PIXI.hex2rgb(this.backgroundColor); - var hex = this.backgroundColor.toString(16); - hex = '000000'.substr(0, 6 - hex.length) + hex; - this.backgroundColorString = '#' + hex; -}; - /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2280,175 +2204,6 @@ PIXI.isPowerOfTwo = function(width, height) }; -/* - PolyK library - url: http://polyk.ivank.net - Released under MIT licence. - - Copyright (c) 2012 Ivan Kuckir - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - - This is an amazing lib! - - Slightly modified by Mat Groves (matgroves.com); -*/ - -/** - * Based on the Polyk library http://polyk.ivank.net released under MIT licence. - * This is an amazing lib! - * Slightly modified by Mat Groves (matgroves.com); - * @class PolyK - */ -PIXI.PolyK = {}; - -/** - * Triangulates shapes for webGL graphic fills. - * - * @method Triangulate - */ -PIXI.PolyK.Triangulate = function(p) -{ - var sign = true; - - var n = p.length >> 1; - if(n < 3) return []; - - var tgs = []; - var avl = []; - for(var i = 0; i < n; i++) avl.push(i); - - i = 0; - var al = n; - while(al > 3) - { - var i0 = avl[(i+0)%al]; - var i1 = avl[(i+1)%al]; - var i2 = avl[(i+2)%al]; - - var ax = p[2*i0], ay = p[2*i0+1]; - var bx = p[2*i1], by = p[2*i1+1]; - var cx = p[2*i2], cy = p[2*i2+1]; - - var earFound = false; - if(PIXI.PolyK._convex(ax, ay, bx, by, cx, cy, sign)) - { - earFound = true; - for(var j = 0; j < al; j++) - { - var vi = avl[j]; - if(vi === i0 || vi === i1 || vi === i2) continue; - - if(PIXI.PolyK._PointInTriangle(p[2*vi], p[2*vi+1], ax, ay, bx, by, cx, cy)) { - earFound = false; - break; - } - } - } - - if(earFound) - { - tgs.push(i0, i1, i2); - avl.splice((i+1)%al, 1); - al--; - i = 0; - } - else if(i++ > 3*al) - { - // need to flip flip reverse it! - // reset! - if(sign) - { - tgs = []; - avl = []; - for(i = 0; i < n; i++) avl.push(i); - - i = 0; - al = n; - - sign = false; - } - else - { - // window.console.log("PIXI Warning: shape too complex to fill"); - return null; - } - } - } - - tgs.push(avl[0], avl[1], avl[2]); - return tgs; -}; - -/** - * Checks whether a point is within a triangle - * - * @method _PointInTriangle - * @param px {Number} x coordinate of the point to test - * @param py {Number} y coordinate of the point to test - * @param ax {Number} x coordinate of the a point of the triangle - * @param ay {Number} y coordinate of the a point of the triangle - * @param bx {Number} x coordinate of the b point of the triangle - * @param by {Number} y coordinate of the b point of the triangle - * @param cx {Number} x coordinate of the c point of the triangle - * @param cy {Number} y coordinate of the c point of the triangle - * @private - * @return {Boolean} - */ -PIXI.PolyK._PointInTriangle = function(px, py, ax, ay, bx, by, cx, cy) -{ - var v0x = cx-ax; - var v0y = cy-ay; - var v1x = bx-ax; - var v1y = by-ay; - var v2x = px-ax; - var v2y = py-ay; - - var dot00 = v0x*v0x+v0y*v0y; - var dot01 = v0x*v1x+v0y*v1y; - var dot02 = v0x*v2x+v0y*v2y; - var dot11 = v1x*v1x+v1y*v1y; - var dot12 = v1x*v2x+v1y*v2y; - - var invDenom = 1 / (dot00 * dot11 - dot01 * dot01); - var u = (dot11 * dot02 - dot01 * dot12) * invDenom; - var v = (dot00 * dot12 - dot01 * dot02) * invDenom; - - // Check if point is in triangle - return (u >= 0) && (v >= 0) && (u + v < 1); -}; - -/** - * Checks whether a shape is convex - * - * @method _convex - * @private - * @return {Boolean} - */ -PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) -{ - return ((ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0) === sign; -}; - /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -2456,21 +2211,21 @@ PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) */ /** -* The CanvasPool is a global static object that allows Pixi and Phaser to pool +* The CanvasPool is a global static object that allows Pixi and Phaser to pool canvas DOM elements. * -* @class PIXI.CanvasPool +* @class CanvasPool * @static */ PIXI.CanvasPool = { /** + * Creates a new Canvas DOM element, or pulls one from the pool if free. * - * - * @method PIXI.CanvasPool.create + * @method create * @static - * @param {any} parent - The parent of the canvas element. - * @param {number} width - The width of the canvas element. - * @param {number} height - The height of the canvas element. + * @param parent {any} The parent of the canvas element. + * @param width {number} The width of the canvas element. + * @param height {number} The height of the canvas element. * @return {HTMLCanvasElement} The canvas element. */ create: function (parent, width, height) { @@ -2488,16 +2243,12 @@ PIXI.CanvasPool = { PIXI.CanvasPool.pool.push(container); canvas = container.canvas; - - // console.log('CanvasPool created', PIXI.CanvasPool.pool.length); } else { PIXI.CanvasPool.pool[idx].parent = parent; canvas = PIXI.CanvasPool.pool[idx].canvas; - - // console.log('CanvasPool recycled', idx); } if (width !== undefined) @@ -2510,6 +2261,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the first free canvas index from the pool. + * + * @method getFirst + * @static + * @return {number} + */ getFirst: function () { var pool = PIXI.CanvasPool.pool; @@ -2526,6 +2284,13 @@ PIXI.CanvasPool = { }, + /** + * Removes the parent from a canvas element from the pool, freeing it up for re-use. + * + * @method remove + * @param parent {any} The parent of the canvas element. + * @static + */ remove: function (parent) { var pool = PIXI.CanvasPool.pool; @@ -2535,13 +2300,18 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; - - // console.log('CanvasPool removed', i); } } }, + /** + * Removes the parent from a canvas element from the pool, freeing it up for re-use. + * + * @method removeByCanvas + * @param canvas {HTMLCanvasElement} The canvas element to remove + * @static + */ removeByCanvas: function (canvas) { var pool = PIXI.CanvasPool.pool; @@ -2556,6 +2326,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the total number of used canvas elements in the pool. + * + * @method getTotal + * @static + * @return {number} The number of in-use (parented) canvas elements in the pool. + */ getTotal: function () { var pool = PIXI.CanvasPool.pool; @@ -2573,6 +2350,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the total number of free canvas elements in the pool. + * + * @method getFree + * @static + * @return {number} The number of free (un-parented) canvas elements in the pool. + */ getFree: function () { var pool = PIXI.CanvasPool.pool; @@ -2592,6 +2376,13 @@ PIXI.CanvasPool = { }; +/** + * The pool into which the canvas dom elements are placed. + * + * @property pool + * @type Array + * @static + */ PIXI.CanvasPool.pool = []; /** @@ -3599,903 +3390,6 @@ PIXI.ComplexPrimitiveShader.prototype.destroy = function() this.attribute = null; }; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A set of functions used by the webGL renderer to draw the primitive graphics data - * - * @class WebGLGraphics - * @private - * @static - */ -PIXI.WebGLGraphics = function() -{ -}; - -/** - * Renders the graphics object - * - * @static - * @private - * @method renderGraphics - * @param graphics {Graphics} - * @param renderSession {Object} - */ -PIXI.WebGLGraphics.renderGraphics = function(graphics, renderSession)//projection, offset) -{ - var gl = renderSession.gl; - var projection = renderSession.projection, - offset = renderSession.offset, - shader = renderSession.shaderManager.primitiveShader, - webGLData; - - if(graphics.dirty) - { - PIXI.WebGLGraphics.updateGraphics(graphics, gl); - } - - var webGL = graphics._webGL[gl.id]; - - // This could be speeded up for sure! - - for (var i = 0; i < webGL.data.length; i++) - { - if(webGL.data[i].mode === 1) - { - webGLData = webGL.data[i]; - - renderSession.stencilManager.pushStencil(graphics, webGLData, renderSession); - - // render quad.. - gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); - - renderSession.stencilManager.popStencil(graphics, webGLData, renderSession); - } - else - { - webGLData = webGL.data[i]; - - - renderSession.shaderManager.setShader( shader );//activatePrimitiveShader(); - shader = renderSession.shaderManager.primitiveShader; - gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); - - gl.uniform1f(shader.flipY, 1); - - gl.uniform2f(shader.projectionVector, projection.x, -projection.y); - gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); - - gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); - - gl.uniform1f(shader.alpha, graphics.worldAlpha); - - - gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); - - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); - gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); - - // set the index buffer! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); - gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); - } - } -}; - -/** - * Updates the graphics object - * - * @static - * @private - * @method updateGraphics - * @param graphicsData {Graphics} The graphics object to update - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.WebGLGraphics.updateGraphics = function(graphics, gl) -{ - // get the contexts graphics object - var webGL = graphics._webGL[gl.id]; - // if the graphics object does not exist in the webGL context time to create it! - if(!webGL)webGL = graphics._webGL[gl.id] = {lastIndex:0, data:[], gl:gl}; - - // flag the graphics as not dirty as we are about to update it... - graphics.dirty = false; - - var i; - - // if the user cleared the graphics object we will need to clear every object - if(graphics.clearDirty) - { - graphics.clearDirty = false; - - // lop through and return all the webGLDatas to the object pool so than can be reused later on - for (i = 0; i < webGL.data.length; i++) - { - var graphicsData = webGL.data[i]; - graphicsData.reset(); - PIXI.WebGLGraphics.graphicsDataPool.push( graphicsData ); - } - - // clear the array and reset the index.. - webGL.data = []; - webGL.lastIndex = 0; - } - - var webGLData; - - // loop through the graphics datas and construct each one.. - // if the object is a complex fill then the new stencil buffer technique will be used - // other wise graphics objects will be pushed into a batch.. - for (i = webGL.lastIndex; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - - if(data.type === PIXI.Graphics.POLY) - { - // need to add the points the the graphics object.. - data.points = data.shape.points.slice(); - if(data.shape.closed) - { - // close the poly if the value is true! - if(data.points[0] !== data.points[data.points.length-2] || data.points[1] !== data.points[data.points.length-1]) - { - data.points.push(data.points[0], data.points[1]); - } - } - - // MAKE SURE WE HAVE THE CORRECT TYPE.. - if(data.fill) - { - if(data.points.length >= 6) - { - if(data.points.length < 6 * 2) - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - - var canDrawUsingSimple = PIXI.WebGLGraphics.buildPoly(data, webGLData); - // console.log(canDrawUsingSimple); - - if(!canDrawUsingSimple) - { - // console.log("<>>>") - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); - PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); - } - - } - else - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); - PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); - } - } - } - - if(data.lineWidth > 0) - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - PIXI.WebGLGraphics.buildLine(data, webGLData); - - } - } - else - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - - if(data.type === PIXI.Graphics.RECT) - { - PIXI.WebGLGraphics.buildRectangle(data, webGLData); - } - else if(data.type === PIXI.Graphics.CIRC || data.type === PIXI.Graphics.ELIP) - { - PIXI.WebGLGraphics.buildCircle(data, webGLData); - } - else if(data.type === PIXI.Graphics.RREC) - { - PIXI.WebGLGraphics.buildRoundedRectangle(data, webGLData); - } - } - - webGL.lastIndex++; - } - - // upload all the dirty data... - for (i = 0; i < webGL.data.length; i++) - { - webGLData = webGL.data[i]; - if(webGLData.dirty)webGLData.upload(); - } -}; - -/** - * @static - * @private - * @method switchMode - * @param webGL {WebGLContext} - * @param type {Number} - */ -PIXI.WebGLGraphics.switchMode = function(webGL, type) -{ - var webGLData; - - if(!webGL.data.length) - { - webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); - webGLData.mode = type; - webGL.data.push(webGLData); - } - else - { - webGLData = webGL.data[webGL.data.length-1]; - - if(webGLData.mode !== type || type === 1) - { - webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); - webGLData.mode = type; - webGL.data.push(webGLData); - } - } - - webGLData.dirty = true; - - return webGLData; -}; - -/** - * Builds a rectangle to draw - * - * @static - * @private - * @method buildRectangle - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) -{ - // --- // - // need to convert points to a nice regular data - // - var rectData = graphicsData.shape; - var x = rectData.x; - var y = rectData.y; - var width = rectData.width; - var height = rectData.height; - - if(graphicsData.fill) - { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vertPos = verts.length/6; - - // start - verts.push(x, y); - verts.push(r, g, b, alpha); - - verts.push(x + width, y); - verts.push(r, g, b, alpha); - - verts.push(x , y + height); - verts.push(r, g, b, alpha); - - verts.push(x + width, y + height); - verts.push(r, g, b, alpha); - - // insert 2 dead triangles.. - indices.push(vertPos, vertPos, vertPos+1, vertPos+2, vertPos+3, vertPos+3); - } - - if(graphicsData.lineWidth) - { - var tempPoints = graphicsData.points; - - graphicsData.points = [x, y, - x + width, y, - x + width, y + height, - x, y + height, - x, y]; - - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Builds a rounded rectangle to draw - * - * @static - * @private - * @method buildRoundedRectangle - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildRoundedRectangle = function(graphicsData, webGLData) -{ - var rrectData = graphicsData.shape; - var x = rrectData.x; - var y = rrectData.y; - var width = rrectData.width; - var height = rrectData.height; - - var radius = rrectData.radius; - - var recPoints = []; - recPoints.push(x, y + radius); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x, y + height - radius, x, y + height, x + radius, y + height)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width - radius, y + height, x + width, y + height, x + width, y + height - radius)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width, y + radius, x + width, y, x + width - radius, y)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + radius, y, x, y, x, y + radius)); - - if (graphicsData.fill) { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vecPos = verts.length/6; - - var triangles = PIXI.PolyK.Triangulate(recPoints); - - // - - var i = 0; - for (i = 0; i < triangles.length; i+=3) - { - indices.push(triangles[i] + vecPos); - indices.push(triangles[i] + vecPos); - indices.push(triangles[i+1] + vecPos); - indices.push(triangles[i+2] + vecPos); - indices.push(triangles[i+2] + vecPos); - } - - - for (i = 0; i < recPoints.length; i++) - { - verts.push(recPoints[i], recPoints[++i], r, g, b, alpha); - } - } - - if (graphicsData.lineWidth) { - var tempPoints = graphicsData.points; - - graphicsData.points = recPoints; - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Calculate the points for a quadratic bezier curve. (helper function..) - * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c - * - * @static - * @private - * @method quadraticBezierCurve - * @param fromX {Number} Origin point x - * @param fromY {Number} Origin point x - * @param cpX {Number} Control point x - * @param cpY {Number} Control point y - * @param toX {Number} Destination point x - * @param toY {Number} Destination point y - * @return {Array(Number)} - */ -PIXI.WebGLGraphics.quadraticBezierCurve = function(fromX, fromY, cpX, cpY, toX, toY) { - - var xa, - ya, - xb, - yb, - x, - y, - n = 20, - points = []; - - function getPt(n1 , n2, perc) { - var diff = n2 - n1; - - return n1 + ( diff * perc ); - } - - var j = 0; - for (var i = 0; i <= n; i++ ) - { - j = i / n; - - // The Green Line - xa = getPt( fromX , cpX , j ); - ya = getPt( fromY , cpY , j ); - xb = getPt( cpX , toX , j ); - yb = getPt( cpY , toY , j ); - - // The Black Dot - x = getPt( xa , xb , j ); - y = getPt( ya , yb , j ); - - points.push(x, y); - } - return points; -}; - -/** - * Builds a circle to draw - * - * @static - * @private - * @method buildCircle - * @param graphicsData {Graphics} The graphics object to draw - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) -{ - // need to convert points to a nice regular data - var circleData = graphicsData.shape; - var x = circleData.x; - var y = circleData.y; - var width; - var height; - - // TODO - bit hacky?? - if(graphicsData.type === PIXI.Graphics.CIRC) - { - width = circleData.radius; - height = circleData.radius; - } - else - { - width = circleData.width; - height = circleData.height; - } - - var totalSegs = 40; - var seg = (Math.PI * 2) / totalSegs ; - - var i = 0; - - if(graphicsData.fill) - { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vecPos = verts.length/6; - - indices.push(vecPos); - - for (i = 0; i < totalSegs + 1 ; i++) - { - verts.push(x,y, r, g, b, alpha); - - verts.push(x + Math.sin(seg * i) * width, - y + Math.cos(seg * i) * height, - r, g, b, alpha); - - indices.push(vecPos++, vecPos++); - } - - indices.push(vecPos-1); - } - - if(graphicsData.lineWidth) - { - var tempPoints = graphicsData.points; - - graphicsData.points = []; - - for (i = 0; i < totalSegs + 1; i++) - { - graphicsData.points.push(x + Math.sin(seg * i) * width, - y + Math.cos(seg * i) * height); - } - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Builds a line to draw - * - * @static - * @private - * @method buildLine - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) -{ - // TODO OPTIMISE! - var i = 0; - var points = graphicsData.points; - if(points.length === 0)return; - - // if the line width is an odd number add 0.5 to align to a whole pixel - if(graphicsData.lineWidth%2) - { - for (i = 0; i < points.length; i++) { - points[i] += 0.5; - } - } - - // get first and last point.. figure out the middle! - var firstPoint = new PIXI.Point( points[0], points[1] ); - var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); - - // if the first point is the last point - gonna have issues :) - if(firstPoint.x === lastPoint.x && firstPoint.y === lastPoint.y) - { - // need to clone as we are going to slightly modify the shape.. - points = points.slice(); - - points.pop(); - points.pop(); - - lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); - - var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; - var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; - - points.unshift(midPointX, midPointY); - points.push(midPointX, midPointY); - } - - var verts = webGLData.points; - var indices = webGLData.indices; - var length = points.length / 2; - var indexCount = points.length; - var indexStart = verts.length/6; - - // DRAW the Line - var width = graphicsData.lineWidth / 2; - - // sort color - var color = PIXI.hex2rgb(graphicsData.lineColor); - var alpha = graphicsData.lineAlpha; - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var px, py, p1x, p1y, p2x, p2y, p3x, p3y; - var perpx, perpy, perp2x, perp2y, perp3x, perp3y; - var a1, b1, c1, a2, b2, c2; - var denom, pdist, dist; - - p1x = points[0]; - p1y = points[1]; - - p2x = points[2]; - p2y = points[3]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - // start - verts.push(p1x - perpx , p1y - perpy, - r, g, b, alpha); - - verts.push(p1x + perpx , p1y + perpy, - r, g, b, alpha); - - for (i = 1; i < length-1; i++) - { - p1x = points[(i-1)*2]; - p1y = points[(i-1)*2 + 1]; - - p2x = points[(i)*2]; - p2y = points[(i)*2 + 1]; - - p3x = points[(i+1)*2]; - p3y = points[(i+1)*2 + 1]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - perp2x = -(p2y - p3y); - perp2y = p2x - p3x; - - dist = Math.sqrt(perp2x*perp2x + perp2y*perp2y); - perp2x /= dist; - perp2y /= dist; - perp2x *= width; - perp2y *= width; - - a1 = (-perpy + p1y) - (-perpy + p2y); - b1 = (-perpx + p2x) - (-perpx + p1x); - c1 = (-perpx + p1x) * (-perpy + p2y) - (-perpx + p2x) * (-perpy + p1y); - a2 = (-perp2y + p3y) - (-perp2y + p2y); - b2 = (-perp2x + p2x) - (-perp2x + p3x); - c2 = (-perp2x + p3x) * (-perp2y + p2y) - (-perp2x + p2x) * (-perp2y + p3y); - - denom = a1*b2 - a2*b1; - - if(Math.abs(denom) < 0.1 ) - { - - denom+=10.1; - verts.push(p2x - perpx , p2y - perpy, - r, g, b, alpha); - - verts.push(p2x + perpx , p2y + perpy, - r, g, b, alpha); - - continue; - } - - px = (b1*c2 - b2*c1)/denom; - py = (a2*c1 - a1*c2)/denom; - - - pdist = (px -p2x) * (px -p2x) + (py -p2y) + (py -p2y); - - - if(pdist > 140 * 140) - { - perp3x = perpx - perp2x; - perp3y = perpy - perp2y; - - dist = Math.sqrt(perp3x*perp3x + perp3y*perp3y); - perp3x /= dist; - perp3y /= dist; - perp3x *= width; - perp3y *= width; - - verts.push(p2x - perp3x, p2y -perp3y); - verts.push(r, g, b, alpha); - - verts.push(p2x + perp3x, p2y +perp3y); - verts.push(r, g, b, alpha); - - verts.push(p2x - perp3x, p2y -perp3y); - verts.push(r, g, b, alpha); - - indexCount++; - } - else - { - - verts.push(px , py); - verts.push(r, g, b, alpha); - - verts.push(p2x - (px-p2x), p2y - (py - p2y)); - verts.push(r, g, b, alpha); - } - } - - p1x = points[(length-2)*2]; - p1y = points[(length-2)*2 + 1]; - - p2x = points[(length-1)*2]; - p2y = points[(length-1)*2 + 1]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - verts.push(p2x - perpx , p2y - perpy); - verts.push(r, g, b, alpha); - - verts.push(p2x + perpx , p2y + perpy); - verts.push(r, g, b, alpha); - - indices.push(indexStart); - - for (i = 0; i < indexCount; i++) - { - indices.push(indexStart++); - } - - indices.push(indexStart-1); -}; - -/** - * Builds a complex polygon to draw - * - * @static - * @private - * @method buildComplexPoly - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildComplexPoly = function(graphicsData, webGLData) -{ - //TODO - no need to copy this as it gets turned into a FLoat32Array anyways.. - var points = graphicsData.points.slice(); - if(points.length < 6)return; - - // get first and last point.. figure out the middle! - var indices = webGLData.indices; - webGLData.points = points; - webGLData.alpha = graphicsData.fillAlpha; - webGLData.color = PIXI.hex2rgb(graphicsData.fillColor); - - /* - calclate the bounds.. - */ - var minX = Infinity; - var maxX = -Infinity; - - var minY = Infinity; - var maxY = -Infinity; - - var x,y; - - // get size.. - for (var i = 0; i < points.length; i+=2) - { - x = points[i]; - y = points[i+1]; - - minX = x < minX ? x : minX; - maxX = x > maxX ? x : maxX; - - minY = y < minY ? y : minY; - maxY = y > maxY ? y : maxY; - } - - // add a quad to the end cos there is no point making another buffer! - points.push(minX, minY, - maxX, minY, - maxX, maxY, - minX, maxY); - - // push a quad onto the end.. - - //TODO - this aint needed! - var length = points.length / 2; - for (i = 0; i < length; i++) - { - indices.push( i ); - } - -}; - -/** - * Builds a polygon to draw - * - * @static - * @private - * @method buildPoly - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildPoly = function(graphicsData, webGLData) -{ - var points = graphicsData.points; - - if(points.length < 6)return; - // get first and last point.. figure out the middle! - var verts = webGLData.points; - var indices = webGLData.indices; - - var length = points.length / 2; - - // sort color - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var triangles = PIXI.PolyK.Triangulate(points); - - if(!triangles)return false; - - var vertPos = verts.length / 6; - - var i = 0; - - for (i = 0; i < triangles.length; i+=3) - { - indices.push(triangles[i] + vertPos); - indices.push(triangles[i] + vertPos); - indices.push(triangles[i+1] + vertPos); - indices.push(triangles[i+2] +vertPos); - indices.push(triangles[i+2] + vertPos); - } - - for (i = 0; i < length; i++) - { - verts.push(points[i * 2], points[i * 2 + 1], - r, g, b, alpha); - } - - return true; -}; - -PIXI.WebGLGraphics.graphicsDataPool = []; - -/** - * @class WebGLGraphicsData - * @private - * @static - */ -PIXI.WebGLGraphicsData = function(gl) -{ - this.gl = gl; - - //TODO does this need to be split before uploding?? - this.color = [0,0,0]; // color split! - this.points = []; - this.indices = []; - this.buffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - this.mode = 1; - this.alpha = 1; - this.dirty = true; -}; - -/** - * @method reset - */ -PIXI.WebGLGraphicsData.prototype.reset = function() -{ - this.points = []; - this.indices = []; -}; - -/** - * @method upload - */ -PIXI.WebGLGraphicsData.prototype.upload = function() -{ - var gl = this.gl; - -// this.lastIndex = graphics.graphicsData.length; - this.glPoints = new PIXI.Float32Array(this.points); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.glPoints, gl.STATIC_DRAW); - - this.glIndicies = new PIXI.Uint16Array(this.indices); - - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.glIndicies, gl.STATIC_DRAW); - - this.dirty = false; -}; - /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -4511,31 +3405,16 @@ PIXI.instances = []; * * @class WebGLRenderer * @constructor - * @param [width=0] {Number} the width of the canvas view - * @param [height=0] {Number} the height of the canvas view - * @param [options] {Object} The optional renderer parameters - * @param [options.view] {HTMLCanvasElement} the canvas to use as a view, optional - * @param [options.transparent=false] {Boolean} If the render view is transparent, default false - * @param [options.autoResize=false] {Boolean} If the render view is automatically resized, default false - * @param [options.antialias=false] {Boolean} sets antialias (only applicable in chrome at the moment) - * @param [options.preserveDrawingBuffer=false] {Boolean} enables drawing buffer preservation, enable this if you need to call toDataUrl on the webgl context - * @param [options.resolution=1] {Number} the resolution of the renderer retina would be 2 + * @param game {Phaser.Game} A reference to the Phaser Game instance */ -PIXI.WebGLRenderer = function(width, height, options) -{ - if(options) - { - for (var i in PIXI.defaultRenderOptions) - { - if (options[i] === undefined) options[i] = PIXI.defaultRenderOptions[i]; - } - } - else - { - options = PIXI.defaultRenderOptions; - } +PIXI.WebGLRenderer = function(game) { - if(!PIXI.defaultRenderer) + /** + * @property {Phaser.Game} game - A reference to the Phaser Game instance. + */ + this.game = game; + + if (!PIXI.defaultRenderer) { PIXI.defaultRenderer = this; } @@ -4553,9 +3432,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @type Number * @default 1 */ - this.resolution = options.resolution; - - // do a catch.. only 1 webGL renderer.. + this.resolution = game.resolution; /** * Whether the render view is transparent @@ -4563,7 +3440,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property transparent * @type Boolean */ - this.transparent = options.transparent; + this.transparent = game.transparent; /** * Whether the render view should be resized automatically @@ -4571,7 +3448,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property autoResize * @type Boolean */ - this.autoResize = options.autoResize || false; + this.autoResize = false; /** * The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. @@ -4579,7 +3456,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property preserveDrawingBuffer * @type Boolean */ - this.preserveDrawingBuffer = options.preserveDrawingBuffer; + this.preserveDrawingBuffer = game.preserveDrawingBuffer; /** * This sets if the WebGLRenderer will clear the context texture or not before the new render pass. If true: @@ -4591,25 +3468,23 @@ PIXI.WebGLRenderer = function(width, height, options) * @type Boolean * @default */ - this.clearBeforeRender = options.clearBeforeRender; + this.clearBeforeRender = game.clearBeforeRender; /** * The width of the canvas view * * @property width * @type Number - * @default 800 */ - this.width = width || 800; + this.width = game.width; /** * The height of the canvas view * * @property height * @type Number - * @default 600 */ - this.height = height || 600; + this.height = game.height; /** * The canvas element that everything is drawn to @@ -4617,7 +3492,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property view * @type HTMLCanvasElement */ - this.view = options.view || document.createElement('canvas'); + this.view = game.canvas; /** * @property _contextOptions @@ -4626,10 +3501,10 @@ PIXI.WebGLRenderer = function(width, height, options) */ this._contextOptions = { alpha: this.transparent, - antialias: options.antialias, // SPEED UP?? + antialias: game.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - preserveDrawingBuffer: options.preserveDrawingBuffer + preserveDrawingBuffer: this.preserveDrawingBuffer }; /** @@ -4642,7 +3517,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property offset * @type Point */ - this.offset = new PIXI.Point(0, 0); + this.offset = new PIXI.Point(); // time to create the render managers! each one focuses on managing a state in webGL @@ -4689,11 +3564,13 @@ PIXI.WebGLRenderer = function(width, height, options) this.blendModeManager = new PIXI.WebGLBlendModeManager(); /** - * TODO remove * @property renderSession * @type Object */ this.renderSession = {}; + + // Needed? + this.renderSession.game = this.game; this.renderSession.gl = this.gl; this.renderSession.drawCount = 0; this.renderSession.shaderManager = this.shaderManager; @@ -4710,6 +3587,7 @@ PIXI.WebGLRenderer = function(width, height, options) // map some webGL blend modes.. this.mapBlendModes(); + }; // constructor @@ -4721,6 +3599,7 @@ PIXI.WebGLRenderer.prototype.constructor = PIXI.WebGLRenderer; PIXI.WebGLRenderer.prototype.initContext = function() { var gl = this.view.getContext('webgl', this._contextOptions) || this.view.getContext('experimental-webgl', this._contextOptions); + this.gl = gl; if (!gl) { @@ -4762,14 +3641,9 @@ PIXI.WebGLRenderer.prototype.initContext = function() PIXI.WebGLRenderer.prototype.render = function(stage) { // no point rendering if our context has been blown up! - if (this.contextLost) return; - - // if rendering a new stage clear the batches.. - if (this.__stage !== stage) + if (this.contextLost) { - // TODO make this work - // dont think this is needed any more? - this.__stage = stage; + return; } // update the scene graph @@ -4783,21 +3657,14 @@ PIXI.WebGLRenderer.prototype.render = function(stage) // make sure we are bound to the main frame buffer gl.bindFramebuffer(gl.FRAMEBUFFER, null); - if (this.clearBeforeRender) + if (this.game.clearBeforeRender) { - if (this.transparent) - { - gl.clearColor(0, 0, 0, 0); - } - else - { - gl.clearColor(stage.backgroundColorSplit[0],stage.backgroundColorSplit[1],stage.backgroundColorSplit[2], 1); - } + gl.clearColor(stage._bgColor.r, stage._bgColor.g, stage._bgColor.b, stage._bgColor.a); - gl.clear (gl.COLOR_BUFFER_BIT); + gl.clear(gl.COLOR_BUFFER_BIT); } - this.renderDisplayObject( stage, this.projection ); + this.renderDisplayObject(stage, this.projection); }; /** @@ -4868,12 +3735,13 @@ PIXI.WebGLRenderer.prototype.resize = function(width, height) * * @method updateTexture * @param texture {Texture} the texture to update + * @return {boolean} True if the texture was successfully bound, otherwise false. */ PIXI.WebGLRenderer.prototype.updateTexture = function(texture) { if (!texture.hasLoaded) { - return; + return false; } var gl = this.gl; @@ -4914,7 +3782,8 @@ PIXI.WebGLRenderer.prototype.updateTexture = function(texture) texture._dirty[gl.id] = false; - return texture._glTextures[gl.id]; + // return texture._glTextures[gl.id]; + return true; }; @@ -4961,25 +3830,28 @@ PIXI.WebGLRenderer.prototype.mapBlendModes = function() if (!PIXI.blendModesWebGL) { - PIXI.blendModesWebGL = []; + var b = []; + var modes = PIXI.blendModes; - PIXI.blendModesWebGL[PIXI.blendModes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; - PIXI.blendModesWebGL[PIXI.blendModes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; + b[modes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; + b[modes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + + PIXI.blendModesWebGL = b; } }; @@ -5029,7 +3901,11 @@ PIXI.WebGLBlendModeManager.prototype.setBlendMode = function(blendMode) this.currentBlendMode = blendMode; var blendModeWebGL = PIXI.blendModesWebGL[this.currentBlendMode]; - this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); + + if (blendModeWebGL) + { + this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); + } return true; }; @@ -6190,7 +5066,11 @@ PIXI.WebGLSpriteBatch.prototype.renderBatch = function(texture, size, startIndex // check if a texture is dirty.. if (texture._dirty[gl.id]) { - this.renderSession.renderer.updateTexture(texture); + if (!this.renderSession.renderer.updateTexture(texture)) + { + // If updateTexture returns false then we cannot render it, so bail out now + return; + } } else { @@ -7340,8 +6220,8 @@ PIXI.CanvasMaskManager.prototype.constructor = PIXI.CanvasMaskManager; * @param maskData {Object} the maskData that will be pushed * @param renderSession {Object} The renderSession whose context will be used for this mask manager. */ -PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) -{ +PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) { + var context = renderSession.context; context.save(); @@ -7558,28 +6438,14 @@ PIXI.CanvasTinter.tintMethod = PIXI.CanvasTinter.canUseMultiply ? PIXI.CanvasTin * * @class CanvasRenderer * @constructor - * @param [width=800] {Number} the width of the canvas view - * @param [height=600] {Number} the height of the canvas view - * @param [options] {Object} The optional renderer parameters - * @param [options.view] {HTMLCanvasElement} the canvas to use as a view, optional - * @param [options.transparent=false] {Boolean} If the render view is transparent, default false - * @param [options.autoResize=false] {Boolean} If the render view is automatically resized, default false - * @param [options.resolution=1] {Number} the resolution of the renderer retina would be 2 - * @param [options.clearBeforeRender=true] {Boolean} This sets if the CanvasRenderer will clear the canvas or not before the new render pass. + * @param game {Phaser.Game} A reference to the Phaser Game instance */ -PIXI.CanvasRenderer = function(width, height, options) -{ - if (options) - { - for (var i in PIXI.defaultRenderOptions) - { - if (options[i] === undefined) options[i] = PIXI.defaultRenderOptions[i]; - } - } - else - { - options = PIXI.defaultRenderOptions; - } +PIXI.CanvasRenderer = function (game) { + + /** + * @property {Phaser.Game} game - A reference to the Phaser Game instance. + */ + this.game = game; if (!PIXI.defaultRenderer) { @@ -7600,7 +6466,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property resolution * @type Number */ - this.resolution = options.resolution; + this.resolution = game.resolution; /** * This sets if the CanvasRenderer will clear the canvas or not before the new render pass. @@ -7612,7 +6478,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Boolean * @default */ - this.clearBeforeRender = options.clearBeforeRender; + this.clearBeforeRender = game.clearBeforeRender; /** * Whether the render view is transparent @@ -7620,7 +6486,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property transparent * @type Boolean */ - this.transparent = options.transparent; + this.transparent = game.transparent; /** * Whether the render view should be resized automatically @@ -7628,7 +6494,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property autoResize * @type Boolean */ - this.autoResize = options.autoResize || false; + this.autoResize = false; /** * The width of the canvas view @@ -7637,7 +6503,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Number * @default 800 */ - this.width = width || 800; + this.width = game.width * this.resolution; /** * The height of the canvas view @@ -7646,10 +6512,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Number * @default 600 */ - this.height = height || 600; - - this.width *= this.resolution; - this.height *= this.resolution; + this.height = game.height * this.resolution; /** * The canvas element that everything is drawn to. @@ -7657,7 +6520,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property view * @type HTMLCanvasElement */ - this.view = options.view || PIXI.CanvasPool.create(this, this.width, this.height); + this.view = game.canvas; /** * The canvas 2d context that everything is drawn with @@ -7674,8 +6537,9 @@ PIXI.CanvasRenderer = function(width, height, options) */ this.refresh = true; - this.view.width = this.width * this.resolution; - this.view.height = this.height * this.resolution; + // This is already done in the Game.setUpRenderer method. + // this.view.width = this.width * this.resolution; + // this.view.height = this.height * this.resolution; /** * Internal var. @@ -7701,7 +6565,8 @@ PIXI.CanvasRenderer = function(width, height, options) context: this.context, maskManager: this.maskManager, scaleMode: null, - smoothProperty: null, + smoothProperty: Phaser.Canvas.getSmoothingPrefix(this.context), + /** * If true Pixi will Math.floor() x/y values when rendering, stopping pixel interpolation. * Handy for crisp pixel art and speed on legacy devices. @@ -7711,18 +6576,8 @@ PIXI.CanvasRenderer = function(width, height, options) this.mapBlendModes(); - this.resize(width, height); + this.resize(this.width, this.height); - if("imageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "imageSmoothingEnabled"; - else if("webkitImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "webkitImageSmoothingEnabled"; - else if("mozImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "mozImageSmoothingEnabled"; - else if("oImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "oImageSmoothingEnabled"; - else if ("msImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "msImageSmoothingEnabled"; }; // constructor @@ -7734,16 +6589,16 @@ PIXI.CanvasRenderer.prototype.constructor = PIXI.CanvasRenderer; * @method render * @param stage {Stage} the Stage element to be rendered */ -PIXI.CanvasRenderer.prototype.render = function(stage) -{ +PIXI.CanvasRenderer.prototype.render = function (stage) { + stage.updateTransform(); - this.context.setTransform(1,0,0,1,0,0); + this.context.setTransform(1, 0, 0, 1, 0, 0); this.context.globalAlpha = 1; - this.renderSession.currentBlendMode = PIXI.blendModes.NORMAL; - this.context.globalCompositeOperation = PIXI.blendModesCanvas[PIXI.blendModes.NORMAL]; + this.renderSession.currentBlendMode = 0; + this.context.globalCompositeOperation = 'source-over'; if (navigator.isCocoonJS && this.view.screencanvas) { @@ -7759,7 +6614,7 @@ PIXI.CanvasRenderer.prototype.render = function(stage) } else { - this.context.fillStyle = stage.backgroundColorString; + this.context.fillStyle = stage._bgColor.rgba; this.context.fillRect(0, 0, this.width , this.height); } } @@ -7805,7 +6660,8 @@ PIXI.CanvasRenderer.prototype.resize = function(width, height) this.view.width = this.width; this.view.height = this.height; - if (this.autoResize) { + if (this.autoResize) + { this.view.style.width = this.width / this.resolution + "px"; this.view.style.height = this.height / this.resolution + "px"; } @@ -7820,11 +6676,12 @@ PIXI.CanvasRenderer.prototype.resize = function(width, height) * @param [matrix] {Matrix} Optional matrix to apply to the display object before rendering. * @private */ -PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject, context, matrix) -{ +PIXI.CanvasRenderer.prototype.renderDisplayObject = function (displayObject, context, matrix) { + this.renderSession.context = context || this.context; this.renderSession.resolution = this.resolution; displayObject._renderCanvas(this.renderSession, matrix); + }; /** @@ -7833,407 +6690,35 @@ PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject, cont * @method mapBlendModes * @private */ -PIXI.CanvasRenderer.prototype.mapBlendModes = function() -{ - if(!PIXI.blendModesCanvas) +PIXI.CanvasRenderer.prototype.mapBlendModes = function () { + + if (!PIXI.blendModesCanvas) { - PIXI.blendModesCanvas = []; + var b = []; + var modes = PIXI.blendModes; + var useNew = PIXI.canUseNewCanvasBlendModes(); - if(PIXI.canUseNewCanvasBlendModes()) - { - PIXI.blendModesCanvas[PIXI.blendModes.NORMAL] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.ADD] = "lighter"; //IS THIS OK??? - PIXI.blendModesCanvas[PIXI.blendModes.MULTIPLY] = "multiply"; - PIXI.blendModesCanvas[PIXI.blendModes.SCREEN] = "screen"; - PIXI.blendModesCanvas[PIXI.blendModes.OVERLAY] = "overlay"; - PIXI.blendModesCanvas[PIXI.blendModes.DARKEN] = "darken"; - PIXI.blendModesCanvas[PIXI.blendModes.LIGHTEN] = "lighten"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_DODGE] = "color-dodge"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_BURN] = "color-burn"; - PIXI.blendModesCanvas[PIXI.blendModes.HARD_LIGHT] = "hard-light"; - PIXI.blendModesCanvas[PIXI.blendModes.SOFT_LIGHT] = "soft-light"; - PIXI.blendModesCanvas[PIXI.blendModes.DIFFERENCE] = "difference"; - PIXI.blendModesCanvas[PIXI.blendModes.EXCLUSION] = "exclusion"; - PIXI.blendModesCanvas[PIXI.blendModes.HUE] = "hue"; - PIXI.blendModesCanvas[PIXI.blendModes.SATURATION] = "saturation"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR] = "color"; - PIXI.blendModesCanvas[PIXI.blendModes.LUMINOSITY] = "luminosity"; - } - else - { - // this means that the browser does not support the cool new blend modes in canvas "cough" ie "cough" - PIXI.blendModesCanvas[PIXI.blendModes.NORMAL] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.ADD] = "lighter"; //IS THIS OK??? - PIXI.blendModesCanvas[PIXI.blendModes.MULTIPLY] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SCREEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.OVERLAY] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.DARKEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.LIGHTEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_DODGE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_BURN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.HARD_LIGHT] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SOFT_LIGHT] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.DIFFERENCE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.EXCLUSION] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.HUE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SATURATION] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.LUMINOSITY] = "source-over"; - } - } -}; + b[modes.NORMAL] = 'source-over'; + b[modes.ADD] = 'lighter'; + b[modes.MULTIPLY] = (useNew) ? 'multiply' : 'source-over'; + b[modes.SCREEN] = (useNew) ? 'screen' : 'source-over'; + b[modes.OVERLAY] = (useNew) ? 'overlay' : 'source-over'; + b[modes.DARKEN] = (useNew) ? 'darken' : 'source-over'; + b[modes.LIGHTEN] = (useNew) ? 'lighten' : 'source-over'; + b[modes.COLOR_DODGE] = (useNew) ? 'color-dodge' : 'source-over'; + b[modes.COLOR_BURN] = (useNew) ? 'color-burn' : 'source-over'; + b[modes.HARD_LIGHT] = (useNew) ? 'hard-light' : 'source-over'; + b[modes.SOFT_LIGHT] = (useNew) ? 'soft-light' : 'source-over'; + b[modes.DIFFERENCE] = (useNew) ? 'difference' : 'source-over'; + b[modes.EXCLUSION] = (useNew) ? 'exclusion' : 'source-over'; + b[modes.HUE] = (useNew) ? 'hue' : 'source-over'; + b[modes.SATURATION] = (useNew) ? 'saturation' : 'source-over'; + b[modes.COLOR] = (useNew) ? 'color' : 'source-over'; + b[modes.LUMINOSITY] = (useNew) ? 'luminosity' : 'source-over'; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - - -/** - * A set of functions used by the canvas renderer to draw the primitive graphics data. - * - * @class CanvasGraphics - * @static - */ -PIXI.CanvasGraphics = function() -{ -}; - -/* - * Renders a PIXI.Graphics object to a canvas. - * - * @method renderGraphics - * @static - * @param graphics {Graphics} the actual graphics object to render - * @param context {CanvasRenderingContext2D} the 2d drawing method of the canvas - */ -PIXI.CanvasGraphics.renderGraphics = function(graphics, context) -{ - var worldAlpha = graphics.worldAlpha; - - if (graphics.dirty) - { - this.updateGraphicsTint(graphics); - graphics.dirty = false; + PIXI.blendModesCanvas = b; } - for (var i = 0; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - var shape = data.shape; - - var fillColor = data._fillTint; - var lineColor = data._lineTint; - - context.lineWidth = data.lineWidth; - - if (data.type === PIXI.Graphics.POLY) - { - context.beginPath(); - - var points = shape.points; - - context.moveTo(points[0], points[1]); - - for (var j=1; j < points.length/2; j++) - { - context.lineTo(points[j * 2], points[j * 2 + 1]); - } - - if (shape.closed) - { - context.lineTo(points[0], points[1]); - } - - // if the first and last point are the same close the path - much neater :) - if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) - { - context.closePath(); - } - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.RECT) - { - if (data.fillColor || data.fillColor === 0) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fillRect(shape.x, shape.y, shape.width, shape.height); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.strokeRect(shape.x, shape.y, shape.width, shape.height); - } - } - else if (data.type === PIXI.Graphics.CIRC) - { - // TODO - need to be Undefined! - context.beginPath(); - context.arc(shape.x, shape.y, shape.radius,0,2*Math.PI); - context.closePath(); - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.ELIP) - { - // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - - var w = shape.width * 2; - var h = shape.height * 2; - - var x = shape.x - w/2; - var y = shape.y - h/2; - - context.beginPath(); - - var kappa = 0.5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - context.moveTo(x, ym); - context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - - context.closePath(); - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.RREC) - { - var rx = shape.x; - var ry = shape.y; - var width = shape.width; - var height = shape.height; - var radius = shape.radius; - - var maxRadius = Math.min(width, height) / 2 | 0; - radius = radius > maxRadius ? maxRadius : radius; - - context.beginPath(); - context.moveTo(rx, ry + radius); - context.lineTo(rx, ry + height - radius); - context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); - context.lineTo(rx + width - radius, ry + height); - context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); - context.lineTo(rx + width, ry + radius); - context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); - context.lineTo(rx + radius, ry); - context.quadraticCurveTo(rx, ry, rx, ry + radius); - context.closePath(); - - if (data.fillColor || data.fillColor === 0) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - } -}; - -/* - * Renders a graphics mask - * - * @static - * @private - * @method renderGraphicsMask - * @param graphics {Graphics} the graphics which will be used as a mask - * @param context {CanvasRenderingContext2D} the context 2d method of the canvas - */ -PIXI.CanvasGraphics.renderGraphicsMask = function(graphics, context) -{ - var len = graphics.graphicsData.length; - - if (len === 0) - { - return; - } - - context.beginPath(); - - for (var i = 0; i < len; i++) - { - var data = graphics.graphicsData[i]; - var shape = data.shape; - - if (data.type === PIXI.Graphics.POLY) - { - - var points = shape.points; - - context.moveTo(points[0], points[1]); - - for (var j=1; j < points.length/2; j++) - { - context.lineTo(points[j * 2], points[j * 2 + 1]); - } - - // if the first and last point are the same close the path - much neater :) - if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) - { - context.closePath(); - } - - } - else if (data.type === PIXI.Graphics.RECT) - { - context.rect(shape.x, shape.y, shape.width, shape.height); - context.closePath(); - } - else if (data.type === PIXI.Graphics.CIRC) - { - // TODO - need to be Undefined! - context.arc(shape.x, shape.y, shape.radius, 0, 2 * Math.PI); - context.closePath(); - } - else if (data.type === PIXI.Graphics.ELIP) - { - - // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - - var w = shape.width * 2; - var h = shape.height * 2; - - var x = shape.x - w/2; - var y = shape.y - h/2; - - var kappa = 0.5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - context.moveTo(x, ym); - context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - context.closePath(); - } - else if (data.type === PIXI.Graphics.RREC) - { - - var rx = shape.x; - var ry = shape.y; - var width = shape.width; - var height = shape.height; - var radius = shape.radius; - - var maxRadius = Math.min(width, height) / 2 | 0; - radius = radius > maxRadius ? maxRadius : radius; - - context.moveTo(rx, ry + radius); - context.lineTo(rx, ry + height - radius); - context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); - context.lineTo(rx + width - radius, ry + height); - context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); - context.lineTo(rx + width, ry + radius); - context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); - context.lineTo(rx + radius, ry); - context.quadraticCurveTo(rx, ry, rx, ry + radius); - context.closePath(); - } - } -}; - -PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) -{ - if (graphics.tint === 0xFFFFFF) - { - return; - } - - var tintR = (graphics.tint >> 16 & 0xFF) / 255; - var tintG = (graphics.tint >> 8 & 0xFF) / 255; - var tintB = (graphics.tint & 0xFF)/ 255; - - for (var i = 0; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - - var fillColor = data.fillColor | 0; - var lineColor = data.lineColor | 0; - - /* - var colorR = (fillColor >> 16 & 0xFF) / 255; - var colorG = (fillColor >> 8 & 0xFF) / 255; - var colorB = (fillColor & 0xFF) / 255; - - colorR *= tintR; - colorG *= tintG; - colorB *= tintB; - - fillColor = ((colorR*255 << 16) + (colorG*255 << 8) + colorB*255); - - colorR = (lineColor >> 16 & 0xFF) / 255; - colorG = (lineColor >> 8 & 0xFF) / 255; - colorB = (lineColor & 0xFF) / 255; - - colorR *= tintR; - colorG *= tintG; - colorB *= tintB; - - lineColor = ((colorR*255 << 16) + (colorG*255 << 8) + colorB*255); - */ - - data._fillTint = (((fillColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((fillColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (fillColor & 0xFF) / 255 * tintB*255); - data._lineTint = (((lineColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((lineColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (lineColor & 0xFF) / 255 * tintB*255); - - } }; /** @@ -9381,7 +7866,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.4.3', + VERSION: '2.4.4-RC1', /** * An array of Phaser game instances. @@ -14855,7 +13340,10 @@ Phaser.Camera.prototype = { */ setBoundsToWorld: function () { - this.bounds.copyFrom(this.game.world.bounds); + if (this.bounds) + { + this.bounds.copyFrom(this.game.world.bounds); + } }, @@ -15057,195 +13545,6 @@ Object.defineProperty(Phaser.Camera.prototype, "height", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content -* quickly and easily, without the need for any external files. You can create textures for sprites and in -* coming releases we'll add dynamic sound effect generation support as well (like sfxr). -* -* Access this via `State.create` (or `this.create` from within a State object) -* -* @class Phaser.Create -* @constructor -* @param {Phaser.Game} game - Game reference to the currently running game. - */ -Phaser.Create = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {Phaser.BitmapData} bmd - The internal BitmapData Create uses to generate textures from. - */ - this.bmd = game.make.bitmapData(); - - /** - * @property {HTMLCanvasElement} canvas - The canvas the BitmapData uses. - */ - this.canvas = this.bmd.canvas; - - /** - * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. - */ - this.ctx = this.bmd.context; - - /** - * @property {array} palettes - A range of 16 color palettes for use with sprite generation. - */ - this.palettes = [ - { 0: '#000', 1: '#9D9D9D', 2: '#FFF', 3: '#BE2633', 4: '#E06F8B', 5: '#493C2B', 6: '#A46422', 7: '#EB8931', 8: '#F7E26B', 9: '#2F484E', A: '#44891A', B: '#A3CE27', C: '#1B2632', D: '#005784', E: '#31A2F2', F: '#B2DCEF' }, - { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#f5f4eb' }, - { 0: '#000', 1: '#2234d1', 2: '#0c7e45', 3: '#44aacc', 4: '#8a3622', 5: '#5c2e78', 6: '#aa5c3d', 7: '#b5b5b5', 8: '#5e606e', 9: '#4c81fb', A: '#6cd947', B: '#7be2f9', C: '#eb8a60', D: '#e23d69', E: '#ffd93f', F: '#fff' }, - { 0: '#000', 1: '#fff', 2: '#8b4131', 3: '#7bbdc5', 4: '#8b41ac', 5: '#6aac41', 6: '#3931a4', 7: '#d5de73', 8: '#945a20', 9: '#5a4100', A: '#bd736a', B: '#525252', C: '#838383', D: '#acee8b', E: '#7b73de', F: '#acacac' }, - { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#fff' } - ]; - -}; - -/** -* A 16 color palette by [Arne](http://androidarts.com/palette/16pal.htm) -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_ARNE = 0; - -/** -* A 16 color JMP inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_JMP = 1; - -/** -* A 16 color CGA inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_CGA = 2; - -/** -* A 16 color C64 inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_C64 = 3; - -/** -* A 16 color palette inspired by Japanese computers like the MSX. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_JAPANESE_MACHINE = 4; - -Phaser.Create.prototype = { - - /** - * Generates a new PIXI.Texture from the given data, which can be applied to a Sprite. - * - * This allows you to create game graphics quickly and easily, with no external files but that use actual proper images - * rather than Phaser.Graphics objects, which are expensive to render and limited in scope. - * - * Each element of the array is a string holding the pixel color values, as mapped to one of the Phaser.Create PALETTE consts. - * - * For example: - * - * `var data = [ - * ' 333 ', - * ' 777 ', - * 'E333E', - * ' 333 ', - * ' 3 3 ' - * ];` - * - * `game.create.texture('bob', data);` - * - * The above will create a new texture called `bob`, which will look like a little man wearing a hat. You can then use it - * for sprites the same way you use any other texture: `game.add.sprite(0, 0, 'bob');` - * - * @method Phaser.Create#texture - * @param {string} key - The key used to store this texture in the Phaser Cache. - * @param {array} data - An array of pixel data. - * @param {integer} [pixelWidth=8] - The width of each pixel. - * @param {integer} [pixelHeight=8] - The height of each pixel. - * @param {integer} [palette=0] - The palette to use when rendering the texture. One of the Phaser.Create.PALETTE consts. - * @return {PIXI.Texture} The newly generated texture. - */ - texture: function (key, data, pixelWidth, pixelHeight, palette) { - - if (pixelWidth === undefined) { pixelWidth = 8; } - if (pixelHeight === undefined) { pixelHeight = pixelWidth; } - if (palette === undefined) { palette = 0; } - - var w = data[0].length * pixelWidth; - var h = data.length * pixelHeight; - - this.bmd.resize(w, h); - this.bmd.clear(); - - // Draw it - for (var y = 0; y < data.length; y++) - { - var row = data[y]; - - for (var x = 0; x < row.length; x++) - { - var d = row[x]; - - if (d !== '.' && d !== ' ') - { - this.ctx.fillStyle = this.palettes[palette][d]; - this.ctx.fillRect(x * pixelWidth, y * pixelHeight, pixelWidth, pixelHeight); - } - } - } - - return this.bmd.generateTexture(key); - - }, - - /** - * Creates a grid texture based on the given dimensions. - * - * @method Phaser.Create#grid - * @param {string} key - The key used to store this texture in the Phaser Cache. - * @param {integer} width - The width of the grid in pixels. - * @param {integer} height - The height of the grid in pixels. - * @param {integer} cellWidth - The width of the grid cells in pixels. - * @param {integer} cellHeight - The height of the grid cells in pixels. - * @param {string} color - The color to draw the grid lines in. Should be a Canvas supported color string like `#ff5500` or `rgba(200,50,3,0.5)`. - * @return {PIXI.Texture} The newly generated texture. - */ - grid: function (key, width, height, cellWidth, cellHeight, color) { - - this.bmd.resize(width, height); - - this.ctx.fillStyle = color; - - for (var y = 0; y < height; y += cellHeight) - { - this.ctx.fillRect(0, y, width, 1); - } - - for (var x = 0; x < width; x += cellWidth) - { - this.ctx.fillRect(x, 0, 1, height); - } - - return this.bmd.generateTexture(key); - - } - -}; - -Phaser.Create.prototype.constructor = Phaser.Create; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * This is a base State class which can be extended if you are creating your own game. * It provides quick access to common functions such as the camera, cache, input, match, sound and more. @@ -15777,7 +14076,7 @@ Phaser.StateManager.prototype = { if (arguments.length > 2) { - this._args = Array.prototype.splice.call(arguments, 2); + this._args = Array.prototype.slice.call(arguments, 2); } }, @@ -16251,6 +14550,10 @@ Object.defineProperty(Phaser.StateManager.prototype, "created", { }); +/** +* "It's like nailing jelly to a kitten" - Gary Penn +*/ + /** * @author Miller Medeiros http://millermedeiros.github.com/js-signals/ * @author Richard Davey @@ -17059,6 +15362,60 @@ Phaser.Filter.prototype = { }, + /** + * Creates a new Phaser.Image object using a blank texture and assigns + * this Filter to it. The image is then added to the world. + * + * If you don't provide width and height values then Filter.width and Filter.height are used. + * + * If you do provide width and height values then this filter will be resized to match those + * values. + * + * @method Phaser.Filter#addToWorld + * @param {number} [x=0] - The x coordinate to place the Image at. + * @param {number} [y=0] - The y coordinate to place the Image at. + * @param {number} [width] - The width of the Image. If not specified (or null) it will use Filter.width. If specified Filter.width will be set to this value. + * @param {number} [height] - The height of the Image. If not specified (or null) it will use Filter.height. If specified Filter.height will be set to this value. + * @param {number} [anchorX=0] - Set the x anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. + * @param {number} [anchorY=0] - Set the y anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. + * @return {Phaser.Image} The newly added Image object. + */ + addToWorld: function (x, y, width, height, anchorX, anchorY) { + + if (anchorX === undefined) { anchorX = 0; } + if (anchorY === undefined) { anchorY = 0; } + + if (width !== undefined && width !== null) + { + this.width = width; + } + else + { + width = this.width; + } + + if (height !== undefined && height !== null) + { + this.height = height; + } + else + { + height = this.height; + } + + var image = this.game.add.image(x, y, '__default'); + + image.width = width; + image.height = height; + + image.anchor.set(anchorX, anchorY); + + image.filters = [ this ]; + + return image; + + }, + /** * Clear down this Filter and null out references * @method Phaser.Filter#destroy @@ -17282,7 +15639,7 @@ Phaser.PluginManager.prototype = { */ add: function (plugin) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var result = false; // Prototype? @@ -17527,7 +15884,7 @@ Phaser.PluginManager.prototype.constructor = Phaser.PluginManager; * It also handles browser visibility handling and the pausing due to loss of focus. * * @class Phaser.Stage -* @extends PIXI.Stage +* @extends PIXI.DisplayObjectContainer * @constructor * @param {Phaser.Game} game - Game reference to the currently running game. */ @@ -17538,7 +15895,7 @@ Phaser.Stage = function (game) { */ this.game = game; - PIXI.Stage.call(this, 0x000000); + PIXI.DisplayObjectContainer.call(this); /** * @property {string} name - The name of this object. @@ -17558,6 +15915,20 @@ Phaser.Stage = function (game) { */ this.exists = true; + /** + * @property {PIXI.Matrix} worldTransform - Current transform of the object based on world (parent) factors + * @private + * @readOnly + */ + this.worldTransform = new PIXI.Matrix(); + + /** + * @property {Phaser.Stage} stage - The stage reference (the Stage is its own stage) + * @private + * @readOnly + */ + this.stage = this; + /** * @property {number} currentRenderOrderID - Reset each frame, keeps a count of the total number of objects updated. */ @@ -17576,10 +15947,16 @@ Phaser.Stage = function (game) { this._onChange = null; /** - * @property {number} _backgroundColor - Stage background color. + * @property {number} _bgColor - Stage background color object. Populated by setBackgroundColor. * @private */ - this._backgroundColor = 0x000000; + this._bgColor = { r: 0, g: 0, b: 0, a: 0, color: 0, rgba: '#000000' }; + + if (!this.game.transparent) + { + // transparent = 0,0,0,0 - otherwise r,g,b,1 + this._bgColor.a = 1; + } if (game.config) { @@ -17588,7 +15965,7 @@ Phaser.Stage = function (game) { }; -Phaser.Stage.prototype = Object.create(PIXI.Stage.prototype); +Phaser.Stage.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); Phaser.Stage.prototype.constructor = Phaser.Stage; /** @@ -17607,7 +15984,7 @@ Phaser.Stage.prototype.parseConfig = function (config) { if (config['backgroundColor']) { - this.backgroundColor = config['backgroundColor']; + this.setBackgroundColor(config['backgroundColor']); } }; @@ -17824,16 +16201,23 @@ Phaser.Stage.prototype.visibilityChange = function (event) { * * An alpha channel is _not_ supported and will be ignored. * +* If you've set your game to be transparent then calls to setBackgroundColor are ignored. +* * @method Phaser.Stage#setBackgroundColor -* @param {number|string} backgroundColor - The color of the background. +* @param {number|string} color - The color of the background. */ -Phaser.Stage.prototype.setBackgroundColor = function(backgroundColor) -{ - var rgb = Phaser.Color.valueToColor(backgroundColor); - this._backgroundColor = Phaser.Color.getColor(rgb.r, rgb.g, rgb.b); +Phaser.Stage.prototype.setBackgroundColor = function (color) { - this.backgroundColorSplit = [ rgb.r / 255, rgb.g / 255, rgb.b / 255 ]; - this.backgroundColorString = Phaser.Color.RGBtoString(rgb.r, rgb.g, rgb.b, 255, '#'); + if (this.game.transparent) { return; } + + Phaser.Color.valueToColor(color, this._bgColor); + Phaser.Color.updateColor(this._bgColor); + + // For gl.clearColor (canvas uses _bgColor.rgba) + this._bgColor.r /= 255; + this._bgColor.g /= 255; + this._bgColor.b /= 255; + this._bgColor.a = 1; }; @@ -17865,16 +16249,13 @@ Object.defineProperty(Phaser.Stage.prototype, "backgroundColor", { get: function () { - return this._backgroundColor; + return this._bgColor.color; }, set: function (color) { - if (!this.game.transparent) - { - this.setBackgroundColor(color); - } + this.setBackgroundColor(color); } @@ -17962,6 +16343,7 @@ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBody * The z-depth value of this object within its parent container/Group - the World is a Group as well. * This value must be unique for each child in a Group. * @property {integer} z + * @readOnly */ this.z = 0; @@ -18066,7 +16448,7 @@ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBody /** * If {@link #enableBody} is true this is the type of physics body that is created on new Sprites. * - * The valid values are {@link Phaser.Physics.ARCADE}, {@link Phaser.Physics.P2}, {@link Phaser.Physics.NINJA}, etc. + * The valid values are {@link Phaser.Physics.ARCADE}, {@link Phaser.Physics.P2JS}, {@link Phaser.Physics.NINJA}, etc. * @property {integer} physicsBodyType */ this.physicsBodyType = physicsBodyType; @@ -18375,13 +16757,13 @@ Phaser.Group.prototype.getAt = function (index) { /** * Creates a new Phaser.Sprite object and adds it to the top of this group. * -* Use {@link #classType} to change the type of object creaded. +* Use {@link #classType} to change the type of object created. * * @method Phaser.Group#create * @param {number} x - The x coordinate to display the newly created Sprite at. The value is in relation to the group.x point. * @param {number} y - The y coordinate to display the newly created Sprite at. The value is in relation to the group.y point. -* @param {string} key - The Game.cache key of the image that this Sprite will use. -* @param {integer|string} [frame] - If the Sprite image contains multiple frames you can specify which one to use here. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @param {boolean} [exists=true] - The default exists state of the Sprite. * @return {DisplayObject} The child that was created: will be a {@link Phaser.Sprite} unless {@link #classType} has been changed. */ @@ -19683,47 +18065,134 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal /** * Get the first display object that exists, or doesn't exist. +* +* You can use the optional argument `createIfNull` to create a new Game Object if none matching your exists argument were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstExists * @param {boolean} [exists=true] - If true, find the first existing child; otherwise find the first non-existing child. -* @return {any} The first child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no alive children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The first child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstExists = function (exists) { +Phaser.Group.prototype.getFirstExists = function (exists, createIfNull, x, y, key, frame) { + + if (createIfNull === undefined) { createIfNull = false; } if (typeof exists !== 'boolean') { exists = true; } - return this.iterate('exists', exists, Phaser.Group.RETURN_CHILD); + var child = this.iterate('exists', exists, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); }; /** * Get the first child that is alive (`child.alive === true`). * -* This is handy for checking if everything has been wiped out, or choosing a squad leader, etc. +* This is handy for choosing a squad leader, etc. +* +* You can use the optional argument `createIfNull` to create a new Game Object if no alive ones were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstAlive -* @return {any} The first alive child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no alive children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The alive dead child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstAlive = function () { +Phaser.Group.prototype.getFirstAlive = function (createIfNull, x, y, key, frame) { - return this.iterate('alive', true, Phaser.Group.RETURN_CHILD); + if (createIfNull === undefined) { createIfNull = false; } + + var child = this.iterate('alive', true, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); }; /** * Get the first child that is dead (`child.alive === false`). * -* This is handy for checking if everything has been wiped out, or choosing a squad leader, etc. +* This is handy for checking if everything has been wiped out and adding to the pool as needed. +* +* You can use the optional argument `createIfNull` to create a new Game Object if no dead ones were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstDead -* @return {any} The first dead child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no dead children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The first dead child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstDead = function () { +Phaser.Group.prototype.getFirstDead = function (createIfNull, x, y, key, frame) { - return this.iterate('alive', false, Phaser.Group.RETURN_CHILD); + if (createIfNull === undefined) { createIfNull = false; } + + var child = this.iterate('alive', false, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); + +}; + +/** +* Takes a child and if the `x` and `y` arguments are given it calls `child.reset(x, y)` on it. +* +* If the `key` and optionally the `frame` arguments are given, it calls `child.loadTexture(key, frame)` on it. +* +* The two operations are separate. For example if you just wish to load a new texture then pass `null` as the x and y values. +* +* @method Phaser.Group#resetChild +* @param {DisplayObject} child - The child to reset and/or load the texture on. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The child that was reset: usually a {@link Phaser.Sprite}. +*/ +Phaser.Group.prototype.resetChild = function (child, x, y, key, frame) { + + if (child === null) + { + return null; + } + + if (x === undefined) { x = null; } + if (y === undefined) { y = null; } + + if (x !== null && y !== null) + { + child.reset(x, y); + } + + if (key !== undefined) + { + child.loadTexture(key, frame); + } + + return child; }; @@ -20495,2816 +18964,6 @@ Object.defineProperty(Phaser.World.prototype, "randomY", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. -* Please try to avoid using in production games with a long time to build. -* This is also why the documentation is incomplete. -* -* FlexGrid is a a responsive grid manager that works in conjunction with the ScaleManager RESIZE scaling mode and FlexLayers -* to provide for game object positioning in a responsive manner. -* -* @class Phaser.FlexGrid -* @constructor -* @param {Phaser.ScaleManager} manager - The ScaleManager. -* @param {number} width - The width of the game. -* @param {number} height - The height of the game. -*/ -Phaser.FlexGrid = function (manager, width, height) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = manager.game; - - /** - * @property {Phaser.ScaleManager} manager - A reference to the ScaleManager. - */ - this.manager = manager; - - // The perfect dimensions on which everything else is based - this.width = width; - this.height = height; - - this.boundsCustom = new Phaser.Rectangle(0, 0, width, height); - this.boundsFluid = new Phaser.Rectangle(0, 0, width, height); - this.boundsFull = new Phaser.Rectangle(0, 0, width, height); - this.boundsNone = new Phaser.Rectangle(0, 0, width, height); - - /** - * @property {Phaser.Point} position - - * @readonly - */ - this.positionCustom = new Phaser.Point(0, 0); - this.positionFluid = new Phaser.Point(0, 0); - this.positionFull = new Phaser.Point(0, 0); - this.positionNone = new Phaser.Point(0, 0); - - /** - * @property {Phaser.Point} scaleFactor - The scale factor based on the game dimensions vs. the scaled dimensions. - * @readonly - */ - this.scaleCustom = new Phaser.Point(1, 1); - this.scaleFluid = new Phaser.Point(1, 1); - this.scaleFluidInversed = new Phaser.Point(1, 1); - this.scaleFull = new Phaser.Point(1, 1); - this.scaleNone = new Phaser.Point(1, 1); - - this.customWidth = 0; - this.customHeight = 0; - this.customOffsetX = 0; - this.customOffsetY = 0; - - this.ratioH = width / height; - this.ratioV = height / width; - - this.multiplier = 0; - - this.layers = []; - -}; - -Phaser.FlexGrid.prototype = { - - /** - * Sets the core game size. This resets the w/h parameters and bounds. - * - * @method Phaser.FlexGrid#setSize - * @param {number} width - The new dimensions. - * @param {number} height - The new dimensions. - */ - setSize: function (width, height) { - - // These are locked and don't change until setSize is called again - this.width = width; - this.height = height; - - this.ratioH = width / height; - this.ratioV = height / width; - - this.scaleNone = new Phaser.Point(1, 1); - - this.boundsNone.width = this.width; - this.boundsNone.height = this.height; - - this.refresh(); - - }, - - // Need ability to create your own layers with custom scaling, etc. - - /** - * A custom layer is centered on the game and maintains its aspect ratio as it scales up and down. - * - * @method Phaser.FlexGrid#createCustomLayer - * @param {number} width - Width of this layer in pixels. - * @param {number} height - Height of this layer in pixels. - * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createCustomLayer: function (width, height, children, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - this.customWidth = width; - this.customHeight = height; - - this.boundsCustom.width = width; - this.boundsCustom.height = height; - - var layer = new Phaser.FlexLayer(this, this.positionCustom, this.boundsCustom, this.scaleCustom); - - if (addToWorld) - { - this.game.world.add(layer); - } - - this.layers.push(layer); - - if (typeof children !== 'undefined' && typeof children !== null) - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A fluid layer is centered on the game and maintains its aspect ratio as it scales up and down. - * - * @method Phaser.FlexGrid#createFluidLayer - * @param {array} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFluidLayer: function (children, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - var layer = new Phaser.FlexLayer(this, this.positionFluid, this.boundsFluid, this.scaleFluid); - - if (addToWorld) - { - this.game.world.add(layer); - } - - this.layers.push(layer); - - if (typeof children !== 'undefined' && typeof children !== null) - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A full layer is placed at 0,0 and extends to the full size of the game. Children are scaled according to the fluid ratios. - * - * @method Phaser.FlexGrid#createFullLayer - * @param {array} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFullLayer: function (children) { - - var layer = new Phaser.FlexLayer(this, this.positionFull, this.boundsFull, this.scaleFluid); - - this.game.world.add(layer); - - this.layers.push(layer); - - if (typeof children !== 'undefined') - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A fixed layer is centered on the game and is the size of the required dimensions and is never scaled. - * - * @method Phaser.FlexGrid#createFixedLayer - * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFixedLayer: function (children) { - - var layer = new Phaser.FlexLayer(this, this.positionNone, this.boundsNone, this.scaleNone); - - this.game.world.add(layer); - - this.layers.push(layer); - - if (typeof children !== 'undefined') - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * Resets the layer children references - * - * @method Phaser.FlexGrid#reset - */ - reset: function () { - - var i = this.layers.length; - - while (i--) - { - if (!this.layers[i].persist) - { - // Remove references to this class - this.layers[i].position = null; - this.layers[i].scale = null; - this.layers.slice(i, 1); - } - } - - }, - - /** - * Called when the game container changes dimensions. - * - * @method Phaser.FlexGrid#onResize - * @param {number} width - The new width of the game container. - * @param {number} height - The new height of the game container. - */ - onResize: function (width, height) { - - this.ratioH = width / height; - this.ratioV = height / width; - - this.refresh(width, height); - - }, - - /** - * Updates all internal vars such as the bounds and scale values. - * - * @method Phaser.FlexGrid#refresh - */ - refresh: function () { - - this.multiplier = Math.min((this.manager.height / this.height), (this.manager.width / this.width)); - - this.boundsFluid.width = Math.round(this.width * this.multiplier); - this.boundsFluid.height = Math.round(this.height * this.multiplier); - - this.scaleFluid.set(this.boundsFluid.width / this.width, this.boundsFluid.height / this.height); - this.scaleFluidInversed.set(this.width / this.boundsFluid.width, this.height / this.boundsFluid.height); - - this.scaleFull.set(this.boundsFull.width / this.width, this.boundsFull.height / this.height); - - this.boundsFull.width = Math.round(this.manager.width * this.scaleFluidInversed.x); - this.boundsFull.height = Math.round(this.manager.height * this.scaleFluidInversed.y); - - this.boundsFluid.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); - this.boundsNone.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); - - this.positionFluid.set(this.boundsFluid.x, this.boundsFluid.y); - this.positionNone.set(this.boundsNone.x, this.boundsNone.y); - - }, - - /** - * Fits a sprites width to the bounds. - * - * @method Phaser.FlexGrid#fitSprite - * @param {Phaser.Sprite} sprite - The Sprite to fit. - */ - fitSprite: function (sprite) { - - this.manager.scaleSprite(sprite); - - sprite.x = this.manager.bounds.centerX; - sprite.y = this.manager.bounds.centerY; - - }, - - /** - * Call in the render function to output the bounds rects. - * - * @method Phaser.FlexGrid#debug - */ - debug: function () { - - // for (var i = 0; i < this.layers.length; i++) - // { - // this.layers[i].debug(); - // } - - // this.game.debug.text(this.boundsFull.width + ' x ' + this.boundsFull.height, this.boundsFull.x + 4, this.boundsFull.y + 16); - // this.game.debug.geom(this.boundsFull, 'rgba(0,0,255,0.9', false); - - this.game.debug.text(this.boundsFluid.width + ' x ' + this.boundsFluid.height, this.boundsFluid.x + 4, this.boundsFluid.y + 16); - this.game.debug.geom(this.boundsFluid, 'rgba(255,0,0,0.9', false); - - // this.game.debug.text(this.boundsNone.width + ' x ' + this.boundsNone.height, this.boundsNone.x + 4, this.boundsNone.y + 16); - // this.game.debug.geom(this.boundsNone, 'rgba(0,255,0,0.9', false); - - // this.game.debug.text(this.boundsCustom.width + ' x ' + this.boundsCustom.height, this.boundsCustom.x + 4, this.boundsCustom.y + 16); - // this.game.debug.geom(this.boundsCustom, 'rgba(255,255,0,0.9', false); - - } - -}; - -Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. -* Please try to avoid using in production games with a long time to build. -* This is also why the documentation is incomplete. -* -* A responsive grid layer. -* -* @class Phaser.FlexLayer -* @extends Phaser.Group -* @constructor -* @param {Phaser.FlexGrid} manager - The FlexGrid that owns this FlexLayer. -* @param {Phaser.Point} position - A reference to the Point object used for positioning. -* @param {Phaser.Rectangle} bounds - A reference to the Rectangle used for the layer bounds. -* @param {Phaser.Point} scale - A reference to the Point object used for layer scaling. -*/ -Phaser.FlexLayer = function (manager, position, bounds, scale) { - - Phaser.Group.call(this, manager.game, null, '__flexLayer' + manager.game.rnd.uuid(), false); - - /** - * @property {Phaser.ScaleManager} scale - A reference to the ScaleManager. - */ - this.manager = manager.manager; - - /** - * @property {Phaser.FlexGrid} grid - A reference to the FlexGrid that owns this layer. - */ - this.grid = manager; - - /** - * Should the FlexLayer remain through a State swap? - * - * @type {boolean} - */ - this.persist = false; - - /** - * @property {Phaser.Point} position - */ - this.position = position; - - /** - * @property {Phaser.Rectangle} bounds - */ - this.bounds = bounds; - - /** - * @property {Phaser.Point} scale - */ - this.scale = scale; - - /** - * @property {Phaser.Point} topLeft - */ - this.topLeft = bounds.topLeft; - - /** - * @property {Phaser.Point} topMiddle - */ - this.topMiddle = new Phaser.Point(bounds.halfWidth, 0); - - /** - * @property {Phaser.Point} topRight - */ - this.topRight = bounds.topRight; - - /** - * @property {Phaser.Point} bottomLeft - */ - this.bottomLeft = bounds.bottomLeft; - - /** - * @property {Phaser.Point} bottomMiddle - */ - this.bottomMiddle = new Phaser.Point(bounds.halfWidth, bounds.bottom); - - /** - * @property {Phaser.Point} bottomRight - */ - this.bottomRight = bounds.bottomRight; - -}; - -Phaser.FlexLayer.prototype = Object.create(Phaser.Group.prototype); -Phaser.FlexLayer.prototype.constructor = Phaser.FlexLayer; - -/** - * Resize. - * - * @method Phaser.FlexLayer#resize - */ -Phaser.FlexLayer.prototype.resize = function () { -}; - -/** - * Debug. - * - * @method Phaser.FlexLayer#debug - */ -Phaser.FlexLayer.prototype.debug = function () { - - this.game.debug.text(this.bounds.width + ' x ' + this.bounds.height, this.bounds.x + 4, this.bounds.y + 16); - this.game.debug.geom(this.bounds, 'rgba(0,0,255,0.9', false); - - this.game.debug.geom(this.topLeft, 'rgba(255,255,255,0.9'); - this.game.debug.geom(this.topMiddle, 'rgba(255,255,255,0.9'); - this.game.debug.geom(this.topRight, 'rgba(255,255,255,0.9'); - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* @classdesc -* The ScaleManager object handles the the scaling, resizing, and alignment of the -* Game size and the game Display canvas. -* -* The Game size is the logical size of the game; the Display canvas has size as an HTML element. -* -* The calculations of these are heavily influenced by the bounding Parent size which is the computed -* dimensions of the Display canvas's Parent container/element - the _effective CSS rules of the -* canvas's Parent element play an important role_ in the operation of the ScaleManager. -* -* The Display canvas - or Game size, depending {@link #scaleMode} - is updated to best utilize the Parent size. -* When in Fullscreen mode or with {@link #parentIsWindow} the Parent size is that of the visual viewport (see {@link Phaser.ScaleManager#getParentBounds getParentBounds}). -* -* Parent and Display canvas containment guidelines: -* -* - Style the Parent element (of the game canvas) to control the Parent size and -* thus the Display canvas's size and layout. -* -* - The Parent element's CSS styles should _effectively_ apply maximum (and minimum) bounding behavior. -* -* - The Parent element should _not_ apply a padding as this is not accounted for. -* If a padding is required apply it to the Parent's parent or apply a margin to the Parent. -* If you need to add a border, margin or any other CSS around your game container, then use a parent element and -* apply the CSS to this instead, otherwise you'll be constantly resizing the shape of the game container. -* -* - The Display canvas layout CSS styles (i.e. margins, size) should not be altered/specified as -* they may be updated by the ScaleManager. -* -* @description -* Create a new ScaleManager object - this is done automatically by {@link Phaser.Game} -* -* The `width` and `height` constructor parameters can either be a number which represents pixels or a string that represents a percentage: e.g. `800` (for 800 pixels) or `"80%"` for 80%. -* -* @class -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number|string} width - The width of the game. See above. -* @param {number|string} height - The height of the game. See above. -*/ -Phaser.ScaleManager = function (game, width, height) { - - /** - * A reference to the currently running game. - * @property {Phaser.Game} game - * @protected - * @readonly - */ - this.game = game; - - /** - * Provides access to some cross-device DOM functions. - * @property {Phaser.DOM} dom - * @protected - * @readonly - */ - this.dom = Phaser.DOM; - - /** - * _EXPERIMENTAL:_ A responsive grid on which you can align game objects. - * @property {Phaser.FlexGrid} grid - * @public - */ - this.grid = null; - - /** - * Target width (in pixels) of the Display canvas. - * @property {number} width - * @readonly - */ - this.width = 0; - - /** - * Target height (in pixels) of the Display canvas. - * @property {number} height - * @readonly - */ - this.height = 0; - - /** - * Minimum width the canvas should be scaled to (in pixels). - * Change with {@link #setMinMax}. - * @property {?number} minWidth - * @readonly - * @protected - */ - this.minWidth = null; - - /** - * Maximum width the canvas should be scaled to (in pixels). - * If null it will scale to whatever width the browser can handle. - * Change with {@link #setMinMax}. - * @property {?number} maxWidth - * @readonly - * @protected - */ - this.maxWidth = null; - - /** - * Minimum height the canvas should be scaled to (in pixels). - * Change with {@link #setMinMax}. - * @property {?number} minHeight - * @readonly - * @protected - */ - this.minHeight = null; - - /** - * Maximum height the canvas should be scaled to (in pixels). - * If null it will scale to whatever height the browser can handle. - * Change with {@link #setMinMax}. - * @property {?number} maxHeight - * @readonly - * @protected - */ - this.maxHeight = null; - - /** - * The offset coordinates of the Display canvas from the top-left of the browser window. - * The is used internally by Phaser.Pointer (for Input) and possibly other types. - * @property {Phaser.Point} offset - * @readonly - * @protected - */ - this.offset = new Phaser.Point(); - - /** - * If true, the game should only run in a landscape orientation. - * Change with {@link #forceOrientation}. - * @property {boolean} forceLandscape - * @readonly - * @default - * @protected - */ - this.forceLandscape = false; - - /** - * If true, the game should only run in a portrait - * Change with {@link #forceOrientation}. - * @property {boolean} forcePortrait - * @readonly - * @default - * @protected - */ - this.forcePortrait = false; - - /** - * True if {@link #forceLandscape} or {@link #forcePortrait} are set and do not agree with the browser orientation. - * - * This value is not updated immediately. - * - * @property {boolean} incorrectOrientation - * @readonly - * @protected - */ - this.incorrectOrientation = false; - - /** - * See {@link #pageAlignHorizontally}. - * @property {boolean} _pageAlignHorizontally - * @private - */ - this._pageAlignHorizontally = false; - - /** - * See {@link #pageAlignVertically}. - * @property {boolean} _pageAlignVertically - * @private - */ - this._pageAlignVertically = false; - - /** - * This signal is dispatched when the orientation changes _or_ the validity of the current orientation changes. - * - * The signal is supplied with the following arguments: - * - `scale` - the ScaleManager object - * - `prevOrientation`, a string - The previous orientation as per {@link Phaser.ScaleManager#screenOrientation screenOrientation}. - * - `wasIncorrect`, a boolean - True if the previous orientation was last determined to be incorrect. - * - * Access the current orientation and validity with `scale.screenOrientation` and `scale.incorrectOrientation`. - * Thus the following tests can be done: - * - * // The orientation itself changed: - * scale.screenOrientation !== prevOrientation - * // The orientation just became incorrect: - * scale.incorrectOrientation && !wasIncorrect - * - * It is possible that this signal is triggered after {@link #forceOrientation} so the orientation - * correctness changes even if the orientation itself does not change. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} onOrientationChange - * @public - */ - this.onOrientationChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser enters an incorrect orientation, as defined by {@link #forceOrientation}. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} enterIncorrectOrientation - * @public - */ - this.enterIncorrectOrientation = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser leaves an incorrect orientation, as defined by {@link #forceOrientation}. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} leaveIncorrectOrientation - * @public - */ - this.leaveIncorrectOrientation = new Phaser.Signal(); - - /** - * If specified, this is the DOM element on which the Fullscreen API enter request will be invoked. - * The target element must have the correct CSS styling and contain the Display canvas. - * - * The elements style will be modified (ie. the width and height might be set to 100%) - * but it will not be added to, removed from, or repositioned within the DOM. - * An attempt is made to restore relevant style changes when fullscreen mode is left. - * - * For pre-2.2.0 behavior set `game.scale.fullScreenTarget = game.canvas`. - * - * @property {?DOMElement} fullScreenTarget - * @default - */ - this.fullScreenTarget = null; - - /** - * The fullscreen target, as created by {@link #createFullScreenTarget}. - * This is not set if {@link #fullScreenTarget} is used and is cleared when fullscreen mode ends. - * @property {?DOMElement} _createdFullScreenTarget - * @private - */ - this._createdFullScreenTarget = null; - - /** - * This signal is dispatched when fullscreen mode is ready to be initialized but - * before the fullscreen request. - * - * The signal is passed two arguments: `scale` (the ScaleManager), and an object in the form `{targetElement: DOMElement}`. - * - * The `targetElement` is the {@link #fullScreenTarget} element, - * if such is assigned, or a new element created by {@link #createFullScreenTarget}. - * - * Custom CSS styling or resets can be applied to `targetElement` as required. - * - * If `targetElement` is _not_ the same element as {@link #fullScreenTarget}: - * - After initialization the Display canvas is moved onto the `targetElement` for - * the duration of the fullscreen mode, and restored to it's original DOM location when fullscreen is exited. - * - The `targetElement` is moved/re-parented within the DOM and may have its CSS styles updated. - * - * The behavior of a pre-assigned target element is covered in {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget}. - * - * @property {Phaser.Signal} onFullScreenInit - * @public - */ - this.onFullScreenInit = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser enters or leaves fullscreen mode, if supported. - * - * The signal is supplied with a single argument: `scale` (the ScaleManager). Use `scale.isFullScreen` to determine - * if currently running in Fullscreen mode. - * - * @property {Phaser.Signal} onFullScreenChange - * @public - */ - this.onFullScreenChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser fails to enter fullscreen mode; - * or if the device does not support fullscreen mode and `startFullScreen` is invoked. - * - * The signal is supplied with a single argument: `scale` (the ScaleManager). - * - * @property {Phaser.Signal} onFullScreenError - * @public - */ - this.onFullScreenError = new Phaser.Signal(); - - /** - * The _last known_ orientation of the screen, as defined in the Window Screen Web API. - * See {@link Phaser.DOM.getScreenOrientation} for possible values. - * - * @property {string} screenOrientation - * @readonly - * @public - */ - this.screenOrientation = this.dom.getScreenOrientation(); - - /** - * The _current_ scale factor based on the game dimensions vs. the scaled dimensions. - * @property {Phaser.Point} scaleFactor - * @readonly - */ - this.scaleFactor = new Phaser.Point(1, 1); - - /** - * The _current_ inversed scale factor. The displayed dimensions divided by the game dimensions. - * @property {Phaser.Point} scaleFactorInversed - * @readonly - * @protected - */ - this.scaleFactorInversed = new Phaser.Point(1, 1); - - /** - * The Display canvas is aligned by adjusting the margins; the last margins are stored here. - * - * @property {Bounds-like} margin - * @readonly - * @protected - */ - this.margin = {left: 0, top: 0, right: 0, bottom: 0, x: 0, y: 0}; - - /** - * The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height. - * @property {Phaser.Rectangle} bounds - * @readonly - */ - this.bounds = new Phaser.Rectangle(); - - /** - * The aspect ratio of the scaled Display canvas. - * @property {number} aspectRatio - * @readonly - */ - this.aspectRatio = 0; - - /** - * The aspect ratio of the original game dimensions. - * @property {number} sourceAspectRatio - * @readonly - */ - this.sourceAspectRatio = 0; - - /** - * The native browser events from Fullscreen API changes. - * @property {any} event - * @readonly - * @private - */ - this.event = null; - - /** - * The edges on which to constrain the game Display/canvas in _addition_ to the restrictions of the parent container. - * - * The properties are strings and can be '', 'visual', 'layout', or 'layout-soft'. - * - If 'visual', the edge will be constrained to the Window / displayed screen area - * - If 'layout', the edge will be constrained to the CSS Layout bounds - * - An invalid value is treated as 'visual' - * - * @member - * @property {string} bottom - * @property {string} right - * @default - */ - this.windowConstraints = { - right: 'layout', - bottom: '' - }; - - /** - * Various compatibility settings. - * A value of "(auto)" indicates the setting is configured based on device and runtime information. - * - * A {@link #refresh} may need to be performed after making changes. - * - * @protected - * - * @property {boolean} [supportsFullscreen=(auto)] - True only if fullscreen support will be used. (Changing to fullscreen still might not work.) - * - * @property {boolean} [orientationFallback=(auto)] - See {@link Phaser.DOM.getScreenOrientation}. - * - * @property {boolean} [noMargins=false] - If true then the Display canvas's margins will not be updated anymore: existing margins must be manually cleared. Disabling margins prevents automatic canvas alignment/centering, possibly in fullscreen. - * - * @property {?Phaser.Point} [scrollTo=(auto)] - If specified the window will be scrolled to this position on every refresh. - * - * @property {boolean} [forceMinimumDocumentHeight=false] - If enabled the document elements minimum height is explicitly set on updates. - * The height set varies by device and may either be the height of the window or the viewport. - * - * @property {boolean} [canExpandParent=true] - If enabled then SHOW_ALL and USER_SCALE modes can try and expand the parent element. It may be necessary for the parent element to impose CSS width/height restrictions. - * - * @property {string} [clickTrampoline=(auto)] - On certain browsers (eg. IE) FullScreen events need to be triggered via 'click' events. - * A value of 'when-not-mouse' uses a click trampoline when a pointer that is not the primary mouse is used. - * Any other string value (including the empty string) prevents using click trampolines. - * For more details on click trampolines see {@link Phaser.Pointer#addClickTrampoline}. - */ - this.compatibility = { - supportsFullScreen: false, - orientationFallback: null, - noMargins: false, - scrollTo: null, - forceMinimumDocumentHeight: false, - canExpandParent: true, - clickTrampoline: '' - }; - - /** - * Scale mode to be used when not in fullscreen. - * @property {number} _scaleMode - * @private - */ - this._scaleMode = Phaser.ScaleManager.NO_SCALE; - - /* - * Scale mode to be used in fullscreen. - * @property {number} _fullScreenScaleMode - * @private - */ - this._fullScreenScaleMode = Phaser.ScaleManager.NO_SCALE; - - /** - * If the parent container of the Game canvas is the browser window itself (i.e. document.body), - * rather than another div, this should set to `true`. - * - * The {@link #parentNode} property is generally ignored while this is in effect. - * - * @property {boolean} parentIsWindow - */ - this.parentIsWindow = false; - - /** - * The _original_ DOM element for the parent of the Display canvas. - * This may be different in fullscreen - see {@link #createFullScreenTarget}. - * - * This should only be changed after moving the Game canvas to a different DOM parent. - * - * @property {?DOMElement} parentNode - */ - this.parentNode = null; - - /** - * The scale of the game in relation to its parent container. - * @property {Phaser.Point} parentScaleFactor - * @readonly - */ - this.parentScaleFactor = new Phaser.Point(1, 1); - - /** - * The maximum time (in ms) between dimension update checks for the Canvas's parent element (or window). - * Update checks normally happen quicker in response to other events. - * - * @property {integer} trackParentInterval - * @default - * @protected - * @see {@link Phaser.ScaleManager#refresh refresh} - */ - this.trackParentInterval = 2000; - - /** - * This signal is dispatched when the size of the Display canvas changes _or_ the size of the Game changes. - * When invoked this is done _after_ the Canvas size/position have been updated. - * - * This signal is _only_ called when a change occurs and a reflow may be required. - * For example, if the canvas does not change sizes because of CSS settings (such as min-width) - * then this signal will _not_ be triggered. - * - * Use this to handle responsive game layout options. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} onSizeChange - * @todo Formalize the arguments, if any, supplied to this signal. - */ - this.onSizeChange = new Phaser.Signal(); - - /** - * The callback that will be called each the parent container resizes. - * @property {function} onResize - * @private - */ - this.onResize = null; - - /** - * The context in which the {@link #onResize} callback will be called. - * @property {object} onResizeContext - * @private - */ - this.onResizeContext = null; - - /** - * @property {integer} _pendingScaleMode - Used to retain the scale mode if set from config before Boot. - * @private - */ - this._pendingScaleMode = null; - - /** - * Information saved when fullscreen mode is started. - * @property {?object} _fullScreenRestore - * @private - */ - this._fullScreenRestore = null; - - /** - * The _actual_ game dimensions, as initially set or set by {@link #setGameSize}. - * @property {Phaser.Rectangle} _gameSize - * @private - */ - this._gameSize = new Phaser.Rectangle(); - - /** - * The user-supplied scale factor, used with the USER_SCALE scaling mode. - * @property {Phaser.Point} _userScaleFactor - * @private - */ - this._userScaleFactor = new Phaser.Point(1, 1); - - /** - * The user-supplied scale trim, used with the USER_SCALE scaling mode. - * @property {Phaser.Point} _userScaleTrim - * @private - */ - this._userScaleTrim = new Phaser.Point(0, 0); - - /** - * The last time the bounds were checked in `preUpdate`. - * @property {number} _lastUpdate - * @private - */ - this._lastUpdate = 0; - - /** - * Size checks updates are delayed according to the throttle. - * The throttle increases to `trackParentInterval` over time and is used to more - * rapidly detect changes in certain browsers (eg. IE) while providing back-off safety. - * @property {integer} _updateThrottle - * @private - */ - this._updateThrottle = 0; - - /** - * The minimum throttle allowed until it has slowed down sufficiently. - * @property {integer} _updateThrottleReset - * @private - */ - this._updateThrottleReset = 100; - - /** - * The cached result of the parent (possibly window) bounds; used to invalidate sizing. - * @property {Phaser.Rectangle} _parentBounds - * @private - */ - this._parentBounds = new Phaser.Rectangle(); - - /** - * Temporary bounds used for internal work to cut down on new objects created. - * @property {Phaser.Rectangle} _parentBounds - * @private - */ - this._tempBounds = new Phaser.Rectangle(); - - /** - * The Canvas size at which the last onSizeChange signal was triggered. - * @property {Phaser.Rectangle} _lastReportedCanvasSize - * @private - */ - this._lastReportedCanvasSize = new Phaser.Rectangle(); - - /** - * The Game size at which the last onSizeChange signal was triggered. - * @property {Phaser.Rectangle} _lastReportedGameSize - * @private - */ - this._lastReportedGameSize = new Phaser.Rectangle(); - - /** - * @property {boolean} _booted - ScaleManager booted state. - * @private - */ - this._booted = false; - - if (game.config) - { - this.parseConfig(game.config); - } - - this.setupScale(width, height); - -}; - -/** -* A scale mode that stretches content to fill all available space - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.EXACT_FIT = 0; - -/** -* A scale mode that prevents any scaling - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.NO_SCALE = 1; - -/** -* A scale mode that shows the entire game while maintaining proportions - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.SHOW_ALL = 2; - -/** -* A scale mode that causes the Game size to change - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.RESIZE = 3; - -/** -* A scale mode that allows a custom scale factor - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.USER_SCALE = 4; - -Phaser.ScaleManager.prototype = { - - /** - * Start the ScaleManager. - * - * @method Phaser.ScaleManager#boot - * @protected - */ - boot: function () { - - // Configure device-dependent compatibility - - var compat = this.compatibility; - - compat.supportsFullScreen = this.game.device.fullscreen && !this.game.device.cocoonJS; - - // We can't do anything about the status bars in iPads, web apps or desktops - if (!this.game.device.iPad && !this.game.device.webApp && !this.game.device.desktop) - { - if (this.game.device.android && !this.game.device.chrome) - { - compat.scrollTo = new Phaser.Point(0, 1); - } - else - { - compat.scrollTo = new Phaser.Point(0, 0); - } - } - - if (this.game.device.desktop) - { - compat.orientationFallback = 'screen'; - compat.clickTrampoline = 'when-not-mouse'; - } - else - { - compat.orientationFallback = ''; - compat.clickTrampoline = ''; - } - - // Configure event listeners - - var _this = this; - - this._orientationChange = function(event) { - return _this.orientationChange(event); - }; - - this._windowResize = function(event) { - return _this.windowResize(event); - }; - - // This does not appear to be on the standards track - window.addEventListener('orientationchange', this._orientationChange, false); - window.addEventListener('resize', this._windowResize, false); - - if (this.compatibility.supportsFullScreen) - { - this._fullScreenChange = function(event) { - return _this.fullScreenChange(event); - }; - - this._fullScreenError = function(event) { - return _this.fullScreenError(event); - }; - - document.addEventListener('webkitfullscreenchange', this._fullScreenChange, false); - document.addEventListener('mozfullscreenchange', this._fullScreenChange, false); - document.addEventListener('MSFullscreenChange', this._fullScreenChange, false); - document.addEventListener('fullscreenchange', this._fullScreenChange, false); - - document.addEventListener('webkitfullscreenerror', this._fullScreenError, false); - document.addEventListener('mozfullscreenerror', this._fullScreenError, false); - document.addEventListener('MSFullscreenError', this._fullScreenError, false); - document.addEventListener('fullscreenerror', this._fullScreenError, false); - } - - this.game.onResume.add(this._gameResumed, this); - - // Initialize core bounds - - this.dom.getOffset(this.game.canvas, this.offset); - - this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); - - this.setGameSize(this.game.width, this.game.height); - - // Don't use updateOrientationState so events are not fired - this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); - - this.grid = new Phaser.FlexGrid(this, this.width, this.height); - - this._booted = true; - - if (this._pendingScaleMode) - { - this.scaleMode = this._pendingScaleMode; - this._pendingScaleMode = null; - } - - }, - - /** - * Load configuration settings. - * - * @method Phaser.ScaleManager#parseConfig - * @protected - * @param {object} config - The game configuration object. - */ - parseConfig: function (config) { - - if (config['scaleMode']) - { - if (this._booted) - { - this.scaleMode = config['scaleMode']; - } - else - { - this._pendingScaleMode = config['scaleMode']; - } - } - - if (config['fullScreenScaleMode']) - { - this.fullScreenScaleMode = config['fullScreenScaleMode']; - } - - if (config['fullScreenTarget']) - { - this.fullScreenTarget = config['fullScreenTarget']; - } - - }, - - /** - * Calculates and sets the game dimensions based on the given width and height. - * - * This should _not_ be called when in fullscreen mode. - * - * @method Phaser.ScaleManager#setupScale - * @protected - * @param {number|string} width - The width of the game. - * @param {number|string} height - The height of the game. - */ - setupScale: function (width, height) { - - var target; - var rect = new Phaser.Rectangle(); - - if (this.game.parent !== '') - { - if (typeof this.game.parent === 'string') - { - // hopefully an element ID - target = document.getElementById(this.game.parent); - } - else if (this.game.parent && this.game.parent.nodeType === 1) - { - // quick test for a HTMLelement - target = this.game.parent; - } - } - - // Fallback, covers an invalid ID and a non HTMLelement object - if (!target) - { - // Use the full window - this.parentNode = null; - this.parentIsWindow = true; - - rect.width = this.dom.visualBounds.width; - rect.height = this.dom.visualBounds.height; - - this.offset.set(0, 0); - } - else - { - this.parentNode = target; - this.parentIsWindow = false; - - this.getParentBounds(this._parentBounds); - - rect.width = this._parentBounds.width; - rect.height = this._parentBounds.height; - - this.offset.set(this._parentBounds.x, this._parentBounds.y); - } - - var newWidth = 0; - var newHeight = 0; - - if (typeof width === 'number') - { - newWidth = width; - } - else - { - // Percentage based - this.parentScaleFactor.x = parseInt(width, 10) / 100; - newWidth = rect.width * this.parentScaleFactor.x; - } - - if (typeof height === 'number') - { - newHeight = height; - } - else - { - // Percentage based - this.parentScaleFactor.y = parseInt(height, 10) / 100; - newHeight = rect.height * this.parentScaleFactor.y; - } - - this._gameSize.setTo(0, 0, newWidth, newHeight); - - this.updateDimensions(newWidth, newHeight, false); - - }, - - /** - * Invoked when the game is resumed. - * - * @method Phaser.ScaleManager#_gameResumed - * @private - */ - _gameResumed: function () { - - this.queueUpdate(true); - - }, - - /** - * Set the actual Game size. - * Use this instead of directly changing `game.width` or `game.height`. - * - * The actual physical display (Canvas element size) depends on various settings including - * - Scale mode - * - Scaling factor - * - Size of Canvas's parent element or CSS rules such as min-height/max-height; - * - The size of the Window - * - * @method Phaser.ScaleManager#setGameSize - * @public - * @param {integer} width - _Game width_, in pixels. - * @param {integer} height - _Game height_, in pixels. - */ - setGameSize: function (width, height) { - - this._gameSize.setTo(0, 0, width, height); - - if (this.currentScaleMode !== Phaser.ScaleManager.RESIZE) - { - this.updateDimensions(width, height, true); - } - - this.queueUpdate(true); - - }, - - /** - * Set a User scaling factor used in the USER_SCALE scaling mode. - * - * The target canvas size is computed by: - * - * canvas.width = (game.width * hScale) - hTrim - * canvas.height = (game.height * vScale) - vTrim - * - * This method can be used in the {@link Phaser.ScaleManager#setResizeCallback resize callback}. - * - * @method Phaser.ScaleManager#setUserScale - * @param {number} hScale - Horizontal scaling factor. - * @param {numer} vScale - Vertical scaling factor. - * @param {integer} [hTrim=0] - Horizontal trim, applied after scaling. - * @param {integer} [vTrim=0] - Vertical trim, applied after scaling. - */ - setUserScale: function (hScale, vScale, hTrim, vTrim) { - - this._userScaleFactor.setTo(hScale, vScale); - this._userScaleTrim.setTo(hTrim | 0, vTrim | 0); - this.queueUpdate(true); - - }, - - /** - * Sets the callback that will be invoked before sizing calculations. - * - * This is the appropriate place to call {@link #setUserScale} if needing custom dynamic scaling. - * - * The callback is supplied with two arguments `scale` and `parentBounds` where `scale` is the ScaleManager - * and `parentBounds`, a Phaser.Rectangle, is the size of the Parent element. - * - * This callback - * - May be invoked even though the parent container or canvas sizes have not changed - * - Unlike {@link #onSizeChange}, it runs _before_ the canvas is guaranteed to be updated - * - Will be invoked from `preUpdate`, _even when_ the game is paused - * - * See {@link #onSizeChange} for a better way of reacting to layout updates. - * - * @method Phaser.ScaleManager#setResizeCallback - * @public - * @param {function} callback - The callback that will be called each time a window.resize event happens or if set, the parent container resizes. - * @param {object} context - The context in which the callback will be called. - */ - setResizeCallback: function (callback, context) { - - this.onResize = callback; - this.onResizeContext = context; - - }, - - /** - * Signals a resize - IF the canvas or Game size differs from the last signal. - * - * This also triggers updates on {@link #grid} (FlexGrid) and, if in a RESIZE mode, `game.state` (StateManager). - * - * @method Phaser.ScaleManager#signalSizeChange - * @private - */ - signalSizeChange: function () { - - if (!Phaser.Rectangle.sameDimensions(this, this._lastReportedCanvasSize) || - !Phaser.Rectangle.sameDimensions(this.game, this._lastReportedGameSize)) - { - var width = this.width; - var height = this.height; - - this._lastReportedCanvasSize.setTo(0, 0, width, height); - this._lastReportedGameSize.setTo(0, 0, this.game.width, this.game.height); - - this.grid.onResize(width, height); - - this.onSizeChange.dispatch(this, width, height); - - // Per StateManager#onResizeCallback, it only occurs when in RESIZE mode. - if (this.currentScaleMode === Phaser.ScaleManager.RESIZE) - { - this.game.state.resize(width, height); - this.game.load.resize(width, height); - } - } - - }, - - /** - * Set the min and max dimensions for the Display canvas. - * - * _Note:_ The min/max dimensions are only applied in some cases - * - When the device is not in an incorrect orientation; or - * - The scale mode is EXACT_FIT when not in fullscreen - * - * @method Phaser.ScaleManager#setMinMax - * @public - * @param {number} minWidth - The minimum width the game is allowed to scale down to. - * @param {number} minHeight - The minimum height the game is allowed to scale down to. - * @param {number} [maxWidth] - The maximum width the game is allowed to scale up to; only changed if specified. - * @param {number} [maxHeight] - The maximum height the game is allowed to scale up to; only changed if specified. - * @todo These values are only sometimes honored. - */ - setMinMax: function (minWidth, minHeight, maxWidth, maxHeight) { - - this.minWidth = minWidth; - this.minHeight = minHeight; - - if (typeof maxWidth !== 'undefined') - { - this.maxWidth = maxWidth; - } - - if (typeof maxHeight !== 'undefined') - { - this.maxHeight = maxHeight; - } - - }, - - /** - * The ScaleManager.preUpdate is called automatically by the core Game loop. - * - * @method Phaser.ScaleManager#preUpdate - * @protected - */ - preUpdate: function () { - - if (this.game.time.time < (this._lastUpdate + this._updateThrottle)) - { - return; - } - - var prevThrottle = this._updateThrottle; - this._updateThrottleReset = prevThrottle >= 400 ? 0 : 100; - - this.dom.getOffset(this.game.canvas, this.offset); - - var prevWidth = this._parentBounds.width; - var prevHeight = this._parentBounds.height; - var bounds = this.getParentBounds(this._parentBounds); - - var boundsChanged = bounds.width !== prevWidth || bounds.height !== prevHeight; - - // Always invalidate on a newly detected orientation change - var orientationChanged = this.updateOrientationState(); - - if (boundsChanged || orientationChanged) - { - if (this.onResize) - { - this.onResize.call(this.onResizeContext, this, bounds); - } - - this.updateLayout(); - - this.signalSizeChange(); - } - - // Next throttle, eg. 25, 50, 100, 200.. - var throttle = this._updateThrottle * 2; - - // Don't let an update be too eager about resetting the throttle. - if (this._updateThrottle < prevThrottle) - { - throttle = Math.min(prevThrottle, this._updateThrottleReset); - } - - this._updateThrottle = Phaser.Math.clamp(throttle, 25, this.trackParentInterval); - this._lastUpdate = this.game.time.time; - - }, - - /** - * Update method while paused. - * - * @method Phaser.ScaleManager#pauseUpdate - * @private - */ - pauseUpdate: function () { - - this.preUpdate(); - - // Updates at slowest. - this._updateThrottle = this.trackParentInterval; - - }, - - /** - * Update the dimensions taking the parent scaling factor into account. - * - * @method Phaser.ScaleManager#updateDimensions - * @private - * @param {number} width - The new width of the parent container. - * @param {number} height - The new height of the parent container. - * @param {boolean} resize - True if the renderer should be resized, otherwise false to just update the internal vars. - */ - updateDimensions: function (width, height, resize) { - - this.width = width * this.parentScaleFactor.x; - this.height = height * this.parentScaleFactor.y; - - this.game.width = this.width; - this.game.height = this.height; - - this.sourceAspectRatio = this.width / this.height; - this.updateScalingAndBounds(); - - if (resize) - { - // Resize the renderer (which in turn resizes the Display canvas!) - this.game.renderer.resize(this.width, this.height); - - // The Camera can never be smaller than the Game size - this.game.camera.setSize(this.width, this.height); - - // This should only happen if the world is smaller than the new canvas size - this.game.world.resize(this.width, this.height); - } - - }, - - /** - * Update relevant scaling values based on the ScaleManager dimension and game dimensions, - * which should already be set. This does not change {@link #sourceAspectRatio}. - * - * @method Phaser.ScaleManager#updateScalingAndBounds - * @private - */ - updateScalingAndBounds: function () { - - this.scaleFactor.x = this.game.width / this.width; - this.scaleFactor.y = this.game.height / this.height; - - this.scaleFactorInversed.x = this.width / this.game.width; - this.scaleFactorInversed.y = this.height / this.game.height; - - this.aspectRatio = this.width / this.height; - - // This can be invoked in boot pre-canvas - if (this.game.canvas) - { - this.dom.getOffset(this.game.canvas, this.offset); - } - - this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); - - // Can be invoked in boot pre-input - if (this.game.input && this.game.input.scale) - { - this.game.input.scale.setTo(this.scaleFactor.x, this.scaleFactor.y); - } - - }, - - /** - * Force the game to run in only one orientation. - * - * This enables generation of incorrect orientation signals and affects resizing but does not otherwise rotate or lock the orientation. - * - * Orientation checks are performed via the Screen Orientation API, if available in browser. This means it will check your monitor - * orientation on desktop, or your device orientation on mobile, rather than comparing actual game dimensions. If you need to check the - * viewport dimensions instead and bypass the Screen Orientation API then set: `ScaleManager.compatibility.orientationFallback = 'viewport'` - * - * @method Phaser.ScaleManager#forceOrientation - * @public - * @param {boolean} forceLandscape - true if the game should run in landscape mode only. - * @param {boolean} [forcePortrait=false] - true if the game should run in portrait mode only. - */ - forceOrientation: function (forceLandscape, forcePortrait) { - - if (forcePortrait === undefined) { forcePortrait = false; } - - this.forceLandscape = forceLandscape; - this.forcePortrait = forcePortrait; - - this.queueUpdate(true); - - }, - - /** - * Classify the orientation, per `getScreenOrientation`. - * - * @method Phaser.ScaleManager#classifyOrientation - * @private - * @param {string} orientation - The orientation string, e.g. 'portrait-primary'. - * @return {?string} The classified orientation: 'portrait', 'landscape`, or null. - */ - classifyOrientation: function (orientation) { - - if (orientation === 'portrait-primary' || orientation === 'portrait-secondary') - { - return 'portrait'; - } - else if (orientation === 'landscape-primary' || orientation === 'landscape-secondary') - { - return 'landscape'; - } - else - { - return null; - } - - }, - - /** - * Updates the current orientation and dispatches orientation change events. - * - * @method Phaser.ScaleManager#updateOrientationState - * @private - * @return {boolean} True if the orientation state changed which means a forced update is likely required. - */ - updateOrientationState: function () { - - var previousOrientation = this.screenOrientation; - var previouslyIncorrect = this.incorrectOrientation; - - this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); - - this.incorrectOrientation = (this.forceLandscape && !this.isLandscape) || - (this.forcePortrait && !this.isPortrait); - - var changed = previousOrientation !== this.screenOrientation; - var correctnessChanged = previouslyIncorrect !== this.incorrectOrientation; - - if (correctnessChanged) - { - if (this.incorrectOrientation) - { - this.enterIncorrectOrientation.dispatch(); - } - else - { - this.leaveIncorrectOrientation.dispatch(); - } - } - - if (changed || correctnessChanged) - { - this.onOrientationChange.dispatch(this, previousOrientation, previouslyIncorrect); - } - - return changed || correctnessChanged; - - }, - - /** - * window.orientationchange event handler. - * - * @method Phaser.ScaleManager#orientationChange - * @private - * @param {Event} event - The orientationchange event data. - */ - orientationChange: function (event) { - - this.event = event; - - this.queueUpdate(true); - - }, - - /** - * window.resize event handler. - * - * @method Phaser.ScaleManager#windowResize - * @private - * @param {Event} event - The resize event data. - */ - windowResize: function (event) { - - this.event = event; - - this.queueUpdate(true); - - }, - - /** - * Scroll to the top - in some environments. See `compatibility.scrollTo`. - * - * @method Phaser.ScaleManager#scrollTop - * @private - */ - scrollTop: function () { - - var scrollTo = this.compatibility.scrollTo; - - if (scrollTo) - { - window.scrollTo(scrollTo.x, scrollTo.y); - } - - }, - - /** - * The "refresh" methods informs the ScaleManager that a layout refresh is required. - * - * The ScaleManager automatically queues a layout refresh (eg. updates the Game size or Display canvas layout) - * when the browser is resized, the orientation changes, or when there is a detected change - * of the Parent size. Refreshing is also done automatically when public properties, - * such as {@link #scaleMode}, are updated or state-changing methods are invoked. - * - * The "refresh" method _may_ need to be used in a few (rare) situtations when - * - * - a device change event is not correctly detected; or - * - the Parent size changes (and an immediate reflow is desired); or - * - the ScaleManager state is updated by non-standard means; or - * - certain {@link #compatibility} properties are manually changed. - * - * The queued layout refresh is not immediate but will run promptly in an upcoming `preRender`. - * - * @method Phaser.ScaleManager#refresh - * @public - */ - refresh: function () { - - this.scrollTop(); - this.queueUpdate(true); - - }, - - /** - * Updates the game / canvas position and size. - * - * @method Phaser.ScaleManager#updateLayout - * @private - */ - updateLayout: function () { - - var scaleMode = this.currentScaleMode; - - if (scaleMode === Phaser.ScaleManager.RESIZE) - { - this.reflowGame(); - return; - } - - this.scrollTop(); - - if (this.compatibility.forceMinimumDocumentHeight) - { - // (This came from older code, by why is it here?) - // Set minimum height of content to new window height - document.documentElement.style.minHeight = window.innerHeight + 'px'; - } - - if (this.incorrectOrientation) - { - this.setMaximum(); - } - else - { - if (scaleMode === Phaser.ScaleManager.EXACT_FIT) - { - this.setExactFit(); - } - else if (scaleMode === Phaser.ScaleManager.SHOW_ALL) - { - if (!this.isFullScreen && this.boundingParent && - this.compatibility.canExpandParent) - { - // Try to expand parent out, but choosing maximizing dimensions. - // Then select minimize dimensions which should then honor parent - // maximum bound applications. - this.setShowAll(true); - this.resetCanvas(); - this.setShowAll(); - } - else - { - this.setShowAll(); - } - } - else if (scaleMode === Phaser.ScaleManager.NO_SCALE) - { - this.width = this.game.width; - this.height = this.game.height; - } - else if (scaleMode === Phaser.ScaleManager.USER_SCALE) - { - this.width = (this.game.width * this._userScaleFactor.x) - this._userScaleTrim.x; - this.height = (this.game.height * this._userScaleFactor.y) - this._userScaleTrim.y; - } - } - - if (!this.compatibility.canExpandParent && - (scaleMode === Phaser.ScaleManager.SHOW_ALL || scaleMode === Phaser.ScaleManager.USER_SCALE)) - { - var bounds = this.getParentBounds(this._tempBounds); - this.width = Math.min(this.width, bounds.width); - this.height = Math.min(this.height, bounds.height); - } - - // Always truncate / force to integer - this.width = this.width | 0; - this.height = this.height | 0; - - this.reflowCanvas(); - - }, - - /** - * Returns the computed Parent size/bounds that the Display canvas is allowed/expected to fill. - * - * If in fullscreen mode or without parent (see {@link #parentIsWindow}), - * this will be the bounds of the visual viewport itself. - * - * This function takes the {@link #windowConstraints} into consideration - if the parent is partially outside - * the viewport then this function may return a smaller than expected size. - * - * Values are rounded to the nearest pixel. - * - * @method Phaser.ScaleManager#getParentBounds - * @protected - * @param {Phaser.Rectangle} [target=(new Rectangle)] - The rectangle to update; a new one is created as needed. - * @return {Phaser.Rectangle} The established parent bounds. - */ - getParentBounds: function (target) { - - var bounds = target || new Phaser.Rectangle(); - var parentNode = this.boundingParent; - var visualBounds = this.dom.visualBounds; - var layoutBounds = this.dom.layoutBounds; - - if (!parentNode) - { - bounds.setTo(0, 0, visualBounds.width, visualBounds.height); - } - else - { - // Ref. http://msdn.microsoft.com/en-us/library/hh781509(v=vs.85).aspx for getBoundingClientRect - var clientRect = parentNode.getBoundingClientRect(); - - bounds.setTo(clientRect.left, clientRect.top, clientRect.width, clientRect.height); - - var wc = this.windowConstraints; - - if (wc.right) - { - var windowBounds = wc.right === 'layout' ? layoutBounds : visualBounds; - bounds.right = Math.min(bounds.right, windowBounds.width); - } - - if (wc.bottom) - { - var windowBounds = wc.bottom === 'layout' ? layoutBounds : visualBounds; - bounds.bottom = Math.min(bounds.bottom, windowBounds.height); - } - } - - bounds.setTo( - Math.round(bounds.x), Math.round(bounds.y), - Math.round(bounds.width), Math.round(bounds.height)); - - return bounds; - - }, - - /** - * Update the canvas position/margins - for alignment within the parent container. - * - * The canvas margins _must_ be reset/cleared prior to invoking this. - * - * @method Phaser.ScaleManager#alignCanvas - * @private - * @param {boolean} horizontal - Align horizontally? - * @param {boolean} vertical - Align vertically? - */ - alignCanvas: function (horizontal, vertical) { - - var parentBounds = this.getParentBounds(this._tempBounds); - var canvas = this.game.canvas; - var margin = this.margin; - - if (horizontal) - { - margin.left = margin.right = 0; - - var canvasBounds = canvas.getBoundingClientRect(); - - if (this.width < parentBounds.width && !this.incorrectOrientation) - { - var currentEdge = canvasBounds.left - parentBounds.x; - var targetEdge = (parentBounds.width / 2) - (this.width / 2); - - targetEdge = Math.max(targetEdge, 0); - - var offset = targetEdge - currentEdge; - - margin.left = Math.round(offset); - } - - canvas.style.marginLeft = margin.left + 'px'; - - if (margin.left !== 0) - { - margin.right = -(parentBounds.width - canvasBounds.width - margin.left); - canvas.style.marginRight = margin.right + 'px'; - } - } - - if (vertical) - { - margin.top = margin.bottom = 0; - - var canvasBounds = canvas.getBoundingClientRect(); - - if (this.height < parentBounds.height && !this.incorrectOrientation) - { - var currentEdge = canvasBounds.top - parentBounds.y; - var targetEdge = (parentBounds.height / 2) - (this.height / 2); - - targetEdge = Math.max(targetEdge, 0); - - var offset = targetEdge - currentEdge; - margin.top = Math.round(offset); - } - - canvas.style.marginTop = margin.top + 'px'; - - if (margin.top !== 0) - { - margin.bottom = -(parentBounds.height - canvasBounds.height - margin.top); - canvas.style.marginBottom = margin.bottom + 'px'; - } - } - - // Silly backwards compatibility.. - margin.x = margin.left; - margin.y = margin.top; - - }, - - /** - * Updates the Game state / size. - * - * The canvas margins may always be adjusted, even if alignment is not in effect. - * - * @method Phaser.ScaleManager#reflowGame - * @private - */ - reflowGame: function () { - - this.resetCanvas('', ''); - - var bounds = this.getParentBounds(this._tempBounds); - this.updateDimensions(bounds.width, bounds.height, true); - - }, - - /** - * Updates the Display canvas size. - * - * The canvas margins may always be adjusted, even alignment is not in effect. - * - * @method Phaser.ScaleManager#reflowCanvas - * @private - */ - reflowCanvas: function () { - - if (!this.incorrectOrientation) - { - this.width = Phaser.Math.clamp(this.width, this.minWidth || 0, this.maxWidth || this.width); - this.height = Phaser.Math.clamp(this.height, this.minHeight || 0, this.maxHeight || this.height); - } - - this.resetCanvas(); - - if (!this.compatibility.noMargins) - { - if (this.isFullScreen && this._createdFullScreenTarget) - { - this.alignCanvas(true, true); - } - else - { - this.alignCanvas(this.pageAlignHorizontally, this.pageAlignVertically); - } - } - - this.updateScalingAndBounds(); - - }, - - /** - * "Reset" the Display canvas and set the specified width/height. - * - * @method Phaser.ScaleManager#resetCanvas - * @private - * @param {string} [cssWidth=(current width)] - The css width to set. - * @param {string} [cssHeight=(current height)] - The css height to set. - */ - resetCanvas: function (cssWidth, cssHeight) { - - if (cssWidth === undefined) { cssWidth = this.width + 'px'; } - if (cssHeight === undefined) { cssHeight = this.height + 'px'; } - - var canvas = this.game.canvas; - - if (!this.compatibility.noMargins) - { - canvas.style.marginLeft = ''; - canvas.style.marginTop = ''; - canvas.style.marginRight = ''; - canvas.style.marginBottom = ''; - } - - canvas.style.width = cssWidth; - canvas.style.height = cssHeight; - - }, - - /** - * Queues/marks a size/bounds check as needing to occur (from `preUpdate`). - * - * @method Phaser.ScaleManager#queueUpdate - * @private - * @param {boolean} force - If true resets the parent bounds to ensure the check is dirty. - */ - queueUpdate: function (force) { - - if (force) - { - this._parentBounds.width = 0; - this._parentBounds.height = 0; - } - - this._updateThrottle = this._updateThrottleReset; - - }, - - /** - * Reset internal data/state. - * - * @method Phaser.ScaleManager#reset - * @private - */ - reset: function (clearWorld) { - - if (clearWorld) - { - this.grid.reset(); - } - - }, - - /** - * Updates the width/height to that of the window. - * - * @method Phaser.ScaleManager#setMaximum - * @private - */ - setMaximum: function () { - - this.width = this.dom.visualBounds.width; - this.height = this.dom.visualBounds.height; - - }, - - /** - * Updates the width/height such that the game is scaled proportionally. - * - * @method Phaser.ScaleManager#setShowAll - * @private - * @param {boolean} expanding - If true then the maximizing dimension is chosen. - */ - setShowAll: function (expanding) { - - var bounds = this.getParentBounds(this._tempBounds); - var width = bounds.width; - var height = bounds.height; - - var multiplier; - - if (expanding) - { - multiplier = Math.max((height / this.game.height), (width / this.game.width)); - } - else - { - multiplier = Math.min((height / this.game.height), (width / this.game.width)); - } - - this.width = Math.round(this.game.width * multiplier); - this.height = Math.round(this.game.height * multiplier); - - }, - - /** - * Updates the width/height such that the game is stretched to the available size. - * Honors {@link #maxWidth} and {@link #maxHeight} when _not_ in fullscreen. - * - * @method Phaser.ScaleManager#setExactFit - * @private - */ - setExactFit: function () { - - var bounds = this.getParentBounds(this._tempBounds); - - this.width = bounds.width; - this.height = bounds.height; - - if (this.isFullScreen) - { - // Max/min not honored fullscreen - return; - } - - if (this.maxWidth) - { - this.width = Math.min(this.width, this.maxWidth); - } - - if (this.maxHeight) - { - this.height = Math.min(this.height, this.maxHeight); - } - - }, - - /** - * Creates a fullscreen target. This is called automatically as as needed when entering - * fullscreen mode and the resulting element is supplied to {@link #onFullScreenInit}. - * - * Use {@link #onFullScreenInit} to customize the created object. - * - * @method Phaser.ScaleManager#createFullScreenTarget - * @protected - */ - createFullScreenTarget: function () { - - var fsTarget = document.createElement('div'); - - fsTarget.style.margin = '0'; - fsTarget.style.padding = '0'; - fsTarget.style.background = '#000'; - - return fsTarget; - - }, - - /** - * Start the browsers fullscreen mode - this _must_ be called from a user input Pointer or Mouse event. - * - * The Fullscreen API must be supported by the browser for this to work - it is not the same as setting - * the game size to fill the browser window. See {@link Phaser.ScaleManager#compatibility compatibility.supportsFullScreen} to check if the current - * device is reported to support fullscreen mode. - * - * The {@link #fullScreenFailed} signal will be dispatched if the fullscreen change request failed or the game does not support the Fullscreen API. - * - * @method Phaser.ScaleManager#startFullScreen - * @public - * @param {boolean} [antialias] - Changes the anti-alias feature of the canvas before jumping in to fullscreen (false = retain pixel art, true = smooth art). If not specified then no change is made. Only works in CANVAS mode. - * @param {boolean} [allowTrampoline=undefined] - Internal argument. If `false` click trampolining is suppressed. - * @return {boolean} Returns true if the device supports fullscreen mode and fullscreen mode was attempted to be started. (It might not actually start, wait for the signals.) - */ - startFullScreen: function (antialias, allowTrampoline) { - - if (this.isFullScreen) - { - return false; - } - - if (!this.compatibility.supportsFullScreen) - { - // Error is called in timeout to emulate the real fullscreenerror event better - var _this = this; - setTimeout(function () { - _this.fullScreenError(); - }, 10); - return; - } - - if (this.compatibility.clickTrampoline === 'when-not-mouse') - { - var input = this.game.input; - - if (input.activePointer && - input.activePointer !== input.mousePointer && - (allowTrampoline || allowTrampoline !== false)) - { - input.activePointer.addClickTrampoline("startFullScreen", this.startFullScreen, this, [antialias, false]); - return; - } - } - - if (typeof antialias !== 'undefined' && this.game.renderType === Phaser.CANVAS) - { - this.game.stage.smoothed = antialias; - } - - var fsTarget = this.fullScreenTarget; - - if (!fsTarget) - { - this.cleanupCreatedTarget(); - - this._createdFullScreenTarget = this.createFullScreenTarget(); - fsTarget = this._createdFullScreenTarget; - } - - var initData = { - targetElement: fsTarget - }; - - this.onFullScreenInit.dispatch(this, initData); - - if (this._createdFullScreenTarget) - { - // Move the Display canvas inside of the target and add the target to the DOM - // (The target has to be added for the Fullscreen API to work.) - var canvas = this.game.canvas; - var parent = canvas.parentNode; - parent.insertBefore(fsTarget, canvas); - fsTarget.appendChild(canvas); - } - - if (this.game.device.fullscreenKeyboard) - { - fsTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); - } - else - { - fsTarget[this.game.device.requestFullscreen](); - } - - return true; - - }, - - /** - * Stops / exits fullscreen mode, if active. - * - * @method Phaser.ScaleManager#stopFullScreen - * @public - * @return {boolean} Returns true if the browser supports fullscreen mode and fullscreen mode will be exited. - */ - stopFullScreen: function () { - - if (!this.isFullScreen || !this.compatibility.supportsFullScreen) - { - return false; - } - - document[this.game.device.cancelFullscreen](); - - return true; - - }, - - /** - * Cleans up the previous fullscreen target, if such was automatically created. - * This ensures the canvas is restored to its former parent, assuming the target didn't move. - * - * @method Phaser.ScaleManager#cleanupCreatedTarget - * @private - */ - cleanupCreatedTarget: function () { - - var fsTarget = this._createdFullScreenTarget; - - if (fsTarget && fsTarget.parentNode) - { - // Make sure to cleanup synthetic target for sure; - // swap the canvas back to the parent. - var parent = fsTarget.parentNode; - parent.insertBefore(this.game.canvas, fsTarget); - parent.removeChild(fsTarget); - } - - this._createdFullScreenTarget = null; - - }, - - /** - * Used to prepare/restore extra fullscreen mode settings. - * (This does move any elements within the DOM tree.) - * - * @method Phaser.ScaleManager#prepScreenMode - * @private - * @param {boolean} enteringFullscreen - True if _entering_ fullscreen, false if _leaving_. - */ - prepScreenMode: function (enteringFullscreen) { - - var createdTarget = !!this._createdFullScreenTarget; - var fsTarget = this._createdFullScreenTarget || this.fullScreenTarget; - - if (enteringFullscreen) - { - if (createdTarget || this.fullScreenScaleMode === Phaser.ScaleManager.EXACT_FIT) - { - // Resize target, as long as it's not the canvas - if (fsTarget !== this.game.canvas) - { - this._fullScreenRestore = { - targetWidth: fsTarget.style.width, - targetHeight: fsTarget.style.height - }; - - fsTarget.style.width = '100%'; - fsTarget.style.height = '100%'; - } - } - } - else - { - // Have restore information - if (this._fullScreenRestore) - { - fsTarget.style.width = this._fullScreenRestore.targetWidth; - fsTarget.style.height = this._fullScreenRestore.targetHeight; - - this._fullScreenRestore = null; - } - - // Always reset to game size - this.updateDimensions(this._gameSize.width, this._gameSize.height, true); - this.resetCanvas(); - } - - }, - - /** - * Called automatically when the browser enters of leaves fullscreen mode. - * - * @method Phaser.ScaleManager#fullScreenChange - * @private - * @param {Event} [event=undefined] - The fullscreenchange event - */ - fullScreenChange: function (event) { - - this.event = event; - - if (this.isFullScreen) - { - this.prepScreenMode(true); - - this.updateLayout(); - this.queueUpdate(true); - } - else - { - this.prepScreenMode(false); - - this.cleanupCreatedTarget(); - - this.updateLayout(); - this.queueUpdate(true); - } - - this.onFullScreenChange.dispatch(this, this.width, this.height); - - }, - - /** - * Called automatically when the browser fullscreen request fails; - * or called when a fullscreen request is made on a device for which it is not supported. - * - * @method Phaser.ScaleManager#fullScreenError - * @private - * @param {Event} [event=undefined] - The fullscreenerror event; undefined if invoked on a device that does not support the Fullscreen API. - */ - fullScreenError: function (event) { - - this.event = event; - - this.cleanupCreatedTarget(); - - console.warn('Phaser.ScaleManager: requestFullscreen failed or device does not support the Fullscreen API'); - - this.onFullScreenError.dispatch(this); - - }, - - /** - * Takes a Sprite or Image object and scales it to fit the given dimensions. - * Scaling happens proportionally without distortion to the sprites texture. - * The letterBox parameter controls if scaling will produce a letter-box effect or zoom the - * sprite until it fills the given values. Note that with letterBox set to false the scaled sprite may spill out over either - * the horizontal or vertical sides of the target dimensions. If you wish to stop this you can crop the Sprite. - * - * @method Phaser.ScaleManager#scaleSprite - * @protected - * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite we want to scale. - * @param {integer} [width] - The target width that we want to fit the sprite in to. If not given it defaults to ScaleManager.width. - * @param {integer} [height] - The target height that we want to fit the sprite in to. If not given it defaults to ScaleManager.height. - * @param {boolean} [letterBox=false] - True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. - * @return {Phaser.Sprite|Phaser.Image} The scaled sprite. - */ - scaleSprite: function (sprite, width, height, letterBox) { - - if (width === undefined) { width = this.width; } - if (height === undefined) { height = this.height; } - if (letterBox === undefined) { letterBox = false; } - - if (!sprite || !sprite['scale']) - { - return sprite; - } - - sprite.scale.x = 1; - sprite.scale.y = 1; - - if ((sprite.width <= 0) || (sprite.height <= 0) || (width <= 0) || (height <= 0)) - { - return sprite; - } - - var scaleX1 = width; - var scaleY1 = (sprite.height * width) / sprite.width; - - var scaleX2 = (sprite.width * height) / sprite.height; - var scaleY2 = height; - - var scaleOnWidth = (scaleX2 > width); - - if (scaleOnWidth) - { - scaleOnWidth = letterBox; - } - else - { - scaleOnWidth = !letterBox; - } - - if (scaleOnWidth) - { - sprite.width = Math.floor(scaleX1); - sprite.height = Math.floor(scaleY1); - } - else - { - sprite.width = Math.floor(scaleX2); - sprite.height = Math.floor(scaleY2); - } - - // Enable at some point? - // sprite.x = Math.floor((width - sprite.width) / 2); - // sprite.y = Math.floor((height - sprite.height) / 2); - - return sprite; - - }, - - /** - * Destroys the ScaleManager and removes any event listeners. - * This should probably only be called when the game is destroyed. - * - * @method Phaser.ScaleManager#destroy - * @protected - */ - destroy: function () { - - this.game.onResume.remove(this._gameResumed, this); - - window.removeEventListener('orientationchange', this._orientationChange, false); - window.removeEventListener('resize', this._windowResize, false); - - if (this.compatibility.supportsFullScreen) - { - document.removeEventListener('webkitfullscreenchange', this._fullScreenChange, false); - document.removeEventListener('mozfullscreenchange', this._fullScreenChange, false); - document.removeEventListener('MSFullscreenChange', this._fullScreenChange, false); - document.removeEventListener('fullscreenchange', this._fullScreenChange, false); - - document.removeEventListener('webkitfullscreenerror', this._fullScreenError, false); - document.removeEventListener('mozfullscreenerror', this._fullScreenError, false); - document.removeEventListener('MSFullscreenError', this._fullScreenError, false); - document.removeEventListener('fullscreenerror', this._fullScreenError, false); - } - - } - -}; - -Phaser.ScaleManager.prototype.constructor = Phaser.ScaleManager; - -/** -* The DOM element that is considered the Parent bounding element, if any. -* -* This `null` if {@link #parentIsWindow} is true or if fullscreen mode is entered and {@link #fullScreenTarget} is specified. -* It will also be null if there is no game canvas or if the game canvas has no parent. -* -* @name Phaser.ScaleManager#boundingParent -* @property {?DOMElement} boundingParent -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "boundingParent", { - - get: function () { - if (this.parentIsWindow || - (this.isFullScreen && !this._createdFullScreenTarget)) - { - return null; - } - - var parentNode = this.game.canvas && this.game.canvas.parentNode; - return parentNode || null; - } - -}); - -/** -* The scaling method used by the ScaleManager when not in fullscreen. -* -*
-*
{@link Phaser.ScaleManager.NO_SCALE}
-*
-* The Game display area will not be scaled - even if it is too large for the canvas/screen. -* This mode _ignores_ any applied scaling factor and displays the canvas at the Game size. -*
-*
{@link Phaser.ScaleManager.EXACT_FIT}
-*
-* The Game display area will be _stretched_ to fill the entire size of the canvas's parent element and/or screen. -* Proportions are not mainted. -*
-*
{@link Phaser.ScaleManager.SHOW_ALL}
-*
-* Show the entire game display area while _maintaining_ the original aspect ratio. -*
-*
{@link Phaser.ScaleManager.RESIZE}
-*
-* The dimensions of the game display area are changed to match the size of the parent container. -* That is, this mode _changes the Game size_ to match the display size. -*

-* Any manually set Game size (see {@link #setGameSize}) is ignored while in effect. -*

-*
{@link Phaser.ScaleManager.USER_SCALE}
-*
-* The game Display is scaled according to the user-specified scale set by {@link Phaser.ScaleManager#setUserScale setUserScale}. -*

-* This scale can be adjusted in the {@link Phaser.ScaleManager#setResizeCallback resize callback} -* for flexible custom-sizing needs. -*

-*
-* -* @name Phaser.ScaleManager#scaleMode -* @property {integer} scaleMode -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "scaleMode", { - - get: function () { - - return this._scaleMode; - - }, - - set: function (value) { - - if (value !== this._scaleMode) - { - if (!this.isFullScreen) - { - this.updateDimensions(this._gameSize.width, this._gameSize.height, true); - this.queueUpdate(true); - } - - this._scaleMode = value; - } - - return this._scaleMode; - - } - -}); - -/** -* The scaling method used by the ScaleManager when in fullscreen. -* -* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. -* -* @name Phaser.ScaleManager#fullScreenScaleMode -* @property {integer} fullScreenScaleMode -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "fullScreenScaleMode", { - - get: function () { - - return this._fullScreenScaleMode; - - }, - - set: function (value) { - - if (value !== this._fullScreenScaleMode) - { - // If in fullscreen then need a wee bit more work - if (this.isFullScreen) - { - this.prepScreenMode(false); - this._fullScreenScaleMode = value; - this.prepScreenMode(true); - - this.queueUpdate(true); - } - else - { - this._fullScreenScaleMode = value; - } - } - - return this._fullScreenScaleMode; - - } - -}); - -/** -* Returns the current scale mode - for normal or fullscreen operation. -* -* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. -* -* @name Phaser.ScaleManager#currentScaleMode -* @property {number} currentScaleMode -* @protected -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "currentScaleMode", { - - get: function () { - - return this.isFullScreen ? this._fullScreenScaleMode : this._scaleMode; - - } - -}); - -/** -* When enabled the Display canvas will be horizontally-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). -* -* To align horizontally across the page the Display canvas should be added directly to page; -* or the parent container should itself be horizontally aligned. -* -* Horizontal alignment is not applicable with the {@link .RESIZE} scaling mode. -* -* @name Phaser.ScaleManager#pageAlignHorizontally -* @property {boolean} pageAlignHorizontally -* @default false -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignHorizontally", { - - get: function () { - - return this._pageAlignHorizontally; - - }, - - set: function (value) { - - if (value !== this._pageAlignHorizontally) - { - this._pageAlignHorizontally = value; - this.queueUpdate(true); - } - - } - -}); - -/** -* When enabled the Display canvas will be vertically-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). -* -* To align vertically the Parent element should have a _non-collapsible_ height, such that it will maintain -* a height _larger_ than the height of the contained Game canvas - the game canvas will then be scaled vertically -* _within_ the remaining available height dictated by the Parent element. -* -* One way to prevent the parent from collapsing is to add an absolute "min-height" CSS property to the parent element. -* If specifying a relative "min-height/height" or adjusting margins, the Parent height must still be non-collapsible (see note). -* -* _Note_: In version 2.2 the minimum document height is _not_ automatically set to the viewport/window height. -* To automatically update the minimum document height set {@link Phaser.ScaleManager#compatibility compatibility.forceMinimumDocumentHeight} to true. -* -* Vertical alignment is not applicable with the {@link .RESIZE} scaling mode. -* -* @name Phaser.ScaleManager#pageAlignVertically -* @property {boolean} pageAlignVertically -* @default false -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignVertically", { - - get: function () { - - return this._pageAlignVertically; - - }, - - set: function (value) { - - if (value !== this._pageAlignVertically) - { - this._pageAlignVertically = value; - this.queueUpdate(true); - } - - } - -}); - -/** -* Returns true if the browser is in fullscreen mode, otherwise false. -* @name Phaser.ScaleManager#isFullScreen -* @property {boolean} isFullScreen -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isFullScreen", { - - get: function () { - return !!(document['fullscreenElement'] || - document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || - document['msFullscreenElement']); - } - -}); - -/** -* Returns true if the screen orientation is in portrait mode. -* -* @name Phaser.ScaleManager#isPortrait -* @property {boolean} isPortrait -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isPortrait", { - - get: function () { - return this.classifyOrientation(this.screenOrientation) === 'portrait'; - } - -}); - -/** -* Returns true if the screen orientation is in landscape mode. -* -* @name Phaser.ScaleManager#isLandscape -* @property {boolean} isLandscape -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isLandscape", { - - get: function () { - return this.classifyOrientation(this.screenOrientation) === 'landscape'; - } - -}); - -/** -* Returns true if the game dimensions are portrait (height > width). -* This is especially useful to check when using the RESIZE scale mode -* but wanting to maintain game orientation on desktop browsers, -* where typically the screen orientation will always be landscape regardless of the browser viewport. -* -* @name Phaser.ScaleManager#isGamePortrait -* @property {boolean} isGamePortrait -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isGamePortrait", { - - get: function () { - return (this.height > this.width); - } - -}); - -/** -* Returns true if the game dimensions are landscape (width > height). -* This is especially useful to check when using the RESIZE scale mode -* but wanting to maintain game orientation on desktop browsers, -* where typically the screen orientation will always be landscape regardless of the browser viewport. -* -* @name Phaser.ScaleManager#isGameLandscape -* @property {boolean} isGameLandscape -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { - - get: function () { - return (this.width > this.height); - } - -}); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * This is where the magic happens. The Game object is the heart of your game, * providing quick access to common functions and handling the boot process. @@ -23408,6 +19067,14 @@ Phaser.Game = function (width, height, renderer, parent, state, transparent, ant */ this.preserveDrawingBuffer = false; + /** + * Clear the Canvas each frame before rendering the display list. + * You can set this to `false` to gain some performance if your game always contains a background that completely fills the display. + * @property {boolean} clearBeforeRender + * @default + */ + this.clearBeforeRender = true; + /** * @property {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The Pixi Renderer. * @protected @@ -23830,6 +19497,8 @@ Phaser.Game.prototype = { this.isBooted = true; + PIXI.game = this; + this.math = Phaser.Math; this.scale = new Phaser.ScaleManager(this, this._width, this._height); @@ -23983,37 +19652,20 @@ Phaser.Game.prototype = { this.canvas.style['-webkit-full-screen'] = 'width: 100%; height: 100%'; } - if (this.device.cocoonJS) - { - if (this.renderType === Phaser.CANVAS) - { - this.canvas.screencanvas = true; - } - else - { - // Some issue related to scaling arise with Cocoon using screencanvas and webgl renderer. - this.canvas.screencanvas = false; - } - } - - if (this.renderType === Phaser.HEADLESS || this.renderType === Phaser.CANVAS || (this.renderType === Phaser.AUTO && this.device.webGL === false)) + if (this.renderType === Phaser.HEADLESS || this.renderType === Phaser.CANVAS || (this.renderType === Phaser.AUTO && !this.device.webGL)) { if (this.device.canvas) { - if (this.renderType === Phaser.AUTO) - { - this.renderType = Phaser.CANVAS; - } + // They requested Canvas and their browser supports it + this.renderType = Phaser.CANVAS; + + this.renderer = new PIXI.CanvasRenderer(this); - this.renderer = new PIXI.CanvasRenderer(this.width, this.height, { "view": this.canvas, - "transparent": this.transparent, - "resolution": this.resolution, - "clearBeforeRender": true }); this.context = this.renderer.context; } else { - throw new Error('Phaser.Game - cannot create Canvas or WebGL context, aborting.'); + throw new Error('Phaser.Game - Cannot create Canvas or WebGL context, aborting.'); } } else @@ -24021,17 +19673,19 @@ Phaser.Game.prototype = { // They requested WebGL and their browser supports it this.renderType = Phaser.WEBGL; - this.renderer = new PIXI.WebGLRenderer(this.width, this.height, { "view": this.canvas, - "transparent": this.transparent, - "resolution": this.resolution, - "antialias": this.antialias, - "preserveDrawingBuffer": this.preserveDrawingBuffer }); + this.renderer = new PIXI.WebGLRenderer(this); + this.context = null; this.canvas.addEventListener('webglcontextlost', this.contextLost.bind(this), false); this.canvas.addEventListener('webglcontextrestored', this.contextRestored.bind(this), false); } + if (this.device.cocoonJS) + { + this.canvas.screencanvas = (this.renderType === Phaser.CANVAS) ? true : false; + } + if (this.renderType !== Phaser.HEADLESS) { this.stage.smoothed = this.antialias; @@ -24086,7 +19740,7 @@ Phaser.Game.prototype = { if (this._kickstart) { - this.updateLogic(1.0 / this.time.desiredFps); + this.updateLogic(this.time.desiredFpsMult); // Sync the scene graph after _every_ logic update to account for moved game objects this.stage.updateTransform(); @@ -24106,7 +19760,7 @@ Phaser.Game.prototype = { if (this.time.time > this._nextFpsNotification) { // only permit one fps notification per 10 seconds - this._nextFpsNotification = this.time.time + 1000 * 10; + this._nextFpsNotification = this.time.time + 10000; // dispatch the notification signal this.fpsProblemNotifier.dispatch(); @@ -24143,7 +19797,7 @@ Phaser.Game.prototype = { this._deltaTime -= slowStep; this.currentUpdateID = count; - this.updateLogic(1.0 / this.time.desiredFps); + this.updateLogic(this.time.desiredFpsMult); // Sync the scene graph after _every_ logic update to account for moved game objects this.stage.updateTransform(); @@ -24154,6 +19808,10 @@ Phaser.Game.prototype = { { break; } + else + { + this.time.refresh(); + } } // detect spiraling (if the catch-up loop isn't fast enough, the number of iterations will increase constantly) @@ -24201,7 +19859,7 @@ Phaser.Game.prototype = { this.state.update(); this.stage.update(); - this.tweens.update(timeStep); + this.tweens.update(); this.sound.update(); this.input.update(); this.physics.update(); @@ -24244,10 +19902,13 @@ Phaser.Game.prototype = { } this.state.preRender(elapsedTime); + this.renderer.render(this.stage); this.plugins.render(elapsedTime); + this.state.render(elapsedTime); + this.plugins.postRender(elapsedTime); }, @@ -24844,7 +20505,7 @@ Phaser.Input.prototype = { */ boot: function () { - this.mousePointer = new Phaser.Pointer(this.game, 0); + this.mousePointer = new Phaser.Pointer(this.game, 0, Phaser.PointerMode.CURSOR); this.addPointer(); this.addPointer(); @@ -24987,7 +20648,7 @@ Phaser.Input.prototype = { } var id = this.pointers.length + 1; - var pointer = new Phaser.Pointer(this.game, id); + var pointer = new Phaser.Pointer(this.game, id, Phaser.PointerMode.TOUCH); this.pointers.push(pointer); this['pointer' + id] = pointer; @@ -26661,20 +22322,23 @@ Phaser.MSPointer.prototype = { var canvas = this.game.canvas; - canvas.removeEventListener('MSPointerDown', this._onMSPointerDown); - canvas.removeEventListener('MSPointerMove', this._onMSPointerMove); - canvas.removeEventListener('MSPointerUp', this._onMSPointerUp); - canvas.removeEventListener('MSPointerOver', this._onMSPointerOver); - canvas.removeEventListener('MSPointerOut', this._onMSPointerOut); + canvas.removeEventListener('MSPointerDown', this._onMSPointerDown, false); + canvas.removeEventListener('MSPointerMove', this._onMSPointerMove, false); + canvas.removeEventListener('MSPointerUp', this._onMSPointerUp, false); - canvas.removeEventListener('pointerdown', this._onMSPointerDown); - canvas.removeEventListener('pointermove', this._onMSPointerMove); - canvas.removeEventListener('pointerup', this._onMSPointerUp); - canvas.removeEventListener('pointerover', this._onMSPointerOver); - canvas.removeEventListener('pointerout', this._onMSPointerOut); + // IE11+ uses non-prefix events + canvas.removeEventListener('pointerdown', this._onMSPointerDown, false); + canvas.removeEventListener('pointermove', this._onMSPointerMove, false); + canvas.removeEventListener('pointerup', this._onMSPointerUp, false); - window.removeEventListener('MSPointerUp', this._onMSPointerUpGlobal); - window.removeEventListener('pointerup', this._onMSPointerUpGlobal); + window.removeEventListener('MSPointerUp', this._onMSPointerUpGlobal, true); + canvas.removeEventListener('MSPointerOver', this._onMSPointerOver, true); + canvas.removeEventListener('MSPointerOut', this._onMSPointerOut, true); + + // IE11+ uses non-prefix events + window.removeEventListener('pointerup', this._onMSPointerUpGlobal, true); + canvas.removeEventListener('pointerover', this._onMSPointerOver, true); + canvas.removeEventListener('pointerout', this._onMSPointerOut, true); } @@ -26748,15 +22412,6 @@ Phaser.DeviceButton = function (parent, buttonCode) { */ this.timeDown = 0; - /** - * If the button is down this value holds the duration of that button press and is constantly updated. - * If the button is up it holds the duration of the previous down session. - * The value is stored in milliseconds. - * @property {number} duration - * @default - */ - this.duration = 0; - /** * @property {number} timeUp - The timestamp when the button was last released. * @default @@ -26853,7 +22508,6 @@ Phaser.DeviceButton.prototype = { this.isDown = true; this.isUp = false; this.timeDown = this.game.time.time; - this.duration = 0; this.repeats = 0; this.event = event; @@ -26962,7 +22616,6 @@ Phaser.DeviceButton.prototype = { this.isUp = true; this.timeDown = this.game.time.time; - this.duration = 0; this.repeats = 0; this.altKey = false; @@ -26993,7 +22646,7 @@ Phaser.DeviceButton.prototype = { Phaser.DeviceButton.prototype.constructor = Phaser.DeviceButton; /** -* How long the button has been held down. +* How long the button has been held down for in milliseconds. * If not currently down it returns -1. * * @name Phaser.DeviceButton#duration @@ -27028,8 +22681,9 @@ Object.defineProperty(Phaser.DeviceButton.prototype, "duration", { * @constructor * @param {Phaser.Game} game - A reference to the currently running game. * @param {number} id - The ID of the Pointer object within the game. Each game can have up to 10 active pointers. +* @param {Phaser.PointerMode} pointerMode=(CURSOR|CONTACT) - The operational mode of this pointer, eg. CURSOR or TOUCH. */ -Phaser.Pointer = function (game, id) { +Phaser.Pointer = function (game, id, pointerMode) { /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -27065,6 +22719,11 @@ Phaser.Pointer = function (game, id) { */ this.pointerId = null; + /** + * @property {Phaser.PointerMode} pointerMode - The operational mode of this pointer. + */ + this.pointerMode = pointerMode || (Phaser.PointerMode.CURSOR | Phaser.PointerMode.CONTACT); + /** * @property {any} target - The target property of the Pointer as set by the DOM event when this Pointer is started. * @default @@ -27589,6 +23248,8 @@ Phaser.Pointer.prototype = { */ start: function (event) { + var input = this.game.input; + if (event['pointerId']) { this.pointerId = event.pointerId; @@ -27626,18 +23287,19 @@ Phaser.Pointer.prototype = { // x and y are the old values here? this.positionDown.setTo(this.x, this.y); - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.x = this.x; - this.game.input.y = this.y; - this.game.input.position.setTo(this.x, this.y); - this.game.input.onDown.dispatch(this, event); - this.game.input.resetSpeed(this.x, this.y); + input.x = this.x; + input.y = this.y; + input.position.setTo(this.x, this.y); + input.onDown.dispatch(this, event); + input.resetSpeed(this.x, this.y); } this._stateReset = false; + this.totalTouches++; if (this.targetObject !== null) @@ -27655,12 +23317,14 @@ Phaser.Pointer.prototype = { */ update: function () { + var input = this.game.input; + if (this.active) { // Force a check? if (this.dirty) { - if (this.game.input.interactiveItems.total > 0) + if (input.interactiveItems.total > 0) { this.processInteractiveObjects(false); } @@ -27668,29 +23332,29 @@ Phaser.Pointer.prototype = { this.dirty = false; } - if (this._holdSent === false && this.duration >= this.game.input.holdRate) + if (this._holdSent === false && this.duration >= input.holdRate) { - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.onHold.dispatch(this); + input.onHold.dispatch(this); } this._holdSent = true; } // Update the droppings history - if (this.game.input.recordPointerHistory && this.game.time.time >= this._nextDrop) + if (input.recordPointerHistory && this.game.time.time >= this._nextDrop) { - this._nextDrop = this.game.time.time + this.game.input.recordRate; + this._nextDrop = this.game.time.time + input.recordRate; this._history.push({ x: this.position.x, y: this.position.y }); - if (this._history.length > this.game.input.recordLimit) + if (this._history.length > input.recordLimit) { this._history.shift(); } @@ -27844,7 +23508,7 @@ Phaser.Pointer.prototype = { var currentNode = this.game.input.interactiveItems.first; - while(currentNode) + while (currentNode) { if (!currentNode.checked && currentNode.validForInput(highestInputPriorityID, highestRenderOrderID, true)) @@ -27927,6 +23591,8 @@ Phaser.Pointer.prototype = { */ stop: function (event) { + var input = this.game.input; + if (this._stateReset && this.withinGame) { event.preventDefault(); @@ -27935,25 +23601,25 @@ Phaser.Pointer.prototype = { this.timeUp = this.game.time.time; - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.onUp.dispatch(this, event); + input.onUp.dispatch(this, event); // Was it a tap? - if (this.duration >= 0 && this.duration <= this.game.input.tapRate) + if (this.duration >= 0 && this.duration <= input.tapRate) { // Was it a double-tap? - if (this.timeUp - this.previousTapTime < this.game.input.doubleTapRate) + if (this.timeUp - this.previousTapTime < input.doubleTapRate) { // Yes, let's dispatch the signal then with the 2nd parameter set to true - this.game.input.onTap.dispatch(this, true); + input.onTap.dispatch(this, true); } else { // Wasn't a double-tap, so dispatch a single tap signal - this.game.input.onTap.dispatch(this, false); + input.onTap.dispatch(this, false); } this.previousTapTime = this.timeUp; @@ -27984,10 +23650,10 @@ Phaser.Pointer.prototype = { if (this.isMouse === false) { - this.game.input.currentPointers--; + input.currentPointers--; } - this.game.input.interactiveItems.callAll('_releasedHandler', this); + input.interactiveItems.callAll('_releasedHandler', this); if (this._clickTrampolines) { @@ -28207,6 +23873,35 @@ Object.defineProperty(Phaser.Pointer.prototype, "worldY", { }); +/** +* Enumeration categorizing operational modes of pointers. +* +* PointerType values represent valid bitmasks. +* For example, a value representing both Mouse and Touch devices +* can be expressed as `PointerMode.CURSOR | PointerMode.CONTACT`. +* +* Values may be added for future mode categorizations. +* @class Phaser.PointerMode +*/ +Phaser.PointerMode = { + + /** + * A 'CURSOR' is a pointer with a *passive cursor* such as a mouse, touchpad, watcom stylus, or even TV-control arrow-pad. + * + * It has the property that a cursor is passively moved without activating the input. + * This currently corresponds with {@link Phaser.Pointer#isMouse} property. + * @constant + */ + CURSOR: 1 << 0, + + /** + * A 'CONTACT' pointer has an *active cursor* that only tracks movement when actived; notably this is a touch-style input. + * @constant + */ + CONTACT: 1 << 1 + +}; + /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -28237,7 +23932,7 @@ Phaser.Touch = function (game) { this.enabled = true; /** - * An array of callbacks that will be fired every time a native touch start event is received from the browser. + * An array of callbacks that will be fired every time a native touch start or touch end event is received from the browser. * This is used internally to handle audio and video unlocking on mobile devices. * To add a callback to this array please use `Touch.addTouchLockCallback`. * @property {array} touchLockCallbacks @@ -28407,7 +24102,7 @@ Phaser.Touch.prototype = { }, /** - * Adds a callback that is fired when a browser touchstart event is received. + * Adds a callback that is fired when a browser touchstart or touchend event is received. * * This is used internally to handle audio and video unlocking on mobile devices. * @@ -28418,10 +24113,13 @@ Phaser.Touch.prototype = { * @method Phaser.Touch#addTouchLockCallback * @param {function} callback - The callback that will be called when a touchstart event is received. * @param {object} context - The context in which the callback will be called. + * @param {boolean} [onEnd=false] - Will the callback fire on a touchstart (default) or touchend event? */ - addTouchLockCallback: function (callback, context) { + addTouchLockCallback: function (callback, context, onEnd) { - this.touchLockCallbacks.push({ callback: callback, context: context }); + if (onEnd === undefined) { onEnd = false; } + + this.touchLockCallbacks.push({ callback: callback, context: context, onEnd: onEnd }); }, @@ -28461,7 +24159,9 @@ Phaser.Touch.prototype = { while (i--) { - if (this.touchLockCallbacks[i].callback.call(this.touchLockCallbacks[i].context, this, event)) + var cb = this.touchLockCallbacks[i]; + + if (!cb.onEnd && cb.callback.call(cb.context, this, event)) { this.touchLockCallbacks.splice(i, 1); } @@ -28610,6 +24310,18 @@ Phaser.Touch.prototype = { */ onTouchEnd: function (event) { + var i = this.touchLockCallbacks.length; + + while (i--) + { + var cb = this.touchLockCallbacks[i]; + + if (cb.onEnd && cb.callback.call(cb.context, this, event)) + { + this.touchLockCallbacks.splice(i, 1); + } + } + this.event = event; if (this.touchEndCallback) @@ -29094,7 +24806,7 @@ Phaser.InputHandler.prototype = { if (includePixelPerfect === undefined) { includePixelPerfect = true; } - if (this.sprite.scale.x === 0 || this.sprite.scale.y === 0 || this.priorityID < this.game.input.minPriorityID) + if (!this.enabled || this.sprite.scale.x === 0 || this.sprite.scale.y === 0 || this.priorityID < this.game.input.minPriorityID) { return false; } @@ -29131,14 +24843,14 @@ Phaser.InputHandler.prototype = { * This value is only set when the pointer is over this Sprite. * * @method Phaser.InputHandler#pointerX - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {number} The x coordinate of the Input pointer. */ - pointerX: function (pointer) { + pointerX: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].x; + return this._pointerData[pointerId].x; }, @@ -29147,44 +24859,46 @@ Phaser.InputHandler.prototype = { * This value is only set when the pointer is over this Sprite. * * @method Phaser.InputHandler#pointerY - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {number} The y coordinate of the Input pointer. */ - pointerY: function (pointer) { + pointerY: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].y; + return this._pointerData[pointerId].y; }, /** - * If the Pointer is down this returns true. Please note that it only checks if the Pointer is down, not if it's down over any specific Sprite. + * If the Pointer is down this returns true. + * This *only* checks if the Pointer is down, not if it's down over any specific Sprite. * * @method Phaser.InputHandler#pointerDown - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {boolean} - True if the given pointer is down, otherwise false. */ - pointerDown: function (pointer) { + pointerDown: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isDown; + return this._pointerData[pointerId].isDown; }, /** - * If the Pointer is up this returns true. Please note that it only checks if the Pointer is up, not if it's up over any specific Sprite. + * If the Pointer is up this returns true. + * This *only* checks if the Pointer is up, not if it's up over any specific Sprite. * * @method Phaser.InputHandler#pointerUp - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {boolean} - True if the given pointer is up, otherwise false. */ - pointerUp: function (pointer) { + pointerUp: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isUp; + return this._pointerData[pointerId].isUp; }, @@ -29192,28 +24906,29 @@ Phaser.InputHandler.prototype = { * A timestamp representing when the Pointer first touched the touchscreen. * * @method Phaser.InputHandler#pointerTimeDown - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=(check all)] * @return {number} */ - pointerTimeDown: function (pointer) { + pointerTimeDown: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeDown; + return this._pointerData[pointerId].timeDown; }, /** * A timestamp representing when the Pointer left the touchscreen. + * * @method Phaser.InputHandler#pointerTimeUp - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeUp: function (pointer) { + pointerTimeUp: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeUp; + return this._pointerData[pointerId].timeUp; }, @@ -29221,102 +24936,106 @@ Phaser.InputHandler.prototype = { * Is the Pointer over this Sprite? * * @method Phaser.InputHandler#pointerOver - * @param {number} [index] - The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. + * @param {integer} [pointerId=(check all)] The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. * @return {boolean} - True if the given pointer (if a index was given, or any pointer if not) is over this object. */ - pointerOver: function (index) { + pointerOver: function (pointerId) { - if (this.enabled) + if (!this.enabled) { - if (index === undefined) - { - for (var i = 0; i < 10; i++) - { - if (this._pointerData[i].isOver) - { - return true; - } - } - } - else - { - return this._pointerData[index].isOver; - } + return false; } - return false; + if (pointerId === undefined) + { + for (var i = 0; i < 10; i++) + { + if (this._pointerData[i].isOver) + { + return true; + } + } + } + else + { + return this._pointerData[pointerId].isOver; + } }, /** * Is the Pointer outside of this Sprite? + * * @method Phaser.InputHandler#pointerOut - * @param {number} [index] - The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. + * @param {integer} [pointerId=(check all)] The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. * @return {boolean} True if the given pointer (if a index was given, or any pointer if not) is out of this object. */ - pointerOut: function (index) { + pointerOut: function (pointerId) { - if (this.enabled) + if (!this.enabled) { - if (index === undefined) - { - for (var i = 0; i < 10; i++) - { - if (this._pointerData[i].isOut) - { - return true; - } - } - } - else - { - return this._pointerData[index].isOut; - } + return false; } - return false; + if (pointerId === undefined) + { + for (var i = 0; i < 10; i++) + { + if (this._pointerData[i].isOut) + { + return true; + } + } + } + else + { + return this._pointerData[pointerId].isOut; + } }, /** * A timestamp representing when the Pointer first touched the touchscreen. + * * @method Phaser.InputHandler#pointerTimeOver - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeOver: function (pointer) { + pointerTimeOver: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeOver; + return this._pointerData[pointerId].timeOver; }, /** * A timestamp representing when the Pointer left the touchscreen. + * * @method Phaser.InputHandler#pointerTimeOut - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeOut: function (pointer) { + pointerTimeOut: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeOut; + return this._pointerData[pointerId].timeOut; }, /** * Is this sprite being dragged by the mouse or not? + * * @method Phaser.InputHandler#pointerDragged - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {boolean} True if the pointer is dragging an object, otherwise false. */ - pointerDragged: function (pointer) { + pointerDragged: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isDragged; + return this._pointerData[pointerId].isDragged; }, @@ -29399,6 +25118,7 @@ Phaser.InputHandler.prototype = { /** * Runs a pixel perfect check against the given x/y coordinates of the Sprite this InputHandler is bound to. * It compares the alpha value of the pixel and if >= InputHandler.pixelPerfectAlpha it returns true. + * * @method Phaser.InputHandler#checkPixel * @param {number} x - The x coordinate to check. * @param {number} y - The y coordinate to check. @@ -29773,81 +25493,86 @@ Phaser.InputHandler.prototype = { /** * Returns true if the pointer has entered the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justOver - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just over. * @return {boolean} */ - justOver: function (pointer, delay) { + justOver: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isOver && this.overDuration(pointer) < delay); + return (this._pointerData[pointerId].isOver && this.overDuration(pointerId) < delay); }, /** * Returns true if the pointer has left the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justOut - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just out. * @return {boolean} */ - justOut: function (pointer, delay) { + justOut: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isOut && (this.game.time.time - this._pointerData[pointer].timeOut < delay)); + return (this._pointerData[pointerId].isOut && (this.game.time.time - this._pointerData[pointerId].timeOut < delay)); }, /** * Returns true if the pointer has touched or clicked on the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justPressed - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just over. * @return {boolean} */ - justPressed: function (pointer, delay) { + justPressed: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isDown && this.downDuration(pointer) < delay); + return (this._pointerData[pointerId].isDown && this.downDuration(pointerId) < delay); }, /** * Returns true if the pointer was touching this Sprite, but has been released within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justReleased - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just out. * @return {boolean} */ - justReleased: function (pointer, delay) { + justReleased: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isUp && (this.game.time.time - this._pointerData[pointer].timeUp < delay)); + return (this._pointerData[pointerId].isUp && (this.game.time.time - this._pointerData[pointerId].timeUp < delay)); }, /** * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. + * * @method Phaser.InputHandler#overDuration - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} The number of milliseconds the pointer has been over the Sprite, or -1 if not over. */ - overDuration: function (pointer) { + overDuration: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - if (this._pointerData[pointer].isOver) + if (this._pointerData[pointerId].isOver) { - return this.game.time.time - this._pointerData[pointer].timeOver; + return this.game.time.time - this._pointerData[pointerId].timeOver; } return -1; @@ -29856,17 +25581,18 @@ Phaser.InputHandler.prototype = { /** * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. + * * @method Phaser.InputHandler#downDuration - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} The number of milliseconds the pointer has been pressed down on the Sprite, or -1 if not over. */ - downDuration: function (pointer) { + downDuration: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - if (this._pointerData[pointer].isDown) + if (this._pointerData[pointerId].isDown) { - return this.game.time.time - this._pointerData[pointer].timeDown; + return this.game.time.time - this._pointerData[pointerId].timeDown; } return -1; @@ -29922,7 +25648,9 @@ Phaser.InputHandler.prototype = { }, /** - * Stops this sprite from being able to be dragged. If it is currently the target of an active drag it will be stopped immediately. Also disables any set callbacks. + * Stops this sprite from being able to be dragged. + * If it is currently the target of an active drag it will be stopped immediately; also disables any set callbacks. + * * @method Phaser.InputHandler#disableDrag */ disableDrag: function () { @@ -29943,6 +25671,7 @@ Phaser.InputHandler.prototype = { /** * Called by Pointer when drag starts on this Sprite. Should not usually be called directly. + * * @method Phaser.InputHandler#startDrag * @param {Phaser.Pointer} pointer */ @@ -29995,6 +25724,7 @@ Phaser.InputHandler.prototype = { /** * Warning: EXPERIMENTAL + * * @method Phaser.InputHandler#globalToLocalX * @param {number} x */ @@ -30012,6 +25742,7 @@ Phaser.InputHandler.prototype = { /** * Warning: EXPERIMENTAL + * * @method Phaser.InputHandler#globalToLocalY * @param {number} y */ @@ -30029,6 +25760,7 @@ Phaser.InputHandler.prototype = { /** * Called by Pointer when drag is stopped on this Sprite. Should not usually be called directly. + * * @method Phaser.InputHandler#stopDrag * @param {Phaser.Pointer} pointer */ @@ -30064,6 +25796,7 @@ Phaser.InputHandler.prototype = { /** * Restricts this sprite to drag movement only on the given axis. Note: If both are set to false the sprite will never move! + * * @method Phaser.InputHandler#setDragLock * @param {boolean} [allowHorizontal=true] - To enable the sprite to be dragged horizontally set to true, otherwise false. * @param {boolean} [allowVertical=true] - To enable the sprite to be dragged vertically set to true, otherwise false. @@ -30081,6 +25814,7 @@ Phaser.InputHandler.prototype = { /** * Make this Sprite snap to the given grid either during drag or when it's released. * For example 16x16 as the snapX and snapY would make the sprite snap to every 16 pixels. + * * @method Phaser.InputHandler#enableSnap * @param {number} snapX - The width of the grid cell to snap to. * @param {number} snapY - The height of the grid cell to snap to. @@ -30107,6 +25841,7 @@ Phaser.InputHandler.prototype = { /** * Stops the sprite from snapping to a grid during drag or release. + * * @method Phaser.InputHandler#disableSnap */ disableSnap: function () { @@ -30119,6 +25854,7 @@ Phaser.InputHandler.prototype = { /** * Bounds Rect check for the sprite drag + * * @method Phaser.InputHandler#checkBoundsRect */ checkBoundsRect: function () { @@ -30168,6 +25904,7 @@ Phaser.InputHandler.prototype = { /** * Parent Sprite Bounds check for the sprite drag. + * * @method Phaser.InputHandler#checkBoundsSprite */ checkBoundsSprite: function () { @@ -30770,7 +26507,9 @@ Phaser.Component.Core.prototype = { * The z depth of this Game Object within its parent Group. * No two objects in a Group can have the same z value. * This value is adjusted automatically whenever the Group hierarchy changes. + * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. * @property {number} z + * @readOnly */ z: 0, @@ -31271,9 +27010,13 @@ Phaser.Component.Destroy.prototype = { // In case Pixi is still going to try and render it even though destroyed this.renderable = false; + if (this.transformCallback) + { + this.transformCallback = null; + this.transformCallbackContext = null; + } + // Pixi level DisplayObject destroy - this.transformCallback = null; - this.transformCallbackContext = null; this.hitArea = null; this.parent = null; this.stage = null; @@ -31283,8 +27026,6 @@ Phaser.Component.Destroy.prototype = { this._currentBounds = null; this._mask = null; - - this._destroyCachedSprite(); this.destroyPhase = false; @@ -31938,10 +27679,10 @@ Phaser.Component.LifeSpan.prototype = { /** * A useful flag to control if the Game Object is alive or dead. - * + * * This is set automatically by the Health components `damage` method should the object run out of health. * Or you can toggle it via your game code. - * + * * This property is mostly just provided to be used by your game - it doesn't effect rendering or logic updates. * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. * @property {boolean} alive @@ -31951,12 +27692,12 @@ Phaser.Component.LifeSpan.prototype = { /** * The lifespan allows you to give a Game Object a lifespan in milliseconds. - * + * * Once the Game Object is 'born' you can set this to a positive value. - * + * * It is automatically decremented by the millisecond equivalent of `game.time.physicsElapsed` each frame. * When it reaches zero it will call the `kill` method. - * + * * Very handy for particles, bullets, collectibles, or any other short-lived entity. * * @property {number} lifespan @@ -31966,9 +27707,9 @@ Phaser.Component.LifeSpan.prototype = { /** * Brings a 'dead' Game Object back to life, optionally resetting its health value in the process. - * + * * A resurrected Game Object has its `alive`, `exists` and `visible` properties all set to true. - * + * * It will dispatch the `onRevived` event. Listen to `events.onRevived` for the signal. * * @method @@ -31982,10 +27723,10 @@ Phaser.Component.LifeSpan.prototype = { this.alive = true; this.exists = true; this.visible = true; - - if (typeof this.health === 'number') + + if (typeof this.heal === 'function') { - this.health = health; + this.heal(health); } if (this.events) @@ -31999,12 +27740,12 @@ Phaser.Component.LifeSpan.prototype = { /** * Kills a Game Object. A killed Game Object has its `alive`, `exists` and `visible` properties all set to false. - * + * * It will dispatch the `onKilled` event. You can listen to `events.onKilled` for the signal. - * - * Note that killing a Game Object is a way for you to quickly recycle it in an object pool, + * + * Note that killing a Game Object is a way for you to quickly recycle it in an object pool, * it doesn't destroy the object or free it up from memory. - * + * * If you don't need this Game Object any more you should call `destroy` instead. * * @method @@ -32548,7 +28289,7 @@ Phaser.Component.ScaleMinMax.prototype = { * The callback that will apply any scale limiting to the worldTransform. * @property {function} transformCallback */ - transformCallback: this.checkTransform, + transformCallback: null, /** * The context under which `transformCallback` is called. @@ -32684,6 +28425,16 @@ Phaser.Component.ScaleMinMax.prototype = { } } + if (this.scaleMin === null) + { + this.transformCallback = null; + } + else + { + this.transformCallback = this.checkTransform; + this.transformCallbackContext = this; + } + } }; @@ -32907,7 +28658,7 @@ Phaser.GameObjectFactory.prototype = { * are automatically given a physics body. * * @method Phaser.GameObjectFactory#physicsGroup - * @param {number} [physicsBodyType=Phaser.Physics.ARCADE] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, etc. + * @param {number} [physicsBodyType=Phaser.Physics.ARCADE] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2JS, Phaser.Physics.NINJA, etc. * @param {any} [parent] - The parent Group or DisplayObjectContainer that will hold this group, if any. If set to null the Group won't be added to the display list. If undefined it will be added to World by default. * @param {string} [name='group'] - A name for this Group. Not used internally but useful for debugging. * @param {boolean} [addToStage=false] - If set to true this Group will be added directly to the Game.Stage instead of Game.World. @@ -33274,7 +29025,7 @@ Phaser.GameObjectFactory.prototype = { */ filter: function (filter) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var filter = new Phaser.Filter[filter](this.game); @@ -33720,7 +29471,7 @@ Phaser.GameObjectCreator.prototype = { */ filter: function (filter) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var filter = new Phaser.Filter[filter](this.game); @@ -33950,450 +29701,6 @@ Phaser.Image.prototype.preUpdate = function() { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* A TileSprite is a Sprite that has a repeating texture. The texture can be scrolled and scaled independently of the TileSprite itself. -* Textures will automatically wrap and are designed so that you can create game backdrops using seamless textures as a source. -* -* TileSprites have no input handler or physics bodies by default, both need enabling in the same way as for normal Sprites. -* -* You shouldn't ever create a TileSprite any larger than your actual screen size. If you want to create a large repeating background -* that scrolls across the whole map of your game, then you create a TileSprite that fits the screen size and then use the `tilePosition` -* property to scroll the texture as the player moves. If you create a TileSprite that is thousands of pixels in size then it will -* consume huge amounts of memory and cause performance issues. Remember: use `tilePosition` to scroll your texture and `tileScale` to -* adjust the scale of the texture - don't resize the sprite itself or make it larger than it needs. -* -* An important note about texture dimensions: -* -* When running under Canvas a TileSprite can use any texture size without issue. When running under WebGL the texture should ideally be -* a power of two in size (i.e. 4, 8, 16, 32, 64, 128, 256, 512, etch pixels width by height). If the texture isn't a power of two -* it will be rendered to a blank canvas that is the correct size, which means you may have 'blank' areas appearing to the right and -* bottom of your frame. To avoid this ensure your textures are perfect powers of two. -* -* TileSprites support animations in the same way that Sprites do. You add and play animations using the AnimationManager. However -* if your game is running under WebGL please note that each frame of the animation must be a power of two in size, or it will receive -* additional padding to enforce it to be so. -* -* @class Phaser.TileSprite -* @constructor -* @extends PIXI.TilingSprite -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.Health -* @extends Phaser.Component.InCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the TileSprite at. -* @param {number} y - The y coordinate (in world space) to position the TileSprite at. -* @param {number} width - The width of the TileSprite. -* @param {number} height - The height of the TileSprite. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the TileSprite during rendering. It can be a string which is a reference to the Phaser Image Cache entry, or an instance of a RenderTexture, PIXI.Texture or BitmapData. -* @param {string|number} frame - If this TileSprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.TileSprite = function (game, x, y, width, height, key, frame) { - - x = x || 0; - y = y || 0; - width = width || 256; - height = height || 256; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.TILESPRITE; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.SPRITE; - - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - - var def = game.cache.getImage('__default', true); - - PIXI.TilingSprite.call(this, new PIXI.Texture(def.base), width, height); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.TileSprite.prototype = Object.create(PIXI.TilingSprite.prototype); -Phaser.TileSprite.prototype.constructor = Phaser.TileSprite; - -Phaser.Component.Core.install.call(Phaser.TileSprite.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Destroy', - 'FixedToCamera', - 'Health', - 'InCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'Smoothed' -]); - -Phaser.TileSprite.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.TileSprite.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.TileSprite.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.TileSprite.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.TileSprite#preUpdate -* @memberof Phaser.TileSprite -*/ -Phaser.TileSprite.prototype.preUpdate = function() { - - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Sets this TileSprite to automatically scroll in the given direction until stopped via TileSprite.stopScroll(). -* The scroll speed is specified in pixels per second. -* A negative x value will scroll to the left. A positive x value will scroll to the right. -* A negative y value will scroll up. A positive y value will scroll down. -* -* @method Phaser.TileSprite#autoScroll -* @memberof Phaser.TileSprite -* @param {number} x - Horizontal scroll speed in pixels per second. -* @param {number} y - Vertical scroll speed in pixels per second. -*/ -Phaser.TileSprite.prototype.autoScroll = function(x, y) { - - this._scroll.set(x, y); - -}; - -/** -* Stops an automatically scrolling TileSprite. -* -* @method Phaser.TileSprite#stopScroll -* @memberof Phaser.TileSprite -*/ -Phaser.TileSprite.prototype.stopScroll = function() { - - this._scroll.set(0, 0); - -}; - -/** -* Destroys the TileSprite. This removes it from its parent group, destroys the event and animation handlers if present -* and nulls its reference to game, freeing it up for garbage collection. -* -* @method Phaser.TileSprite#destroy -* @memberof Phaser.TileSprite -* @param {boolean} [destroyChildren=true] - Should every child of this object have its destroy method called? -*/ -Phaser.TileSprite.prototype.destroy = function(destroyChildren) { - - Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren); - - PIXI.TilingSprite.prototype.destroy.call(this); - -}; - -/** -* Resets the TileSprite. This places the TileSprite at the given x/y world coordinates, resets the tilePosition and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. -* If the TileSprite has a physics body that too is reset. -* -* @method Phaser.TileSprite#reset -* @memberof Phaser.TileSprite -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @return (Phaser.TileSprite) This instance. -*/ -Phaser.TileSprite.prototype.reset = function(x, y) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y); - - this.tilePosition.x = 0; - this.tilePosition.y = 0; - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd, Richard Davey -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Rope is a Sprite that has a repeating texture. The texture can be scrolled and scaled and will automatically wrap on the edges as it does so. -* Please note that Ropes, as with normal Sprites, have no input handler or physics bodies by default. Both need enabling. -* Example usage: https://github.com/codevinsky/phaser-rope-demo/blob/master/dist/demo.js -* -* @class Phaser.Rope -* @constructor -* @extends PIXI.Rope -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Crop -* @extends Phaser.Component.Delta -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.ScaleMinMax -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Rope at. -* @param {number} y - The y coordinate (in world space) to position the Rope at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Rope during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Rope is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @param {Array} points - An array of {Phaser.Point}. -*/ -Phaser.Rope = function (game, x, y, key, frame, points) { - - this.points = []; - this.points = points; - this._hasUpdateAnimation = false; - this._updateAnimationCallback = null; - x = x || 0; - y = y || 0; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.ROPE; - - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.Rope.prototype = Object.create(PIXI.Rope.prototype); -Phaser.Rope.prototype.constructor = Phaser.Rope; - -Phaser.Component.Core.install.call(Phaser.Rope.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Crop', - 'Delta', - 'Destroy', - 'FixedToCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'ScaleMinMax', - 'Smoothed' -]); - -Phaser.Rope.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.Rope.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.Rope.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.Rope.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.Rope#preUpdate -* @memberof Phaser.Rope -*/ -Phaser.Rope.prototype.preUpdate = function() { - - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Override and use this function in your own custom objects to handle any update requirements you may have. -* -* @method Phaser.Rope#update -* @memberof Phaser.Rope -*/ -Phaser.Rope.prototype.update = function() { - - if (this._hasUpdateAnimation) - { - this.updateAnimation.call(this); - } - -}; - -/** -* Resets the Rope. This places the Rope at the given x/y world coordinates, resets the tilePosition and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. -* If the Rope has a physics body that too is reset. -* -* @method Phaser.Rope#reset -* @memberof Phaser.Rope -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @return (Phaser.Rope) This instance. -*/ -Phaser.Rope.prototype.reset = function(x, y) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y); - - this.tilePosition.x = 0; - this.tilePosition.y = 0; - - return this; - -}; - -/** -* A Rope will call it's updateAnimation function on each update loop if it has one -* -* @name Phaser.Rope#updateAnimation -* @property {function} updateAnimation - Set to a function if you'd like the rope to animate during the update phase. Set to false or null to remove it. -*/ -Object.defineProperty(Phaser.Rope.prototype, "updateAnimation", { - - get: function () { - - return this._updateAnimation; - - }, - - set: function (value) { - - if (value && typeof value === 'function') - { - this._hasUpdateAnimation = true; - this._updateAnimation = value; - } - else - { - this._hasUpdateAnimation = false; - this._updateAnimation = null; - } - - } - -}); - -/** -* The segments that make up the rope body as an array of Phaser.Rectangles -* -* @name Phaser.Rope#segments -* @property {Phaser.Rectangles[]} updateAnimation - Returns an array of Phaser.Rectangles that represent the segments of the given rope -*/ -Object.defineProperty(Phaser.Rope.prototype, "segments", { - - get: function() { - - var segments = []; - var index, x1, y1, x2, y2, width, height, rect; - - for (var i = 0; i < this.points.length; i++) - { - index = i * 4; - - x1 = this.vertices[index] * this.scale.x; - y1 = this.vertices[index + 1] * this.scale.y; - x2 = this.vertices[index + 4] * this.scale.x; - y2 = this.vertices[index + 3] * this.scale.y; - - width = Phaser.Math.difference(x1, x2); - height = Phaser.Math.difference(y1, y2); - - x1 += this.world.x; - y1 += this.world.y; - rect = new Phaser.Rectangle(x1, y1, width, height); - segments.push(rect); - } - - return segments; - } - -}); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * Create a new `Button` object. A Button is a special type of Sprite that is set-up to handle Pointer events automatically. * @@ -34556,10 +29863,20 @@ Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame, /** * If true then onOver events (such as onOverSound) will only be triggered if the Pointer object causing them was the Mouse Pointer. * The frame will still be changed as applicable. + * * @property {boolean} onOverMouseOnly * @default */ - this.onOverMouseOnly = false; + this.onOverMouseOnly = true; + + /** + * Suppresse the over event if a pointer was just released and it matches the given {@link Phaser.PointerModer pointer mode bitmask}. + * + * This behavior was introduced in Phaser 2.3.1; this property is a soft-revert of the change. + * + * @property {Phaser.PointerMode?} justReleasedPreventsOver=ACTIVE_CURSOR + */ + this.justReleasedPreventsOver = Phaser.PointerMode.TOUCH; /** * When true the the texture frame will not be automatically switched on up/down/over/out events. @@ -34570,7 +29887,10 @@ Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame, /** * When the Button is touched / clicked and then released you can force it to enter a state of "out" instead of "up". - * @property {boolean} forceOut + * + * This can also accept a {@link Phaser.PointerModer pointer mode bitmask} for more refined control. + * + * @property {boolean|Phaser.PointerMode} forceOut=false * @default */ this.forceOut = false; @@ -34862,9 +30182,10 @@ Phaser.Button.prototype.setUpSound = function (sound, marker) { */ Phaser.Button.prototype.onInputOverHandler = function (sprite, pointer) { - // If the Pointer was only just released then we don't fire an over event - if (pointer.justReleased()) + if (pointer.justReleased() && + (this.justReleasedPreventsOver & pointer.pointerMode) === pointer.pointerMode) { + // If the Pointer was only just released then we don't fire an over event return; } @@ -34947,7 +30268,7 @@ Phaser.Button.prototype.onInputUpHandler = function (sprite, pointer, isOver) { return; } - if (this.forceOut) + if (this.forceOut === true || (this.forceOut & pointer.pointerMode) === pointer.pointerMode) { this.changeStateFrame(STATE_OUT); } @@ -35012,172 +30333,7 @@ Phaser.SpriteBatch.prototype = Phaser.Utils.extend(true, Phaser.SpriteBatch.prot Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* Create a new `Particle` object. Particles are extended Sprites that are emitted by a particle emitter such as Phaser.Particles.Arcade.Emitter. -* -* @class Phaser.Particle -* @constructor -* @extends Phaser.Sprite -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.Particle = function (game, x, y, key, frame) { - - Phaser.Sprite.call(this, game, x, y, key, frame); - - /** - * @property {boolean} autoScale - If this Particle automatically scales this is set to true by Particle.setScaleData. - * @protected - */ - this.autoScale = false; - - /** - * @property {array} scaleData - A reference to the scaleData array owned by the Emitter that emitted this Particle. - * @protected - */ - this.scaleData = null; - - /** - * @property {number} _s - Internal cache var for tracking auto scale. - * @private - */ - this._s = 0; - - /** - * @property {boolean} autoAlpha - If this Particle automatically changes alpha this is set to true by Particle.setAlphaData. - * @protected - */ - this.autoAlpha = false; - - /** - * @property {array} alphaData - A reference to the alphaData array owned by the Emitter that emitted this Particle. - * @protected - */ - this.alphaData = null; - - /** - * @property {number} _a - Internal cache var for tracking auto alpha. - * @private - */ - this._a = 0; - -}; - -Phaser.Particle.prototype = Object.create(Phaser.Sprite.prototype); -Phaser.Particle.prototype.constructor = Phaser.Particle; - -/** -* Updates the Particle scale or alpha if autoScale and autoAlpha are set. -* -* @method Phaser.Particle#update -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.update = function() { - - if (this.autoScale) - { - this._s--; - - if (this._s) - { - this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); - } - else - { - this.autoScale = false; - } - } - - if (this.autoAlpha) - { - this._a--; - - if (this._a) - { - this.alpha = this.alphaData[this._a].v; - } - else - { - this.autoAlpha = false; - } - } - -}; - -/** -* Called by the Emitter when this particle is emitted. Left empty for you to over-ride as required. -* -* @method Phaser.Particle#onEmit -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.onEmit = function() { -}; - -/** -* Called by the Emitter if autoAlpha has been enabled. Passes over the alpha ease data and resets the alpha counter. -* -* @method Phaser.Particle#setAlphaData -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.setAlphaData = function(data) { - - this.alphaData = data; - this._a = data.length - 1; - this.alpha = this.alphaData[this._a].v; - this.autoAlpha = true; - -}; - -/** -* Called by the Emitter if autoScale has been enabled. Passes over the scale ease data and resets the scale counter. -* -* @method Phaser.Particle#setScaleData -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.setScaleData = function(data) { - - this.scaleData = data; - this._s = data.length - 1; - this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); - this.autoScale = true; - -}; - -/** -* Resets the Particle. This places the Particle at the given x/y world coordinates and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state and health values. -* If the Particle has a physics body that too is reset. -* -* @method Phaser.Particle#reset -* @memberof Phaser.Particle -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {number} [health=1] - The health to give the Particle. -* @return (Phaser.Particle) This instance. -*/ -Phaser.Particle.prototype.reset = function(x, y, health) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y, health); - - this.alpha = 1; - this.scale.set(1); - - this.autoScale = false; - this.autoAlpha = false; - - return this; - -}; - +Phaser.TileSprite = function () {}; /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -35237,6 +30393,12 @@ Phaser.Device = function () { */ this.iOS = false; + /** + * @property {number} iOSVersion - If running in iOS this will contain the major version number. + * @default + */ + this.iOSVersion = 0; + /** * @property {boolean} cocoonJS - Is the game running under CocoonJS? * @default @@ -35838,6 +31000,8 @@ Phaser.Device._initialize = function () { else if (/iP[ao]d|iPhone/i.test(ua)) { device.iOS = true; + (navigator.appVersion).match(/OS (\d+)/); + device.iOSVersion = parseInt(RegExp.$1, 10); } else if (/Linux/.test(ua)) { @@ -36501,439 +31665,6 @@ Phaser.Device.isAndroidStockBrowser = function () { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* DOM utility class. -* -* Provides a useful Window and Element functions as well as cross-browser compatibility buffer. -* -* Some code originally derived from {@link https://github.com/ryanve/verge verge}. -* Some parts were inspired by the research of Ryan Van Etten, released under MIT License 2013. -* -* @class Phaser.DOM -* @static -*/ -Phaser.DOM = { - - /** - * Get the [absolute] position of the element relative to the Document. - * - * The value may vary slightly as the page is scrolled due to rounding errors. - * - * @method Phaser.DOM.getOffset - * @param {DOMElement} element - The targeted element that we want to retrieve the offset. - * @param {Phaser.Point} [point] - The point we want to take the x/y values of the offset. - * @return {Phaser.Point} - A point objet with the offsetX and Y as its properties. - */ - getOffset: function (element, point) { - - point = point || new Phaser.Point(); - - var box = element.getBoundingClientRect(); - - var scrollTop = Phaser.DOM.scrollY; - var scrollLeft = Phaser.DOM.scrollX; - var clientTop = document.documentElement.clientTop; - var clientLeft = document.documentElement.clientLeft; - - point.x = box.left + scrollLeft - clientLeft; - point.y = box.top + scrollTop - clientTop; - - return point; - - }, - - /** - * A cross-browser element.getBoundingClientRect method with optional cushion. - * - * Returns a plain object containing the properties `top/bottom/left/right/width/height` with respect to the top-left corner of the current viewport. - * Its properties match the native rectangle. - * The cushion parameter is an amount of pixels (+/-) to cushion the element. - * It adjusts the measurements such that it is possible to detect when an element is near the viewport. - * - * @method Phaser.DOM.getBounds - * @param {DOMElement|Object} element - The element or stack (uses first item) to get the bounds for. - * @param {number} [cushion] - A +/- pixel adjustment amount. - * @return {Object|boolean} A plain object containing the properties `top/bottom/left/right/width/height` or `false` if a non-valid element is given. - */ - getBounds: function (element, cushion) { - - if (cushion === undefined) { cushion = 0; } - - element = element && !element.nodeType ? element[0] : element; - - if (!element || element.nodeType !== 1) - { - return false; - } - else - { - return this.calibrate(element.getBoundingClientRect(), cushion); - } - - }, - - /** - * Calibrates element coordinates for `inLayoutViewport` checks. - * - * @method Phaser.DOM.calibrate - * @private - * @param {object} coords - An object containing the following properties: `{top: number, right: number, bottom: number, left: number}` - * @param {number} [cushion] - A value to adjust the coordinates by. - * @return {object} The calibrated element coordinates - */ - calibrate: function (coords, cushion) { - - cushion = +cushion || 0; - - var output = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }; - - output.width = (output.right = coords.right + cushion) - (output.left = coords.left - cushion); - output.height = (output.bottom = coords.bottom + cushion) - (output.top = coords.top - cushion); - - return output; - - }, - - /** - * Get the Visual viewport aspect ratio (or the aspect ratio of an object or element) - * - * @method Phaser.DOM.getAspectRatio - * @param {(DOMElement|Object)} [object=(visualViewport)] - The object to determine the aspect ratio for. Must have public `width` and `height` properties or methods. - * @return {number} The aspect ratio. - */ - getAspectRatio: function (object) { - - object = null == object ? this.visualBounds : 1 === object.nodeType ? this.getBounds(object) : object; - - var w = object['width']; - var h = object['height']; - - if (typeof w === 'function') - { - w = w.call(object); - } - - if (typeof h === 'function') - { - h = h.call(object); - } - - return w / h; - - }, - - /** - * Tests if the given DOM element is within the Layout viewport. - * - * The optional cushion parameter allows you to specify a distance. - * - * inLayoutViewport(element, 100) is `true` if the element is in the viewport or 100px near it. - * inLayoutViewport(element, -100) is `true` if the element is in the viewport or at least 100px near it. - * - * @method Phaser.DOM.inLayoutViewport - * @param {DOMElement|Object} element - The DOM element to check. If no element is given it defaults to the Phaser game canvas. - * @param {number} [cushion] - The cushion allows you to specify a distance within which the element must be within the viewport. - * @return {boolean} True if the element is within the viewport, or within `cushion` distance from it. - */ - inLayoutViewport: function (element, cushion) { - - var r = this.getBounds(element, cushion); - - return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= this.layoutBounds.width && r.left <= this.layoutBounds.height; - - }, - - /** - * Returns the device screen orientation. - * - * Orientation values: 'portrait-primary', 'landscape-primary', 'portrait-secondary', 'landscape-secondary'. - * - * Order of resolving: - * - Screen Orientation API, or variation of - Future track. Most desktop and mobile browsers. - * - Screen size ratio check - If fallback is 'screen', suited for desktops. - * - Viewport size ratio check - If fallback is 'viewport', suited for mobile. - * - window.orientation - If fallback is 'window.orientation', works iOS and probably most Android; non-recommended track. - * - Media query - * - Viewport size ratio check (probably only IE9 and legacy mobile gets here..) - * - * See - * - https://w3c.github.io/screen-orientation/ (conflicts with mozOrientation/msOrientation) - * - https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation (mozOrientation) - * - http://msdn.microsoft.com/en-us/library/ie/dn342934(v=vs.85).aspx - * - https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries - * - http://stackoverflow.com/questions/4917664/detect-viewport-orientation - * - http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation - * - * @method Phaser.DOM.getScreenOrientation - * @protected - * @param {string} [primaryFallback=(none)] - Specify 'screen', 'viewport', or 'window.orientation'. - */ - getScreenOrientation: function (primaryFallback) { - - var screen = window.screen; - var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation; - - if (orientation && typeof orientation.type === 'string') - { - // Screen Orientation API specification - return orientation.type; - } - else if (typeof orientation === 'string') - { - // moz/ms-orientation are strings - return orientation; - } - - var PORTRAIT = 'portrait-primary'; - var LANDSCAPE = 'landscape-primary'; - - if (primaryFallback === 'screen') - { - return (screen.height > screen.width) ? PORTRAIT : LANDSCAPE; - } - else if (primaryFallback === 'viewport') - { - return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; - } - else if (primaryFallback === 'window.orientation' && typeof window.orientation === 'number') - { - // This may change by device based on "natural" orientation. - return (window.orientation === 0 || window.orientation === 180) ? PORTRAIT : LANDSCAPE; - } - else if (window.matchMedia) - { - if (window.matchMedia("(orientation: portrait)").matches) - { - return PORTRAIT; - } - else if (window.matchMedia("(orientation: landscape)").matches) - { - return LANDSCAPE; - } - } - - return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; - - }, - - /** - * The bounds of the Visual viewport, as discussed in - * {@link http://www.quirksmode.org/mobile/viewports.html A tale of two viewports — part one} - * with one difference: the viewport size _excludes_ scrollbars, as found on some desktop browsers. - * - * Supported mobile: - * iOS/Safari, Android 4, IE10, Firefox OS (maybe not Firefox Android), Opera Mobile 16 - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} x - Scroll, left offset - eg. "scrollX" - * @property {number} y - Scroll, top offset - eg. "scrollY" - * @property {number} width - Viewport width in pixels. - * @property {number} height - Viewport height in pixels. - * @readonly - */ - visualBounds: new Phaser.Rectangle(), - - /** - * The bounds of the Layout viewport, as discussed in - * {@link http://www.quirksmode.org/mobile/viewports2.html A tale of two viewports — part two}; - * but honoring the constraints as specified applicable viewport meta-tag. - * - * The bounds returned are not guaranteed to be fully aligned with CSS media queries (see - * {@link http://www.matanich.com/2013/01/07/viewport-size/ What size is my viewport?}). - * - * This is _not_ representative of the Visual bounds: in particular the non-primary axis will - * generally be significantly larger than the screen height on mobile devices when running with a - * constrained viewport. - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} width - Viewport width in pixels. - * @property {number} height - Viewport height in pixels. - * @readonly - */ - layoutBounds: new Phaser.Rectangle(), - - /** - * The size of the document / Layout viewport. - * - * This incorrectly reports the dimensions in IE. - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} width - Document width in pixels. - * @property {number} height - Document height in pixels. - * @readonly - */ - documentBounds: new Phaser.Rectangle() - -}; - -Phaser.Device.whenReady(function (device) { - - // All target browsers should support page[XY]Offset. - var scrollX = window && ('pageXOffset' in window) ? - function () { return window.pageXOffset; } : - function () { return document.documentElement.scrollLeft; }; - - var scrollY = window && ('pageYOffset' in window) ? - function () { return window.pageYOffset; } : - function () { return document.documentElement.scrollTop; }; - - /** - * A cross-browser window.scrollX. - * - * @name Phaser.DOM.scrollX - * @property {number} scrollX - * @readonly - * @protected - */ - Object.defineProperty(Phaser.DOM, "scrollX", { - get: scrollX - }); - - /** - * A cross-browser window.scrollY. - * - * @name Phaser.DOM.scrollY - * @property {number} scrollY - * @readonly - * @protected - */ - Object.defineProperty(Phaser.DOM, "scrollY", { - get: scrollY - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "x", { - get: scrollX - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "y", { - get: scrollY - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "x", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "y", { - value: 0 - }); - - var treatAsDesktop = device.desktop && - (document.documentElement.clientWidth <= window.innerWidth) && - (document.documentElement.clientHeight <= window.innerHeight); - - // Desktop browsers align the layout viewport with the visual viewport. - // This differs from mobile browsers with their zooming design. - // Ref. http://quirksmode.org/mobile/tableViewport.html - if (treatAsDesktop) - { - - // PST- When scrollbars are not included this causes upstream issues in ScaleManager. - // So reverted to the old "include scrollbars." - var clientWidth = function () { - return Math.max(window.innerWidth, document.documentElement.clientWidth); - }; - var clientHeight = function () { - return Math.max(window.innerHeight, document.documentElement.clientHeight); - }; - - // Interested in area sans-scrollbar - Object.defineProperty(Phaser.DOM.visualBounds, "width", { - get: clientWidth - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "height", { - get: clientHeight - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "width", { - get: clientWidth - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "height", { - get: clientHeight - }); - - } else { - - Object.defineProperty(Phaser.DOM.visualBounds, "width", { - get: function () { - return window.innerWidth; - } - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "height", { - get: function () { - return window.innerHeight; - } - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "width", { - - get: function () { - var a = document.documentElement.clientWidth; - var b = window.innerWidth; - - return a < b ? b : a; // max - } - - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "height", { - - get: function () { - var a = document.documentElement.clientHeight; - var b = window.innerHeight; - - return a < b ? b : a; // max - } - - }); - - } - - // For Phaser.DOM.documentBounds - // Ref. http://www.quirksmode.org/mobile/tableViewport_desktop.html - - Object.defineProperty(Phaser.DOM.documentBounds, "x", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "y", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "width", { - - get: function () { - var d = document.documentElement; - return Math.max(d.clientWidth, d.offsetWidth, d.scrollWidth); - } - - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "height", { - - get: function () { - var d = document.documentElement; - return Math.max(d.clientHeight, d.offsetHeight, d.scrollHeight); - } - - }); - -}, null, true); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * The Canvas class handles everything related to creating the `canvas` DOM tag that Phaser will use, * including styles, offset and aspect ratio. @@ -36986,7 +31717,7 @@ Phaser.Canvas = { * * @method Phaser.Canvas.setBackgroundColor * @param {HTMLCanvasElement} canvas - The canvas to set the background color on. - * @param {string} [color] - The color to set. Can be in the format 'rgb(r,g,b)', or '#RRGGBB' or any valid CSS color. + * @param {string} [color='rgb(0,0,0)'] - The color to set. Can be in the format 'rgb(r,g,b)', or '#RRGGBB' or any valid CSS color. * @return {HTMLCanvasElement} Returns the source canvas. */ setBackgroundColor: function (canvas, color) { @@ -37140,7 +31871,27 @@ Phaser.Canvas = { */ setSmoothingEnabled: function (context, value) { - var vendor = [ 'i', 'mozI', 'oI', 'webkitI', 'msI' ]; + var s = Phaser.Canvas.getSmoothingPrefix(context); + + if (s) + { + context[s] = value; + } + + return context; + + }, + + /** + * Gets the Smoothing Enabled vendor prefix being used on the given context, or null if not set. + * + * @method Phaser.Canvas.getSmoothingPrefix + * @param {CanvasRenderingContext2D} context - The context to enable or disable the image smoothing on. + * @return {string|null} Returns the smoothingEnabled vendor prefix, or null if not set on the context. + */ + getSmoothingPrefix: function (context) { + + var vendor = [ 'i', 'webkitI', 'msI', 'mozI', 'oI' ]; for (var prefix in vendor) { @@ -37148,12 +31899,11 @@ Phaser.Canvas = { if (s in context) { - context[s] = value; - return context; + return s; } } - return context; + return null; }, @@ -37166,7 +31916,12 @@ Phaser.Canvas = { */ getSmoothingEnabled: function (context) { - return (context['imageSmoothingEnabled'] || context['mozImageSmoothingEnabled'] || context['oImageSmoothingEnabled'] || context['webkitImageSmoothingEnabled'] || context['msImageSmoothingEnabled']); + var s = Phaser.Canvas.getSmoothingPrefix(context); + + if (s) + { + return context[s]; + } }, @@ -37180,12 +31935,13 @@ Phaser.Canvas = { */ setImageRenderingCrisp: function (canvas) { - canvas.style['image-rendering'] = 'optimizeSpeed'; - canvas.style['image-rendering'] = 'crisp-edges'; - canvas.style['image-rendering'] = '-moz-crisp-edges'; - canvas.style['image-rendering'] = '-webkit-optimize-contrast'; - canvas.style['image-rendering'] = 'optimize-contrast'; - canvas.style['image-rendering'] = 'pixelated'; + var types = [ 'optimizeSpeed', 'crisp-edges', '-moz-crisp-edges', '-webkit-optimize-contrast', 'optimize-contrast', 'pixelated' ]; + + for (var i = 0; i < types.length; i++) + { + canvas.style['image-rendering'] = types[i]; + } + canvas.style.msInterpolationMode = 'nearest-neighbor'; return canvas; @@ -37409,66 +32165,83 @@ Phaser.Math = { * Two number are fuzzyEqual if their difference is less than epsilon. * * @method Phaser.Math#fuzzyEqual - * @param {number} a - * @param {number} b - * @param {number} [epsilon=(small value)] + * @param {number} a - The first number to compare. + * @param {number} b - The second number to compare. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) * @return {boolean} True if |a-b|b+epsilon */ fuzzyGreaterThan: function (a, b, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return a > b - epsilon; + }, /** + * Applies a fuzzy ceil to the given value. + * * @method Phaser.Math#fuzzyCeil - * - * @param {number} val - * @param {number} [epsilon=(small value)] - * @return {boolean} ceiling(val-epsilon) + * @param {number} val - The value to ceil. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) + * @return {number} ceiling(val-epsilon) */ fuzzyCeil: function (val, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return Math.ceil(val - epsilon); + }, /** + * Applies a fuzzy floor to the given value. + * * @method Phaser.Math#fuzzyFloor - * - * @param {number} val - * @param {number} [epsilon=(small value)] - * @return {boolean} floor(val-epsilon) + * @param {number} val - The value to floor. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) + * @return {number} floor(val+epsilon) */ fuzzyFloor: function (val, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return Math.floor(val + epsilon); + }, /** @@ -37481,12 +32254,14 @@ Phaser.Math = { average: function () { var sum = 0; + var len = arguments.length; - for (var i = 0; i < arguments.length; i++) { + for (var i = 0; i < len; i++) + { sum += (+arguments[i]); } - return sum / arguments.length; + return sum / len; }, @@ -37528,7 +32303,7 @@ Phaser.Math = { /** * Snap a value to nearest grid slice, using floor. * - * Example: if you have an interval gap of 5 and a position of 12... you will snap to 10. + * Example: if you have an interval gap of 5 and a position of 12... you will snap to 10. * As will 14 snap to 10... but 16 will snap to 15. * * @method Phaser.Math#snapToFloor @@ -38429,7 +33204,7 @@ Phaser.Math.radToDeg = function radToDeg (radians) { * * @class Phaser.RandomDataGenerator * @constructor -* @param {any[]} [seeds] - An array of values to use as the seed. +* @param {any[]|string} [seeds] - An array of values to use as the seed, or a generator state (from {#state}). */ Phaser.RandomDataGenerator = function (seeds) { @@ -38459,7 +33234,14 @@ Phaser.RandomDataGenerator = function (seeds) { */ this.s2 = 0; - this.sow(seeds); + if (typeof seeds === 'string') + { + this.state(seeds); + } + else + { + this.sow(seeds); + } }; @@ -38709,6 +33491,39 @@ Phaser.RandomDataGenerator.prototype = { return this.integerInRange(-180, 180); + }, + + /** + * Gets or Sets the state of the generator. This allows you to retain the values + * that the generator is using between games, i.e. in a game save file. + * + * To seed this generator with a previously saved state you can pass it as the + * `seed` value in your game config, or call this method directly after Phaser has booted. + * + * Call this method with no parameters to return the current state. + * + * If providing a state it should match the same format that this method + * returns, which is a string with a header `!rnd` followed by the `c`, + * `s0`, `s1` and `s2` values respectively, each comma-delimited. + * + * @method Phaser.RandomDataGenerator#state + * @param {string} [state] - Generator state to be set. + * @return {string} The current state of the generator. + */ + state: function (state) { + + if (typeof state === 'string' && state.match(/^!rnd/)) + { + state = state.split(','); + + this.c = parseFloat(state[1]); + this.s0 = parseFloat(state[2]); + this.s1 = parseFloat(state[3]); + this.s2 = parseFloat(state[4]); + } + + return ['!rnd', this.c, this.s0, this.s1, this.s2].join(','); + } }; @@ -39126,6 +33941,25 @@ Phaser.TweenManager.prototype.constructor = Phaser.TweenManager; * * To create a general timed event, use the master {@link Phaser.Timer} accessible through {@link Phaser.Time.events events}. * +* There are different *types* of time in Phaser: +* +* - ***Game time*** always runs at the speed of time in real life. +* +* Unlike wall-clock time, *game time stops when Phaser is paused*. +* +* Game time is used for {@link Phaser.Timer timer events}. +* +* - ***Physics time*** represents the amount of time given to physics calculations. +* +* *When {@link #slowMotion} is in effect physics time runs slower than game time.* +* Like game time, physics time stops when Phaser is paused. +* +* Physics time is used for physics calculations and {@link Phaser.Tween tweens}. +* +* - {@link https://en.wikipedia.org/wiki/Wall-clock_time ***Wall-clock time***} represents the duration between two events in real life time. +* +* This time is independent of Phaser and always progresses, regardless of if Phaser is paused. +* * @class Phaser.Time * @constructor * @param {Phaser.Game} game A reference to the currently running game. @@ -39204,35 +34038,44 @@ Phaser.Time = function (game) { * * @property {number} physicsElapsed */ - this.physicsElapsed = 0; + this.physicsElapsed = 1 / 60; /** * The physics update delta, in milliseconds - equivalent to `physicsElapsed * 1000`. * * @property {number} physicsElapsedMS */ - this.physicsElapsedMS = 0; + this.physicsElapsedMS = (1 / 60) * 1000; + + /** + * The desiredFps multiplier as used by Game.update. + * @property {integer} desiredFpsMult + * @protected + */ + this.desiredFpsMult = 1.0 / 60; /** * The desired frame rate of the game. * * This is used is used to calculate the physic/logic multiplier and how to apply catch-up logic updates. * - * @property {number} desiredFps + * @property {number} _desiredFps + * @private * @default */ - this.desiredFps = 60; + this._desiredFps = 60; /** * The suggested frame rate for your game, based on an averaged real frame rate. * This value is only populated if `Time.advancedTiming` is enabled. * - * _Note:_ This is not available until after a few frames have passed; use it after a few seconds (eg. after the menus) + * _Note:_ This is not available until after a few frames have passed; until then + * it's set to the same value as desiredFps. * * @property {number} suggestedFps * @default */ - this.suggestedFps = null; + this.suggestedFps = this.desiredFps; /** * Scaling factor to make the game move smoothly in slow motion @@ -39442,6 +34285,24 @@ Phaser.Time.prototype = { }, + /** + * Refreshes the Time.time and Time.elapsedMS properties from the system clock. + * + * @method Phaser.Time#refresh + */ + refresh: function () { + + // Set to the old Date.now value + var previousDateNow = this.time; + + // this.time always holds a Date.now value + this.time = Date.now(); + + // Adjust accordingly. + this.elapsedMS = this.time - previousDateNow; + + }, + /** * Updates the game clock and if enabled the advanced timing data. This is called automatically by Phaser.Game. * @@ -39451,13 +34312,32 @@ Phaser.Time.prototype = { */ update: function (time) { + // Set to the old Date.now value + var previousDateNow = this.time; + + // this.time always holds a Date.now value + this.time = Date.now(); + + // Adjust accordingly. + this.elapsedMS = this.time - previousDateNow; + + // 'now' is currently still holding the time of the last call, move it into prevTime + this.prevTime = this.now; + + // update 'now' to hold the current time + // this.now may hold the RAF high resolution time value if RAF is available (otherwise it also holds Date.now) + this.now = time; + + // elapsed time between previous call and now - this could be a high resolution value + this.elapsed = this.now - this.prevTime; + if (this.game.raf._isSetTimeOut) { - this.updateSetTimeout(time); - } - else - { - this.updateRAF(time); + // time to call this function again in ms in case we're using timers instead of RequestAnimationFrame to update the game + this.timeToCall = Math.floor(Math.max(0, (1000.0 / this._desiredFps) - (this.timeExpected - time))); + + // time when the next call is expected if using timers + this.timeExpected = time + this.timeToCall; } if (this.advancedTiming) @@ -39479,82 +34359,6 @@ Phaser.Time.prototype = { }, - /** - * setTimeOut specific time update handler. - * Called automatically by Time.update. - * - * @method Phaser.Time#updateSetTimeout - * @private - * @param {number} time - The current relative timestamp; see {@link Phaser.Time#now now}. - */ - updateSetTimeout: function (time) { - - // Set to the old Date.now value - var previousDateNow = this.time; - - // With SetTimeout the time value is always the same as Date.now, so no need to get it again - this.time = time; - - // Adjust accordingly. - this.elapsedMS = this.time - previousDateNow; - - // 'now' is currently still holding the time of the last call, move it into prevTime - this.prevTime = this.now; - - // update 'now' to hold the current time - this.now = time; - - // elapsed time between previous call and now - this.elapsed = this.now - this.prevTime; - - // time to call this function again in ms in case we're using timers instead of RequestAnimationFrame to update the game - this.timeToCall = Math.floor(Math.max(0, (1000.0 / this.desiredFps) - (this.timeCallExpected - time))); - - // time when the next call is expected if using timers - this.timeCallExpected = time + this.timeToCall; - - // Set the physics elapsed time... this will always be 1 / this.desiredFps because we're using fixed time steps in game.update now - this.physicsElapsed = 1 / this.desiredFps; - - this.physicsElapsedMS = this.physicsElapsed * 1000; - - }, - - /** - * raf specific time update handler. - * Called automatically by Time.update. - * - * @method Phaser.Time#updateRAF - * @private - * @param {number} time - The current relative timestamp; see {@link Phaser.Time#now now}. - */ - updateRAF: function (time) { - - // Set to the old Date.now value - var previousDateNow = this.time; - - // this.time always holds Date.now, this.now may hold the RAF high resolution time value if RAF is available (otherwise it also holds Date.now) - this.time = Date.now(); - - // Adjust accordingly. - this.elapsedMS = this.time - previousDateNow; - - // 'now' is currently still holding the time of the last call, move it into prevTime - this.prevTime = this.now; - - // update 'now' to hold the current time - this.now = time; - - // elapsed time between previous call and now - this.elapsed = this.now - this.prevTime; - - // Set the physics elapsed time... this will always be 1 / this.desiredFps because we're using fixed time steps in game.update now - this.physicsElapsed = 1 / this.desiredFps; - - this.physicsElapsedMS = this.physicsElapsed * 1000; - - }, - /** * Handles the updating of the Phaser.Timers (if any) * Called automatically by Time.update. @@ -39598,7 +34402,7 @@ Phaser.Time.prototype = { this._elapsedAccumulator += this.elapsed; // occasionally recalculate the suggestedFps based on the accumulated elapsed time - if (this._frameCount >= this.desiredFps * 2) + if (this._frameCount >= this._desiredFps * 2) { // this formula calculates suggestedFps in multiples of 5 fps this.suggestedFps = Math.floor(200 / (this._elapsedAccumulator / this._frameCount)) * 5; @@ -39713,6 +34517,38 @@ Phaser.Time.prototype = { }; +/** +* The desired frame rate of the game. +* +* This is used is used to calculate the physic / logic multiplier and how to apply catch-up logic updates. +* +* @name Phaser.Time#desiredFps +* @property {integer} desiredFps - The desired frame rate of the game. Defaults to 60. +*/ +Object.defineProperty(Phaser.Time.prototype, "desiredFps", { + + get: function () { + + return this._desiredFps; + + }, + + set: function (value) { + + this._desiredFps = value; + + // Set the physics elapsed time... this will always be 1 / this.desiredFps + // because we're using fixed time steps in game.update + this.physicsElapsed = 1 / value; + + this.physicsElapsedMS = this.physicsElapsed * 1000; + + this.desiredFpsMult = 1.0 / value; + + } + +}); + Phaser.Time.prototype.constructor = Phaser.Time; /** @@ -39722,13 +34558,13 @@ Phaser.Time.prototype.constructor = Phaser.Time; */ /** -* A Timer is a way to create small re-usable (or disposable) objects that wait for a specific moment in time, -* and then run the specified callbacks. +* A Timer is a way to create and manage {@link Phaser.TimerEvent timer events} that wait for a specific duration and then run a callback. +* Many different timer events, with individual delays, can be added to the same Timer. * -* You can add many events to a Timer, each with their own delays. A Timer uses milliseconds as its unit of time (there are 1000 ms in 1 second). -* So a delay to 250 would fire the event every quarter of a second. +* All Timer delays are in milliseconds (there are 1000 ms in 1 second); so a delay value of 250 represents a quarter of a second. * -* Timers are based on real-world (not physics) time, adjusted for game pause durations. +* Timers are based on real life time, adjusted for game pause durations. +* That is, *timer events are based on elapsed {@link Phaser.Time game time}* and do *not* take physics time or slow motion into account. * * @class Phaser.Timer * @constructor @@ -39907,10 +34743,10 @@ Phaser.Timer.prototype = { * * @method Phaser.Timer#create * @private - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. This value should be an integer, not a float. Math.round() is applied to it by this method. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. * @param {boolean} loop - Should the event loop or not? * @param {number} repeatCount - The number of times the event will repeat. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {any[]} arguments - The values to be sent to your callback function when it is called. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. @@ -39951,15 +34787,15 @@ Phaser.Timer.prototype = { * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#add - * @param {number} delay - The number of milliseconds that should elapse before the callback is invoked. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ add: function (delay, callback, callbackContext) { - return this.create(delay, false, 0, callback, callbackContext, Array.prototype.splice.call(arguments, 3)); + return this.create(delay, false, 0, callback, callbackContext, Array.prototype.slice.call(arguments, 3)); }, @@ -39967,21 +34803,22 @@ Phaser.Timer.prototype = { * Adds a new TimerEvent that will always play through once and then repeat for the given number of iterations. * * The event will fire after the given amount of `delay` in milliseconds has passed, once the Timer has started running. - * The delay is in relation to when the Timer starts, not the time it was added. If the Timer is already running the delay will be calculated based on the timers current time. + * The delay is in relation to when the Timer starts, not the time it was added. + * If the Timer is already running the delay will be calculated based on the timers current time. * * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#repeat - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. * @param {number} repeatCount - The number of times the event will repeat once is has finished playback. A repeatCount of 1 means it will repeat itself once, playing the event twice in total. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ repeat: function (delay, repeatCount, callback, callbackContext) { - return this.create(delay, false, repeatCount, callback, callbackContext, Array.prototype.splice.call(arguments, 4)); + return this.create(delay, false, repeatCount, callback, callbackContext, Array.prototype.slice.call(arguments, 4)); }, @@ -39994,22 +34831,22 @@ Phaser.Timer.prototype = { * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#loop - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ loop: function (delay, callback, callbackContext) { - return this.create(delay, true, 0, callback, callbackContext, Array.prototype.splice.call(arguments, 3)); + return this.create(delay, true, 0, callback, callbackContext, Array.prototype.slice.call(arguments, 3)); }, /** * Starts this Timer running. * @method Phaser.Timer#start - * @param {number} [delay=0] - The number of milliseconds that should elapse before the Timer will start. + * @param {integer} [delay=0] - The number of milliseconds, in {@link Phaser.Time game time}, that should elapse before the Timer will start. */ start: function (delay) { @@ -41271,7 +36108,7 @@ Phaser.Animation = function (game, parent, name, frameData, frames, frameRate, l this.onUpdate = null; /** - * @property {Phaser.Signal} onComplete - This event is dispatched when this Animation completes playback. If the animation is set to loop this is never fired, listen for onAnimationLoop instead. + * @property {Phaser.Signal} onComplete - This event is dispatched when this Animation completes playback. If the animation is set to loop this is never fired, listen for onLoop instead. */ this.onComplete = new Phaser.Signal(); @@ -41897,7 +36734,7 @@ Object.defineProperty(Phaser.Animation.prototype, 'enableUpdate', { * @param {number} start - The number to start sequentially counting from. If your frames are named 'explosion_0001' to 'explosion_0034' the start is 1. * @param {number} stop - The number to count to. If your frames are named 'explosion_0001' to 'explosion_0034' the stop value is 34. * @param {string} [suffix=''] - The end of the filename. If the filename was 'explosion_0001-large' the prefix would be '-large'. -* @param {number} [zeroPad=0] - The number of zeroes to pad the min and max values with. If your frames are named 'explosion_0001' to 'explosion_0034' then the zeroPad is 4. +* @param {number} [zeroPad=0] - The number of zeros to pad the min and max values with. If your frames are named 'explosion_0001' to 'explosion_0034' then the zeroPad is 4. * @return {string[]} An array of framenames. */ Phaser.Animation.generateFrameNames = function (prefix, start, stop, suffix, zeroPad) { @@ -42594,6 +37431,62 @@ Phaser.AnimationParser = { }, + /** + * Parse the JSON data and extract the animation frame data from it. + * + * @method Phaser.AnimationParser.JSONDataPyxel + * @param {Phaser.Game} game - A reference to the currently running game. + * @param {object} json - The JSON data from the Texture Atlas. Must be in Pyxel JSON format. + * @return {Phaser.FrameData} A FrameData object containing the parsed frames. + */ + JSONDataPyxel: function (game, json) { + + // Malformed? There are a few keys to check here. + var signature = ['layers', 'tilewidth','tileheight','tileswide', 'tileshigh']; + + signature.forEach( function(key) { + if (!json[key]) + { + console.warn("Phaser.AnimationParser.JSONDataPyxel: Invalid Pyxel Tilemap JSON given, missing '" + key + "' key."); + console.log(json); + return; + } + }); + + // For this purpose, I only care about parsing tilemaps with a single layer. + if(json['layers'].length != 1) { + console.warn("Phaser.AnimationParser.JSONDataPyxel: Too many layers, this parser only supports flat Tilemaps."); + console.log(json); + return; + } + + var data = new Phaser.FrameData(); + + var tileheight = json['tileheight']; + var tilewidth = json['tilewidth']; + + var frames = json['layers'][0]['tiles']; + var newFrame; + + for (var i = 0; i < frames.length; i++) + { + newFrame = data.addFrame(new Phaser.Frame( + i, + frames[i].x, + frames[i].y, + tilewidth, + tileheight, + "frame_" + i // No names are included in pyxel tilemap data. + )); + + // No trim data is included. + newFrame.setTrim(false); + } + + return data; + + }, + /** * Parse the JSON data and extract the animation frame data from it. * @@ -42687,7 +37580,7 @@ Phaser.AnimationParser = { for (var i = 0; i < frames.length; i++) { frame = frames[i].attributes; - + name = frame.name.value; x = parseInt(frame.x.value, 10); y = parseInt(frame.y.value, 10); @@ -42728,12 +37621,12 @@ Phaser.AnimationParser = { /** * Phaser has one single cache in which it stores all assets. -* +* * The cache is split up into sections, such as images, sounds, video, json, etc. All assets are stored using * a unique string-based key as their identifier. Assets stored in different areas of the cache can have the * same key, for example 'playerWalking' could be used as the key for both a sprite sheet and an audio file, * because they are unique data types. -* +* * The cache is automatically populated by the Phaser.Loader. When you use the loader to pull in external assets * such as images they are automatically placed into their respective cache. Most common Game Objects, such as * Sprites and Videos automatically query the cache to extract the assets they need on instantiation. @@ -43161,6 +38054,7 @@ Phaser.Cache.prototype = { * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. * @param {object} data - Extra font data. * @param {object} atlasData - Texture atlas frames data. + * @param {string} [atlasType='xml'] - The format of the texture atlas ( 'json' or 'xml' ). * @param {number} [xSpacing=0] - If you'd like to add additional horizontal spacing between the characters then set the pixel value here. * @param {number} [ySpacing=0] - If you'd like to add additional vertical spacing between the lines then set the pixel value here. */ @@ -43172,7 +38066,10 @@ Phaser.Cache.prototype = { font: null, base: new PIXI.BaseTexture(data) }; - + + if (xSpacing === undefined) { xSpacing = 0; } + if (ySpacing === undefined) { ySpacing = 0; } + if (atlasType === 'json') { obj.font = Phaser.LoaderParser.jsonBitmapFont(atlasData, obj.base, xSpacing, ySpacing); @@ -43326,6 +38223,10 @@ Phaser.Cache.prototype = { { obj.frameData = Phaser.AnimationParser.XMLData(this.game, atlasData, key); } + else if (format === Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL) + { + obj.frameData = Phaser.AnimationParser.JSONDataPyxel(this.game, atlasData, key); + } else { // Let's just work it out from the frames array @@ -43708,7 +38609,7 @@ Phaser.Cache.prototype = { /** * Get an item from a cache based on the given key and property. - * + * * This method is mostly used internally by other Cache methods such as `getImage` but is exposed * publicly for your own use as well. * @@ -43739,16 +38640,16 @@ Phaser.Cache.prototype = { return this._cacheMap[cache][key][property]; } } - + return null; }, /** * Gets a Canvas object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getCanvas @@ -43763,13 +38664,13 @@ Phaser.Cache.prototype = { /** * Gets a Image object from the cache. This returns a DOM Image object, not a Phaser.Image object. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * Only the Image cache is searched, which covers images loaded via Loader.image, Sprite Sheets and Texture Atlases. - * + * * If you need the image used by a bitmap font or similar then please use those respective 'get' methods. * * @method Phaser.Cache#getImage @@ -43806,7 +38707,7 @@ Phaser.Cache.prototype = { /** * Get a single texture frame by key. - * + * * You'd only do this to get the default Frame created for a non-atlas / spritesheet image. * * @method Phaser.Cache#getTextureFrame @@ -43821,9 +38722,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.Sound object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getSound @@ -43838,9 +38739,9 @@ Phaser.Cache.prototype = { /** * Gets a raw Sound data object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getSoundData @@ -43855,9 +38756,9 @@ Phaser.Cache.prototype = { /** * Gets a Text object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getText @@ -43872,11 +38773,11 @@ Phaser.Cache.prototype = { /** * Gets a Physics Data object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * You can get either the entire data set, a single object or a single fixture of an object from it. * * @method Phaser.Cache#getPhysicsData @@ -43934,9 +38835,9 @@ Phaser.Cache.prototype = { /** * Gets a raw Tilemap data object from the cache. This will be in either CSV or JSON format. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getTilemapData @@ -43951,9 +38852,9 @@ Phaser.Cache.prototype = { /** * Gets a binary object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBinary @@ -43968,9 +38869,9 @@ Phaser.Cache.prototype = { /** * Gets a BitmapData object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBitmapData @@ -43985,9 +38886,9 @@ Phaser.Cache.prototype = { /** * Gets a Bitmap Font object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBitmapFont @@ -44002,11 +38903,11 @@ Phaser.Cache.prototype = { /** * Gets a JSON object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * You can either return the object by reference (the default), or return a clone * of it by setting the `clone` argument to `true`. * @@ -44039,9 +38940,9 @@ Phaser.Cache.prototype = { /** * Gets an XML object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getXML @@ -44056,9 +38957,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.Video object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getVideo @@ -44073,9 +38974,9 @@ Phaser.Cache.prototype = { /** * Gets a fragment shader object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getShader @@ -44090,9 +38991,9 @@ Phaser.Cache.prototype = { /** * Gets a RenderTexture object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getRenderTexture @@ -44166,9 +39067,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.FrameData object from the Image Cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getFrameData @@ -44302,7 +39203,7 @@ Phaser.Cache.prototype = { /** * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * + * * If the texture isn't found in the cache, then it searches the Phaser Image Cache. * * @method Phaser.Cache#getPixiBaseTexture @@ -44406,7 +39307,7 @@ Phaser.Cache.prototype = { /** * Removes an image from the cache. - * + * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere @@ -44817,18 +39718,18 @@ Phaser.Loader = function (game) { /** * The value of `path`, if set, is placed before any _relative_ file path given. For example: - * + * * `load.path = "images/sprites/"; * load.image("ball", "ball.png"); * load.image("tree", "level1/oaktree.png"); * load.image("boom", "http://server.com/explode.png");` * - * Would load the `ball` file from `images/sprites/ball.png` and the tree from - * `images/sprites/level1/oaktree.png` but the file `boom` would load from the URL + * Would load the `ball` file from `images/sprites/ball.png` and the tree from + * `images/sprites/level1/oaktree.png` but the file `boom` would load from the URL * given as it's an absolute URL. * * Please note that the path is added before the filename but *after* the baseURL (if set.) - * + * * The string _must_ end with a "/". * * @property {string} path @@ -44879,11 +39780,11 @@ Phaser.Loader = function (game) { * progress, file key, success?, total loaded files, total files * * Where progress is a number between 1 and 100 (inclusive) representing the percentage of the load. - * + * * @property {Phaser.Signal} onFileComplete */ this.onFileComplete = new Phaser.Signal(); - + /** * This event is dispatched when a file (or pack) errors as a result of the load request. * @@ -44990,7 +39891,7 @@ Phaser.Loader = function (game) { * @private */ this._totalFileCount = 0; - + /** * Total packs loaded - adjusted just prior to `onPackComplete`. * @property {integer} _loadedPackCount @@ -45037,6 +39938,12 @@ Phaser.Loader.PHYSICS_LIME_CORONA_JSON = 3; */ Phaser.Loader.PHYSICS_PHASER_JSON = 4; +/** +* @constant +* @type {number} +*/ +Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL = 5; + Phaser.Loader.prototype = { /** @@ -45225,14 +40132,14 @@ Phaser.Loader.prototype = { * @param {string} key - The unique Cache ID key of this resource. * @param {string} [url] - The URL the asset will be loaded from. * @param {object} [properties=(none)] - Any additional properties needed to load the file. These are added directly to the added file object and overwrite any defaults. - * @param {boolean} [overwrite=false] - If true then this will overwrite a file asset of the same type/key. Otherwise it will will only add a new asset. If overwrite is true, and the asset is already being loaded (or has been loaded), then it is appended instead. + * @param {boolean} [overwrite=false] - If true then this will overwrite a file asset of the same type/key. Otherwise it will only add a new asset. If overwrite is true, and the asset is already being loaded (or has been loaded), then it is appended instead. * @param {string} [extension] - If no URL is given the Loader will sometimes auto-generate the URL based on the key, using this as the extension. * @return {Phaser.Loader} This instance of the Phaser Loader. */ addToFileList: function (type, key, url, properties, overwrite, extension) { if (overwrite === undefined) { overwrite = false; } - + if (key === undefined || key === '') { console.warn("Phaser.Loader: Invalid or no key given of type " + type); @@ -45273,7 +40180,7 @@ Phaser.Loader.prototype = { } var fileIndex = this.getAssetIndex(type, key); - + if (overwrite && fileIndex > -1) { var currentFile = this._fileList[fileIndex]; @@ -45321,10 +40228,10 @@ Phaser.Loader.prototype = { * Please see the example 'loader/asset pack' in the Phaser Examples repository. * * Packs are always put before the first non-pack file that is not loaded / loading. - * + * * This means that all packs added before any loading has started are added to the front * of the file queue, in the order added. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * The URL of the packfile can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. @@ -45369,13 +40276,13 @@ Phaser.Loader.prototype = { { data = JSON.parse(data); } - + pack.data = data || {}; // Already consider 'loaded' pack.loaded = true; } - + // Add before first non-pack/no-loaded ~ last pack from start prior to loading // (Read one past for splice-to-end) for (var i = 0; i < this._fileList.length + 1; i++) @@ -45396,17 +40303,17 @@ Phaser.Loader.prototype = { /** * Adds an Image to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * Phaser can load all common image types: png, jpg, gif and any other format the browser can natively handle. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the image via `Cache.getImage(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -45427,17 +40334,17 @@ Phaser.Loader.prototype = { * Adds an array of images to the current load queue. * * It works by passing each element of the array to the Loader.image method. - * + * * The files are **not** loaded immediately after calling this method. The files are added to the queue ready to be loaded when the loader starts. - * + * * Phaser can load all common image types: png, jpg, gif and any other format the browser can natively handle. - * + * * The keys must be unique Strings. They are used to add the files to the Phaser.Cache upon successful load. * * Retrieve the images via `Cache.getImage(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -45470,15 +40377,15 @@ Phaser.Loader.prototype = { /** * Adds a Text file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getText(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.txt". It will always add `.txt` as the extension. * If you do not desire this action then provide a URL. @@ -45497,16 +40404,16 @@ Phaser.Loader.prototype = { /** * Adds a JSON file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getJSON(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.json". It will always add `.json` as the extension. * If you do not desire this action then provide a URL. @@ -45525,15 +40432,15 @@ Phaser.Loader.prototype = { /** * Adds a fragment shader file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getShader(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "blur" * and no URL is given then the Loader will set the URL to be "blur.frag". It will always add `.frag` as the extension. * If you do not desire this action then provide a URL. @@ -45552,15 +40459,15 @@ Phaser.Loader.prototype = { /** * Adds an XML file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getXML(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.xml". It will always add `.xml` as the extension. * If you do not desire this action then provide a URL. @@ -45579,13 +40486,13 @@ Phaser.Loader.prototype = { /** * Adds a JavaScript file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.js". It will always add `.js` as the extension. * If you do not desire this action then provide a URL. @@ -45614,15 +40521,15 @@ Phaser.Loader.prototype = { /** * Adds a binary file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getBinary(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.bin". It will always add `.bin` as the extension. * If you do not desire this action then provide a URL. @@ -45652,22 +40559,22 @@ Phaser.Loader.prototype = { /** * Adds a Sprite Sheet to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. * * To clarify the terminology that Phaser uses: A Sprite Sheet is an image containing frames, usually of an animation, that are all equal - * dimensions and often in sequence. For example if the frame size is 32x32 then every frame in the sprite sheet will be that size. + * dimensions and often in sequence. For example if the frame size is 32x32 then every frame in the sprite sheet will be that size. * Sometimes (outside of Phaser) the term "sprite sheet" is used to refer to a texture atlas. * A Texture Atlas works by packing together images as best it can, using whatever frame sizes it likes, often with cropping and trimming * the frames in the process. Software such as Texture Packer, Flash CC or Shoebox all generate texture atlases, not sprite sheets. * If you've got an atlas then use `Loader.atlas` instead. - * + * * The key must be a unique String. It is used to add the image to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getImage(key)`. Sprite sheets, being image based, live in the same Cache as all other Images. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -45694,13 +40601,13 @@ Phaser.Loader.prototype = { /** * Adds an audio file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getSound(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * Mobile warning: There are some mobile devices (certain iPad 2 and iPad Mini revisions) that cannot play 48000 Hz audio. @@ -45737,17 +40644,17 @@ Phaser.Loader.prototype = { /** * Adds an audio sprite file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Audio Sprites are a combination of audio files and a JSON configuration. - * + * * The JSON follows the format of that created by https://github.com/tonistiigi/audiosprite - * + * * Retrieve the file via `Cache.getSoundData(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * @method Phaser.Loader#audiosprite @@ -45797,13 +40704,13 @@ Phaser.Loader.prototype = { /** * Adds a video file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getVideo(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * You don't need to preload a video in order to play it in your game. See `Video.createVideoFromURL` for details. @@ -45855,20 +40762,20 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `data` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If a URL is provided the file is **not** loaded immediately after calling this method, but is added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getTilemapData(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified and no data is given then the Loader will take the key and create a filename from that. * For example if the key is "level1" and no URL or data is given then the Loader will set the URL to be "level1.json". * If you set the format to be Tilemap.CSV it will set the URL to be "level1.csv" instead. - * + * * If you do not desire this action then provide a URL or data object. * * @method Phaser.Loader#tilemap @@ -45930,24 +40837,24 @@ Phaser.Loader.prototype = { * Adds a physics data file to the current load queue. * * The data must be in `Lime + Corona` JSON format. [Physics Editor](https://www.codeandweb.com) by code'n'web exports in this format natively. - * + * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `data` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If a URL is provided the file is **not** loaded immediately after calling this method, but is added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getJSON(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified and no data is given then the Loader will take the key and create a filename from that. * For example if the key is "alien" and no URL or data is given then the Loader will set the URL to be "alien.json". * It will always use `.json` as the extension. - * + * * If you do not desire this action then provide a URL or data object. * * @method Phaser.Loader#physics @@ -45989,7 +40896,7 @@ Phaser.Loader.prototype = { /** * Adds Bitmap Font files to the current load queue. - * + * * To create the Bitmap Font files you can use: * * BMFont (Windows, free): http://www.angelcode.com/products/bmfont/ @@ -45999,27 +40906,27 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to an xml file. * Or you can pass in an XML object or String via the `xmlData` parameter. * If you pass a String the data is automatically run through `Loader.parseXML` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getBitmapFont(key)`. XML files are automatically parsed upon load. * If you need to control when the XML is parsed then use `Loader.text` instead and parse the XML file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "megaFont" and textureURL is null then the Loader will set the URL to be "megaFont.png". - * The same is true for the xmlURL. If xmlURL isn't specified and no xmlData has been provided then the Loader will - * set the xmlURL to be the key. For example if the key is "megaFont" the xmlURL will be set to "megaFont.xml". - * + * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will + * set the atlasURL to be the key. For example if the key is "megaFont" the atlasURL will be set to "megaFont.xml". + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#bitmapFont * @param {string} key - Unique asset key of the bitmap font. * @param {string} textureURL - URL of the Bitmap Font texture file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "megaFont" then the URL will be "megaFont.png". - * @param {string} atlasURL - URL of the Bitmap Font atlas file (xml/json). + * @param {string} atlasURL - URL of the Bitmap Font atlas file (xml/json). If undefined or `null` AND `atlasData` is null, the url will be set to `.xml`, i.e. if `key` was "megaFont" then the URL will be "megaFont.xml". * @param {object} atlasData - An optional Bitmap Font atlas in string form (stringified xml/json). * @param {number} [xSpacing=0] - If you'd like to add additional horizontal spacing between the characters then set the pixel value here. * @param {number} [ySpacing=0] - If you'd like to add additional vertical spacing between the lines then set the pixel value here. @@ -46034,6 +40941,12 @@ Phaser.Loader.prototype = { if (atlasURL === undefined) { atlasURL = null; } if (atlasData === undefined) { atlasData = null; } + + if (atlasURL === null && atlasData === null) + { + atlasURL = key + '.xml'; + } + if (xSpacing === undefined) { xSpacing = 0; } if (ySpacing === undefined) { ySpacing = 0; } @@ -46069,39 +40982,40 @@ Phaser.Loader.prototype = { } return this; + }, /** * Adds a Texture Atlas file to the current load queue. * * Unlike `Loader.atlasJSONHash` this call expects the atlas data to be in a JSON Array format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) * [Shoebox](http://renderhjs.net/shoebox/) - * + * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasJSONArray @@ -46121,33 +41035,33 @@ Phaser.Loader.prototype = { * Adds a Texture Atlas file to the current load queue. * * Unlike `Loader.atlas` this call expects the atlas data to be in a JSON Hash format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) * [Shoebox](http://renderhjs.net/shoebox/) - * + * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasJSONHash @@ -46167,7 +41081,7 @@ Phaser.Loader.prototype = { * Adds a Texture Atlas file to the current load queue. * * This call expects the atlas data to be in the Starling XML data format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) @@ -46175,25 +41089,25 @@ Phaser.Loader.prototype = { * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. - * + * * You can choose to either load the data externally, by providing a URL to an xml file. * Or you can pass in an XML object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `Loader.parseXML` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. XML files are automatically parsed upon load. * If you need to control when the XML is parsed then use `Loader.text` instead and parse the XML file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.xml". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasXML @@ -46231,21 +41145,21 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlas @@ -46351,7 +41265,7 @@ Phaser.Loader.prototype = { /** * Add a synchronization point to a specific file/asset in the load queue. * - * This has no effect on already loaded assets. + * This has no effect on already loaded assets. * * @method Phaser.Loader#addSyncPoint * @param {string} type - The type of resource to turn into a sync point (image, audio, xml, etc). @@ -46455,7 +41369,7 @@ Phaser.Loader.prototype = { for (var i = 0; i < this._flightQueue.length; i++) { var file = this._flightQueue[i]; - + if (file.loaded || file.error) { this._flightQueue.splice(i, 1); @@ -46535,7 +41449,7 @@ Phaser.Loader.prototype = { this._flightQueue.push(file); file.loading = true; this.onFileStart.dispatch(this.progress, file.key, file.url); - + this.loadFile(file); } } @@ -46738,7 +41652,8 @@ Phaser.Loader.prototype = { /** * Transforms the asset URL. - * The default implementation prepends the baseURL if the url doesn't being with http or // + * + * The default implementation prepends the baseURL if the url doesn't begin with http or // * * @method Phaser.Loader#transformUrl * @protected @@ -46753,7 +41668,7 @@ Phaser.Loader.prototype = { return false; } - if (url.substr(0, 4) === 'http' || url.substr(0, 2) === '//') + if (url.match(/^(?:blob:|data:|http:\/\/|https:\/\/|\/\/)/)) { return url; } @@ -46885,7 +41800,7 @@ Phaser.Loader.prototype = { { file.data.crossOrigin = this.crossOrigin; } - + file.data.onload = function () { if (file.data.onload) { @@ -46905,7 +41820,7 @@ Phaser.Loader.prototype = { }; file.data.src = this.transformUrl(file.url, file); - + // Image is immediately-available/cached if (file.data.complete && file.data.width && file.data.height) { @@ -46928,7 +41843,7 @@ Phaser.Loader.prototype = { file.data.name = file.key; file.data.controls = false; file.data.autoplay = false; - + var videoLoadEvent = function () { file.data.removeEventListener(file.loadEvent, videoLoadEvent, false); @@ -46944,7 +41859,7 @@ Phaser.Loader.prototype = { file.data.canplay = false; _this.fileError(file); }; - + file.data.addEventListener(file.loadEvent, videoLoadEvent, false); file.data.src = this.transformUrl(file.url, file); @@ -46974,7 +41889,7 @@ Phaser.Loader.prototype = { { file.data = new Audio(); file.data.name = file.key; - + var playThroughEvent = function () { file.data.removeEventListener('canplaythrough', playThroughEvent, false); file.data.onerror = null; @@ -47082,7 +41997,7 @@ Phaser.Loader.prototype = { /** * Starts the xhr loader - using XDomainRequest. * This should _only_ be used with IE 9. Phaser does not support IE 8 and XDR is deprecated in IE 10. - * + * * This is designed specifically to use with asset file processing. * * @method Phaser.Loader#xhrLoad @@ -47303,7 +42218,7 @@ Phaser.Loader.prototype = { switch (file.type) { case 'packfile': - + // Pack data must never be false-ish after it is fetched without error var data = JSON.parse(xhr.responseText); file.data = data || {}; @@ -47330,7 +42245,7 @@ Phaser.Loader.prototype = { // Load the JSON or XML before carrying on with the next file loadNext = false; - if (file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_HASH) + if (file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_HASH || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL) { this.xhrLoad(file, this.transformUrl(file.atlasURL, file), 'text', this.jsonLoadComplete); } @@ -47392,7 +42307,7 @@ Phaser.Loader.prototype = { throw new Error("Phaser.Loader. Unable to parse video file as Blob: " + file.key); } } - + this.cache.addVideo(file.key, file.url, file.data, file.asBlob); break; @@ -47908,6 +42823,2379 @@ Phaser.SoundManager.prototype.unsetMute = function () {}; Phaser.SoundManager.prototype.constructor = Phaser.SoundManager; +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* @classdesc +* The ScaleManager object handles the the scaling, resizing, and alignment of the +* Game size and the game Display canvas. +* +* The Game size is the logical size of the game; the Display canvas has size as an HTML element. +* +* The calculations of these are heavily influenced by the bounding Parent size which is the computed +* dimensions of the Display canvas's Parent container/element - the _effective CSS rules of the +* canvas's Parent element play an important role_ in the operation of the ScaleManager. +* +* The Display canvas - or Game size, depending {@link #scaleMode} - is updated to best utilize the Parent size. +* When in Fullscreen mode or with {@link #parentIsWindow} the Parent size is that of the visual viewport (see {@link Phaser.ScaleManager#getParentBounds getParentBounds}). +* +* Parent and Display canvas containment guidelines: +* +* - Style the Parent element (of the game canvas) to control the Parent size and +* thus the Display canvas's size and layout. +* +* - The Parent element's CSS styles should _effectively_ apply maximum (and minimum) bounding behavior. +* +* - The Parent element should _not_ apply a padding as this is not accounted for. +* If a padding is required apply it to the Parent's parent or apply a margin to the Parent. +* If you need to add a border, margin or any other CSS around your game container, then use a parent element and +* apply the CSS to this instead, otherwise you'll be constantly resizing the shape of the game container. +* +* - The Display canvas layout CSS styles (i.e. margins, size) should not be altered/specified as +* they may be updated by the ScaleManager. +* +* @description +* Create a new ScaleManager object - this is done automatically by {@link Phaser.Game} +* +* The `width` and `height` constructor parameters can either be a number which represents pixels or a string that represents a percentage: e.g. `800` (for 800 pixels) or `"80%"` for 80%. +* +* @class +* @param {Phaser.Game} game - A reference to the currently running game. +* @param {number|string} width - The width of the game. See above. +* @param {number|string} height - The height of the game. See above. +*/ +Phaser.ScaleManager = function (game, width, height) { + + /** + * A reference to the currently running game. + * @property {Phaser.Game} game + * @protected + * @readonly + */ + this.game = game; + + /** + * Provides access to some cross-device DOM functions. + * @property {Phaser.DOM} dom + * @protected + * @readonly + */ + this.dom = Phaser.DOM; + + /** + * _EXPERIMENTAL:_ A responsive grid on which you can align game objects. + * @property {Phaser.FlexGrid} grid + * @public + */ + this.grid = null; + + /** + * Target width (in pixels) of the Display canvas. + * @property {number} width + * @readonly + */ + this.width = 0; + + /** + * Target height (in pixels) of the Display canvas. + * @property {number} height + * @readonly + */ + this.height = 0; + + /** + * Minimum width the canvas should be scaled to (in pixels). + * Change with {@link #setMinMax}. + * @property {?number} minWidth + * @readonly + * @protected + */ + this.minWidth = null; + + /** + * Maximum width the canvas should be scaled to (in pixels). + * If null it will scale to whatever width the browser can handle. + * Change with {@link #setMinMax}. + * @property {?number} maxWidth + * @readonly + * @protected + */ + this.maxWidth = null; + + /** + * Minimum height the canvas should be scaled to (in pixels). + * Change with {@link #setMinMax}. + * @property {?number} minHeight + * @readonly + * @protected + */ + this.minHeight = null; + + /** + * Maximum height the canvas should be scaled to (in pixels). + * If null it will scale to whatever height the browser can handle. + * Change with {@link #setMinMax}. + * @property {?number} maxHeight + * @readonly + * @protected + */ + this.maxHeight = null; + + /** + * The offset coordinates of the Display canvas from the top-left of the browser window. + * The is used internally by Phaser.Pointer (for Input) and possibly other types. + * @property {Phaser.Point} offset + * @readonly + * @protected + */ + this.offset = new Phaser.Point(); + + /** + * If true, the game should only run in a landscape orientation. + * Change with {@link #forceOrientation}. + * @property {boolean} forceLandscape + * @readonly + * @default + * @protected + */ + this.forceLandscape = false; + + /** + * If true, the game should only run in a portrait + * Change with {@link #forceOrientation}. + * @property {boolean} forcePortrait + * @readonly + * @default + * @protected + */ + this.forcePortrait = false; + + /** + * True if {@link #forceLandscape} or {@link #forcePortrait} are set and do not agree with the browser orientation. + * + * This value is not updated immediately. + * + * @property {boolean} incorrectOrientation + * @readonly + * @protected + */ + this.incorrectOrientation = false; + + /** + * See {@link #pageAlignHorizontally}. + * @property {boolean} _pageAlignHorizontally + * @private + */ + this._pageAlignHorizontally = false; + + /** + * See {@link #pageAlignVertically}. + * @property {boolean} _pageAlignVertically + * @private + */ + this._pageAlignVertically = false; + + /** + * This signal is dispatched when the orientation changes _or_ the validity of the current orientation changes. + * + * The signal is supplied with the following arguments: + * - `scale` - the ScaleManager object + * - `prevOrientation`, a string - The previous orientation as per {@link Phaser.ScaleManager#screenOrientation screenOrientation}. + * - `wasIncorrect`, a boolean - True if the previous orientation was last determined to be incorrect. + * + * Access the current orientation and validity with `scale.screenOrientation` and `scale.incorrectOrientation`. + * Thus the following tests can be done: + * + * // The orientation itself changed: + * scale.screenOrientation !== prevOrientation + * // The orientation just became incorrect: + * scale.incorrectOrientation && !wasIncorrect + * + * It is possible that this signal is triggered after {@link #forceOrientation} so the orientation + * correctness changes even if the orientation itself does not change. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} onOrientationChange + * @public + */ + this.onOrientationChange = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser enters an incorrect orientation, as defined by {@link #forceOrientation}. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} enterIncorrectOrientation + * @public + */ + this.enterIncorrectOrientation = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser leaves an incorrect orientation, as defined by {@link #forceOrientation}. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} leaveIncorrectOrientation + * @public + */ + this.leaveIncorrectOrientation = new Phaser.Signal(); + + /** + * If specified, this is the DOM element on which the Fullscreen API enter request will be invoked. + * The target element must have the correct CSS styling and contain the Display canvas. + * + * The elements style will be modified (ie. the width and height might be set to 100%) + * but it will not be added to, removed from, or repositioned within the DOM. + * An attempt is made to restore relevant style changes when fullscreen mode is left. + * + * For pre-2.2.0 behavior set `game.scale.fullScreenTarget = game.canvas`. + * + * @property {?DOMElement} fullScreenTarget + * @default + */ + this.fullScreenTarget = null; + + /** + * The fullscreen target, as created by {@link #createFullScreenTarget}. + * This is not set if {@link #fullScreenTarget} is used and is cleared when fullscreen mode ends. + * @property {?DOMElement} _createdFullScreenTarget + * @private + */ + this._createdFullScreenTarget = null; + + /** + * This signal is dispatched when fullscreen mode is ready to be initialized but + * before the fullscreen request. + * + * The signal is passed two arguments: `scale` (the ScaleManager), and an object in the form `{targetElement: DOMElement}`. + * + * The `targetElement` is the {@link #fullScreenTarget} element, + * if such is assigned, or a new element created by {@link #createFullScreenTarget}. + * + * Custom CSS styling or resets can be applied to `targetElement` as required. + * + * If `targetElement` is _not_ the same element as {@link #fullScreenTarget}: + * - After initialization the Display canvas is moved onto the `targetElement` for + * the duration of the fullscreen mode, and restored to it's original DOM location when fullscreen is exited. + * - The `targetElement` is moved/re-parented within the DOM and may have its CSS styles updated. + * + * The behavior of a pre-assigned target element is covered in {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget}. + * + * @property {Phaser.Signal} onFullScreenInit + * @public + */ + this.onFullScreenInit = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser enters or leaves fullscreen mode, if supported. + * + * The signal is supplied with a single argument: `scale` (the ScaleManager). Use `scale.isFullScreen` to determine + * if currently running in Fullscreen mode. + * + * @property {Phaser.Signal} onFullScreenChange + * @public + */ + this.onFullScreenChange = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser fails to enter fullscreen mode; + * or if the device does not support fullscreen mode and `startFullScreen` is invoked. + * + * The signal is supplied with a single argument: `scale` (the ScaleManager). + * + * @property {Phaser.Signal} onFullScreenError + * @public + */ + this.onFullScreenError = new Phaser.Signal(); + + /** + * The _last known_ orientation of the screen, as defined in the Window Screen Web API. + * See {@link Phaser.DOM.getScreenOrientation} for possible values. + * + * @property {string} screenOrientation + * @readonly + * @public + */ + this.screenOrientation = this.dom.getScreenOrientation(); + + /** + * The _current_ scale factor based on the game dimensions vs. the scaled dimensions. + * @property {Phaser.Point} scaleFactor + * @readonly + */ + this.scaleFactor = new Phaser.Point(1, 1); + + /** + * The _current_ inversed scale factor. The displayed dimensions divided by the game dimensions. + * @property {Phaser.Point} scaleFactorInversed + * @readonly + * @protected + */ + this.scaleFactorInversed = new Phaser.Point(1, 1); + + /** + * The Display canvas is aligned by adjusting the margins; the last margins are stored here. + * + * @property {Bounds-like} margin + * @readonly + * @protected + */ + this.margin = {left: 0, top: 0, right: 0, bottom: 0, x: 0, y: 0}; + + /** + * The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height. + * @property {Phaser.Rectangle} bounds + * @readonly + */ + this.bounds = new Phaser.Rectangle(); + + /** + * The aspect ratio of the scaled Display canvas. + * @property {number} aspectRatio + * @readonly + */ + this.aspectRatio = 0; + + /** + * The aspect ratio of the original game dimensions. + * @property {number} sourceAspectRatio + * @readonly + */ + this.sourceAspectRatio = 0; + + /** + * The native browser events from Fullscreen API changes. + * @property {any} event + * @readonly + * @private + */ + this.event = null; + + /** + * The edges on which to constrain the game Display/canvas in _addition_ to the restrictions of the parent container. + * + * The properties are strings and can be '', 'visual', 'layout', or 'layout-soft'. + * - If 'visual', the edge will be constrained to the Window / displayed screen area + * - If 'layout', the edge will be constrained to the CSS Layout bounds + * - An invalid value is treated as 'visual' + * + * @member + * @property {string} bottom + * @property {string} right + * @default + */ + this.windowConstraints = { + right: 'layout', + bottom: '' + }; + + /** + * Various compatibility settings. + * A value of "(auto)" indicates the setting is configured based on device and runtime information. + * + * A {@link #refresh} may need to be performed after making changes. + * + * @protected + * + * @property {boolean} [supportsFullscreen=(auto)] - True only if fullscreen support will be used. (Changing to fullscreen still might not work.) + * + * @property {boolean} [orientationFallback=(auto)] - See {@link Phaser.DOM.getScreenOrientation}. + * + * @property {boolean} [noMargins=false] - If true then the Display canvas's margins will not be updated anymore: existing margins must be manually cleared. Disabling margins prevents automatic canvas alignment/centering, possibly in fullscreen. + * + * @property {?Phaser.Point} [scrollTo=(auto)] - If specified the window will be scrolled to this position on every refresh. + * + * @property {boolean} [forceMinimumDocumentHeight=false] - If enabled the document elements minimum height is explicitly set on updates. + * The height set varies by device and may either be the height of the window or the viewport. + * + * @property {boolean} [canExpandParent=true] - If enabled then SHOW_ALL and USER_SCALE modes can try and expand the parent element. It may be necessary for the parent element to impose CSS width/height restrictions. + * + * @property {string} [clickTrampoline=(auto)] - On certain browsers (eg. IE) FullScreen events need to be triggered via 'click' events. + * A value of 'when-not-mouse' uses a click trampoline when a pointer that is not the primary mouse is used. + * Any other string value (including the empty string) prevents using click trampolines. + * For more details on click trampolines see {@link Phaser.Pointer#addClickTrampoline}. + */ + this.compatibility = { + supportsFullScreen: false, + orientationFallback: null, + noMargins: false, + scrollTo: null, + forceMinimumDocumentHeight: false, + canExpandParent: true, + clickTrampoline: '' + }; + + /** + * Scale mode to be used when not in fullscreen. + * @property {number} _scaleMode + * @private + */ + this._scaleMode = Phaser.ScaleManager.NO_SCALE; + + /* + * Scale mode to be used in fullscreen. + * @property {number} _fullScreenScaleMode + * @private + */ + this._fullScreenScaleMode = Phaser.ScaleManager.NO_SCALE; + + /** + * If the parent container of the Game canvas is the browser window itself (i.e. document.body), + * rather than another div, this should set to `true`. + * + * The {@link #parentNode} property is generally ignored while this is in effect. + * + * @property {boolean} parentIsWindow + */ + this.parentIsWindow = false; + + /** + * The _original_ DOM element for the parent of the Display canvas. + * This may be different in fullscreen - see {@link #createFullScreenTarget}. + * + * This should only be changed after moving the Game canvas to a different DOM parent. + * + * @property {?DOMElement} parentNode + */ + this.parentNode = null; + + /** + * The scale of the game in relation to its parent container. + * @property {Phaser.Point} parentScaleFactor + * @readonly + */ + this.parentScaleFactor = new Phaser.Point(1, 1); + + /** + * The maximum time (in ms) between dimension update checks for the Canvas's parent element (or window). + * Update checks normally happen quicker in response to other events. + * + * @property {integer} trackParentInterval + * @default + * @protected + * @see {@link Phaser.ScaleManager#refresh refresh} + */ + this.trackParentInterval = 2000; + + /** + * This signal is dispatched when the size of the Display canvas changes _or_ the size of the Game changes. + * When invoked this is done _after_ the Canvas size/position have been updated. + * + * This signal is _only_ called when a change occurs and a reflow may be required. + * For example, if the canvas does not change sizes because of CSS settings (such as min-width) + * then this signal will _not_ be triggered. + * + * Use this to handle responsive game layout options. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} onSizeChange + * @todo Formalize the arguments, if any, supplied to this signal. + */ + this.onSizeChange = new Phaser.Signal(); + + /** + * The callback that will be called each the parent container resizes. + * @property {function} onResize + * @private + */ + this.onResize = null; + + /** + * The context in which the {@link #onResize} callback will be called. + * @property {object} onResizeContext + * @private + */ + this.onResizeContext = null; + + /** + * @property {integer} _pendingScaleMode - Used to retain the scale mode if set from config before Boot. + * @private + */ + this._pendingScaleMode = null; + + /** + * Information saved when fullscreen mode is started. + * @property {?object} _fullScreenRestore + * @private + */ + this._fullScreenRestore = null; + + /** + * The _actual_ game dimensions, as initially set or set by {@link #setGameSize}. + * @property {Phaser.Rectangle} _gameSize + * @private + */ + this._gameSize = new Phaser.Rectangle(); + + /** + * The user-supplied scale factor, used with the USER_SCALE scaling mode. + * @property {Phaser.Point} _userScaleFactor + * @private + */ + this._userScaleFactor = new Phaser.Point(1, 1); + + /** + * The user-supplied scale trim, used with the USER_SCALE scaling mode. + * @property {Phaser.Point} _userScaleTrim + * @private + */ + this._userScaleTrim = new Phaser.Point(0, 0); + + /** + * The last time the bounds were checked in `preUpdate`. + * @property {number} _lastUpdate + * @private + */ + this._lastUpdate = 0; + + /** + * Size checks updates are delayed according to the throttle. + * The throttle increases to `trackParentInterval` over time and is used to more + * rapidly detect changes in certain browsers (eg. IE) while providing back-off safety. + * @property {integer} _updateThrottle + * @private + */ + this._updateThrottle = 0; + + /** + * The minimum throttle allowed until it has slowed down sufficiently. + * @property {integer} _updateThrottleReset + * @private + */ + this._updateThrottleReset = 100; + + /** + * The cached result of the parent (possibly window) bounds; used to invalidate sizing. + * @property {Phaser.Rectangle} _parentBounds + * @private + */ + this._parentBounds = new Phaser.Rectangle(); + + /** + * Temporary bounds used for internal work to cut down on new objects created. + * @property {Phaser.Rectangle} _parentBounds + * @private + */ + this._tempBounds = new Phaser.Rectangle(); + + /** + * The Canvas size at which the last onSizeChange signal was triggered. + * @property {Phaser.Rectangle} _lastReportedCanvasSize + * @private + */ + this._lastReportedCanvasSize = new Phaser.Rectangle(); + + /** + * The Game size at which the last onSizeChange signal was triggered. + * @property {Phaser.Rectangle} _lastReportedGameSize + * @private + */ + this._lastReportedGameSize = new Phaser.Rectangle(); + + /** + * @property {boolean} _booted - ScaleManager booted state. + * @private + */ + this._booted = false; + + if (game.config) + { + this.parseConfig(game.config); + } + + this.setupScale(width, height); + +}; + +/** +* A scale mode that stretches content to fill all available space - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.EXACT_FIT = 0; + +/** +* A scale mode that prevents any scaling - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.NO_SCALE = 1; + +/** +* A scale mode that shows the entire game while maintaining proportions - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.SHOW_ALL = 2; + +/** +* A scale mode that causes the Game size to change - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.RESIZE = 3; + +/** +* A scale mode that allows a custom scale factor - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.USER_SCALE = 4; + +Phaser.ScaleManager.prototype = { + + /** + * Start the ScaleManager. + * + * @method Phaser.ScaleManager#boot + * @protected + */ + boot: function () { + + // Configure device-dependent compatibility + + var compat = this.compatibility; + + compat.supportsFullScreen = this.game.device.fullscreen && !this.game.device.cocoonJS; + + // We can't do anything about the status bars in iPads, web apps or desktops + if (!this.game.device.iPad && !this.game.device.webApp && !this.game.device.desktop) + { + if (this.game.device.android && !this.game.device.chrome) + { + compat.scrollTo = new Phaser.Point(0, 1); + } + else + { + compat.scrollTo = new Phaser.Point(0, 0); + } + } + + if (this.game.device.desktop) + { + compat.orientationFallback = 'screen'; + compat.clickTrampoline = 'when-not-mouse'; + } + else + { + compat.orientationFallback = ''; + compat.clickTrampoline = ''; + } + + // Configure event listeners + + var _this = this; + + this._orientationChange = function(event) { + return _this.orientationChange(event); + }; + + this._windowResize = function(event) { + return _this.windowResize(event); + }; + + // This does not appear to be on the standards track + window.addEventListener('orientationchange', this._orientationChange, false); + window.addEventListener('resize', this._windowResize, false); + + if (this.compatibility.supportsFullScreen) + { + this._fullScreenChange = function(event) { + return _this.fullScreenChange(event); + }; + + this._fullScreenError = function(event) { + return _this.fullScreenError(event); + }; + + document.addEventListener('webkitfullscreenchange', this._fullScreenChange, false); + document.addEventListener('mozfullscreenchange', this._fullScreenChange, false); + document.addEventListener('MSFullscreenChange', this._fullScreenChange, false); + document.addEventListener('fullscreenchange', this._fullScreenChange, false); + + document.addEventListener('webkitfullscreenerror', this._fullScreenError, false); + document.addEventListener('mozfullscreenerror', this._fullScreenError, false); + document.addEventListener('MSFullscreenError', this._fullScreenError, false); + document.addEventListener('fullscreenerror', this._fullScreenError, false); + } + + this.game.onResume.add(this._gameResumed, this); + + // Initialize core bounds + + this.dom.getOffset(this.game.canvas, this.offset); + + this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); + + this.setGameSize(this.game.width, this.game.height); + + // Don't use updateOrientationState so events are not fired + this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); + + if (Phaser.FlexGrid) + { + this.grid = new Phaser.FlexGrid(this, this.width, this.height); + } + + this._booted = true; + + if (this._pendingScaleMode) + { + this.scaleMode = this._pendingScaleMode; + this._pendingScaleMode = null; + } + + }, + + /** + * Load configuration settings. + * + * @method Phaser.ScaleManager#parseConfig + * @protected + * @param {object} config - The game configuration object. + */ + parseConfig: function (config) { + + if (config['scaleMode']) + { + if (this._booted) + { + this.scaleMode = config['scaleMode']; + } + else + { + this._pendingScaleMode = config['scaleMode']; + } + } + + if (config['fullScreenScaleMode']) + { + this.fullScreenScaleMode = config['fullScreenScaleMode']; + } + + if (config['fullScreenTarget']) + { + this.fullScreenTarget = config['fullScreenTarget']; + } + + }, + + /** + * Calculates and sets the game dimensions based on the given width and height. + * + * This should _not_ be called when in fullscreen mode. + * + * @method Phaser.ScaleManager#setupScale + * @protected + * @param {number|string} width - The width of the game. + * @param {number|string} height - The height of the game. + */ + setupScale: function (width, height) { + + var target; + var rect = new Phaser.Rectangle(); + + if (this.game.parent !== '') + { + if (typeof this.game.parent === 'string') + { + // hopefully an element ID + target = document.getElementById(this.game.parent); + } + else if (this.game.parent && this.game.parent.nodeType === 1) + { + // quick test for a HTMLelement + target = this.game.parent; + } + } + + // Fallback, covers an invalid ID and a non HTMLelement object + if (!target) + { + // Use the full window + this.parentNode = null; + this.parentIsWindow = true; + + rect.width = this.dom.visualBounds.width; + rect.height = this.dom.visualBounds.height; + + this.offset.set(0, 0); + } + else + { + this.parentNode = target; + this.parentIsWindow = false; + + this.getParentBounds(this._parentBounds); + + rect.width = this._parentBounds.width; + rect.height = this._parentBounds.height; + + this.offset.set(this._parentBounds.x, this._parentBounds.y); + } + + var newWidth = 0; + var newHeight = 0; + + if (typeof width === 'number') + { + newWidth = width; + } + else + { + // Percentage based + this.parentScaleFactor.x = parseInt(width, 10) / 100; + newWidth = rect.width * this.parentScaleFactor.x; + } + + if (typeof height === 'number') + { + newHeight = height; + } + else + { + // Percentage based + this.parentScaleFactor.y = parseInt(height, 10) / 100; + newHeight = rect.height * this.parentScaleFactor.y; + } + + this._gameSize.setTo(0, 0, newWidth, newHeight); + + this.updateDimensions(newWidth, newHeight, false); + + }, + + /** + * Invoked when the game is resumed. + * + * @method Phaser.ScaleManager#_gameResumed + * @private + */ + _gameResumed: function () { + + this.queueUpdate(true); + + }, + + /** + * Set the actual Game size. + * Use this instead of directly changing `game.width` or `game.height`. + * + * The actual physical display (Canvas element size) depends on various settings including + * - Scale mode + * - Scaling factor + * - Size of Canvas's parent element or CSS rules such as min-height/max-height; + * - The size of the Window + * + * @method Phaser.ScaleManager#setGameSize + * @public + * @param {integer} width - _Game width_, in pixels. + * @param {integer} height - _Game height_, in pixels. + */ + setGameSize: function (width, height) { + + this._gameSize.setTo(0, 0, width, height); + + if (this.currentScaleMode !== Phaser.ScaleManager.RESIZE) + { + this.updateDimensions(width, height, true); + } + + this.queueUpdate(true); + + }, + + /** + * Set a User scaling factor used in the USER_SCALE scaling mode. + * + * The target canvas size is computed by: + * + * canvas.width = (game.width * hScale) - hTrim + * canvas.height = (game.height * vScale) - vTrim + * + * This method can be used in the {@link Phaser.ScaleManager#setResizeCallback resize callback}. + * + * @method Phaser.ScaleManager#setUserScale + * @param {number} hScale - Horizontal scaling factor. + * @param {numer} vScale - Vertical scaling factor. + * @param {integer} [hTrim=0] - Horizontal trim, applied after scaling. + * @param {integer} [vTrim=0] - Vertical trim, applied after scaling. + */ + setUserScale: function (hScale, vScale, hTrim, vTrim) { + + this._userScaleFactor.setTo(hScale, vScale); + this._userScaleTrim.setTo(hTrim | 0, vTrim | 0); + this.queueUpdate(true); + + }, + + /** + * Sets the callback that will be invoked before sizing calculations. + * + * This is the appropriate place to call {@link #setUserScale} if needing custom dynamic scaling. + * + * The callback is supplied with two arguments `scale` and `parentBounds` where `scale` is the ScaleManager + * and `parentBounds`, a Phaser.Rectangle, is the size of the Parent element. + * + * This callback + * - May be invoked even though the parent container or canvas sizes have not changed + * - Unlike {@link #onSizeChange}, it runs _before_ the canvas is guaranteed to be updated + * - Will be invoked from `preUpdate`, _even when_ the game is paused + * + * See {@link #onSizeChange} for a better way of reacting to layout updates. + * + * @method Phaser.ScaleManager#setResizeCallback + * @public + * @param {function} callback - The callback that will be called each time a window.resize event happens or if set, the parent container resizes. + * @param {object} context - The context in which the callback will be called. + */ + setResizeCallback: function (callback, context) { + + this.onResize = callback; + this.onResizeContext = context; + + }, + + /** + * Signals a resize - IF the canvas or Game size differs from the last signal. + * + * This also triggers updates on {@link #grid} (FlexGrid) and, if in a RESIZE mode, `game.state` (StateManager). + * + * @method Phaser.ScaleManager#signalSizeChange + * @private + */ + signalSizeChange: function () { + + if (!Phaser.Rectangle.sameDimensions(this, this._lastReportedCanvasSize) || + !Phaser.Rectangle.sameDimensions(this.game, this._lastReportedGameSize)) + { + var width = this.width; + var height = this.height; + + this._lastReportedCanvasSize.setTo(0, 0, width, height); + this._lastReportedGameSize.setTo(0, 0, this.game.width, this.game.height); + + if (this.grid) + { + this.grid.onResize(width, height); + } + + this.onSizeChange.dispatch(this, width, height); + + // Per StateManager#onResizeCallback, it only occurs when in RESIZE mode. + if (this.currentScaleMode === Phaser.ScaleManager.RESIZE) + { + this.game.state.resize(width, height); + this.game.load.resize(width, height); + } + } + + }, + + /** + * Set the min and max dimensions for the Display canvas. + * + * _Note:_ The min/max dimensions are only applied in some cases + * - When the device is not in an incorrect orientation; or + * - The scale mode is EXACT_FIT when not in fullscreen + * + * @method Phaser.ScaleManager#setMinMax + * @public + * @param {number} minWidth - The minimum width the game is allowed to scale down to. + * @param {number} minHeight - The minimum height the game is allowed to scale down to. + * @param {number} [maxWidth] - The maximum width the game is allowed to scale up to; only changed if specified. + * @param {number} [maxHeight] - The maximum height the game is allowed to scale up to; only changed if specified. + * @todo These values are only sometimes honored. + */ + setMinMax: function (minWidth, minHeight, maxWidth, maxHeight) { + + this.minWidth = minWidth; + this.minHeight = minHeight; + + if (typeof maxWidth !== 'undefined') + { + this.maxWidth = maxWidth; + } + + if (typeof maxHeight !== 'undefined') + { + this.maxHeight = maxHeight; + } + + }, + + /** + * The ScaleManager.preUpdate is called automatically by the core Game loop. + * + * @method Phaser.ScaleManager#preUpdate + * @protected + */ + preUpdate: function () { + + if (this.game.time.time < (this._lastUpdate + this._updateThrottle)) + { + return; + } + + var prevThrottle = this._updateThrottle; + this._updateThrottleReset = prevThrottle >= 400 ? 0 : 100; + + this.dom.getOffset(this.game.canvas, this.offset); + + var prevWidth = this._parentBounds.width; + var prevHeight = this._parentBounds.height; + var bounds = this.getParentBounds(this._parentBounds); + + var boundsChanged = bounds.width !== prevWidth || bounds.height !== prevHeight; + + // Always invalidate on a newly detected orientation change + var orientationChanged = this.updateOrientationState(); + + if (boundsChanged || orientationChanged) + { + if (this.onResize) + { + this.onResize.call(this.onResizeContext, this, bounds); + } + + this.updateLayout(); + + this.signalSizeChange(); + } + + // Next throttle, eg. 25, 50, 100, 200.. + var throttle = this._updateThrottle * 2; + + // Don't let an update be too eager about resetting the throttle. + if (this._updateThrottle < prevThrottle) + { + throttle = Math.min(prevThrottle, this._updateThrottleReset); + } + + this._updateThrottle = Phaser.Math.clamp(throttle, 25, this.trackParentInterval); + this._lastUpdate = this.game.time.time; + + }, + + /** + * Update method while paused. + * + * @method Phaser.ScaleManager#pauseUpdate + * @private + */ + pauseUpdate: function () { + + this.preUpdate(); + + // Updates at slowest. + this._updateThrottle = this.trackParentInterval; + + }, + + /** + * Update the dimensions taking the parent scaling factor into account. + * + * @method Phaser.ScaleManager#updateDimensions + * @private + * @param {number} width - The new width of the parent container. + * @param {number} height - The new height of the parent container. + * @param {boolean} resize - True if the renderer should be resized, otherwise false to just update the internal vars. + */ + updateDimensions: function (width, height, resize) { + + this.width = width * this.parentScaleFactor.x; + this.height = height * this.parentScaleFactor.y; + + this.game.width = this.width; + this.game.height = this.height; + + this.sourceAspectRatio = this.width / this.height; + this.updateScalingAndBounds(); + + if (resize) + { + // Resize the renderer (which in turn resizes the Display canvas!) + this.game.renderer.resize(this.width, this.height); + + // The Camera can never be smaller than the Game size + this.game.camera.setSize(this.width, this.height); + + // This should only happen if the world is smaller than the new canvas size + this.game.world.resize(this.width, this.height); + } + + }, + + /** + * Update relevant scaling values based on the ScaleManager dimension and game dimensions, + * which should already be set. This does not change {@link #sourceAspectRatio}. + * + * @method Phaser.ScaleManager#updateScalingAndBounds + * @private + */ + updateScalingAndBounds: function () { + + this.scaleFactor.x = this.game.width / this.width; + this.scaleFactor.y = this.game.height / this.height; + + this.scaleFactorInversed.x = this.width / this.game.width; + this.scaleFactorInversed.y = this.height / this.game.height; + + this.aspectRatio = this.width / this.height; + + // This can be invoked in boot pre-canvas + if (this.game.canvas) + { + this.dom.getOffset(this.game.canvas, this.offset); + } + + this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); + + // Can be invoked in boot pre-input + if (this.game.input && this.game.input.scale) + { + this.game.input.scale.setTo(this.scaleFactor.x, this.scaleFactor.y); + } + + }, + + /** + * Force the game to run in only one orientation. + * + * This enables generation of incorrect orientation signals and affects resizing but does not otherwise rotate or lock the orientation. + * + * Orientation checks are performed via the Screen Orientation API, if available in browser. This means it will check your monitor + * orientation on desktop, or your device orientation on mobile, rather than comparing actual game dimensions. If you need to check the + * viewport dimensions instead and bypass the Screen Orientation API then set: `ScaleManager.compatibility.orientationFallback = 'viewport'` + * + * @method Phaser.ScaleManager#forceOrientation + * @public + * @param {boolean} forceLandscape - true if the game should run in landscape mode only. + * @param {boolean} [forcePortrait=false] - true if the game should run in portrait mode only. + */ + forceOrientation: function (forceLandscape, forcePortrait) { + + if (forcePortrait === undefined) { forcePortrait = false; } + + this.forceLandscape = forceLandscape; + this.forcePortrait = forcePortrait; + + this.queueUpdate(true); + + }, + + /** + * Classify the orientation, per `getScreenOrientation`. + * + * @method Phaser.ScaleManager#classifyOrientation + * @private + * @param {string} orientation - The orientation string, e.g. 'portrait-primary'. + * @return {?string} The classified orientation: 'portrait', 'landscape`, or null. + */ + classifyOrientation: function (orientation) { + + if (orientation === 'portrait-primary' || orientation === 'portrait-secondary') + { + return 'portrait'; + } + else if (orientation === 'landscape-primary' || orientation === 'landscape-secondary') + { + return 'landscape'; + } + else + { + return null; + } + + }, + + /** + * Updates the current orientation and dispatches orientation change events. + * + * @method Phaser.ScaleManager#updateOrientationState + * @private + * @return {boolean} True if the orientation state changed which means a forced update is likely required. + */ + updateOrientationState: function () { + + var previousOrientation = this.screenOrientation; + var previouslyIncorrect = this.incorrectOrientation; + + this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); + + this.incorrectOrientation = (this.forceLandscape && !this.isLandscape) || + (this.forcePortrait && !this.isPortrait); + + var changed = previousOrientation !== this.screenOrientation; + var correctnessChanged = previouslyIncorrect !== this.incorrectOrientation; + + if (correctnessChanged) + { + if (this.incorrectOrientation) + { + this.enterIncorrectOrientation.dispatch(); + } + else + { + this.leaveIncorrectOrientation.dispatch(); + } + } + + if (changed || correctnessChanged) + { + this.onOrientationChange.dispatch(this, previousOrientation, previouslyIncorrect); + } + + return changed || correctnessChanged; + + }, + + /** + * window.orientationchange event handler. + * + * @method Phaser.ScaleManager#orientationChange + * @private + * @param {Event} event - The orientationchange event data. + */ + orientationChange: function (event) { + + this.event = event; + + this.queueUpdate(true); + + }, + + /** + * window.resize event handler. + * + * @method Phaser.ScaleManager#windowResize + * @private + * @param {Event} event - The resize event data. + */ + windowResize: function (event) { + + this.event = event; + + this.queueUpdate(true); + + }, + + /** + * Scroll to the top - in some environments. See `compatibility.scrollTo`. + * + * @method Phaser.ScaleManager#scrollTop + * @private + */ + scrollTop: function () { + + var scrollTo = this.compatibility.scrollTo; + + if (scrollTo) + { + window.scrollTo(scrollTo.x, scrollTo.y); + } + + }, + + /** + * The "refresh" methods informs the ScaleManager that a layout refresh is required. + * + * The ScaleManager automatically queues a layout refresh (eg. updates the Game size or Display canvas layout) + * when the browser is resized, the orientation changes, or when there is a detected change + * of the Parent size. Refreshing is also done automatically when public properties, + * such as {@link #scaleMode}, are updated or state-changing methods are invoked. + * + * The "refresh" method _may_ need to be used in a few (rare) situtations when + * + * - a device change event is not correctly detected; or + * - the Parent size changes (and an immediate reflow is desired); or + * - the ScaleManager state is updated by non-standard means; or + * - certain {@link #compatibility} properties are manually changed. + * + * The queued layout refresh is not immediate but will run promptly in an upcoming `preRender`. + * + * @method Phaser.ScaleManager#refresh + * @public + */ + refresh: function () { + + this.scrollTop(); + this.queueUpdate(true); + + }, + + /** + * Updates the game / canvas position and size. + * + * @method Phaser.ScaleManager#updateLayout + * @private + */ + updateLayout: function () { + + var scaleMode = this.currentScaleMode; + + if (scaleMode === Phaser.ScaleManager.RESIZE) + { + this.reflowGame(); + return; + } + + this.scrollTop(); + + if (this.compatibility.forceMinimumDocumentHeight) + { + // (This came from older code, by why is it here?) + // Set minimum height of content to new window height + document.documentElement.style.minHeight = window.innerHeight + 'px'; + } + + if (this.incorrectOrientation) + { + this.setMaximum(); + } + else + { + if (scaleMode === Phaser.ScaleManager.EXACT_FIT) + { + this.setExactFit(); + } + else if (scaleMode === Phaser.ScaleManager.SHOW_ALL) + { + if (!this.isFullScreen && this.boundingParent && + this.compatibility.canExpandParent) + { + // Try to expand parent out, but choosing maximizing dimensions. + // Then select minimize dimensions which should then honor parent + // maximum bound applications. + this.setShowAll(true); + this.resetCanvas(); + this.setShowAll(); + } + else + { + this.setShowAll(); + } + } + else if (scaleMode === Phaser.ScaleManager.NO_SCALE) + { + this.width = this.game.width; + this.height = this.game.height; + } + else if (scaleMode === Phaser.ScaleManager.USER_SCALE) + { + this.width = (this.game.width * this._userScaleFactor.x) - this._userScaleTrim.x; + this.height = (this.game.height * this._userScaleFactor.y) - this._userScaleTrim.y; + } + } + + if (!this.compatibility.canExpandParent && + (scaleMode === Phaser.ScaleManager.SHOW_ALL || scaleMode === Phaser.ScaleManager.USER_SCALE)) + { + var bounds = this.getParentBounds(this._tempBounds); + this.width = Math.min(this.width, bounds.width); + this.height = Math.min(this.height, bounds.height); + } + + // Always truncate / force to integer + this.width = this.width | 0; + this.height = this.height | 0; + + this.reflowCanvas(); + + }, + + /** + * Returns the computed Parent size/bounds that the Display canvas is allowed/expected to fill. + * + * If in fullscreen mode or without parent (see {@link #parentIsWindow}), + * this will be the bounds of the visual viewport itself. + * + * This function takes the {@link #windowConstraints} into consideration - if the parent is partially outside + * the viewport then this function may return a smaller than expected size. + * + * Values are rounded to the nearest pixel. + * + * @method Phaser.ScaleManager#getParentBounds + * @protected + * @param {Phaser.Rectangle} [target=(new Rectangle)] - The rectangle to update; a new one is created as needed. + * @return {Phaser.Rectangle} The established parent bounds. + */ + getParentBounds: function (target) { + + var bounds = target || new Phaser.Rectangle(); + var parentNode = this.boundingParent; + var visualBounds = this.dom.visualBounds; + var layoutBounds = this.dom.layoutBounds; + + if (!parentNode) + { + bounds.setTo(0, 0, visualBounds.width, visualBounds.height); + } + else + { + // Ref. http://msdn.microsoft.com/en-us/library/hh781509(v=vs.85).aspx for getBoundingClientRect + var clientRect = parentNode.getBoundingClientRect(); + var parentRect = (parentNode.offsetParent) ? parentNode.offsetParent.getBoundingClientRect() : parentNode.getBoundingClientRect(); + + bounds.setTo(clientRect.left - parentRect.left, clientRect.top - parentRect.top, clientRect.width, clientRect.height); + + var wc = this.windowConstraints; + + if (wc.right) + { + var windowBounds = wc.right === 'layout' ? layoutBounds : visualBounds; + bounds.right = Math.min(bounds.right, windowBounds.width); + } + + if (wc.bottom) + { + var windowBounds = wc.bottom === 'layout' ? layoutBounds : visualBounds; + bounds.bottom = Math.min(bounds.bottom, windowBounds.height); + } + } + + bounds.setTo( + Math.round(bounds.x), Math.round(bounds.y), + Math.round(bounds.width), Math.round(bounds.height)); + + return bounds; + + }, + + /** + * Update the canvas position/margins - for alignment within the parent container. + * + * The canvas margins _must_ be reset/cleared prior to invoking this. + * + * @method Phaser.ScaleManager#alignCanvas + * @private + * @param {boolean} horizontal - Align horizontally? + * @param {boolean} vertical - Align vertically? + */ + alignCanvas: function (horizontal, vertical) { + + var parentBounds = this.getParentBounds(this._tempBounds); + var canvas = this.game.canvas; + var margin = this.margin; + + if (horizontal) + { + margin.left = margin.right = 0; + + var canvasBounds = canvas.getBoundingClientRect(); + + if (this.width < parentBounds.width && !this.incorrectOrientation) + { + var currentEdge = canvasBounds.left - parentBounds.x; + var targetEdge = (parentBounds.width / 2) - (this.width / 2); + + targetEdge = Math.max(targetEdge, 0); + + var offset = targetEdge - currentEdge; + + margin.left = Math.round(offset); + } + + canvas.style.marginLeft = margin.left + 'px'; + + if (margin.left !== 0) + { + margin.right = -(parentBounds.width - canvasBounds.width - margin.left); + canvas.style.marginRight = margin.right + 'px'; + } + } + + if (vertical) + { + margin.top = margin.bottom = 0; + + var canvasBounds = canvas.getBoundingClientRect(); + + if (this.height < parentBounds.height && !this.incorrectOrientation) + { + var currentEdge = canvasBounds.top - parentBounds.y; + var targetEdge = (parentBounds.height / 2) - (this.height / 2); + + targetEdge = Math.max(targetEdge, 0); + + var offset = targetEdge - currentEdge; + margin.top = Math.round(offset); + } + + canvas.style.marginTop = margin.top + 'px'; + + if (margin.top !== 0) + { + margin.bottom = -(parentBounds.height - canvasBounds.height - margin.top); + canvas.style.marginBottom = margin.bottom + 'px'; + } + } + + // Silly backwards compatibility.. + margin.x = margin.left; + margin.y = margin.top; + + }, + + /** + * Updates the Game state / size. + * + * The canvas margins may always be adjusted, even if alignment is not in effect. + * + * @method Phaser.ScaleManager#reflowGame + * @private + */ + reflowGame: function () { + + this.resetCanvas('', ''); + + var bounds = this.getParentBounds(this._tempBounds); + this.updateDimensions(bounds.width, bounds.height, true); + + }, + + /** + * Updates the Display canvas size. + * + * The canvas margins may always be adjusted, even alignment is not in effect. + * + * @method Phaser.ScaleManager#reflowCanvas + * @private + */ + reflowCanvas: function () { + + if (!this.incorrectOrientation) + { + this.width = Phaser.Math.clamp(this.width, this.minWidth || 0, this.maxWidth || this.width); + this.height = Phaser.Math.clamp(this.height, this.minHeight || 0, this.maxHeight || this.height); + } + + this.resetCanvas(); + + if (!this.compatibility.noMargins) + { + if (this.isFullScreen && this._createdFullScreenTarget) + { + this.alignCanvas(true, true); + } + else + { + this.alignCanvas(this.pageAlignHorizontally, this.pageAlignVertically); + } + } + + this.updateScalingAndBounds(); + + }, + + /** + * "Reset" the Display canvas and set the specified width/height. + * + * @method Phaser.ScaleManager#resetCanvas + * @private + * @param {string} [cssWidth=(current width)] - The css width to set. + * @param {string} [cssHeight=(current height)] - The css height to set. + */ + resetCanvas: function (cssWidth, cssHeight) { + + if (cssWidth === undefined) { cssWidth = this.width + 'px'; } + if (cssHeight === undefined) { cssHeight = this.height + 'px'; } + + var canvas = this.game.canvas; + + if (!this.compatibility.noMargins) + { + canvas.style.marginLeft = ''; + canvas.style.marginTop = ''; + canvas.style.marginRight = ''; + canvas.style.marginBottom = ''; + } + + canvas.style.width = cssWidth; + canvas.style.height = cssHeight; + + }, + + /** + * Queues/marks a size/bounds check as needing to occur (from `preUpdate`). + * + * @method Phaser.ScaleManager#queueUpdate + * @private + * @param {boolean} force - If true resets the parent bounds to ensure the check is dirty. + */ + queueUpdate: function (force) { + + if (force) + { + this._parentBounds.width = 0; + this._parentBounds.height = 0; + } + + this._updateThrottle = this._updateThrottleReset; + + }, + + /** + * Reset internal data/state. + * + * @method Phaser.ScaleManager#reset + * @private + */ + reset: function (clearWorld) { + + if (clearWorld && this.grid) + { + this.grid.reset(); + } + + }, + + /** + * Updates the width/height to that of the window. + * + * @method Phaser.ScaleManager#setMaximum + * @private + */ + setMaximum: function () { + + this.width = this.dom.visualBounds.width; + this.height = this.dom.visualBounds.height; + + }, + + /** + * Updates the width/height such that the game is scaled proportionally. + * + * @method Phaser.ScaleManager#setShowAll + * @private + * @param {boolean} expanding - If true then the maximizing dimension is chosen. + */ + setShowAll: function (expanding) { + + var bounds = this.getParentBounds(this._tempBounds); + var width = bounds.width; + var height = bounds.height; + + var multiplier; + + if (expanding) + { + multiplier = Math.max((height / this.game.height), (width / this.game.width)); + } + else + { + multiplier = Math.min((height / this.game.height), (width / this.game.width)); + } + + this.width = Math.round(this.game.width * multiplier); + this.height = Math.round(this.game.height * multiplier); + + }, + + /** + * Updates the width/height such that the game is stretched to the available size. + * Honors {@link #maxWidth} and {@link #maxHeight} when _not_ in fullscreen. + * + * @method Phaser.ScaleManager#setExactFit + * @private + */ + setExactFit: function () { + + var bounds = this.getParentBounds(this._tempBounds); + + this.width = bounds.width; + this.height = bounds.height; + + if (this.isFullScreen) + { + // Max/min not honored fullscreen + return; + } + + if (this.maxWidth) + { + this.width = Math.min(this.width, this.maxWidth); + } + + if (this.maxHeight) + { + this.height = Math.min(this.height, this.maxHeight); + } + + }, + + /** + * Creates a fullscreen target. This is called automatically as as needed when entering + * fullscreen mode and the resulting element is supplied to {@link #onFullScreenInit}. + * + * Use {@link #onFullScreenInit} to customize the created object. + * + * @method Phaser.ScaleManager#createFullScreenTarget + * @protected + */ + createFullScreenTarget: function () { + + var fsTarget = document.createElement('div'); + + fsTarget.style.margin = '0'; + fsTarget.style.padding = '0'; + fsTarget.style.background = '#000'; + + return fsTarget; + + }, + + /** + * Start the browsers fullscreen mode - this _must_ be called from a user input Pointer or Mouse event. + * + * The Fullscreen API must be supported by the browser for this to work - it is not the same as setting + * the game size to fill the browser window. See {@link Phaser.ScaleManager#compatibility compatibility.supportsFullScreen} to check if the current + * device is reported to support fullscreen mode. + * + * The {@link #fullScreenFailed} signal will be dispatched if the fullscreen change request failed or the game does not support the Fullscreen API. + * + * @method Phaser.ScaleManager#startFullScreen + * @public + * @param {boolean} [antialias] - Changes the anti-alias feature of the canvas before jumping in to fullscreen (false = retain pixel art, true = smooth art). If not specified then no change is made. Only works in CANVAS mode. + * @param {boolean} [allowTrampoline=undefined] - Internal argument. If `false` click trampolining is suppressed. + * @return {boolean} Returns true if the device supports fullscreen mode and fullscreen mode was attempted to be started. (It might not actually start, wait for the signals.) + */ + startFullScreen: function (antialias, allowTrampoline) { + + if (this.isFullScreen) + { + return false; + } + + if (!this.compatibility.supportsFullScreen) + { + // Error is called in timeout to emulate the real fullscreenerror event better + var _this = this; + setTimeout(function () { + _this.fullScreenError(); + }, 10); + return; + } + + if (this.compatibility.clickTrampoline === 'when-not-mouse') + { + var input = this.game.input; + + if (input.activePointer && + input.activePointer !== input.mousePointer && + (allowTrampoline || allowTrampoline !== false)) + { + input.activePointer.addClickTrampoline("startFullScreen", this.startFullScreen, this, [antialias, false]); + return; + } + } + + if (typeof antialias !== 'undefined' && this.game.renderType === Phaser.CANVAS) + { + this.game.stage.smoothed = antialias; + } + + var fsTarget = this.fullScreenTarget; + + if (!fsTarget) + { + this.cleanupCreatedTarget(); + + this._createdFullScreenTarget = this.createFullScreenTarget(); + fsTarget = this._createdFullScreenTarget; + } + + var initData = { + targetElement: fsTarget + }; + + this.onFullScreenInit.dispatch(this, initData); + + if (this._createdFullScreenTarget) + { + // Move the Display canvas inside of the target and add the target to the DOM + // (The target has to be added for the Fullscreen API to work.) + var canvas = this.game.canvas; + var parent = canvas.parentNode; + parent.insertBefore(fsTarget, canvas); + fsTarget.appendChild(canvas); + } + + if (this.game.device.fullscreenKeyboard) + { + fsTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); + } + else + { + fsTarget[this.game.device.requestFullscreen](); + } + + return true; + + }, + + /** + * Stops / exits fullscreen mode, if active. + * + * @method Phaser.ScaleManager#stopFullScreen + * @public + * @return {boolean} Returns true if the browser supports fullscreen mode and fullscreen mode will be exited. + */ + stopFullScreen: function () { + + if (!this.isFullScreen || !this.compatibility.supportsFullScreen) + { + return false; + } + + document[this.game.device.cancelFullscreen](); + + return true; + + }, + + /** + * Cleans up the previous fullscreen target, if such was automatically created. + * This ensures the canvas is restored to its former parent, assuming the target didn't move. + * + * @method Phaser.ScaleManager#cleanupCreatedTarget + * @private + */ + cleanupCreatedTarget: function () { + + var fsTarget = this._createdFullScreenTarget; + + if (fsTarget && fsTarget.parentNode) + { + // Make sure to cleanup synthetic target for sure; + // swap the canvas back to the parent. + var parent = fsTarget.parentNode; + parent.insertBefore(this.game.canvas, fsTarget); + parent.removeChild(fsTarget); + } + + this._createdFullScreenTarget = null; + + }, + + /** + * Used to prepare/restore extra fullscreen mode settings. + * (This does move any elements within the DOM tree.) + * + * @method Phaser.ScaleManager#prepScreenMode + * @private + * @param {boolean} enteringFullscreen - True if _entering_ fullscreen, false if _leaving_. + */ + prepScreenMode: function (enteringFullscreen) { + + var createdTarget = !!this._createdFullScreenTarget; + var fsTarget = this._createdFullScreenTarget || this.fullScreenTarget; + + if (enteringFullscreen) + { + if (createdTarget || this.fullScreenScaleMode === Phaser.ScaleManager.EXACT_FIT) + { + // Resize target, as long as it's not the canvas + if (fsTarget !== this.game.canvas) + { + this._fullScreenRestore = { + targetWidth: fsTarget.style.width, + targetHeight: fsTarget.style.height + }; + + fsTarget.style.width = '100%'; + fsTarget.style.height = '100%'; + } + } + } + else + { + // Have restore information + if (this._fullScreenRestore) + { + fsTarget.style.width = this._fullScreenRestore.targetWidth; + fsTarget.style.height = this._fullScreenRestore.targetHeight; + + this._fullScreenRestore = null; + } + + // Always reset to game size + this.updateDimensions(this._gameSize.width, this._gameSize.height, true); + this.resetCanvas(); + } + + }, + + /** + * Called automatically when the browser enters of leaves fullscreen mode. + * + * @method Phaser.ScaleManager#fullScreenChange + * @private + * @param {Event} [event=undefined] - The fullscreenchange event + */ + fullScreenChange: function (event) { + + this.event = event; + + if (this.isFullScreen) + { + this.prepScreenMode(true); + + this.updateLayout(); + this.queueUpdate(true); + } + else + { + this.prepScreenMode(false); + + this.cleanupCreatedTarget(); + + this.updateLayout(); + this.queueUpdate(true); + } + + this.onFullScreenChange.dispatch(this, this.width, this.height); + + }, + + /** + * Called automatically when the browser fullscreen request fails; + * or called when a fullscreen request is made on a device for which it is not supported. + * + * @method Phaser.ScaleManager#fullScreenError + * @private + * @param {Event} [event=undefined] - The fullscreenerror event; undefined if invoked on a device that does not support the Fullscreen API. + */ + fullScreenError: function (event) { + + this.event = event; + + this.cleanupCreatedTarget(); + + console.warn('Phaser.ScaleManager: requestFullscreen failed or device does not support the Fullscreen API'); + + this.onFullScreenError.dispatch(this); + + }, + + /** + * Takes a Sprite or Image object and scales it to fit the given dimensions. + * Scaling happens proportionally without distortion to the sprites texture. + * The letterBox parameter controls if scaling will produce a letter-box effect or zoom the + * sprite until it fills the given values. Note that with letterBox set to false the scaled sprite may spill out over either + * the horizontal or vertical sides of the target dimensions. If you wish to stop this you can crop the Sprite. + * + * @method Phaser.ScaleManager#scaleSprite + * @protected + * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite we want to scale. + * @param {integer} [width] - The target width that we want to fit the sprite in to. If not given it defaults to ScaleManager.width. + * @param {integer} [height] - The target height that we want to fit the sprite in to. If not given it defaults to ScaleManager.height. + * @param {boolean} [letterBox=false] - True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. + * @return {Phaser.Sprite|Phaser.Image} The scaled sprite. + */ + scaleSprite: function (sprite, width, height, letterBox) { + + if (width === undefined) { width = this.width; } + if (height === undefined) { height = this.height; } + if (letterBox === undefined) { letterBox = false; } + + if (!sprite || !sprite['scale']) + { + return sprite; + } + + sprite.scale.x = 1; + sprite.scale.y = 1; + + if ((sprite.width <= 0) || (sprite.height <= 0) || (width <= 0) || (height <= 0)) + { + return sprite; + } + + var scaleX1 = width; + var scaleY1 = (sprite.height * width) / sprite.width; + + var scaleX2 = (sprite.width * height) / sprite.height; + var scaleY2 = height; + + var scaleOnWidth = (scaleX2 > width); + + if (scaleOnWidth) + { + scaleOnWidth = letterBox; + } + else + { + scaleOnWidth = !letterBox; + } + + if (scaleOnWidth) + { + sprite.width = Math.floor(scaleX1); + sprite.height = Math.floor(scaleY1); + } + else + { + sprite.width = Math.floor(scaleX2); + sprite.height = Math.floor(scaleY2); + } + + // Enable at some point? + // sprite.x = Math.floor((width - sprite.width) / 2); + // sprite.y = Math.floor((height - sprite.height) / 2); + + return sprite; + + }, + + /** + * Destroys the ScaleManager and removes any event listeners. + * This should probably only be called when the game is destroyed. + * + * @method Phaser.ScaleManager#destroy + * @protected + */ + destroy: function () { + + this.game.onResume.remove(this._gameResumed, this); + + window.removeEventListener('orientationchange', this._orientationChange, false); + window.removeEventListener('resize', this._windowResize, false); + + if (this.compatibility.supportsFullScreen) + { + document.removeEventListener('webkitfullscreenchange', this._fullScreenChange, false); + document.removeEventListener('mozfullscreenchange', this._fullScreenChange, false); + document.removeEventListener('MSFullscreenChange', this._fullScreenChange, false); + document.removeEventListener('fullscreenchange', this._fullScreenChange, false); + + document.removeEventListener('webkitfullscreenerror', this._fullScreenError, false); + document.removeEventListener('mozfullscreenerror', this._fullScreenError, false); + document.removeEventListener('MSFullscreenError', this._fullScreenError, false); + document.removeEventListener('fullscreenerror', this._fullScreenError, false); + } + + } + +}; + +Phaser.ScaleManager.prototype.constructor = Phaser.ScaleManager; + +/** +* The DOM element that is considered the Parent bounding element, if any. +* +* This `null` if {@link #parentIsWindow} is true or if fullscreen mode is entered and {@link #fullScreenTarget} is specified. +* It will also be null if there is no game canvas or if the game canvas has no parent. +* +* @name Phaser.ScaleManager#boundingParent +* @property {?DOMElement} boundingParent +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "boundingParent", { + + get: function () { + if (this.parentIsWindow || + (this.isFullScreen && !this._createdFullScreenTarget)) + { + return null; + } + + var parentNode = this.game.canvas && this.game.canvas.parentNode; + return parentNode || null; + } + +}); + +/** +* The scaling method used by the ScaleManager when not in fullscreen. +* +*
+*
{@link Phaser.ScaleManager.NO_SCALE}
+*
+* The Game display area will not be scaled - even if it is too large for the canvas/screen. +* This mode _ignores_ any applied scaling factor and displays the canvas at the Game size. +*
+*
{@link Phaser.ScaleManager.EXACT_FIT}
+*
+* The Game display area will be _stretched_ to fill the entire size of the canvas's parent element and/or screen. +* Proportions are not maintained. +*
+*
{@link Phaser.ScaleManager.SHOW_ALL}
+*
+* Show the entire game display area while _maintaining_ the original aspect ratio. +*
+*
{@link Phaser.ScaleManager.RESIZE}
+*
+* The dimensions of the game display area are changed to match the size of the parent container. +* That is, this mode _changes the Game size_ to match the display size. +*

+* Any manually set Game size (see {@link #setGameSize}) is ignored while in effect. +*

+*
{@link Phaser.ScaleManager.USER_SCALE}
+*
+* The game Display is scaled according to the user-specified scale set by {@link Phaser.ScaleManager#setUserScale setUserScale}. +*

+* This scale can be adjusted in the {@link Phaser.ScaleManager#setResizeCallback resize callback} +* for flexible custom-sizing needs. +*

+*
+* +* @name Phaser.ScaleManager#scaleMode +* @property {integer} scaleMode +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "scaleMode", { + + get: function () { + + return this._scaleMode; + + }, + + set: function (value) { + + if (value !== this._scaleMode) + { + if (!this.isFullScreen) + { + this.updateDimensions(this._gameSize.width, this._gameSize.height, true); + this.queueUpdate(true); + } + + this._scaleMode = value; + } + + return this._scaleMode; + + } + +}); + +/** +* The scaling method used by the ScaleManager when in fullscreen. +* +* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. +* +* @name Phaser.ScaleManager#fullScreenScaleMode +* @property {integer} fullScreenScaleMode +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "fullScreenScaleMode", { + + get: function () { + + return this._fullScreenScaleMode; + + }, + + set: function (value) { + + if (value !== this._fullScreenScaleMode) + { + // If in fullscreen then need a wee bit more work + if (this.isFullScreen) + { + this.prepScreenMode(false); + this._fullScreenScaleMode = value; + this.prepScreenMode(true); + + this.queueUpdate(true); + } + else + { + this._fullScreenScaleMode = value; + } + } + + return this._fullScreenScaleMode; + + } + +}); + +/** +* Returns the current scale mode - for normal or fullscreen operation. +* +* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. +* +* @name Phaser.ScaleManager#currentScaleMode +* @property {number} currentScaleMode +* @protected +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "currentScaleMode", { + + get: function () { + + return this.isFullScreen ? this._fullScreenScaleMode : this._scaleMode; + + } + +}); + +/** +* When enabled the Display canvas will be horizontally-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). +* +* To align horizontally across the page the Display canvas should be added directly to page; +* or the parent container should itself be horizontally aligned. +* +* Horizontal alignment is not applicable with the {@link .RESIZE} scaling mode. +* +* @name Phaser.ScaleManager#pageAlignHorizontally +* @property {boolean} pageAlignHorizontally +* @default false +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignHorizontally", { + + get: function () { + + return this._pageAlignHorizontally; + + }, + + set: function (value) { + + if (value !== this._pageAlignHorizontally) + { + this._pageAlignHorizontally = value; + this.queueUpdate(true); + } + + } + +}); + +/** +* When enabled the Display canvas will be vertically-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). +* +* To align vertically the Parent element should have a _non-collapsible_ height, such that it will maintain +* a height _larger_ than the height of the contained Game canvas - the game canvas will then be scaled vertically +* _within_ the remaining available height dictated by the Parent element. +* +* One way to prevent the parent from collapsing is to add an absolute "min-height" CSS property to the parent element. +* If specifying a relative "min-height/height" or adjusting margins, the Parent height must still be non-collapsible (see note). +* +* _Note_: In version 2.2 the minimum document height is _not_ automatically set to the viewport/window height. +* To automatically update the minimum document height set {@link Phaser.ScaleManager#compatibility compatibility.forceMinimumDocumentHeight} to true. +* +* Vertical alignment is not applicable with the {@link .RESIZE} scaling mode. +* +* @name Phaser.ScaleManager#pageAlignVertically +* @property {boolean} pageAlignVertically +* @default false +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignVertically", { + + get: function () { + + return this._pageAlignVertically; + + }, + + set: function (value) { + + if (value !== this._pageAlignVertically) + { + this._pageAlignVertically = value; + this.queueUpdate(true); + } + + } + +}); + +/** +* Returns true if the browser is in fullscreen mode, otherwise false. +* @name Phaser.ScaleManager#isFullScreen +* @property {boolean} isFullScreen +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isFullScreen", { + + get: function () { + return !!(document['fullscreenElement'] || + document['webkitFullscreenElement'] || + document['mozFullScreenElement'] || + document['msFullscreenElement']); + } + +}); + +/** +* Returns true if the screen orientation is in portrait mode. +* +* @name Phaser.ScaleManager#isPortrait +* @property {boolean} isPortrait +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isPortrait", { + + get: function () { + return this.classifyOrientation(this.screenOrientation) === 'portrait'; + } + +}); + +/** +* Returns true if the screen orientation is in landscape mode. +* +* @name Phaser.ScaleManager#isLandscape +* @property {boolean} isLandscape +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isLandscape", { + + get: function () { + return this.classifyOrientation(this.screenOrientation) === 'landscape'; + } + +}); + +/** +* Returns true if the game dimensions are portrait (height > width). +* This is especially useful to check when using the RESIZE scale mode +* but wanting to maintain game orientation on desktop browsers, +* where typically the screen orientation will always be landscape regardless of the browser viewport. +* +* @name Phaser.ScaleManager#isGamePortrait +* @property {boolean} isGamePortrait +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isGamePortrait", { + + get: function () { + return (this.height > this.width); + } + +}); + +/** +* Returns true if the game dimensions are landscape (width > height). +* This is especially useful to check when using the RESIZE scale mode +* but wanting to maintain game orientation on desktop browsers, +* where typically the screen orientation will always be landscape regardless of the browser viewport. +* +* @name Phaser.ScaleManager#isGameLandscape +* @property {boolean} isGameLandscape +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { + + get: function () { + return (this.width > this.height); + } + +}); + /** * @author Steven Rogers * @copyright 2015 Photon Storm Ltd. @@ -47963,6 +45251,439 @@ Phaser.Utils.Debug.prototype.constructor = Phaser.Utils.Debug; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* DOM utility class. +* +* Provides a useful Window and Element functions as well as cross-browser compatibility buffer. +* +* Some code originally derived from {@link https://github.com/ryanve/verge verge}. +* Some parts were inspired by the research of Ryan Van Etten, released under MIT License 2013. +* +* @class Phaser.DOM +* @static +*/ +Phaser.DOM = { + + /** + * Get the [absolute] position of the element relative to the Document. + * + * The value may vary slightly as the page is scrolled due to rounding errors. + * + * @method Phaser.DOM.getOffset + * @param {DOMElement} element - The targeted element that we want to retrieve the offset. + * @param {Phaser.Point} [point] - The point we want to take the x/y values of the offset. + * @return {Phaser.Point} - A point objet with the offsetX and Y as its properties. + */ + getOffset: function (element, point) { + + point = point || new Phaser.Point(); + + var box = element.getBoundingClientRect(); + + var scrollTop = Phaser.DOM.scrollY; + var scrollLeft = Phaser.DOM.scrollX; + var clientTop = document.documentElement.clientTop; + var clientLeft = document.documentElement.clientLeft; + + point.x = box.left + scrollLeft - clientLeft; + point.y = box.top + scrollTop - clientTop; + + return point; + + }, + + /** + * A cross-browser element.getBoundingClientRect method with optional cushion. + * + * Returns a plain object containing the properties `top/bottom/left/right/width/height` with respect to the top-left corner of the current viewport. + * Its properties match the native rectangle. + * The cushion parameter is an amount of pixels (+/-) to cushion the element. + * It adjusts the measurements such that it is possible to detect when an element is near the viewport. + * + * @method Phaser.DOM.getBounds + * @param {DOMElement|Object} element - The element or stack (uses first item) to get the bounds for. + * @param {number} [cushion] - A +/- pixel adjustment amount. + * @return {Object|boolean} A plain object containing the properties `top/bottom/left/right/width/height` or `false` if a non-valid element is given. + */ + getBounds: function (element, cushion) { + + if (cushion === undefined) { cushion = 0; } + + element = element && !element.nodeType ? element[0] : element; + + if (!element || element.nodeType !== 1) + { + return false; + } + else + { + return this.calibrate(element.getBoundingClientRect(), cushion); + } + + }, + + /** + * Calibrates element coordinates for `inLayoutViewport` checks. + * + * @method Phaser.DOM.calibrate + * @private + * @param {object} coords - An object containing the following properties: `{top: number, right: number, bottom: number, left: number}` + * @param {number} [cushion] - A value to adjust the coordinates by. + * @return {object} The calibrated element coordinates + */ + calibrate: function (coords, cushion) { + + cushion = +cushion || 0; + + var output = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }; + + output.width = (output.right = coords.right + cushion) - (output.left = coords.left - cushion); + output.height = (output.bottom = coords.bottom + cushion) - (output.top = coords.top - cushion); + + return output; + + }, + + /** + * Get the Visual viewport aspect ratio (or the aspect ratio of an object or element) + * + * @method Phaser.DOM.getAspectRatio + * @param {(DOMElement|Object)} [object=(visualViewport)] - The object to determine the aspect ratio for. Must have public `width` and `height` properties or methods. + * @return {number} The aspect ratio. + */ + getAspectRatio: function (object) { + + object = null == object ? this.visualBounds : 1 === object.nodeType ? this.getBounds(object) : object; + + var w = object['width']; + var h = object['height']; + + if (typeof w === 'function') + { + w = w.call(object); + } + + if (typeof h === 'function') + { + h = h.call(object); + } + + return w / h; + + }, + + /** + * Tests if the given DOM element is within the Layout viewport. + * + * The optional cushion parameter allows you to specify a distance. + * + * inLayoutViewport(element, 100) is `true` if the element is in the viewport or 100px near it. + * inLayoutViewport(element, -100) is `true` if the element is in the viewport or at least 100px near it. + * + * @method Phaser.DOM.inLayoutViewport + * @param {DOMElement|Object} element - The DOM element to check. If no element is given it defaults to the Phaser game canvas. + * @param {number} [cushion] - The cushion allows you to specify a distance within which the element must be within the viewport. + * @return {boolean} True if the element is within the viewport, or within `cushion` distance from it. + */ + inLayoutViewport: function (element, cushion) { + + var r = this.getBounds(element, cushion); + + return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= this.layoutBounds.width && r.left <= this.layoutBounds.height; + + }, + + /** + * Returns the device screen orientation. + * + * Orientation values: 'portrait-primary', 'landscape-primary', 'portrait-secondary', 'landscape-secondary'. + * + * Order of resolving: + * - Screen Orientation API, or variation of - Future track. Most desktop and mobile browsers. + * - Screen size ratio check - If fallback is 'screen', suited for desktops. + * - Viewport size ratio check - If fallback is 'viewport', suited for mobile. + * - window.orientation - If fallback is 'window.orientation', works iOS and probably most Android; non-recommended track. + * - Media query + * - Viewport size ratio check (probably only IE9 and legacy mobile gets here..) + * + * See + * - https://w3c.github.io/screen-orientation/ (conflicts with mozOrientation/msOrientation) + * - https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation (mozOrientation) + * - http://msdn.microsoft.com/en-us/library/ie/dn342934(v=vs.85).aspx + * - https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries + * - http://stackoverflow.com/questions/4917664/detect-viewport-orientation + * - http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation + * + * @method Phaser.DOM.getScreenOrientation + * @protected + * @param {string} [primaryFallback=(none)] - Specify 'screen', 'viewport', or 'window.orientation'. + */ + getScreenOrientation: function (primaryFallback) { + + var screen = window.screen; + var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation; + + if (orientation && typeof orientation.type === 'string') + { + // Screen Orientation API specification + return orientation.type; + } + else if (typeof orientation === 'string') + { + // moz/ms-orientation are strings + return orientation; + } + + var PORTRAIT = 'portrait-primary'; + var LANDSCAPE = 'landscape-primary'; + + if (primaryFallback === 'screen') + { + return (screen.height > screen.width) ? PORTRAIT : LANDSCAPE; + } + else if (primaryFallback === 'viewport') + { + return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; + } + else if (primaryFallback === 'window.orientation' && typeof window.orientation === 'number') + { + // This may change by device based on "natural" orientation. + return (window.orientation === 0 || window.orientation === 180) ? PORTRAIT : LANDSCAPE; + } + else if (window.matchMedia) + { + if (window.matchMedia("(orientation: portrait)").matches) + { + return PORTRAIT; + } + else if (window.matchMedia("(orientation: landscape)").matches) + { + return LANDSCAPE; + } + } + + return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; + + }, + + /** + * The bounds of the Visual viewport, as discussed in + * {@link http://www.quirksmode.org/mobile/viewports.html A tale of two viewports — part one} + * with one difference: the viewport size _excludes_ scrollbars, as found on some desktop browsers. + * + * Supported mobile: + * iOS/Safari, Android 4, IE10, Firefox OS (maybe not Firefox Android), Opera Mobile 16 + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} x - Scroll, left offset - eg. "scrollX" + * @property {number} y - Scroll, top offset - eg. "scrollY" + * @property {number} width - Viewport width in pixels. + * @property {number} height - Viewport height in pixels. + * @readonly + */ + visualBounds: new Phaser.Rectangle(), + + /** + * The bounds of the Layout viewport, as discussed in + * {@link http://www.quirksmode.org/mobile/viewports2.html A tale of two viewports — part two}; + * but honoring the constraints as specified applicable viewport meta-tag. + * + * The bounds returned are not guaranteed to be fully aligned with CSS media queries (see + * {@link http://www.matanich.com/2013/01/07/viewport-size/ What size is my viewport?}). + * + * This is _not_ representative of the Visual bounds: in particular the non-primary axis will + * generally be significantly larger than the screen height on mobile devices when running with a + * constrained viewport. + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} width - Viewport width in pixels. + * @property {number} height - Viewport height in pixels. + * @readonly + */ + layoutBounds: new Phaser.Rectangle(), + + /** + * The size of the document / Layout viewport. + * + * This incorrectly reports the dimensions in IE. + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} width - Document width in pixels. + * @property {number} height - Document height in pixels. + * @readonly + */ + documentBounds: new Phaser.Rectangle() + +}; + +Phaser.Device.whenReady(function (device) { + + // All target browsers should support page[XY]Offset. + var scrollX = window && ('pageXOffset' in window) ? + function () { return window.pageXOffset; } : + function () { return document.documentElement.scrollLeft; }; + + var scrollY = window && ('pageYOffset' in window) ? + function () { return window.pageYOffset; } : + function () { return document.documentElement.scrollTop; }; + + /** + * A cross-browser window.scrollX. + * + * @name Phaser.DOM.scrollX + * @property {number} scrollX + * @readonly + * @protected + */ + Object.defineProperty(Phaser.DOM, "scrollX", { + get: scrollX + }); + + /** + * A cross-browser window.scrollY. + * + * @name Phaser.DOM.scrollY + * @property {number} scrollY + * @readonly + * @protected + */ + Object.defineProperty(Phaser.DOM, "scrollY", { + get: scrollY + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "x", { + get: scrollX + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "y", { + get: scrollY + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "x", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "y", { + value: 0 + }); + + var treatAsDesktop = device.desktop && + (document.documentElement.clientWidth <= window.innerWidth) && + (document.documentElement.clientHeight <= window.innerHeight); + + // Desktop browsers align the layout viewport with the visual viewport. + // This differs from mobile browsers with their zooming design. + // Ref. http://quirksmode.org/mobile/tableViewport.html + if (treatAsDesktop) + { + + // PST- When scrollbars are not included this causes upstream issues in ScaleManager. + // So reverted to the old "include scrollbars." + var clientWidth = function () { + return Math.max(window.innerWidth, document.documentElement.clientWidth); + }; + var clientHeight = function () { + return Math.max(window.innerHeight, document.documentElement.clientHeight); + }; + + // Interested in area sans-scrollbar + Object.defineProperty(Phaser.DOM.visualBounds, "width", { + get: clientWidth + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "height", { + get: clientHeight + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "width", { + get: clientWidth + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "height", { + get: clientHeight + }); + + } else { + + Object.defineProperty(Phaser.DOM.visualBounds, "width", { + get: function () { + return window.innerWidth; + } + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "height", { + get: function () { + return window.innerHeight; + } + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "width", { + + get: function () { + var a = document.documentElement.clientWidth; + var b = window.innerWidth; + + return a < b ? b : a; // max + } + + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "height", { + + get: function () { + var a = document.documentElement.clientHeight; + var b = window.innerHeight; + + return a < b ? b : a; // max + } + + }); + + } + + // For Phaser.DOM.documentBounds + // Ref. http://www.quirksmode.org/mobile/tableViewport_desktop.html + + Object.defineProperty(Phaser.DOM.documentBounds, "x", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "y", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "width", { + + get: function () { + var d = document.documentElement; + return Math.max(d.clientWidth, d.offsetWidth, d.scrollWidth); + } + + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "height", { + + get: function () { + var d = document.documentElement; + return Math.max(d.clientHeight, d.offsetHeight, d.scrollHeight); + } + + }); + +}, null, true); + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * ArraySet is a Set data structure (items must be unique within the set) that also maintains order. * This allows specific items to be easily added or removed from the Set. @@ -48127,7 +45848,7 @@ Phaser.ArraySet.prototype = { */ callAll: function (key) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var i = this.list.length; @@ -48538,6 +46259,844 @@ Phaser.ArrayUtils = { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* A basic Linked List data structure. +* +* This implementation _modifies_ the `prev` and `next` properties of each item added: +* - The `prev` and `next` properties must be writable and should not be used for any other purpose. +* - Items _cannot_ be added to multiple LinkedLists at the same time. +* - Only objects can be added. +* +* @class Phaser.LinkedList +* @constructor +*/ +Phaser.LinkedList = function () { + + /** + * Next element in the list. + * @property {object} next + * @default + */ + this.next = null; + + /** + * Previous element in the list. + * @property {object} prev + * @default + */ + this.prev = null; + + /** + * First element in the list. + * @property {object} first + * @default + */ + this.first = null; + + /** + * Last element in the list. + * @property {object} last + * @default + */ + this.last = null; + + /** + * Number of elements in the list. + * @property {integer} total + * @default + */ + this.total = 0; + +}; + +Phaser.LinkedList.prototype = { + + /** + * Adds a new element to this linked list. + * + * @method Phaser.LinkedList#add + * @param {object} item - The element to add to this list. Can be a Phaser.Sprite or any other object you need to quickly iterate through. + * @return {object} The item that was added. + */ + add: function (item) { + + // If the list is empty + if (this.total === 0 && this.first === null && this.last === null) + { + this.first = item; + this.last = item; + this.next = item; + item.prev = this; + this.total++; + return item; + } + + // Gets appended to the end of the list, regardless of anything, and it won't have any children of its own (non-nested list) + this.last.next = item; + + item.prev = this.last; + + this.last = item; + + this.total++; + + return item; + + }, + + /** + * Resets the first, last, next and previous node pointers in this list. + * + * @method Phaser.LinkedList#reset + */ + reset: function () { + + this.first = null; + this.last = null; + this.next = null; + this.prev = null; + this.total = 0; + + }, + + /** + * Removes the given element from this linked list if it exists. + * + * @method Phaser.LinkedList#remove + * @param {object} item - The item to be removed from the list. + */ + remove: function (item) { + + if (this.total === 1) + { + this.reset(); + item.next = item.prev = null; + return; + } + + if (item === this.first) + { + // It was 'first', make 'first' point to first.next + this.first = this.first.next; + } + else if (item === this.last) + { + // It was 'last', make 'last' point to last.prev + this.last = this.last.prev; + } + + if (item.prev) + { + // make item.prev.next point to childs.next instead of item + item.prev.next = item.next; + } + + if (item.next) + { + // make item.next.prev point to item.prev instead of item + item.next.prev = item.prev; + } + + item.next = item.prev = null; + + if (this.first === null ) + { + this.last = null; + } + + this.total--; + + }, + + /** + * Calls a function on all members of this list, using the member as the context for the callback. + * The function must exist on the member. + * + * @method Phaser.LinkedList#callAll + * @param {function} callback - The function to call. + */ + callAll: function (callback) { + + if (!this.first || !this.last) + { + return; + } + + var entity = this.first; + + do + { + if (entity && entity[callback]) + { + entity[callback].call(entity); + } + + entity = entity.next; + + } + while(entity != this.last.next); + + } + +}; + +Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content +* quickly and easily, without the need for any external files. You can create textures for sprites and in +* coming releases we'll add dynamic sound effect generation support as well (like sfxr). +* +* Access this via `State.create` (or `this.create` from within a State object) +* +* @class Phaser.Create +* @constructor +* @param {Phaser.Game} game - Game reference to the currently running game. + */ +Phaser.Create = function (game) { + + /** + * @property {Phaser.Game} game - A reference to the currently running Game. + */ + this.game = game; + + /** + * @property {Phaser.BitmapData} bmd - The internal BitmapData Create uses to generate textures from. + */ + this.bmd = null; + + /** + * @property {HTMLCanvasElement} canvas - The canvas the BitmapData uses. + */ + this.canvas = null; + + /** + * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. + */ + this.ctx = null; + + /** + * @property {array} palettes - A range of 16 color palettes for use with sprite generation. + */ + this.palettes = [ + { 0: '#000', 1: '#9D9D9D', 2: '#FFF', 3: '#BE2633', 4: '#E06F8B', 5: '#493C2B', 6: '#A46422', 7: '#EB8931', 8: '#F7E26B', 9: '#2F484E', A: '#44891A', B: '#A3CE27', C: '#1B2632', D: '#005784', E: '#31A2F2', F: '#B2DCEF' }, + { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#f5f4eb' }, + { 0: '#000', 1: '#2234d1', 2: '#0c7e45', 3: '#44aacc', 4: '#8a3622', 5: '#5c2e78', 6: '#aa5c3d', 7: '#b5b5b5', 8: '#5e606e', 9: '#4c81fb', A: '#6cd947', B: '#7be2f9', C: '#eb8a60', D: '#e23d69', E: '#ffd93f', F: '#fff' }, + { 0: '#000', 1: '#fff', 2: '#8b4131', 3: '#7bbdc5', 4: '#8b41ac', 5: '#6aac41', 6: '#3931a4', 7: '#d5de73', 8: '#945a20', 9: '#5a4100', A: '#bd736a', B: '#525252', C: '#838383', D: '#acee8b', E: '#7b73de', F: '#acacac' }, + { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#fff' } + ]; + +}; + +/** +* A 16 color palette by [Arne](http://androidarts.com/palette/16pal.htm) +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_ARNE = 0; + +/** +* A 16 color JMP inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_JMP = 1; + +/** +* A 16 color CGA inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_CGA = 2; + +/** +* A 16 color C64 inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_C64 = 3; + +/** +* A 16 color palette inspired by Japanese computers like the MSX. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_JAPANESE_MACHINE = 4; + +Phaser.Create.prototype = { + + /** + * Generates a new PIXI.Texture from the given data, which can be applied to a Sprite. + * + * This allows you to create game graphics quickly and easily, with no external files but that use actual proper images + * rather than Phaser.Graphics objects, which are expensive to render and limited in scope. + * + * Each element of the array is a string holding the pixel color values, as mapped to one of the Phaser.Create PALETTE consts. + * + * For example: + * + * `var data = [ + * ' 333 ', + * ' 777 ', + * 'E333E', + * ' 333 ', + * ' 3 3 ' + * ];` + * + * `game.create.texture('bob', data);` + * + * The above will create a new texture called `bob`, which will look like a little man wearing a hat. You can then use it + * for sprites the same way you use any other texture: `game.add.sprite(0, 0, 'bob');` + * + * @method Phaser.Create#texture + * @param {string} key - The key used to store this texture in the Phaser Cache. + * @param {array} data - An array of pixel data. + * @param {integer} [pixelWidth=8] - The width of each pixel. + * @param {integer} [pixelHeight=8] - The height of each pixel. + * @param {integer} [palette=0] - The palette to use when rendering the texture. One of the Phaser.Create.PALETTE consts. + * @return {PIXI.Texture} The newly generated texture. + */ + texture: function (key, data, pixelWidth, pixelHeight, palette) { + + if (pixelWidth === undefined) { pixelWidth = 8; } + if (pixelHeight === undefined) { pixelHeight = pixelWidth; } + if (palette === undefined) { palette = 0; } + + var w = data[0].length * pixelWidth; + var h = data.length * pixelHeight; + + // No bmd? Let's make one + if (this.bmd === null) + { + this.bmd = this.game.make.bitmapData(); + this.canvas = this.bmd.canvas; + this.ctx = this.bmd.context; + } + + this.bmd.resize(w, h); + this.bmd.clear(); + + // Draw it + for (var y = 0; y < data.length; y++) + { + var row = data[y]; + + for (var x = 0; x < row.length; x++) + { + var d = row[x]; + + if (d !== '.' && d !== ' ') + { + this.ctx.fillStyle = this.palettes[palette][d]; + this.ctx.fillRect(x * pixelWidth, y * pixelHeight, pixelWidth, pixelHeight); + } + } + } + + return this.bmd.generateTexture(key); + + }, + + /** + * Creates a grid texture based on the given dimensions. + * + * @method Phaser.Create#grid + * @param {string} key - The key used to store this texture in the Phaser Cache. + * @param {integer} width - The width of the grid in pixels. + * @param {integer} height - The height of the grid in pixels. + * @param {integer} cellWidth - The width of the grid cells in pixels. + * @param {integer} cellHeight - The height of the grid cells in pixels. + * @param {string} color - The color to draw the grid lines in. Should be a Canvas supported color string like `#ff5500` or `rgba(200,50,3,0.5)`. + * @return {PIXI.Texture} The newly generated texture. + */ + grid: function (key, width, height, cellWidth, cellHeight, color) { + + // No bmd? Let's make one + if (this.bmd === null) + { + this.bmd = this.game.make.bitmapData(); + this.canvas = this.bmd.canvas; + this.ctx = this.bmd.context; + } + + this.bmd.resize(width, height); + + this.ctx.fillStyle = color; + + for (var y = 0; y < height; y += cellHeight) + { + this.ctx.fillRect(0, y, width, 1); + } + + for (var x = 0; x < width; x += cellWidth) + { + this.ctx.fillRect(x, 0, 1, height); + } + + return this.bmd.generateTexture(key); + + } + +}; + +Phaser.Create.prototype.constructor = Phaser.Create; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. +* Please try to avoid using in production games with a long time to build. +* This is also why the documentation is incomplete. +* +* FlexGrid is a a responsive grid manager that works in conjunction with the ScaleManager RESIZE scaling mode and FlexLayers +* to provide for game object positioning in a responsive manner. +* +* @class Phaser.FlexGrid +* @constructor +* @param {Phaser.ScaleManager} manager - The ScaleManager. +* @param {number} width - The width of the game. +* @param {number} height - The height of the game. +*/ +Phaser.FlexGrid = function (manager, width, height) { + + /** + * @property {Phaser.Game} game - A reference to the currently running Game. + */ + this.game = manager.game; + + /** + * @property {Phaser.ScaleManager} manager - A reference to the ScaleManager. + */ + this.manager = manager; + + // The perfect dimensions on which everything else is based + this.width = width; + this.height = height; + + this.boundsCustom = new Phaser.Rectangle(0, 0, width, height); + this.boundsFluid = new Phaser.Rectangle(0, 0, width, height); + this.boundsFull = new Phaser.Rectangle(0, 0, width, height); + this.boundsNone = new Phaser.Rectangle(0, 0, width, height); + + /** + * @property {Phaser.Point} position - + * @readonly + */ + this.positionCustom = new Phaser.Point(0, 0); + this.positionFluid = new Phaser.Point(0, 0); + this.positionFull = new Phaser.Point(0, 0); + this.positionNone = new Phaser.Point(0, 0); + + /** + * @property {Phaser.Point} scaleFactor - The scale factor based on the game dimensions vs. the scaled dimensions. + * @readonly + */ + this.scaleCustom = new Phaser.Point(1, 1); + this.scaleFluid = new Phaser.Point(1, 1); + this.scaleFluidInversed = new Phaser.Point(1, 1); + this.scaleFull = new Phaser.Point(1, 1); + this.scaleNone = new Phaser.Point(1, 1); + + this.customWidth = 0; + this.customHeight = 0; + this.customOffsetX = 0; + this.customOffsetY = 0; + + this.ratioH = width / height; + this.ratioV = height / width; + + this.multiplier = 0; + + this.layers = []; + +}; + +Phaser.FlexGrid.prototype = { + + /** + * Sets the core game size. This resets the w/h parameters and bounds. + * + * @method Phaser.FlexGrid#setSize + * @param {number} width - The new dimensions. + * @param {number} height - The new dimensions. + */ + setSize: function (width, height) { + + // These are locked and don't change until setSize is called again + this.width = width; + this.height = height; + + this.ratioH = width / height; + this.ratioV = height / width; + + this.scaleNone = new Phaser.Point(1, 1); + + this.boundsNone.width = this.width; + this.boundsNone.height = this.height; + + this.refresh(); + + }, + + // Need ability to create your own layers with custom scaling, etc. + + /** + * A custom layer is centered on the game and maintains its aspect ratio as it scales up and down. + * + * @method Phaser.FlexGrid#createCustomLayer + * @param {number} width - Width of this layer in pixels. + * @param {number} height - Height of this layer in pixels. + * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createCustomLayer: function (width, height, children, addToWorld) { + + if (addToWorld === undefined) { addToWorld = true; } + + this.customWidth = width; + this.customHeight = height; + + this.boundsCustom.width = width; + this.boundsCustom.height = height; + + var layer = new Phaser.FlexLayer(this, this.positionCustom, this.boundsCustom, this.scaleCustom); + + if (addToWorld) + { + this.game.world.add(layer); + } + + this.layers.push(layer); + + if (typeof children !== 'undefined' && typeof children !== null) + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A fluid layer is centered on the game and maintains its aspect ratio as it scales up and down. + * + * @method Phaser.FlexGrid#createFluidLayer + * @param {array} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFluidLayer: function (children, addToWorld) { + + if (addToWorld === undefined) { addToWorld = true; } + + var layer = new Phaser.FlexLayer(this, this.positionFluid, this.boundsFluid, this.scaleFluid); + + if (addToWorld) + { + this.game.world.add(layer); + } + + this.layers.push(layer); + + if (typeof children !== 'undefined' && typeof children !== null) + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A full layer is placed at 0,0 and extends to the full size of the game. Children are scaled according to the fluid ratios. + * + * @method Phaser.FlexGrid#createFullLayer + * @param {array} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFullLayer: function (children) { + + var layer = new Phaser.FlexLayer(this, this.positionFull, this.boundsFull, this.scaleFluid); + + this.game.world.add(layer); + + this.layers.push(layer); + + if (typeof children !== 'undefined') + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A fixed layer is centered on the game and is the size of the required dimensions and is never scaled. + * + * @method Phaser.FlexGrid#createFixedLayer + * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFixedLayer: function (children) { + + var layer = new Phaser.FlexLayer(this, this.positionNone, this.boundsNone, this.scaleNone); + + this.game.world.add(layer); + + this.layers.push(layer); + + if (typeof children !== 'undefined') + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * Resets the layer children references + * + * @method Phaser.FlexGrid#reset + */ + reset: function () { + + var i = this.layers.length; + + while (i--) + { + if (!this.layers[i].persist) + { + // Remove references to this class + this.layers[i].position = null; + this.layers[i].scale = null; + this.layers.slice(i, 1); + } + } + + }, + + /** + * Called when the game container changes dimensions. + * + * @method Phaser.FlexGrid#onResize + * @param {number} width - The new width of the game container. + * @param {number} height - The new height of the game container. + */ + onResize: function (width, height) { + + this.ratioH = width / height; + this.ratioV = height / width; + + this.refresh(width, height); + + }, + + /** + * Updates all internal vars such as the bounds and scale values. + * + * @method Phaser.FlexGrid#refresh + */ + refresh: function () { + + this.multiplier = Math.min((this.manager.height / this.height), (this.manager.width / this.width)); + + this.boundsFluid.width = Math.round(this.width * this.multiplier); + this.boundsFluid.height = Math.round(this.height * this.multiplier); + + this.scaleFluid.set(this.boundsFluid.width / this.width, this.boundsFluid.height / this.height); + this.scaleFluidInversed.set(this.width / this.boundsFluid.width, this.height / this.boundsFluid.height); + + this.scaleFull.set(this.boundsFull.width / this.width, this.boundsFull.height / this.height); + + this.boundsFull.width = Math.round(this.manager.width * this.scaleFluidInversed.x); + this.boundsFull.height = Math.round(this.manager.height * this.scaleFluidInversed.y); + + this.boundsFluid.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); + this.boundsNone.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); + + this.positionFluid.set(this.boundsFluid.x, this.boundsFluid.y); + this.positionNone.set(this.boundsNone.x, this.boundsNone.y); + + }, + + /** + * Fits a sprites width to the bounds. + * + * @method Phaser.FlexGrid#fitSprite + * @param {Phaser.Sprite} sprite - The Sprite to fit. + */ + fitSprite: function (sprite) { + + this.manager.scaleSprite(sprite); + + sprite.x = this.manager.bounds.centerX; + sprite.y = this.manager.bounds.centerY; + + }, + + /** + * Call in the render function to output the bounds rects. + * + * @method Phaser.FlexGrid#debug + */ + debug: function () { + + // for (var i = 0; i < this.layers.length; i++) + // { + // this.layers[i].debug(); + // } + + // this.game.debug.text(this.boundsFull.width + ' x ' + this.boundsFull.height, this.boundsFull.x + 4, this.boundsFull.y + 16); + // this.game.debug.geom(this.boundsFull, 'rgba(0,0,255,0.9', false); + + this.game.debug.text(this.boundsFluid.width + ' x ' + this.boundsFluid.height, this.boundsFluid.x + 4, this.boundsFluid.y + 16); + this.game.debug.geom(this.boundsFluid, 'rgba(255,0,0,0.9', false); + + // this.game.debug.text(this.boundsNone.width + ' x ' + this.boundsNone.height, this.boundsNone.x + 4, this.boundsNone.y + 16); + // this.game.debug.geom(this.boundsNone, 'rgba(0,255,0,0.9', false); + + // this.game.debug.text(this.boundsCustom.width + ' x ' + this.boundsCustom.height, this.boundsCustom.x + 4, this.boundsCustom.y + 16); + // this.game.debug.geom(this.boundsCustom, 'rgba(255,255,0,0.9', false); + + } + +}; + +Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. +* Please try to avoid using in production games with a long time to build. +* This is also why the documentation is incomplete. +* +* A responsive grid layer. +* +* @class Phaser.FlexLayer +* @extends Phaser.Group +* @constructor +* @param {Phaser.FlexGrid} manager - The FlexGrid that owns this FlexLayer. +* @param {Phaser.Point} position - A reference to the Point object used for positioning. +* @param {Phaser.Rectangle} bounds - A reference to the Rectangle used for the layer bounds. +* @param {Phaser.Point} scale - A reference to the Point object used for layer scaling. +*/ +Phaser.FlexLayer = function (manager, position, bounds, scale) { + + Phaser.Group.call(this, manager.game, null, '__flexLayer' + manager.game.rnd.uuid(), false); + + /** + * @property {Phaser.ScaleManager} scale - A reference to the ScaleManager. + */ + this.manager = manager.manager; + + /** + * @property {Phaser.FlexGrid} grid - A reference to the FlexGrid that owns this layer. + */ + this.grid = manager; + + /** + * Should the FlexLayer remain through a State swap? + * + * @type {boolean} + */ + this.persist = false; + + /** + * @property {Phaser.Point} position + */ + this.position = position; + + /** + * @property {Phaser.Rectangle} bounds + */ + this.bounds = bounds; + + /** + * @property {Phaser.Point} scale + */ + this.scale = scale; + + /** + * @property {Phaser.Point} topLeft + */ + this.topLeft = bounds.topLeft; + + /** + * @property {Phaser.Point} topMiddle + */ + this.topMiddle = new Phaser.Point(bounds.halfWidth, 0); + + /** + * @property {Phaser.Point} topRight + */ + this.topRight = bounds.topRight; + + /** + * @property {Phaser.Point} bottomLeft + */ + this.bottomLeft = bounds.bottomLeft; + + /** + * @property {Phaser.Point} bottomMiddle + */ + this.bottomMiddle = new Phaser.Point(bounds.halfWidth, bounds.bottom); + + /** + * @property {Phaser.Point} bottomRight + */ + this.bottomRight = bounds.bottomRight; + +}; + +Phaser.FlexLayer.prototype = Object.create(Phaser.Group.prototype); +Phaser.FlexLayer.prototype.constructor = Phaser.FlexLayer; + +/** + * Resize. + * + * @method Phaser.FlexLayer#resize + */ +Phaser.FlexLayer.prototype.resize = function () { +}; + +/** + * Debug. + * + * @method Phaser.FlexLayer#debug + */ +Phaser.FlexLayer.prototype.debug = function () { + + this.game.debug.text(this.bounds.width + ' x ' + this.bounds.height, this.bounds.x + 4, this.bounds.y + 16); + this.game.debug.geom(this.bounds, 'rgba(0,0,255,0.9', false); + + this.game.debug.geom(this.topLeft, 'rgba(255,255,255,0.9'); + this.game.debug.geom(this.topMiddle, 'rgba(255,255,255,0.9'); + this.game.debug.geom(this.topRight, 'rgba(255,255,255,0.9'); + +}; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * The Phaser.Color class is a set of static methods that assist in color manipulation and conversion. * @@ -49354,9 +47913,9 @@ Phaser.Color = { * * @method Phaser.Color.getRandomColor * @static - * @param {number} min - The lowest value to use for the color. - * @param {number} max - The highest value to use for the color. - * @param {number} alpha - The alpha value of the returning color (default 255 = fully opaque). + * @param {number} [min=0] - The lowest value to use for the color. + * @param {number} [max=255] - The highest value to use for the color. + * @param {number} [alpha=255] - The alpha value of the returning color (default 255 = fully opaque). * @returns {number} 32-bit color value with alpha. */ getRandomColor: function (min, max, alpha) { @@ -49878,195 +48437,6 @@ Phaser.Color = { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* A basic Linked List data structure. -* -* This implementation _modifies_ the `prev` and `next` properties of each item added: -* - The `prev` and `next` properties must be writable and should not be used for any other purpose. -* - Items _cannot_ be added to multiple LinkedLists at the same time. -* - Only objects can be added. -* -* @class Phaser.LinkedList -* @constructor -*/ -Phaser.LinkedList = function () { - - /** - * Next element in the list. - * @property {object} next - * @default - */ - this.next = null; - - /** - * Previous element in the list. - * @property {object} prev - * @default - */ - this.prev = null; - - /** - * First element in the list. - * @property {object} first - * @default - */ - this.first = null; - - /** - * Last element in the list. - * @property {object} last - * @default - */ - this.last = null; - - /** - * Number of elements in the list. - * @property {integer} total - * @default - */ - this.total = 0; - -}; - -Phaser.LinkedList.prototype = { - - /** - * Adds a new element to this linked list. - * - * @method Phaser.LinkedList#add - * @param {object} item - The element to add to this list. Can be a Phaser.Sprite or any other object you need to quickly iterate through. - * @return {object} The item that was added. - */ - add: function (item) { - - // If the list is empty - if (this.total === 0 && this.first === null && this.last === null) - { - this.first = item; - this.last = item; - this.next = item; - item.prev = this; - this.total++; - return item; - } - - // Gets appended to the end of the list, regardless of anything, and it won't have any children of its own (non-nested list) - this.last.next = item; - - item.prev = this.last; - - this.last = item; - - this.total++; - - return item; - - }, - - /** - * Resets the first, last, next and previous node pointers in this list. - * - * @method Phaser.LinkedList#reset - */ - reset: function () { - - this.first = null; - this.last = null; - this.next = null; - this.prev = null; - this.total = 0; - - }, - - /** - * Removes the given element from this linked list if it exists. - * - * @method Phaser.LinkedList#remove - * @param {object} item - The item to be removed from the list. - */ - remove: function (item) { - - if (this.total === 1) - { - this.reset(); - item.next = item.prev = null; - return; - } - - if (item === this.first) - { - // It was 'first', make 'first' point to first.next - this.first = this.first.next; - } - else if (item === this.last) - { - // It was 'last', make 'last' point to last.prev - this.last = this.last.prev; - } - - if (item.prev) - { - // make item.prev.next point to childs.next instead of item - item.prev.next = item.next; - } - - if (item.next) - { - // make item.next.prev point to item.prev instead of item - item.next.prev = item.prev; - } - - item.next = item.prev = null; - - if (this.first === null ) - { - this.last = null; - } - - this.total--; - - }, - - /** - * Calls a function on all members of this list, using the member as the context for the callback. - * The function must exist on the member. - * - * @method Phaser.LinkedList#callAll - * @param {function} callback - The function to call. - */ - callAll: function (callback) { - - if (!this.first || !this.last) - { - return; - } - - var entity = this.first; - - do - { - if (entity && entity[callback]) - { - entity[callback].call(entity); - } - - entity = entity.next; - - } - while(entity != this.last.next); - - } - -}; - -Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * The Physics Manager is responsible for looking after all of the running physics systems. * Phaser supports 4 physics systems: Arcade Physics, P2, Ninja Physics and Box2D via a commercial plugin. @@ -50604,7 +48974,7 @@ if (PIXI.RenderTexture.tempMatrix === undefined) PIXI.RenderTexture.tempMatrix = new PIXI.Matrix(); } -if (PIXI.Graphics.POLY === undefined) +if (PIXI.Graphics && PIXI.Graphics.POLY === undefined) { PIXI.Graphics.POLY = Phaser.POLYGON; PIXI.Graphics.RECT = Phaser.RECTANGLE; diff --git a/build/custom/phaser-minimum.map b/build/custom/phaser-minimum.map index 4f68fee12..066b0b093 100644 --- a/build/custom/phaser-minimum.map +++ b/build/custom/phaser-minimum.map @@ -1 +1 @@ -{"version":3,"file":"phaser-minimum.min.js","sources":["phaser-minimum.js"],"names":["root","this","PIXI","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","defaultRenderOptions","view","transparent","antialias","preserveDrawingBuffer","resolution","clearBeforeRender","autoResize","DisplayObject","position","Point","scale","transformCallback","transformCallbackContext","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","game","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","call","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","valid","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","Stage","backgroundColor","setBackgroundColor","backgroundColorSplit","hex2rgb","hex","toString","substr","backgroundColorString","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","PolyK","Triangulate","sign","n","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","u","v","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","WebGLGraphics","renderGraphics","graphics","webGLData","projection","offset","primitiveShader","updateGraphics","webGL","_webGL","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","toArray","uniform1f","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","buffer","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","clearDirty","graphicsData","reset","graphicsDataPool","Graphics","POLY","points","shape","slice","closed","fill","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","lineWidth","buildLine","RECT","buildRectangle","CIRC","ELIP","buildCircle","RREC","buildRoundedRectangle","upload","pop","WebGLGraphicsData","rectData","fillColor","fillAlpha","r","g","verts","vertPos","tempPoints","rrectData","radius","recPoints","concat","quadraticBezierCurve","vecPos","triangles","fromX","fromY","cpX","cpY","toX","toY","getPt","n1","n2","perc","diff","xa","ya","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","a1","b1","c1","a2","b2","c2","denom","pdist","dist","indexCount","indexStart","lineColor","lineAlpha","abs","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","glContexts","WebGLRenderer","options","defaultRenderer","_contextOptions","premultipliedAlpha","stencil","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","__stage","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","clear","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","stencilStack","reverse","count","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","EQUAL","DECR","INCR","_currentGraphics","complexPrimitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","temp","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","navigator","isCocoonJS","screencanvas","removeView","updateGraphicsTint","_fillTint","_lineTint","beginPath","moveTo","lineTo","closePath","strokeStyle","stroke","strokeRect","arc","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","rx","ry","maxRadius","min","quadraticCurveTo","len","rect","tintR","tintG","tintB","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","Phaser","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","trunc","ceil","floor","Function","bind","thisArg","bound","args","boundArgs","arguments","TypeError","F","proto","arg","forEach","fun","t","CheapArray","assert","warn","Utils","getProperty","obj","prop","parts","split","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","point","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","uc","ua","ub","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","empty","inflatePoint","containsRaw","rw","rh","containsPoint","volume","sameDimensions","aabb","MIN_VALUE","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","_targetPosition","_edge","_position","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","unfollow","focusOn","setPosition","focusOnXY","update","updateTarget","checkBounds","setBoundsToWorld","setSize","Create","bmd","make","bitmapData","ctx","palettes",1,2,3,4,5,6,7,8,9,"A","B","C","D","E","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","row","grid","cellWidth","cellHeight","State","camera","cache","input","load","math","sound","time","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","Signal","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","state","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","dispatch","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","disableVisibilityChange","exists","currentRenderOrderID","_hiddenVar","_onChange","_backgroundColor","config","parseConfig","DOM","getOffset","Canvas","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","getColor","RGBtoString","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","addToHash","events","onAddedToGroup$dispatch","removeFromHash","addMultiple","moveAll","addAt","updateZ","getAt","createMultiple","quantity","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","oldChild","newChild","hasProperty","operation","force","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","getFirstAlive","getFirstDead","getTop","getBottom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","horizontal","vertical","between","FlexGrid","manager","boundsCustom","boundsFluid","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFluidInversed","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","multiplier","layers","createCustomLayer","addToWorld","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","onResize","fitSprite","scaleSprite","text","geom","uuid","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","ScaleManager","dom","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","margin","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentNode","parentScaleFactor","trackParentInterval","onSizeChange","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","fullscreen","cocoonJS","iPad","webApp","desktop","android","chrome","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","fullScreenScaleMode","getElementById","getParentBounds","visualBounds","newWidth","newHeight","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","documentElement","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","setTimeout","activePointer","mousePointer","addClickTrampoline","smoothed","cleanupCreatedTarget","initData","targetElement","insertBefore","appendChild","fullscreenKeyboard","requestFullscreen","Element","ALLOW_KEYBOARD_INPUT","stopFullScreen","cancelFullscreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","webAudio","contextRestored","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFps","updateRender","slowMotion","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","addMoveCallback","deleteMoveCallback","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","duration","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","leftButton","middleButton","rightButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","removeTouchLockCallback","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","scaleLayer","dragOffset","dragFromCenter","dragStartPoint","snapPoint","_dragPoint","_dragPhase","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","_draggedPointerID","updateDrag","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","startDrag","onInputUp$dispatch","stopDrag","globalToLocalX","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","loadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","Delta","Destroy","onDestroy$dispatch","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","heal","InCamera","InputEnabled","inputEnabled","InWorld","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","img","base","frameData","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","checkTransform","scaleMin","scaleMax","setScaleMinMax","Smoothed","existing","object","creature","mesh","Creature","tween","physicsGroup","audio","connect","audioSprite","addSprite","tileSprite","rope","Rope","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","Tilemap","addToCache","addRenderTexture","video","url","addBitmapData","Tween","align","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_scroll","def","TilingSprite","physicsElapsed","autoScroll","stopScroll","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","segments","difference","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","deviceReadyAt","initialized","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","silk","audioData","ogg","opus","mp3","wav","m4a","webm","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","pixelRatio","littleEndian","LITTLE_ENDIAN","support32bit","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","_initialize","_checkOS","userAgent","test","vita","kindle","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","_checkBrowser","RegExp","$1","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","match","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","PORTRAIT","LANDSCAPE","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","skipPool","display","msTouchAction","overflowHidden","overflow","translateX","translateY","skewX","skewY","setSmoothingEnabled","vendor","prefix","getSmoothingEnabled","setImageRenderingCrisp","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","sum","shear","snapTo","gap","snapToFloor","snapToCeil","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","point1","point2","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","k","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","t2","t3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","charCodeAt","integer","frac","real","integerInRange","realInRange","normal","pick","ary","weightedPick","timestamp","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","netNoop","isDisabled","getHostName","checkDomainName","updateQueryString","getQueryString","decodeURI","prevTime","elapsedMS","suggestedFps","advancedTiming","frames","fps","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","updateAdvancedTiming","updateTimers","previousDateNow","timeCallExpected","_pause","_resume","elapsedSince","since","elapsedSecondsSince","running","expired","onComplete","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","pendingDelete","clearPendingEvents","adjustEvents","baseTime","ms","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","updateFrameData","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","isPaused","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onStart","onUpdate","onLoop","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","Frame","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","FrameData","_frameNames","addFrame","getFrameRange","getFrames","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","spacing","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","addImage","checkImageKey","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","textureFrame","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getBitmapFont","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","path","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","direction","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","properties","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","audiosprite","jsonURL","jsonData","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","status","loadNext","responseText","Blob","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","lineHeight","letters","charCode","xAdvance","kerning","kernings","second","finalizeBitmapFont","_face","_size","_lineHeight","letter","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","debugNoop","soundInfo","cameraInfo","spriteInputInfo","inputInfo","spriteBounds","ropeSegments","spriteInfo","spriteCoords","lineInfo","pixel","rectangle","quadTree","bodyInfo","box2dWorld","box2dBody","list","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","POSITIVE_INFINITY","numberArray","numberArrayStep","packPixel","unpackPixel","rgba","hsl","hsv","createColor","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","HSLtoRGB","q","hueToColor","updateColor","HSVtoRGB","color32","getColor32","componentToHex","hexToRGB","hexToColor","exec","webToColor","web","parseFloat","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","red","green","blue","interpolateColorWithRGB","or","og","ob","interpolateRGB","r1","g1","r2","g2","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendLighten","blendDarken","blendMultiply","blendAverage","blendAdd","blendSubtract","blendDifference","blendNegation","blendScreen","blendExclusion","blendOverlay","blendSoftLight","blendHardLight","blendColorDodge","blendColorBurn","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","LinkedList","prev","entity","arcade","ninja","box2d","chipmunk","matter","NINJA","BOX2D","CHIPMUNK","MATTERJS","Ninja","P2","Matter","startSystem","system","Box2D","enableAABB","emitters","ID"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"phaser-minimum.min.js","sources":["phaser-minimum.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","transformCallback","call","transformCallbackContext","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","valid","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","trunc","ceil","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","warn","Utils","getProperty","obj","prop","parts","split","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","point","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","MIN_VALUE","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","_targetPosition","_edge","_position","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","unfollow","focusOn","setPosition","focusOnXY","update","updateTarget","checkBounds","setBoundsToWorld","setSize","reset","State","make","camera","cache","input","load","math","sound","time","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","Signal","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","state","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","dispatch","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","exists","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","addToHash","events","onAddedToGroup$dispatch","removeFromHash","addMultiple","moveAll","addAt","updateZ","getAt","createMultiple","quantity","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","oldChild","newChild","hasProperty","operation","force","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","horizontal","vertical","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","Graphics","graphicsData","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","duration","justReleased","pointerMode","CONTACT","leftButton","middleButton","rightButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","scaleLayer","dragOffset","dragFromCenter","dragStartPoint","snapPoint","_dragPoint","_dragPhase","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","_draggedPointerID","updateDrag","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","startDrag","onInputUp$dispatch","stopDrag","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","rect","updateCrop","resetFrame","_frame","Delta","Destroy","onDestroy$dispatch","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","heal","InCamera","InputEnabled","inputEnabled","InWorld","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","img","base","frameData","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","object","creature","mesh","Creature","tween","physicsGroup","audio","connect","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","Tilemap","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","align","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","LITTLE_ENDIAN","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","userAgent","test","vita","kindle","match","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","ctx","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","backgroundColor","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","translateX","translateY","skewX","skewY","setSmoothingEnabled","vendor","prefix","getSmoothingEnabled","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","sum","shear","snapTo","gap","snapToFloor","snapToCeil","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","point1","point2","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","diff","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","k","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","t2","t3","difference","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","sign","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","charCodeAt","integer","frac","real","integerInRange","realInRange","normal","pick","ary","weightedPick","timestamp","parseFloat","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","netNoop","isDisabled","getHostName","checkDomainName","updateQueryString","getQueryString","decodeURI","prevTime","elapsedMS","physicsElapsed","_desiredFps","suggestedFps","advancedTiming","frames","fps","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","_pause","_resume","elapsedSince","since","elapsedSecondsSince","running","expired","onComplete","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","pendingDelete","clearPendingEvents","adjustEvents","baseTime","ms","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","updateFrameData","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","isPaused","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onStart","onUpdate","onLoop","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","Frame","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","FrameData","_frameNames","addFrame","getFrameRange","getFrames","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","addImage","checkImageKey","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","textureFrame","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getBitmapFont","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","path","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","direction","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","properties","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","audiosprite","jsonURL","jsonData","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","status","loadNext","responseText","Blob","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","lineHeight","letters","charCode","xAdvance","kerning","kernings","second","finalizeBitmapFont","_face","_size","_lineHeight","letter","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","dom","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","newWidth","newHeight","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","debugNoop","soundInfo","cameraInfo","spriteInputInfo","inputInfo","spriteBounds","ropeSegments","spriteInfo","spriteCoords","lineInfo","pixel","geom","rectangle","quadTree","bodyInfo","box2dWorld","box2dBody","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","PORTRAIT","LANDSCAPE","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","list","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","POSITIVE_INFINITY","numberArray","numberArrayStep","LinkedList","prev","entity","bmd","palettes",1,2,3,4,5,6,7,8,9,"A","B","C","D","E","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","cellWidth","cellHeight","manager","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","packPixel","unpackPixel","hsl","hsv","createColor","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","HSLtoRGB","q","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","exec","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","red","green","blue","interpolateColorWithRGB","or","og","ob","interpolateRGB","r1","g1","r2","g2","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendLighten","blendDarken","blendMultiply","blendAverage","blendAdd","blendSubtract","blendDifference","blendNegation","blendScreen","blendExclusion","blendOverlay","blendSoftLight","blendHardLight","blendColorDodge","blendColorBurn","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","box2d","chipmunk","matter","NINJA","BOX2D","CHIPMUNK","MATTERJS","Ninja","P2","Matter","startSystem","system","Box2D","enableAABB","emitters","ID","POLY","RECT","CIRC","ELIP","RREC"],"mappings":"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"} \ No newline at end of file diff --git a/build/custom/phaser-minimum.min.js b/build/custom/phaser-minimum.min.js index 5386a136b..e1a66e516 100644 --- a/build/custom/phaser-minimum.min.js +++ b/build/custom/phaser-minimum.min.js @@ -1,15 +1,15 @@ -/* Phaser v2.4.3 - http://phaser.io - @photonstorm - (c) 2015 Photon Storm Ltd. */ +/* Phaser v2.4.4 - http://phaser.io - @photonstorm - (c) 2015 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.8",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0,autoResize:!1},b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.transformCallback=null,this.transformCallbackContext=null,this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.transformCallback=null,this.transformCallbackContext=null,this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gj;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a;for(var b=0;bi&&(i*=-1),0>l&&(l*=-1),q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n;else{var s=i*e+k*g+m,t=l*g+j*e+n,u=i*d+k*g+m,v=l*g+j*d+n,w=i*d+k*f+m,x=l*f+j*d+n,y=i*e+k*f+m,z=l*f+j*e+n;q=q>s?s:q,q=q>u?u:q,q=q>w?w:q,q=q>y?y:q,r=r>t?t:r,r=r>v?v:r,r=r>x?x:r,r=r>z?z:r,o=s>o?s:o,o=u>o?u:o,o=w>o?w:o,o=y>o?y:o,p=t>p?t:p,p=v>p?v:p,p=x>p?x:p,p=z>p?z:p}var A=this._bounds;return A.x=q,A.width=o-q,A.y=r,A.height=p-r,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return null;for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;c=6)if(h.points.length<12){g=b.WebGLGraphics.switchMode(d,0);var i=b.WebGLGraphics.buildPoly(h,g);i||(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g))}else g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g);h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))}else g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g);d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d);if(!m)return!1;var n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i);return!0}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new b.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new b.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.instances=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)void 0===d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.autoResize=d.autoResize||!1,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,b.instances[this.glContextId]=this,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(this.__stage=a),a.updateTransform();var b=this.gl;b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d,e){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.flipY=d?-1:1,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession,e),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.autoResize&&(this.view.style.width=this.width/this.resolution+"px",this.view.style.height=this.height/this.resolution+"px"),this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a.mipmap&&b.isPowerOfTwo(a.width,a.height)?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR_MIPMAP_LINEAR:c.NEAREST_MIPMAP_NEAREST),c.generateMipmap(c.TEXTURE_2D)):c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.destroy=function(){b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null,b.CanvasPool.remove(this),b.instances[this.glContextId]=null,b.WebGLRenderer.glContextId--},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniform1f(e.flipY,d.flipY),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform1f(e.flipY,d.flipY),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g -},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(f.fillColor||0===f.fillColor)&&(c.globalAlpha=f.fillAlpha*d,c.fillStyle="#"+("00000"+(0|h).toString(16)).substr(-6),c.fill()),f.lineWidth&&(c.globalAlpha=f.lineAlpha*d,c.strokeStyle="#"+("00000"+(0|i).toString(16)).substr(-6),c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){c.beginPath();for(var e=0;d>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iz?z:y,c.moveTo(u,v+y),c.lineTo(u,v+x-y),c.quadraticCurveTo(u,v+x,u+y,v+x),c.lineTo(u+w-y,v+x),c.quadraticCurveTo(u+w,v+x,u+w,v+x-y),c.lineTo(u+w,v+y),c.quadraticCurveTo(u+w,v,u+w-y,v),c.lineTo(u+y,v),c.quadraticCurveTo(u,v,u,v+y),c.closePath()}}}},b.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this.mipmap=!1,this._dirty=[!0,!0,!0,!0],a&&((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height&&(this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty()),this.imageUrl=null,this._powerOf2=!1)},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.forceLoaded=function(a,b){this.hasLoaded=!0,this.width=a,this.height=b,this.dirty()},b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,navigator.isCocoonJS||(this.source.src="")):this.source&&this.source._pixiId&&(b.CanvasPool.removeByCanvas(this.source),delete b.BaseTextureCache[this.source._pixiId]),this.source=null,this.unloadFromGPU()},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;a=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.4.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*Math.PI*this._radius},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},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){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b) -},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.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(c.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(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,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},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){a=a||1,b=b||0,d=d||0,e=e||1,f=f||0,g=g||0,this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return 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},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.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},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,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)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(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 c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.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(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.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(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.prototype={preUpdate:function(){this.totalInView=0},follow:function(a,b){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(b){case c.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new c.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case c.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=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.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target),this.target.parent&&this._targetPosition.multiply(this.target.parent.worldTransform.a,this.target.parent.worldTransform.d),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),c.Create=function(a){this.game=a,this.bmd=a.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.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.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3))) -},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},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.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);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){if(!this._bindings)return-1;void 0===b&&(b=null);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){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e){void 0===e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.events&&f.events.onAddedToGroup$dispatch(f,this),null===this.cursor&&(this.cursor=f),f},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.resetCursor=function(a){return void 0===a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.replace=function(a,b){var d=this.getIndex(a);return-1!==d?(b.parent&&(b.parent instanceof c.Group?b.parent.remove(b):b.parent.removeChild(b)),this.remove(a),this.addAt(b,d),a):void 0},c.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},c.Group.prototype.setProperty=function(a,b,c,d,e){if(void 0===e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?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===f?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===f?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===f&&(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)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b){if(void 0===a&&(a=!1),void 0===b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);this.removeFromHash(c),a&&c&&c.destroy(!0)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){a=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Game=function(a,b,d,e,f,g,h,i){return this.id=c.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.resolution=1,this._width=800,this._height=600,this.transparent=!1,this.antialias=!0,this.preserveDrawingBuffer=!1,this.renderer=null,this.renderType=c.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.plugins=null,this.rnd=null,this.device=c.Device,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.create=null,this.lockRender=!1,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,this.currentUpdateID=0,this.updatesThisFrame=1,this._deltaTime=0,this._lastCount=0,this._spiraling=0,this._kickstart=!0,this.fpsProblemNotifier=new c.Signal,this.forceSingleUpdate=!1,this._nextFpsNotification=0,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):(this.config={enableDebug:!0},"undefined"!=typeof a&&(this._width=a),"undefined"!=typeof b&&(this._height=b),"undefined"!=typeof d&&(this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new c.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new c.StateManager(this,f)),this.device.whenReady(this.boot,this),this},c.Game.prototype={parseConfig:function(a){this.config=a,void 0===a.enableDebug&&(this.config.enableDebug=!0),a.width&&(this._width=a.width),a.height&&(this._height=a.height),a.renderer&&(this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.resolution&&(this.resolution=a.resolution),a.preserveDrawingBuffer&&(this.preserveDrawingBuffer=a.preserveDrawingBuffer),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var b=[(Date.now()*Math.random()).toString()];a.seed&&(b=a.seed),this.rnd=new c.RandomDataGenerator(b);var d=null;a.state&&(d=a.state),this.state=new c.StateManager(this,d)},boot:function(){this.isBooted||(this.onPause=new c.Signal,this.onResume=new c.Signal,this.onBlur=new c.Signal,this.onFocus=new c.Signal,this.isBooted=!0,this.math=c.Math,this.scale=new c.ScaleManager(this,this._width,this._height),this.stage=new c.Stage(this),this.setUpRenderer(),this.world=new c.World(this),this.add=new c.GameObjectFactory(this),this.make=new c.GameObjectCreator(this),this.cache=new c.Cache(this),this.load=new c.Loader(this),this.time=new c.Time(this),this.tweens=new c.TweenManager(this),this.input=new c.Input(this),this.sound=new c.SoundManager(this),this.physics=new c.Physics(this,this.physicsConfig),this.particles=new c.Particles(this),this.create=new c.Create(this),this.plugins=new c.PluginManager(this),this.net=new c.Net(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.scale.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.config.enableDebug?(this.debug=new c.Utils.Debug(this),this.debug.boot()):this.debug={preUpdate:function(){},update:function(){},reset:function(){}},this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new c.RequestAnimationFrame(this,this.config.forceSetTimeOut):new c.RequestAnimationFrame(this,!1),this._kickstart=!0,window.focus&&(!window.PhaserGlobal||window.PhaserGlobal&&!window.PhaserGlobal.stopFocus)&&window.focus(),this.raf.start())},showDebugHeader:function(){if(!window.PhaserGlobal||!window.PhaserGlobal.hideBanner){var a=c.VERSION,b="Canvas",d="HTML Audio",e=1;if(this.renderType===c.WEBGL?(b="WebGL",e++):this.renderType==c.HEADLESS&&(b="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" %c %c %c http://phaser.io %c♥%c♥%c♥","background: #9854d8","background: #6c2ca7","color: #ffffff; background: #450f78;","background: #6c2ca7","background: #9854d8","background: #ffffff"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===c.AUTO&&(this.renderType=c.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:this.resolution,clearBeforeRender:!0}),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:this.resolution,antialias:this.antialias,preserveDrawingBuffer:this.preserveDrawingBuffer}),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(1/this.time.desiredFps),this.stage.updateTransform(),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(1/this.time.desiredFps),this.stage.updateTransform(),c++,!this.forceSingleUpdate||1!==c););c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],b,d))return!0;return!1},onClickTrampoline:function(){this.activePointer.processClickTrampolines()}},c.Input.prototype.constructor=c.Input,Object.defineProperty(c.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.duration=0,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),a.ctrlKey&&this.leftButton.isDown&&this.rightButton.start(a),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&(this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.x,this.y),this.game.input.onDown.dispatch(this,a),this.game.input.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){this.active&&(this.dirty&&(this.game.input.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=this.game.input.holdRate&&((this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+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,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),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.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){for(var b=Number.MAX_VALUE,c=-1,d=null,e=this.game.input.interactiveItems.first;e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e)),e=this.game.input.interactiveItems.next;for(var e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e),e=this.game.input.interactiveItems.next;return null===d?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=d,d._pointerOverHandler(this)):this.targetObject===d?d.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=d,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&(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=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!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.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderIDb;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];(b.isOver===!1||a.dirty)&&(b.isOver=!0,b.isOut=!1,b.timeOver=this.game.time.time,b.x=a.x-this.sprite.x,b.y=a.y-this.sprite.y,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a))}},_pointerOutHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];b.isOver=!1,b.isOut=!0,b.timeOut=this.game.time.time,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut$dispatch(this.sprite,a)}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown$dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var c=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.sprite.events.onInputUp$dispatch(this.sprite,a,c),c&&(c=this.checkPointerOver(a))),b.isOver=c,!c&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y))):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))),this.sprite.events.onDragUpdate.dispatch(this.sprite,a,b,c,this.snapPoint),!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){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Component=function(){},c.Component.Angle=function(){},c.Component.Angle.prototype={angle:{get:function(){return c.Math.wrapAngle(c.Math.radToDeg(this.rotation))},set:function(a){this.rotation=c.Math.degToRad(c.Math.wrapAngle(a))}}},c.Component.Animation=function(){},c.Component.Animation.prototype={play:function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0}},c.Component.AutoCull=function(){},c.Component.AutoCull.prototype={autoCull:!1,inCamera:{get:function(){return this.autoCull||this.checkWorldBounds||(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y),this.game.world.camera.view.intersects(this._bounds)}}},c.Component.Bounds=function(){},c.Component.Bounds.prototype={offsetX:{get:function(){return this.anchor.x*this.width}},offsetY:{get:function(){return this.anchor.y*this.height}},left:{get:function(){return this.x-this.offsetX}},right:{get:function(){return this.x+this.width-this.offsetX}},top:{get:function(){return this.y-this.offsetY}},bottom:{get:function(){return this.y+this.height-this.offsetY}}},c.Component.BringToTop=function(){},c.Component.BringToTop.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},c.Component.BringToTop.prototype.sendToBack=function(){return this.parent&&this.parent.sendToBack(this),this},c.Component.BringToTop.prototype.moveUp=function(){return this.parent&&this.parent.moveUp(this),this},c.Component.BringToTop.prototype.moveDown=function(){return this.parent&&this.parent.moveDown(this),this},c.Component.Core=function(){},c.Component.Core.install=function(a){c.Utils.mixinPrototype(this,c.Component.Core.prototype),this.components={};for(var b=0;bthis.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if((this.autoCull||this.checkWorldBounds)&&(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull&&(this.game.world.camera.view.intersects(this._bounds)?(this.renderable=!0,this.game.world.camera.totalInView++):this.renderable=!1),this.checkWorldBounds))if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1;return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,"number"==typeof this.health&&(this.health=a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),e.hasFrameData(a.key,c.Cache.BITMAPDATA)&&(f=!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b));else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0) -}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:this.checkTransform,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.splice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.splice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.TileSprite=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||256,f=f||256,g=g||null,h=h||null,this.type=c.TILESPRITE,this.physicsType=c.SPRITE,this._scroll=new c.Point;var i=a.cache.getImage("__default",!0);PIXI.TilingSprite.call(this,new PIXI.Texture(i.base),e,f),c.Component.Core.init.call(this,a,b,d,g,h)},c.TileSprite.prototype=Object.create(PIXI.TilingSprite.prototype),c.TileSprite.prototype.constructor=c.TileSprite,c.Component.Core.install.call(c.TileSprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","Smoothed"]),c.TileSprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.TileSprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.TileSprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.TileSprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TileSprite.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},c.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},c.TileSprite.prototype.destroy=function(a){c.Component.Destroy.prototype.destroy.call(this,a),PIXI.TilingSprite.prototype.destroy.call(this)},c.TileSprite.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,this._scroll=new c.Point,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c0&&"none"!==a}var l=this;a(),g(),f(),e(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.DOM={getOffset:function(a,b){b=b||new c.Point;var d=a.getBoundingClientRect(),e=c.DOM.scrollY,f=c.DOM.scrollX,g=document.documentElement.clientTop,h=document.documentElement.clientLeft;return b.x=d.left+f-h,b.y=d.top+e-g,b},getBounds:function(a,b){return void 0===b&&(b=0),a=a&&!a.nodeType?a[0]:a,a&&1===a.nodeType?this.calibrate(a.getBoundingClientRect(),b):!1},calibrate:function(a,b){b=+b||0;var c={width:0,height:0,left:0,right:0,top:0,bottom:0};return c.width=(c.right=a.right+b)-(c.left=a.left-b),c.height=(c.bottom=a.bottom+b)-(c.top=a.top-b),c},getAspectRatio:function(a){a=null==a?this.visualBounds:1===a.nodeType?this.getBounds(a):a;var b=a.width,c=a.height;return"function"==typeof b&&(b=b.call(a)),"function"==typeof c&&(c=c.call(a)),b/c},inLayoutViewport:function(a,b){var c=this.getBounds(a,b);return!!c&&c.bottom>=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},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 void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var c=["i","mozI","oI","webkitI","msI"];for(var d in c){var e=c[d]+"mageSmoothingEnabled";if(e in a)return a[e]=b,a}return a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},c.RequestAnimationFrame=function(a,b){void 0===b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b; -for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=0;b=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},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},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},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)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return 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)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===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}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,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 a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var j=Math.PI/180,k=180/Math.PI;c.Math.degToRad=function(a){return a*j},c.Math.radToDeg=function(a){return a*k},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree;var l=function(){};c.Net=l,c.Net.prototype={isDisabled:!0,getHostName:l,checkDomainName:l,updateQueryString:l,getQueryString:l,decodeURI:l},c.Net.prototype.constructor=c.Net,c.TweenManager=function(){},c.TweenManager.prototype.update=function(){},c.TweenManager.prototype.constructor=c.TweenManager,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=0,this.physicsElapsedMS=0,this.desiredFps=60,this.suggestedFps=null,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this.desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=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=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.splice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.splice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.splice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===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){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.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,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(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)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null; -for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.reset(),this.game.state.loadComplete())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayVideo(c))return a[b]}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayAudio(c))return a[b]}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=new Blob([new Uint8Array(b.response)])}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0); -break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.data=a.callback?a.callback.call(a.callbackContext,a.key,b.response):b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.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 c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.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)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(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),void 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)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter&&this.matter.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.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()}},c.Particles.prototype.constructor=c.Particles,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gj;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a;for(var b=0;bi){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.4.4-RC1",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},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){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.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(c.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(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,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},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){a=a||1,b=b||0,d=d||0,e=e||1,f=f||0,g=g||0,this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return 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},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0, +this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.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},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,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)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(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 c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.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(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.prototype={preUpdate:function(){this.totalInView=0},follow:function(a,b){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(b){case c.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new c.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case c.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=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.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target),this.target.parent&&this._targetPosition.multiply(this.target.parent.worldTransform.a,this.target.parent.worldTransform.d),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.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.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},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.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);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){if(!this._bindings)return-1;void 0===b&&(b=null);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){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e){void 0===e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.events&&f.events.onAddedToGroup$dispatch(f,this),null===this.cursor&&(this.cursor=f),f},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.resetCursor=function(a){return void 0===a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.replace=function(a,b){var d=this.getIndex(a);return-1!==d?(b.parent&&(b.parent instanceof c.Group?b.parent.remove(b):b.parent.removeChild(b)),this.remove(a),this.addAt(b,d),a):void 0},c.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},c.Group.prototype.setProperty=function(a,b,c,d,e){if(void 0===e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?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===f?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===f?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===f&&(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)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b){if(void 0===a&&(a=!1),void 0===b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);this.removeFromHash(c),a&&c&&c.destroy(!0)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.stage.updateTransform(),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),this.stage.updateTransform(),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],b,d))return!0;return!1},onClickTrampoline:function(){this.activePointer.processClickTrampolines()}},c.Input.prototype.constructor=c.Input,Object.defineProperty(c.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),a.ctrlKey&&this.leftButton.isDown&&this.rightButton.start(a),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),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.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){for(var b=Number.MAX_VALUE,c=-1,d=null,e=this.game.input.interactiveItems.first;e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e)),e=this.game.input.interactiveItems.next;for(var e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e),e=this.game.input.interactiveItems.next;return null===d?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=d,d._pointerOverHandler(this)):this.targetObject===d?d.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=d,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!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.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderIDb;b++)if(this._pointerData[b].isOver)return!0},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1), +!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];(b.isOver===!1||a.dirty)&&(b.isOver=!0,b.isOut=!1,b.timeOver=this.game.time.time,b.x=a.x-this.sprite.x,b.y=a.y-this.sprite.y,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a))}},_pointerOutHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];b.isOver=!1,b.isOut=!0,b.timeOut=this.game.time.time,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut$dispatch(this.sprite,a)}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown$dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var c=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.sprite.events.onInputUp$dispatch(this.sprite,a,c),c&&(c=this.checkPointerOver(a))),b.isOver=c,!c&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y))):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))),this.sprite.events.onDragUpdate.dispatch(this.sprite,a,b,c,this.snapPoint),!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){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Component=function(){},c.Component.Angle=function(){},c.Component.Angle.prototype={angle:{get:function(){return c.Math.wrapAngle(c.Math.radToDeg(this.rotation))},set:function(a){this.rotation=c.Math.degToRad(c.Math.wrapAngle(a))}}},c.Component.Animation=function(){},c.Component.Animation.prototype={play:function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0}},c.Component.AutoCull=function(){},c.Component.AutoCull.prototype={autoCull:!1,inCamera:{get:function(){return this.autoCull||this.checkWorldBounds||(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y),this.game.world.camera.view.intersects(this._bounds)}}},c.Component.Bounds=function(){},c.Component.Bounds.prototype={offsetX:{get:function(){return this.anchor.x*this.width}},offsetY:{get:function(){return this.anchor.y*this.height}},left:{get:function(){return this.x-this.offsetX}},right:{get:function(){return this.x+this.width-this.offsetX}},top:{get:function(){return this.y-this.offsetY}},bottom:{get:function(){return this.y+this.height-this.offsetY}}},c.Component.BringToTop=function(){},c.Component.BringToTop.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},c.Component.BringToTop.prototype.sendToBack=function(){return this.parent&&this.parent.sendToBack(this),this},c.Component.BringToTop.prototype.moveUp=function(){return this.parent&&this.parent.moveUp(this),this},c.Component.BringToTop.prototype.moveDown=function(){return this.parent&&this.parent.moveDown(this),this},c.Component.Core=function(){},c.Component.Core.install=function(a){c.Utils.mixinPrototype(this,c.Component.Core.prototype),this.components={};for(var b=0;bthis.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if((this.autoCull||this.checkWorldBounds)&&(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull&&(this.game.world.camera.view.intersects(this._bounds)?(this.renderable=!0,this.game.world.camera.totalInView++):this.renderable=!1),this.checkWorldBounds))if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1;return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.heal&&this.heal(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),e.hasFrameData(a.key,c.Cache.BITMAPDATA)&&(f=!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b));else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype), +c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var f="Over",g="Out",h="Down",i="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(f,a,this.input.pointerOver()),this.setStateFrame(g,b,!this.input.pointerOver()),this.setStateFrame(h,c,this.input.pointerDown()),this.setStateFrame(i,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,j,k,l){this.setStateSound(f,a,b),this.setStateSound(g,e,j),this.setStateSound(h,c,d),this.setStateSound(i,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(f,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(f),(!this.onOverMouseOnly||b.isMouse)&&(this.playStateSound(f),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(g),this.playStateSound(g),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(i),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(g);else{var d=this.changeStateFrame(i);d||(c?this.changeStateFrame(f):this.changeStateFrame(g))}},c.SpriteBatch=function(a,b,d,e){(void 0===b||null===b)&&(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,c.Group.prototype,PIXI.SpriteBatch.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.TileSprite=function(){},c.Device=function(){this.deviceReadyAt=0,this.initialized=!1,this.desktop=!1,this.iOS=!1,this.iOSVersion=0,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.electron=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.canvasBitBltShift=null,this.webGL=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.worker=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!0,this.quirksMode=!1,this.touch=!1,this.mspointer=!1,this.wheelEvent=null,this.arora=!1,this.chrome=!1,this.chromeVersion=0,this.epiphany=!1,this.firefox=!1,this.firefoxVersion=0,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.oggVideo=!1,this.h264Video=!1,this.mp4Video=!1,this.webmVideo=!1,this.vp9Video=!1,this.hlsVideo=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.LITTLE_ENDIAN=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1},c.Device=new c.Device,c.Device.onInitialized=new c.Signal,c.Device.whenReady=function(a,b,c){var d=this._readyCheck;if(this.deviceReadyAt||!d)a.call(b,this);else if(d._monitor||c)d._queue=d._queue||[],d._queue.push([a,b]);else{d._monitor=d.bind(this),d._queue=d._queue||[],d._queue.push([a,b]);var e="undefined"!=typeof window.cordova,f=navigator.isCocoonJS;"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(d._monitor,0):e&&!f?document.addEventListener("deviceready",d._monitor,!1):(document.addEventListener("DOMContentLoaded",d._monitor,!1),window.addEventListener("load",d._monitor,!1))}},c.Device._readyCheck=function(){var a=this._readyCheck;if(document.body){if(!this.deviceReadyAt){this.deviceReadyAt=Date.now(),document.removeEventListener("deviceready",a._monitor),document.removeEventListener("DOMContentLoaded",a._monitor),window.removeEventListener("load",a._monitor),this._initialize(),this.initialized=!0,this.onInitialized.dispatch(this);for(var b;b=a._queue.shift();){var c=b[0],d=b[1];c.call(d,this)}this._readyCheck=null,this._initialize=null,this.onInitialized=null}}else window.setTimeout(a._monitor,20)},c.Device._initialize=function(){function a(){var a=navigator.userAgent;/Playstation Vita/.test(a)?l.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?l.kindle=!0:/Android/.test(a)?l.android=!0:/CrOS/.test(a)?l.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?(l.iOS=!0,navigator.appVersion.match(/OS (\d+)/),l.iOSVersion=parseInt(RegExp.$1,10)):/Linux/.test(a)?l.linux=!0:/Mac OS/.test(a)?l.macOS=!0:/Windows/.test(a)&&(l.windows=!0),(/Windows Phone/i.test(a)||/IEMobile/i.test(a))&&(l.android=!1,l.iOS=!1,l.macOS=!1,l.windows=!0,l.windowsPhone=!0);var b=/Silk/.test(a);(l.windows||l.macOS||l.linux&&!b||l.chromeOS)&&(l.desktop=!0),(l.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(l.desktop=!1)}function b(){l.canvas=!!window.CanvasRenderingContext2D||l.cocoonJS;try{l.localStorage=!!localStorage.getItem}catch(a){l.localStorage=!1}l.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),l.fileSystem=!!window.requestFileSystem,l.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),l.webGL=!!l.webGL,l.worker=!!window.Worker,l.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,l.quirksMode="CSS1Compat"===document.compatMode?!1:!0,navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||navigator.oGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL,l.getUserMedia=l.getUserMedia&&!!navigator.getUserMedia&&!!window.URL,l.firefox&&l.firefoxVersion<21&&(l.getUserMedia=!1),!l.iOS&&(l.ie||l.firefox||l.chrome)&&(l.canvasBitBltShift=!0),(l.safari||l.mobileSafari)&&(l.canvasBitBltShift=!1)}function c(){("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c0&&"none"!==a}var l=this;a(),g(),f(),e(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},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 void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},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},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},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)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return 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)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===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}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,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 a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var j=Math.PI/180,k=180/Math.PI;c.Math.degToRad=function(a){return a*j},c.Math.radToDeg=function(a){return a*k},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree;var l=function(){};c.Net=l,c.Net.prototype={isDisabled:!0,getHostName:l,checkDomainName:l,updateQueryString:l,getQueryString:l,decodeURI:l},c.Net.prototype.constructor=c.Net,c.TweenManager=function(){},c.TweenManager.prototype.update=function(){},c.TweenManager.prototype.constructor=c.TweenManager,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=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=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1); +this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===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){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.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,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(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)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.reset(),this.game.state.loadComplete())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayVideo(c))return a[b]}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayAudio(c))return a[b]}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=new Blob([new Uint8Array(b.response)])}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}});var m=function(){};return c.Utils.Debug=m,c.Utils.Debug.prototype={isDisabled:!0,boot:m,preUpdate:m,reset:m,start:m,stop:m,line:m,soundInfo:m,cameraInfo:m,timer:m,pointer:m,spriteInputInfo:m,key:m,inputInfo:m,spriteBounds:m,ropeSegments:m,spriteInfo:m,spriteCoords:m,lineInfo:m,pixel:m,geom:m,rectangle:m,text:m,quadTree:m,body:m,bodyInfo:m,box2dWorld:m,box2dBody:m},c.Utils.Debug.prototype.constructor=c.Utils.Debug,c.DOM={getOffset:function(a,b){b=b||new c.Point;var d=a.getBoundingClientRect(),e=c.DOM.scrollY,f=c.DOM.scrollX,g=document.documentElement.clientTop,h=document.documentElement.clientLeft;return b.x=d.left+f-h,b.y=d.top+e-g,b},getBounds:function(a,b){return void 0===b&&(b=0),a=a&&!a.nodeType?a[0]:a,a&&1===a.nodeType?this.calibrate(a.getBoundingClientRect(),b):!1},calibrate:function(a,b){b=+b||0;var c={width:0,height:0,left:0,right:0,top:0,bottom:0};return c.width=(c.right=a.right+b)-(c.left=a.left-b),c.height=(c.bottom=a.bottom+b)-(c.top=a.top-b),c},getAspectRatio:function(a){a=null==a?this.visualBounds:1===a.nodeType?this.getBounds(a):a;var b=a.width,c=a.height;return"function"==typeof b&&(b=b.call(a)),"function"==typeof c&&(c=c.call(a)),b/c},inLayoutViewport:function(a,b){var c=this.getBounds(a,b);return!!c&&c.bottom>=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.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)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(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),void 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)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.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 c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)), +this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter&&this.matter.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.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()}},c.Particles.prototype.constructor=c.Particles,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser-minimum.map \ No newline at end of file diff --git a/build/custom/phaser-no-physics.js b/build/custom/phaser-no-physics.js index a5b17f29f..10b150f69 100644 --- a/build/custom/phaser-no-physics.js +++ b/build/custom/phaser-no-physics.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.4.3 "Coramen" - Built: Mon Aug 24 2015 13:54:29 +* v2.4.4 "Amador" - Built: Tue Oct 13 2015 14:10:10 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -56,6 +56,13 @@ */ var PIXI = PIXI || {}; +/** + * A reference to the Phaser Game instance that owns this Pixi renderer. + * @property {Phaser.Game} game + * @static + */ +PIXI.game = null; + /** * @property {Number} WEBGL_RENDERER * @protected @@ -75,7 +82,7 @@ PIXI.CANVAS_RENDERER = 1; * @property {String} VERSION * @static */ -PIXI.VERSION = "v2.2.8"; +PIXI.VERSION = "v2.2.9"; // used to create uids for various pixi objects. PIXI._UID = 0; @@ -137,7 +144,6 @@ PIXI.RETINA_PREFIX = "@2x"; * @property {Boolean} defaultRenderOptions.clearBeforeRender=true * @property {Boolean} defaultRenderOptions.autoResize=false * @static - */ PIXI.defaultRenderOptions = { view: null, transparent: false, @@ -147,6 +153,7 @@ PIXI.defaultRenderOptions = { clearBeforeRender: true, autoResize: false }; + */ /** * @author Mat Groves http://matgroves.com/ @Doormat23 @@ -177,25 +184,6 @@ PIXI.DisplayObject = function() */ this.scale = new PIXI.Point(1, 1); - /** - * The transform callback is an optional callback that if set will be called at the end of the updateTransform method and sent two parameters: - * This Display Objects worldTransform matrix and its parents transform matrix. Both are PIXI.Matrix object types. - * The matrix are passed by reference and can be modified directly without needing to return them. - * This ability allows you to check any of the matrix values and perform actions such as clamping scale or limiting rotation, regardless of the parent transforms. - * - * @property transformCallback - * @type Function - */ - this.transformCallback = null; - - /** - * The context under which the transformCallback is invoked. - * - * @property transformCallbackContext - * @type Object - */ - this.transformCallbackContext = null; - /** * The pivot point of the displayObject that it rotates around * @@ -409,8 +397,6 @@ PIXI.DisplayObject.prototype.destroy = function() this.children = []; } - this.transformCallback = null; - this.transformCallbackContext = null; this.hitArea = null; this.parent = null; this.stage = null; @@ -1433,6 +1419,7 @@ PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession) { renderSession.maskManager.popMask(renderSession); } + }; /** @@ -1661,8 +1648,21 @@ PIXI.Sprite.prototype.getBounds = function(matrix) if (b === 0 && c === 0) { // scale may be negative! - if (a < 0) a *= -1; - if (d < 0) d *= -1; + if (a < 0) + { + a *= -1; + var temp = w0; + w0 = -w1; + w1 = -temp; + } + + if (d < 0) + { + d *= -1; + var temp = h0; + h0 = -h1; + h1 = -temp; + } // this means there is no rotation going on right? RIGHT? // if thats the case then we can avoid checking the bound values! yay @@ -1801,7 +1801,7 @@ PIXI.Sprite.prototype._renderWebGL = function(renderSession, matrix) PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) { // If the sprite is not visible or the alpha is 0 then no need to render this element - if (this.visible === false || this.alpha === 0 || this.renderable === false || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) + if (!this.visible || this.alpha === 0 || !this.renderable || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) { return; } @@ -2109,82 +2109,6 @@ PIXI.SpriteBatch.prototype._renderCanvas = function(renderSession) }; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A Stage represents the root of the display tree. Everything connected to the stage is rendered - * - * @class Stage - * @extends DisplayObjectContainer - * @constructor - * @param backgroundColor {Number} the background color of the stage, you have to pass this in is in hex format - * like: 0xFFFFFF for white - * - * Creating a stage is a mandatory process when you use Pixi, which is as simple as this : - * var stage = new PIXI.Stage(0xFFFFFF); - * where the parameter given is the background colour of the stage, in hex - * you will use this stage instance to add your sprites to it and therefore to the renderer - * Here is how to add a sprite to the stage : - * stage.addChild(sprite); - */ -PIXI.Stage = function(backgroundColor) -{ - PIXI.DisplayObjectContainer.call( this ); - - /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ - this.worldTransform = new PIXI.Matrix(); - - //the stage is its own stage - this.stage = this; - - this.setBackgroundColor(backgroundColor); -}; - -// constructor -PIXI.Stage.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Stage.prototype.constructor = PIXI.Stage; - -/* - * Updates the object transform for rendering - * - * @method updateTransform - * @private - */ -PIXI.Stage.prototype.updateTransform = function() -{ - this.worldAlpha = 1; - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } -}; - -/** - * Sets the background color for the stage - * - * @method setBackgroundColor - * @param backgroundColor {Number} the color of the background, easiest way to pass this in is in hex format - * like: 0xFFFFFF for white - */ -PIXI.Stage.prototype.setBackgroundColor = function(backgroundColor) -{ - this.backgroundColor = backgroundColor || 0x000000; - this.backgroundColorSplit = PIXI.hex2rgb(this.backgroundColor); - var hex = this.backgroundColor.toString(16); - hex = '000000'.substr(0, 6 - hex.length) + hex; - this.backgroundColorString = '#' + hex; -}; - /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2280,175 +2204,6 @@ PIXI.isPowerOfTwo = function(width, height) }; -/* - PolyK library - url: http://polyk.ivank.net - Released under MIT licence. - - Copyright (c) 2012 Ivan Kuckir - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - - This is an amazing lib! - - Slightly modified by Mat Groves (matgroves.com); -*/ - -/** - * Based on the Polyk library http://polyk.ivank.net released under MIT licence. - * This is an amazing lib! - * Slightly modified by Mat Groves (matgroves.com); - * @class PolyK - */ -PIXI.PolyK = {}; - -/** - * Triangulates shapes for webGL graphic fills. - * - * @method Triangulate - */ -PIXI.PolyK.Triangulate = function(p) -{ - var sign = true; - - var n = p.length >> 1; - if(n < 3) return []; - - var tgs = []; - var avl = []; - for(var i = 0; i < n; i++) avl.push(i); - - i = 0; - var al = n; - while(al > 3) - { - var i0 = avl[(i+0)%al]; - var i1 = avl[(i+1)%al]; - var i2 = avl[(i+2)%al]; - - var ax = p[2*i0], ay = p[2*i0+1]; - var bx = p[2*i1], by = p[2*i1+1]; - var cx = p[2*i2], cy = p[2*i2+1]; - - var earFound = false; - if(PIXI.PolyK._convex(ax, ay, bx, by, cx, cy, sign)) - { - earFound = true; - for(var j = 0; j < al; j++) - { - var vi = avl[j]; - if(vi === i0 || vi === i1 || vi === i2) continue; - - if(PIXI.PolyK._PointInTriangle(p[2*vi], p[2*vi+1], ax, ay, bx, by, cx, cy)) { - earFound = false; - break; - } - } - } - - if(earFound) - { - tgs.push(i0, i1, i2); - avl.splice((i+1)%al, 1); - al--; - i = 0; - } - else if(i++ > 3*al) - { - // need to flip flip reverse it! - // reset! - if(sign) - { - tgs = []; - avl = []; - for(i = 0; i < n; i++) avl.push(i); - - i = 0; - al = n; - - sign = false; - } - else - { - // window.console.log("PIXI Warning: shape too complex to fill"); - return null; - } - } - } - - tgs.push(avl[0], avl[1], avl[2]); - return tgs; -}; - -/** - * Checks whether a point is within a triangle - * - * @method _PointInTriangle - * @param px {Number} x coordinate of the point to test - * @param py {Number} y coordinate of the point to test - * @param ax {Number} x coordinate of the a point of the triangle - * @param ay {Number} y coordinate of the a point of the triangle - * @param bx {Number} x coordinate of the b point of the triangle - * @param by {Number} y coordinate of the b point of the triangle - * @param cx {Number} x coordinate of the c point of the triangle - * @param cy {Number} y coordinate of the c point of the triangle - * @private - * @return {Boolean} - */ -PIXI.PolyK._PointInTriangle = function(px, py, ax, ay, bx, by, cx, cy) -{ - var v0x = cx-ax; - var v0y = cy-ay; - var v1x = bx-ax; - var v1y = by-ay; - var v2x = px-ax; - var v2y = py-ay; - - var dot00 = v0x*v0x+v0y*v0y; - var dot01 = v0x*v1x+v0y*v1y; - var dot02 = v0x*v2x+v0y*v2y; - var dot11 = v1x*v1x+v1y*v1y; - var dot12 = v1x*v2x+v1y*v2y; - - var invDenom = 1 / (dot00 * dot11 - dot01 * dot01); - var u = (dot11 * dot02 - dot01 * dot12) * invDenom; - var v = (dot00 * dot12 - dot01 * dot02) * invDenom; - - // Check if point is in triangle - return (u >= 0) && (v >= 0) && (u + v < 1); -}; - -/** - * Checks whether a shape is convex - * - * @method _convex - * @private - * @return {Boolean} - */ -PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) -{ - return ((ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0) === sign; -}; - /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -2456,21 +2211,21 @@ PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) */ /** -* The CanvasPool is a global static object that allows Pixi and Phaser to pool +* The CanvasPool is a global static object that allows Pixi and Phaser to pool canvas DOM elements. * -* @class PIXI.CanvasPool +* @class CanvasPool * @static */ PIXI.CanvasPool = { /** + * Creates a new Canvas DOM element, or pulls one from the pool if free. * - * - * @method PIXI.CanvasPool.create + * @method create * @static - * @param {any} parent - The parent of the canvas element. - * @param {number} width - The width of the canvas element. - * @param {number} height - The height of the canvas element. + * @param parent {any} The parent of the canvas element. + * @param width {number} The width of the canvas element. + * @param height {number} The height of the canvas element. * @return {HTMLCanvasElement} The canvas element. */ create: function (parent, width, height) { @@ -2488,16 +2243,12 @@ PIXI.CanvasPool = { PIXI.CanvasPool.pool.push(container); canvas = container.canvas; - - // console.log('CanvasPool created', PIXI.CanvasPool.pool.length); } else { PIXI.CanvasPool.pool[idx].parent = parent; canvas = PIXI.CanvasPool.pool[idx].canvas; - - // console.log('CanvasPool recycled', idx); } if (width !== undefined) @@ -2510,6 +2261,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the first free canvas index from the pool. + * + * @method getFirst + * @static + * @return {number} + */ getFirst: function () { var pool = PIXI.CanvasPool.pool; @@ -2526,6 +2284,13 @@ PIXI.CanvasPool = { }, + /** + * Removes the parent from a canvas element from the pool, freeing it up for re-use. + * + * @method remove + * @param parent {any} The parent of the canvas element. + * @static + */ remove: function (parent) { var pool = PIXI.CanvasPool.pool; @@ -2535,13 +2300,18 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; - - // console.log('CanvasPool removed', i); } } }, + /** + * Removes the parent from a canvas element from the pool, freeing it up for re-use. + * + * @method removeByCanvas + * @param canvas {HTMLCanvasElement} The canvas element to remove + * @static + */ removeByCanvas: function (canvas) { var pool = PIXI.CanvasPool.pool; @@ -2556,6 +2326,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the total number of used canvas elements in the pool. + * + * @method getTotal + * @static + * @return {number} The number of in-use (parented) canvas elements in the pool. + */ getTotal: function () { var pool = PIXI.CanvasPool.pool; @@ -2573,6 +2350,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the total number of free canvas elements in the pool. + * + * @method getFree + * @static + * @return {number} The number of free (un-parented) canvas elements in the pool. + */ getFree: function () { var pool = PIXI.CanvasPool.pool; @@ -2592,6 +2376,13 @@ PIXI.CanvasPool = { }; +/** + * The pool into which the canvas dom elements are placed. + * + * @property pool + * @type Array + * @static + */ PIXI.CanvasPool.pool = []; /** @@ -3599,903 +3390,6 @@ PIXI.ComplexPrimitiveShader.prototype.destroy = function() this.attribute = null; }; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A set of functions used by the webGL renderer to draw the primitive graphics data - * - * @class WebGLGraphics - * @private - * @static - */ -PIXI.WebGLGraphics = function() -{ -}; - -/** - * Renders the graphics object - * - * @static - * @private - * @method renderGraphics - * @param graphics {Graphics} - * @param renderSession {Object} - */ -PIXI.WebGLGraphics.renderGraphics = function(graphics, renderSession)//projection, offset) -{ - var gl = renderSession.gl; - var projection = renderSession.projection, - offset = renderSession.offset, - shader = renderSession.shaderManager.primitiveShader, - webGLData; - - if(graphics.dirty) - { - PIXI.WebGLGraphics.updateGraphics(graphics, gl); - } - - var webGL = graphics._webGL[gl.id]; - - // This could be speeded up for sure! - - for (var i = 0; i < webGL.data.length; i++) - { - if(webGL.data[i].mode === 1) - { - webGLData = webGL.data[i]; - - renderSession.stencilManager.pushStencil(graphics, webGLData, renderSession); - - // render quad.. - gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); - - renderSession.stencilManager.popStencil(graphics, webGLData, renderSession); - } - else - { - webGLData = webGL.data[i]; - - - renderSession.shaderManager.setShader( shader );//activatePrimitiveShader(); - shader = renderSession.shaderManager.primitiveShader; - gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); - - gl.uniform1f(shader.flipY, 1); - - gl.uniform2f(shader.projectionVector, projection.x, -projection.y); - gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); - - gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); - - gl.uniform1f(shader.alpha, graphics.worldAlpha); - - - gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); - - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); - gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); - - // set the index buffer! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); - gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); - } - } -}; - -/** - * Updates the graphics object - * - * @static - * @private - * @method updateGraphics - * @param graphicsData {Graphics} The graphics object to update - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.WebGLGraphics.updateGraphics = function(graphics, gl) -{ - // get the contexts graphics object - var webGL = graphics._webGL[gl.id]; - // if the graphics object does not exist in the webGL context time to create it! - if(!webGL)webGL = graphics._webGL[gl.id] = {lastIndex:0, data:[], gl:gl}; - - // flag the graphics as not dirty as we are about to update it... - graphics.dirty = false; - - var i; - - // if the user cleared the graphics object we will need to clear every object - if(graphics.clearDirty) - { - graphics.clearDirty = false; - - // lop through and return all the webGLDatas to the object pool so than can be reused later on - for (i = 0; i < webGL.data.length; i++) - { - var graphicsData = webGL.data[i]; - graphicsData.reset(); - PIXI.WebGLGraphics.graphicsDataPool.push( graphicsData ); - } - - // clear the array and reset the index.. - webGL.data = []; - webGL.lastIndex = 0; - } - - var webGLData; - - // loop through the graphics datas and construct each one.. - // if the object is a complex fill then the new stencil buffer technique will be used - // other wise graphics objects will be pushed into a batch.. - for (i = webGL.lastIndex; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - - if(data.type === PIXI.Graphics.POLY) - { - // need to add the points the the graphics object.. - data.points = data.shape.points.slice(); - if(data.shape.closed) - { - // close the poly if the value is true! - if(data.points[0] !== data.points[data.points.length-2] || data.points[1] !== data.points[data.points.length-1]) - { - data.points.push(data.points[0], data.points[1]); - } - } - - // MAKE SURE WE HAVE THE CORRECT TYPE.. - if(data.fill) - { - if(data.points.length >= 6) - { - if(data.points.length < 6 * 2) - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - - var canDrawUsingSimple = PIXI.WebGLGraphics.buildPoly(data, webGLData); - // console.log(canDrawUsingSimple); - - if(!canDrawUsingSimple) - { - // console.log("<>>>") - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); - PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); - } - - } - else - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); - PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); - } - } - } - - if(data.lineWidth > 0) - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - PIXI.WebGLGraphics.buildLine(data, webGLData); - - } - } - else - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - - if(data.type === PIXI.Graphics.RECT) - { - PIXI.WebGLGraphics.buildRectangle(data, webGLData); - } - else if(data.type === PIXI.Graphics.CIRC || data.type === PIXI.Graphics.ELIP) - { - PIXI.WebGLGraphics.buildCircle(data, webGLData); - } - else if(data.type === PIXI.Graphics.RREC) - { - PIXI.WebGLGraphics.buildRoundedRectangle(data, webGLData); - } - } - - webGL.lastIndex++; - } - - // upload all the dirty data... - for (i = 0; i < webGL.data.length; i++) - { - webGLData = webGL.data[i]; - if(webGLData.dirty)webGLData.upload(); - } -}; - -/** - * @static - * @private - * @method switchMode - * @param webGL {WebGLContext} - * @param type {Number} - */ -PIXI.WebGLGraphics.switchMode = function(webGL, type) -{ - var webGLData; - - if(!webGL.data.length) - { - webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); - webGLData.mode = type; - webGL.data.push(webGLData); - } - else - { - webGLData = webGL.data[webGL.data.length-1]; - - if(webGLData.mode !== type || type === 1) - { - webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); - webGLData.mode = type; - webGL.data.push(webGLData); - } - } - - webGLData.dirty = true; - - return webGLData; -}; - -/** - * Builds a rectangle to draw - * - * @static - * @private - * @method buildRectangle - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) -{ - // --- // - // need to convert points to a nice regular data - // - var rectData = graphicsData.shape; - var x = rectData.x; - var y = rectData.y; - var width = rectData.width; - var height = rectData.height; - - if(graphicsData.fill) - { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vertPos = verts.length/6; - - // start - verts.push(x, y); - verts.push(r, g, b, alpha); - - verts.push(x + width, y); - verts.push(r, g, b, alpha); - - verts.push(x , y + height); - verts.push(r, g, b, alpha); - - verts.push(x + width, y + height); - verts.push(r, g, b, alpha); - - // insert 2 dead triangles.. - indices.push(vertPos, vertPos, vertPos+1, vertPos+2, vertPos+3, vertPos+3); - } - - if(graphicsData.lineWidth) - { - var tempPoints = graphicsData.points; - - graphicsData.points = [x, y, - x + width, y, - x + width, y + height, - x, y + height, - x, y]; - - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Builds a rounded rectangle to draw - * - * @static - * @private - * @method buildRoundedRectangle - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildRoundedRectangle = function(graphicsData, webGLData) -{ - var rrectData = graphicsData.shape; - var x = rrectData.x; - var y = rrectData.y; - var width = rrectData.width; - var height = rrectData.height; - - var radius = rrectData.radius; - - var recPoints = []; - recPoints.push(x, y + radius); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x, y + height - radius, x, y + height, x + radius, y + height)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width - radius, y + height, x + width, y + height, x + width, y + height - radius)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width, y + radius, x + width, y, x + width - radius, y)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + radius, y, x, y, x, y + radius)); - - if (graphicsData.fill) { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vecPos = verts.length/6; - - var triangles = PIXI.PolyK.Triangulate(recPoints); - - // - - var i = 0; - for (i = 0; i < triangles.length; i+=3) - { - indices.push(triangles[i] + vecPos); - indices.push(triangles[i] + vecPos); - indices.push(triangles[i+1] + vecPos); - indices.push(triangles[i+2] + vecPos); - indices.push(triangles[i+2] + vecPos); - } - - - for (i = 0; i < recPoints.length; i++) - { - verts.push(recPoints[i], recPoints[++i], r, g, b, alpha); - } - } - - if (graphicsData.lineWidth) { - var tempPoints = graphicsData.points; - - graphicsData.points = recPoints; - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Calculate the points for a quadratic bezier curve. (helper function..) - * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c - * - * @static - * @private - * @method quadraticBezierCurve - * @param fromX {Number} Origin point x - * @param fromY {Number} Origin point x - * @param cpX {Number} Control point x - * @param cpY {Number} Control point y - * @param toX {Number} Destination point x - * @param toY {Number} Destination point y - * @return {Array(Number)} - */ -PIXI.WebGLGraphics.quadraticBezierCurve = function(fromX, fromY, cpX, cpY, toX, toY) { - - var xa, - ya, - xb, - yb, - x, - y, - n = 20, - points = []; - - function getPt(n1 , n2, perc) { - var diff = n2 - n1; - - return n1 + ( diff * perc ); - } - - var j = 0; - for (var i = 0; i <= n; i++ ) - { - j = i / n; - - // The Green Line - xa = getPt( fromX , cpX , j ); - ya = getPt( fromY , cpY , j ); - xb = getPt( cpX , toX , j ); - yb = getPt( cpY , toY , j ); - - // The Black Dot - x = getPt( xa , xb , j ); - y = getPt( ya , yb , j ); - - points.push(x, y); - } - return points; -}; - -/** - * Builds a circle to draw - * - * @static - * @private - * @method buildCircle - * @param graphicsData {Graphics} The graphics object to draw - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) -{ - // need to convert points to a nice regular data - var circleData = graphicsData.shape; - var x = circleData.x; - var y = circleData.y; - var width; - var height; - - // TODO - bit hacky?? - if(graphicsData.type === PIXI.Graphics.CIRC) - { - width = circleData.radius; - height = circleData.radius; - } - else - { - width = circleData.width; - height = circleData.height; - } - - var totalSegs = 40; - var seg = (Math.PI * 2) / totalSegs ; - - var i = 0; - - if(graphicsData.fill) - { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vecPos = verts.length/6; - - indices.push(vecPos); - - for (i = 0; i < totalSegs + 1 ; i++) - { - verts.push(x,y, r, g, b, alpha); - - verts.push(x + Math.sin(seg * i) * width, - y + Math.cos(seg * i) * height, - r, g, b, alpha); - - indices.push(vecPos++, vecPos++); - } - - indices.push(vecPos-1); - } - - if(graphicsData.lineWidth) - { - var tempPoints = graphicsData.points; - - graphicsData.points = []; - - for (i = 0; i < totalSegs + 1; i++) - { - graphicsData.points.push(x + Math.sin(seg * i) * width, - y + Math.cos(seg * i) * height); - } - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Builds a line to draw - * - * @static - * @private - * @method buildLine - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) -{ - // TODO OPTIMISE! - var i = 0; - var points = graphicsData.points; - if(points.length === 0)return; - - // if the line width is an odd number add 0.5 to align to a whole pixel - if(graphicsData.lineWidth%2) - { - for (i = 0; i < points.length; i++) { - points[i] += 0.5; - } - } - - // get first and last point.. figure out the middle! - var firstPoint = new PIXI.Point( points[0], points[1] ); - var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); - - // if the first point is the last point - gonna have issues :) - if(firstPoint.x === lastPoint.x && firstPoint.y === lastPoint.y) - { - // need to clone as we are going to slightly modify the shape.. - points = points.slice(); - - points.pop(); - points.pop(); - - lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); - - var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; - var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; - - points.unshift(midPointX, midPointY); - points.push(midPointX, midPointY); - } - - var verts = webGLData.points; - var indices = webGLData.indices; - var length = points.length / 2; - var indexCount = points.length; - var indexStart = verts.length/6; - - // DRAW the Line - var width = graphicsData.lineWidth / 2; - - // sort color - var color = PIXI.hex2rgb(graphicsData.lineColor); - var alpha = graphicsData.lineAlpha; - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var px, py, p1x, p1y, p2x, p2y, p3x, p3y; - var perpx, perpy, perp2x, perp2y, perp3x, perp3y; - var a1, b1, c1, a2, b2, c2; - var denom, pdist, dist; - - p1x = points[0]; - p1y = points[1]; - - p2x = points[2]; - p2y = points[3]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - // start - verts.push(p1x - perpx , p1y - perpy, - r, g, b, alpha); - - verts.push(p1x + perpx , p1y + perpy, - r, g, b, alpha); - - for (i = 1; i < length-1; i++) - { - p1x = points[(i-1)*2]; - p1y = points[(i-1)*2 + 1]; - - p2x = points[(i)*2]; - p2y = points[(i)*2 + 1]; - - p3x = points[(i+1)*2]; - p3y = points[(i+1)*2 + 1]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - perp2x = -(p2y - p3y); - perp2y = p2x - p3x; - - dist = Math.sqrt(perp2x*perp2x + perp2y*perp2y); - perp2x /= dist; - perp2y /= dist; - perp2x *= width; - perp2y *= width; - - a1 = (-perpy + p1y) - (-perpy + p2y); - b1 = (-perpx + p2x) - (-perpx + p1x); - c1 = (-perpx + p1x) * (-perpy + p2y) - (-perpx + p2x) * (-perpy + p1y); - a2 = (-perp2y + p3y) - (-perp2y + p2y); - b2 = (-perp2x + p2x) - (-perp2x + p3x); - c2 = (-perp2x + p3x) * (-perp2y + p2y) - (-perp2x + p2x) * (-perp2y + p3y); - - denom = a1*b2 - a2*b1; - - if(Math.abs(denom) < 0.1 ) - { - - denom+=10.1; - verts.push(p2x - perpx , p2y - perpy, - r, g, b, alpha); - - verts.push(p2x + perpx , p2y + perpy, - r, g, b, alpha); - - continue; - } - - px = (b1*c2 - b2*c1)/denom; - py = (a2*c1 - a1*c2)/denom; - - - pdist = (px -p2x) * (px -p2x) + (py -p2y) + (py -p2y); - - - if(pdist > 140 * 140) - { - perp3x = perpx - perp2x; - perp3y = perpy - perp2y; - - dist = Math.sqrt(perp3x*perp3x + perp3y*perp3y); - perp3x /= dist; - perp3y /= dist; - perp3x *= width; - perp3y *= width; - - verts.push(p2x - perp3x, p2y -perp3y); - verts.push(r, g, b, alpha); - - verts.push(p2x + perp3x, p2y +perp3y); - verts.push(r, g, b, alpha); - - verts.push(p2x - perp3x, p2y -perp3y); - verts.push(r, g, b, alpha); - - indexCount++; - } - else - { - - verts.push(px , py); - verts.push(r, g, b, alpha); - - verts.push(p2x - (px-p2x), p2y - (py - p2y)); - verts.push(r, g, b, alpha); - } - } - - p1x = points[(length-2)*2]; - p1y = points[(length-2)*2 + 1]; - - p2x = points[(length-1)*2]; - p2y = points[(length-1)*2 + 1]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - verts.push(p2x - perpx , p2y - perpy); - verts.push(r, g, b, alpha); - - verts.push(p2x + perpx , p2y + perpy); - verts.push(r, g, b, alpha); - - indices.push(indexStart); - - for (i = 0; i < indexCount; i++) - { - indices.push(indexStart++); - } - - indices.push(indexStart-1); -}; - -/** - * Builds a complex polygon to draw - * - * @static - * @private - * @method buildComplexPoly - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildComplexPoly = function(graphicsData, webGLData) -{ - //TODO - no need to copy this as it gets turned into a FLoat32Array anyways.. - var points = graphicsData.points.slice(); - if(points.length < 6)return; - - // get first and last point.. figure out the middle! - var indices = webGLData.indices; - webGLData.points = points; - webGLData.alpha = graphicsData.fillAlpha; - webGLData.color = PIXI.hex2rgb(graphicsData.fillColor); - - /* - calclate the bounds.. - */ - var minX = Infinity; - var maxX = -Infinity; - - var minY = Infinity; - var maxY = -Infinity; - - var x,y; - - // get size.. - for (var i = 0; i < points.length; i+=2) - { - x = points[i]; - y = points[i+1]; - - minX = x < minX ? x : minX; - maxX = x > maxX ? x : maxX; - - minY = y < minY ? y : minY; - maxY = y > maxY ? y : maxY; - } - - // add a quad to the end cos there is no point making another buffer! - points.push(minX, minY, - maxX, minY, - maxX, maxY, - minX, maxY); - - // push a quad onto the end.. - - //TODO - this aint needed! - var length = points.length / 2; - for (i = 0; i < length; i++) - { - indices.push( i ); - } - -}; - -/** - * Builds a polygon to draw - * - * @static - * @private - * @method buildPoly - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildPoly = function(graphicsData, webGLData) -{ - var points = graphicsData.points; - - if(points.length < 6)return; - // get first and last point.. figure out the middle! - var verts = webGLData.points; - var indices = webGLData.indices; - - var length = points.length / 2; - - // sort color - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var triangles = PIXI.PolyK.Triangulate(points); - - if(!triangles)return false; - - var vertPos = verts.length / 6; - - var i = 0; - - for (i = 0; i < triangles.length; i+=3) - { - indices.push(triangles[i] + vertPos); - indices.push(triangles[i] + vertPos); - indices.push(triangles[i+1] + vertPos); - indices.push(triangles[i+2] +vertPos); - indices.push(triangles[i+2] + vertPos); - } - - for (i = 0; i < length; i++) - { - verts.push(points[i * 2], points[i * 2 + 1], - r, g, b, alpha); - } - - return true; -}; - -PIXI.WebGLGraphics.graphicsDataPool = []; - -/** - * @class WebGLGraphicsData - * @private - * @static - */ -PIXI.WebGLGraphicsData = function(gl) -{ - this.gl = gl; - - //TODO does this need to be split before uploding?? - this.color = [0,0,0]; // color split! - this.points = []; - this.indices = []; - this.buffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - this.mode = 1; - this.alpha = 1; - this.dirty = true; -}; - -/** - * @method reset - */ -PIXI.WebGLGraphicsData.prototype.reset = function() -{ - this.points = []; - this.indices = []; -}; - -/** - * @method upload - */ -PIXI.WebGLGraphicsData.prototype.upload = function() -{ - var gl = this.gl; - -// this.lastIndex = graphics.graphicsData.length; - this.glPoints = new PIXI.Float32Array(this.points); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.glPoints, gl.STATIC_DRAW); - - this.glIndicies = new PIXI.Uint16Array(this.indices); - - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.glIndicies, gl.STATIC_DRAW); - - this.dirty = false; -}; - /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -4511,31 +3405,16 @@ PIXI.instances = []; * * @class WebGLRenderer * @constructor - * @param [width=0] {Number} the width of the canvas view - * @param [height=0] {Number} the height of the canvas view - * @param [options] {Object} The optional renderer parameters - * @param [options.view] {HTMLCanvasElement} the canvas to use as a view, optional - * @param [options.transparent=false] {Boolean} If the render view is transparent, default false - * @param [options.autoResize=false] {Boolean} If the render view is automatically resized, default false - * @param [options.antialias=false] {Boolean} sets antialias (only applicable in chrome at the moment) - * @param [options.preserveDrawingBuffer=false] {Boolean} enables drawing buffer preservation, enable this if you need to call toDataUrl on the webgl context - * @param [options.resolution=1] {Number} the resolution of the renderer retina would be 2 + * @param game {Phaser.Game} A reference to the Phaser Game instance */ -PIXI.WebGLRenderer = function(width, height, options) -{ - if(options) - { - for (var i in PIXI.defaultRenderOptions) - { - if (options[i] === undefined) options[i] = PIXI.defaultRenderOptions[i]; - } - } - else - { - options = PIXI.defaultRenderOptions; - } +PIXI.WebGLRenderer = function(game) { - if(!PIXI.defaultRenderer) + /** + * @property {Phaser.Game} game - A reference to the Phaser Game instance. + */ + this.game = game; + + if (!PIXI.defaultRenderer) { PIXI.defaultRenderer = this; } @@ -4553,9 +3432,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @type Number * @default 1 */ - this.resolution = options.resolution; - - // do a catch.. only 1 webGL renderer.. + this.resolution = game.resolution; /** * Whether the render view is transparent @@ -4563,7 +3440,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property transparent * @type Boolean */ - this.transparent = options.transparent; + this.transparent = game.transparent; /** * Whether the render view should be resized automatically @@ -4571,7 +3448,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property autoResize * @type Boolean */ - this.autoResize = options.autoResize || false; + this.autoResize = false; /** * The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. @@ -4579,7 +3456,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property preserveDrawingBuffer * @type Boolean */ - this.preserveDrawingBuffer = options.preserveDrawingBuffer; + this.preserveDrawingBuffer = game.preserveDrawingBuffer; /** * This sets if the WebGLRenderer will clear the context texture or not before the new render pass. If true: @@ -4591,25 +3468,23 @@ PIXI.WebGLRenderer = function(width, height, options) * @type Boolean * @default */ - this.clearBeforeRender = options.clearBeforeRender; + this.clearBeforeRender = game.clearBeforeRender; /** * The width of the canvas view * * @property width * @type Number - * @default 800 */ - this.width = width || 800; + this.width = game.width; /** * The height of the canvas view * * @property height * @type Number - * @default 600 */ - this.height = height || 600; + this.height = game.height; /** * The canvas element that everything is drawn to @@ -4617,7 +3492,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property view * @type HTMLCanvasElement */ - this.view = options.view || document.createElement('canvas'); + this.view = game.canvas; /** * @property _contextOptions @@ -4626,10 +3501,10 @@ PIXI.WebGLRenderer = function(width, height, options) */ this._contextOptions = { alpha: this.transparent, - antialias: options.antialias, // SPEED UP?? + antialias: game.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - preserveDrawingBuffer: options.preserveDrawingBuffer + preserveDrawingBuffer: this.preserveDrawingBuffer }; /** @@ -4642,7 +3517,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property offset * @type Point */ - this.offset = new PIXI.Point(0, 0); + this.offset = new PIXI.Point(); // time to create the render managers! each one focuses on managing a state in webGL @@ -4689,11 +3564,13 @@ PIXI.WebGLRenderer = function(width, height, options) this.blendModeManager = new PIXI.WebGLBlendModeManager(); /** - * TODO remove * @property renderSession * @type Object */ this.renderSession = {}; + + // Needed? + this.renderSession.game = this.game; this.renderSession.gl = this.gl; this.renderSession.drawCount = 0; this.renderSession.shaderManager = this.shaderManager; @@ -4710,6 +3587,7 @@ PIXI.WebGLRenderer = function(width, height, options) // map some webGL blend modes.. this.mapBlendModes(); + }; // constructor @@ -4721,6 +3599,7 @@ PIXI.WebGLRenderer.prototype.constructor = PIXI.WebGLRenderer; PIXI.WebGLRenderer.prototype.initContext = function() { var gl = this.view.getContext('webgl', this._contextOptions) || this.view.getContext('experimental-webgl', this._contextOptions); + this.gl = gl; if (!gl) { @@ -4762,14 +3641,9 @@ PIXI.WebGLRenderer.prototype.initContext = function() PIXI.WebGLRenderer.prototype.render = function(stage) { // no point rendering if our context has been blown up! - if (this.contextLost) return; - - // if rendering a new stage clear the batches.. - if (this.__stage !== stage) + if (this.contextLost) { - // TODO make this work - // dont think this is needed any more? - this.__stage = stage; + return; } // update the scene graph @@ -4783,21 +3657,14 @@ PIXI.WebGLRenderer.prototype.render = function(stage) // make sure we are bound to the main frame buffer gl.bindFramebuffer(gl.FRAMEBUFFER, null); - if (this.clearBeforeRender) + if (this.game.clearBeforeRender) { - if (this.transparent) - { - gl.clearColor(0, 0, 0, 0); - } - else - { - gl.clearColor(stage.backgroundColorSplit[0],stage.backgroundColorSplit[1],stage.backgroundColorSplit[2], 1); - } + gl.clearColor(stage._bgColor.r, stage._bgColor.g, stage._bgColor.b, stage._bgColor.a); - gl.clear (gl.COLOR_BUFFER_BIT); + gl.clear(gl.COLOR_BUFFER_BIT); } - this.renderDisplayObject( stage, this.projection ); + this.renderDisplayObject(stage, this.projection); }; /** @@ -4868,12 +3735,13 @@ PIXI.WebGLRenderer.prototype.resize = function(width, height) * * @method updateTexture * @param texture {Texture} the texture to update + * @return {boolean} True if the texture was successfully bound, otherwise false. */ PIXI.WebGLRenderer.prototype.updateTexture = function(texture) { if (!texture.hasLoaded) { - return; + return false; } var gl = this.gl; @@ -4914,7 +3782,8 @@ PIXI.WebGLRenderer.prototype.updateTexture = function(texture) texture._dirty[gl.id] = false; - return texture._glTextures[gl.id]; + // return texture._glTextures[gl.id]; + return true; }; @@ -4961,25 +3830,28 @@ PIXI.WebGLRenderer.prototype.mapBlendModes = function() if (!PIXI.blendModesWebGL) { - PIXI.blendModesWebGL = []; + var b = []; + var modes = PIXI.blendModes; - PIXI.blendModesWebGL[PIXI.blendModes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; - PIXI.blendModesWebGL[PIXI.blendModes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; + b[modes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; + b[modes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + + PIXI.blendModesWebGL = b; } }; @@ -5029,7 +3901,11 @@ PIXI.WebGLBlendModeManager.prototype.setBlendMode = function(blendMode) this.currentBlendMode = blendMode; var blendModeWebGL = PIXI.blendModesWebGL[this.currentBlendMode]; - this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); + + if (blendModeWebGL) + { + this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); + } return true; }; @@ -6190,7 +5066,11 @@ PIXI.WebGLSpriteBatch.prototype.renderBatch = function(texture, size, startIndex // check if a texture is dirty.. if (texture._dirty[gl.id]) { - this.renderSession.renderer.updateTexture(texture); + if (!this.renderSession.renderer.updateTexture(texture)) + { + // If updateTexture returns false then we cannot render it, so bail out now + return; + } } else { @@ -7340,8 +6220,8 @@ PIXI.CanvasMaskManager.prototype.constructor = PIXI.CanvasMaskManager; * @param maskData {Object} the maskData that will be pushed * @param renderSession {Object} The renderSession whose context will be used for this mask manager. */ -PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) -{ +PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) { + var context = renderSession.context; context.save(); @@ -7558,28 +6438,14 @@ PIXI.CanvasTinter.tintMethod = PIXI.CanvasTinter.canUseMultiply ? PIXI.CanvasTin * * @class CanvasRenderer * @constructor - * @param [width=800] {Number} the width of the canvas view - * @param [height=600] {Number} the height of the canvas view - * @param [options] {Object} The optional renderer parameters - * @param [options.view] {HTMLCanvasElement} the canvas to use as a view, optional - * @param [options.transparent=false] {Boolean} If the render view is transparent, default false - * @param [options.autoResize=false] {Boolean} If the render view is automatically resized, default false - * @param [options.resolution=1] {Number} the resolution of the renderer retina would be 2 - * @param [options.clearBeforeRender=true] {Boolean} This sets if the CanvasRenderer will clear the canvas or not before the new render pass. + * @param game {Phaser.Game} A reference to the Phaser Game instance */ -PIXI.CanvasRenderer = function(width, height, options) -{ - if (options) - { - for (var i in PIXI.defaultRenderOptions) - { - if (options[i] === undefined) options[i] = PIXI.defaultRenderOptions[i]; - } - } - else - { - options = PIXI.defaultRenderOptions; - } +PIXI.CanvasRenderer = function (game) { + + /** + * @property {Phaser.Game} game - A reference to the Phaser Game instance. + */ + this.game = game; if (!PIXI.defaultRenderer) { @@ -7600,7 +6466,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property resolution * @type Number */ - this.resolution = options.resolution; + this.resolution = game.resolution; /** * This sets if the CanvasRenderer will clear the canvas or not before the new render pass. @@ -7612,7 +6478,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Boolean * @default */ - this.clearBeforeRender = options.clearBeforeRender; + this.clearBeforeRender = game.clearBeforeRender; /** * Whether the render view is transparent @@ -7620,7 +6486,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property transparent * @type Boolean */ - this.transparent = options.transparent; + this.transparent = game.transparent; /** * Whether the render view should be resized automatically @@ -7628,7 +6494,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property autoResize * @type Boolean */ - this.autoResize = options.autoResize || false; + this.autoResize = false; /** * The width of the canvas view @@ -7637,7 +6503,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Number * @default 800 */ - this.width = width || 800; + this.width = game.width * this.resolution; /** * The height of the canvas view @@ -7646,10 +6512,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Number * @default 600 */ - this.height = height || 600; - - this.width *= this.resolution; - this.height *= this.resolution; + this.height = game.height * this.resolution; /** * The canvas element that everything is drawn to. @@ -7657,7 +6520,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property view * @type HTMLCanvasElement */ - this.view = options.view || PIXI.CanvasPool.create(this, this.width, this.height); + this.view = game.canvas; /** * The canvas 2d context that everything is drawn with @@ -7674,8 +6537,9 @@ PIXI.CanvasRenderer = function(width, height, options) */ this.refresh = true; - this.view.width = this.width * this.resolution; - this.view.height = this.height * this.resolution; + // This is already done in the Game.setUpRenderer method. + // this.view.width = this.width * this.resolution; + // this.view.height = this.height * this.resolution; /** * Internal var. @@ -7701,7 +6565,8 @@ PIXI.CanvasRenderer = function(width, height, options) context: this.context, maskManager: this.maskManager, scaleMode: null, - smoothProperty: null, + smoothProperty: Phaser.Canvas.getSmoothingPrefix(this.context), + /** * If true Pixi will Math.floor() x/y values when rendering, stopping pixel interpolation. * Handy for crisp pixel art and speed on legacy devices. @@ -7711,18 +6576,8 @@ PIXI.CanvasRenderer = function(width, height, options) this.mapBlendModes(); - this.resize(width, height); + this.resize(this.width, this.height); - if("imageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "imageSmoothingEnabled"; - else if("webkitImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "webkitImageSmoothingEnabled"; - else if("mozImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "mozImageSmoothingEnabled"; - else if("oImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "oImageSmoothingEnabled"; - else if ("msImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "msImageSmoothingEnabled"; }; // constructor @@ -7734,16 +6589,16 @@ PIXI.CanvasRenderer.prototype.constructor = PIXI.CanvasRenderer; * @method render * @param stage {Stage} the Stage element to be rendered */ -PIXI.CanvasRenderer.prototype.render = function(stage) -{ +PIXI.CanvasRenderer.prototype.render = function (stage) { + stage.updateTransform(); - this.context.setTransform(1,0,0,1,0,0); + this.context.setTransform(1, 0, 0, 1, 0, 0); this.context.globalAlpha = 1; - this.renderSession.currentBlendMode = PIXI.blendModes.NORMAL; - this.context.globalCompositeOperation = PIXI.blendModesCanvas[PIXI.blendModes.NORMAL]; + this.renderSession.currentBlendMode = 0; + this.context.globalCompositeOperation = 'source-over'; if (navigator.isCocoonJS && this.view.screencanvas) { @@ -7759,7 +6614,7 @@ PIXI.CanvasRenderer.prototype.render = function(stage) } else { - this.context.fillStyle = stage.backgroundColorString; + this.context.fillStyle = stage._bgColor.rgba; this.context.fillRect(0, 0, this.width , this.height); } } @@ -7805,7 +6660,8 @@ PIXI.CanvasRenderer.prototype.resize = function(width, height) this.view.width = this.width; this.view.height = this.height; - if (this.autoResize) { + if (this.autoResize) + { this.view.style.width = this.width / this.resolution + "px"; this.view.style.height = this.height / this.resolution + "px"; } @@ -7820,11 +6676,12 @@ PIXI.CanvasRenderer.prototype.resize = function(width, height) * @param [matrix] {Matrix} Optional matrix to apply to the display object before rendering. * @private */ -PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject, context, matrix) -{ +PIXI.CanvasRenderer.prototype.renderDisplayObject = function (displayObject, context, matrix) { + this.renderSession.context = context || this.context; this.renderSession.resolution = this.resolution; displayObject._renderCanvas(this.renderSession, matrix); + }; /** @@ -7833,407 +6690,35 @@ PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject, cont * @method mapBlendModes * @private */ -PIXI.CanvasRenderer.prototype.mapBlendModes = function() -{ - if(!PIXI.blendModesCanvas) +PIXI.CanvasRenderer.prototype.mapBlendModes = function () { + + if (!PIXI.blendModesCanvas) { - PIXI.blendModesCanvas = []; + var b = []; + var modes = PIXI.blendModes; + var useNew = PIXI.canUseNewCanvasBlendModes(); - if(PIXI.canUseNewCanvasBlendModes()) - { - PIXI.blendModesCanvas[PIXI.blendModes.NORMAL] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.ADD] = "lighter"; //IS THIS OK??? - PIXI.blendModesCanvas[PIXI.blendModes.MULTIPLY] = "multiply"; - PIXI.blendModesCanvas[PIXI.blendModes.SCREEN] = "screen"; - PIXI.blendModesCanvas[PIXI.blendModes.OVERLAY] = "overlay"; - PIXI.blendModesCanvas[PIXI.blendModes.DARKEN] = "darken"; - PIXI.blendModesCanvas[PIXI.blendModes.LIGHTEN] = "lighten"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_DODGE] = "color-dodge"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_BURN] = "color-burn"; - PIXI.blendModesCanvas[PIXI.blendModes.HARD_LIGHT] = "hard-light"; - PIXI.blendModesCanvas[PIXI.blendModes.SOFT_LIGHT] = "soft-light"; - PIXI.blendModesCanvas[PIXI.blendModes.DIFFERENCE] = "difference"; - PIXI.blendModesCanvas[PIXI.blendModes.EXCLUSION] = "exclusion"; - PIXI.blendModesCanvas[PIXI.blendModes.HUE] = "hue"; - PIXI.blendModesCanvas[PIXI.blendModes.SATURATION] = "saturation"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR] = "color"; - PIXI.blendModesCanvas[PIXI.blendModes.LUMINOSITY] = "luminosity"; - } - else - { - // this means that the browser does not support the cool new blend modes in canvas "cough" ie "cough" - PIXI.blendModesCanvas[PIXI.blendModes.NORMAL] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.ADD] = "lighter"; //IS THIS OK??? - PIXI.blendModesCanvas[PIXI.blendModes.MULTIPLY] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SCREEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.OVERLAY] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.DARKEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.LIGHTEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_DODGE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_BURN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.HARD_LIGHT] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SOFT_LIGHT] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.DIFFERENCE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.EXCLUSION] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.HUE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SATURATION] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.LUMINOSITY] = "source-over"; - } - } -}; + b[modes.NORMAL] = 'source-over'; + b[modes.ADD] = 'lighter'; + b[modes.MULTIPLY] = (useNew) ? 'multiply' : 'source-over'; + b[modes.SCREEN] = (useNew) ? 'screen' : 'source-over'; + b[modes.OVERLAY] = (useNew) ? 'overlay' : 'source-over'; + b[modes.DARKEN] = (useNew) ? 'darken' : 'source-over'; + b[modes.LIGHTEN] = (useNew) ? 'lighten' : 'source-over'; + b[modes.COLOR_DODGE] = (useNew) ? 'color-dodge' : 'source-over'; + b[modes.COLOR_BURN] = (useNew) ? 'color-burn' : 'source-over'; + b[modes.HARD_LIGHT] = (useNew) ? 'hard-light' : 'source-over'; + b[modes.SOFT_LIGHT] = (useNew) ? 'soft-light' : 'source-over'; + b[modes.DIFFERENCE] = (useNew) ? 'difference' : 'source-over'; + b[modes.EXCLUSION] = (useNew) ? 'exclusion' : 'source-over'; + b[modes.HUE] = (useNew) ? 'hue' : 'source-over'; + b[modes.SATURATION] = (useNew) ? 'saturation' : 'source-over'; + b[modes.COLOR] = (useNew) ? 'color' : 'source-over'; + b[modes.LUMINOSITY] = (useNew) ? 'luminosity' : 'source-over'; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - - -/** - * A set of functions used by the canvas renderer to draw the primitive graphics data. - * - * @class CanvasGraphics - * @static - */ -PIXI.CanvasGraphics = function() -{ -}; - -/* - * Renders a PIXI.Graphics object to a canvas. - * - * @method renderGraphics - * @static - * @param graphics {Graphics} the actual graphics object to render - * @param context {CanvasRenderingContext2D} the 2d drawing method of the canvas - */ -PIXI.CanvasGraphics.renderGraphics = function(graphics, context) -{ - var worldAlpha = graphics.worldAlpha; - - if (graphics.dirty) - { - this.updateGraphicsTint(graphics); - graphics.dirty = false; + PIXI.blendModesCanvas = b; } - for (var i = 0; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - var shape = data.shape; - - var fillColor = data._fillTint; - var lineColor = data._lineTint; - - context.lineWidth = data.lineWidth; - - if (data.type === PIXI.Graphics.POLY) - { - context.beginPath(); - - var points = shape.points; - - context.moveTo(points[0], points[1]); - - for (var j=1; j < points.length/2; j++) - { - context.lineTo(points[j * 2], points[j * 2 + 1]); - } - - if (shape.closed) - { - context.lineTo(points[0], points[1]); - } - - // if the first and last point are the same close the path - much neater :) - if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) - { - context.closePath(); - } - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.RECT) - { - if (data.fillColor || data.fillColor === 0) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fillRect(shape.x, shape.y, shape.width, shape.height); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.strokeRect(shape.x, shape.y, shape.width, shape.height); - } - } - else if (data.type === PIXI.Graphics.CIRC) - { - // TODO - need to be Undefined! - context.beginPath(); - context.arc(shape.x, shape.y, shape.radius,0,2*Math.PI); - context.closePath(); - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.ELIP) - { - // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - - var w = shape.width * 2; - var h = shape.height * 2; - - var x = shape.x - w/2; - var y = shape.y - h/2; - - context.beginPath(); - - var kappa = 0.5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - context.moveTo(x, ym); - context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - - context.closePath(); - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.RREC) - { - var rx = shape.x; - var ry = shape.y; - var width = shape.width; - var height = shape.height; - var radius = shape.radius; - - var maxRadius = Math.min(width, height) / 2 | 0; - radius = radius > maxRadius ? maxRadius : radius; - - context.beginPath(); - context.moveTo(rx, ry + radius); - context.lineTo(rx, ry + height - radius); - context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); - context.lineTo(rx + width - radius, ry + height); - context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); - context.lineTo(rx + width, ry + radius); - context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); - context.lineTo(rx + radius, ry); - context.quadraticCurveTo(rx, ry, rx, ry + radius); - context.closePath(); - - if (data.fillColor || data.fillColor === 0) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - } -}; - -/* - * Renders a graphics mask - * - * @static - * @private - * @method renderGraphicsMask - * @param graphics {Graphics} the graphics which will be used as a mask - * @param context {CanvasRenderingContext2D} the context 2d method of the canvas - */ -PIXI.CanvasGraphics.renderGraphicsMask = function(graphics, context) -{ - var len = graphics.graphicsData.length; - - if (len === 0) - { - return; - } - - context.beginPath(); - - for (var i = 0; i < len; i++) - { - var data = graphics.graphicsData[i]; - var shape = data.shape; - - if (data.type === PIXI.Graphics.POLY) - { - - var points = shape.points; - - context.moveTo(points[0], points[1]); - - for (var j=1; j < points.length/2; j++) - { - context.lineTo(points[j * 2], points[j * 2 + 1]); - } - - // if the first and last point are the same close the path - much neater :) - if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) - { - context.closePath(); - } - - } - else if (data.type === PIXI.Graphics.RECT) - { - context.rect(shape.x, shape.y, shape.width, shape.height); - context.closePath(); - } - else if (data.type === PIXI.Graphics.CIRC) - { - // TODO - need to be Undefined! - context.arc(shape.x, shape.y, shape.radius, 0, 2 * Math.PI); - context.closePath(); - } - else if (data.type === PIXI.Graphics.ELIP) - { - - // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - - var w = shape.width * 2; - var h = shape.height * 2; - - var x = shape.x - w/2; - var y = shape.y - h/2; - - var kappa = 0.5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - context.moveTo(x, ym); - context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - context.closePath(); - } - else if (data.type === PIXI.Graphics.RREC) - { - - var rx = shape.x; - var ry = shape.y; - var width = shape.width; - var height = shape.height; - var radius = shape.radius; - - var maxRadius = Math.min(width, height) / 2 | 0; - radius = radius > maxRadius ? maxRadius : radius; - - context.moveTo(rx, ry + radius); - context.lineTo(rx, ry + height - radius); - context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); - context.lineTo(rx + width - radius, ry + height); - context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); - context.lineTo(rx + width, ry + radius); - context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); - context.lineTo(rx + radius, ry); - context.quadraticCurveTo(rx, ry, rx, ry + radius); - context.closePath(); - } - } -}; - -PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) -{ - if (graphics.tint === 0xFFFFFF) - { - return; - } - - var tintR = (graphics.tint >> 16 & 0xFF) / 255; - var tintG = (graphics.tint >> 8 & 0xFF) / 255; - var tintB = (graphics.tint & 0xFF)/ 255; - - for (var i = 0; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - - var fillColor = data.fillColor | 0; - var lineColor = data.lineColor | 0; - - /* - var colorR = (fillColor >> 16 & 0xFF) / 255; - var colorG = (fillColor >> 8 & 0xFF) / 255; - var colorB = (fillColor & 0xFF) / 255; - - colorR *= tintR; - colorG *= tintG; - colorB *= tintB; - - fillColor = ((colorR*255 << 16) + (colorG*255 << 8) + colorB*255); - - colorR = (lineColor >> 16 & 0xFF) / 255; - colorG = (lineColor >> 8 & 0xFF) / 255; - colorB = (lineColor & 0xFF) / 255; - - colorR *= tintR; - colorG *= tintG; - colorB *= tintB; - - lineColor = ((colorR*255 << 16) + (colorG*255 << 8) + colorB*255); - */ - - data._fillTint = (((fillColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((fillColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (fillColor & 0xFF) / 255 * tintB*255); - data._lineTint = (((lineColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((lineColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (lineColor & 0xFF) / 255 * tintB*255); - - } }; /** @@ -10158,7 +8643,7 @@ PIXI.TilingSprite.prototype._renderWebGL = function(renderSession) if (this.refreshTexture) { - this.generateTilingTexture(true); + this.generateTilingTexture(true, renderSession); if (this.tilingTexture) { @@ -10227,7 +8712,7 @@ PIXI.TilingSprite.prototype._renderCanvas = function(renderSession) if (this.refreshTexture) { - this.generateTilingTexture(false); + this.generateTilingTexture(false, renderSession); if (this.tilingTexture) { @@ -10316,8 +8801,9 @@ PIXI.TilingSprite.prototype.onTextureUpdate = function() * @method generateTilingTexture * * @param forcePowerOfTwo {Boolean} Whether we want to force the texture to be a power of two +* @param renderSession {RenderSession} */ -PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo) +PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo, renderSession) { if (!this.texture.baseTexture.hasLoaded) { @@ -10356,7 +8842,6 @@ PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo) { this.canvasBuffer = new PIXI.CanvasBuffer(targetWidth, targetHeight); this.tilingTexture = PIXI.Texture.fromCanvas(this.canvasBuffer.canvas); - this.tilingTexture = PIXI.Texture.fromCanvas(this.canvasBuffer.canvas); this.tilingTexture.isTiling = true; this.tilingTexture.needsUpdate = true; } @@ -10476,10 +8961,14 @@ PIXI.TilingSprite.prototype.getBounds = function() PIXI.TilingSprite.prototype.destroy = function () { - this.canvasBuffer.destroy(); - PIXI.Sprite.prototype.destroy.call(this); + if (this.canvasBuffer) + { + this.canvasBuffer.destroy(); + this.canvasBuffer = null; + } + this.tileScale = null; this.tileScaleOffset = null; this.tilePosition = null; @@ -10572,7 +9061,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.4.3', + VERSION: '2.4.4-RC1', /** * An array of Phaser game instances. @@ -16046,7 +14535,10 @@ Phaser.Camera.prototype = { */ setBoundsToWorld: function () { - this.bounds.copyFrom(this.game.world.bounds); + if (this.bounds) + { + this.bounds.copyFrom(this.game.world.bounds); + } }, @@ -16248,195 +14740,6 @@ Object.defineProperty(Phaser.Camera.prototype, "height", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content -* quickly and easily, without the need for any external files. You can create textures for sprites and in -* coming releases we'll add dynamic sound effect generation support as well (like sfxr). -* -* Access this via `State.create` (or `this.create` from within a State object) -* -* @class Phaser.Create -* @constructor -* @param {Phaser.Game} game - Game reference to the currently running game. - */ -Phaser.Create = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {Phaser.BitmapData} bmd - The internal BitmapData Create uses to generate textures from. - */ - this.bmd = game.make.bitmapData(); - - /** - * @property {HTMLCanvasElement} canvas - The canvas the BitmapData uses. - */ - this.canvas = this.bmd.canvas; - - /** - * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. - */ - this.ctx = this.bmd.context; - - /** - * @property {array} palettes - A range of 16 color palettes for use with sprite generation. - */ - this.palettes = [ - { 0: '#000', 1: '#9D9D9D', 2: '#FFF', 3: '#BE2633', 4: '#E06F8B', 5: '#493C2B', 6: '#A46422', 7: '#EB8931', 8: '#F7E26B', 9: '#2F484E', A: '#44891A', B: '#A3CE27', C: '#1B2632', D: '#005784', E: '#31A2F2', F: '#B2DCEF' }, - { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#f5f4eb' }, - { 0: '#000', 1: '#2234d1', 2: '#0c7e45', 3: '#44aacc', 4: '#8a3622', 5: '#5c2e78', 6: '#aa5c3d', 7: '#b5b5b5', 8: '#5e606e', 9: '#4c81fb', A: '#6cd947', B: '#7be2f9', C: '#eb8a60', D: '#e23d69', E: '#ffd93f', F: '#fff' }, - { 0: '#000', 1: '#fff', 2: '#8b4131', 3: '#7bbdc5', 4: '#8b41ac', 5: '#6aac41', 6: '#3931a4', 7: '#d5de73', 8: '#945a20', 9: '#5a4100', A: '#bd736a', B: '#525252', C: '#838383', D: '#acee8b', E: '#7b73de', F: '#acacac' }, - { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#fff' } - ]; - -}; - -/** -* A 16 color palette by [Arne](http://androidarts.com/palette/16pal.htm) -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_ARNE = 0; - -/** -* A 16 color JMP inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_JMP = 1; - -/** -* A 16 color CGA inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_CGA = 2; - -/** -* A 16 color C64 inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_C64 = 3; - -/** -* A 16 color palette inspired by Japanese computers like the MSX. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_JAPANESE_MACHINE = 4; - -Phaser.Create.prototype = { - - /** - * Generates a new PIXI.Texture from the given data, which can be applied to a Sprite. - * - * This allows you to create game graphics quickly and easily, with no external files but that use actual proper images - * rather than Phaser.Graphics objects, which are expensive to render and limited in scope. - * - * Each element of the array is a string holding the pixel color values, as mapped to one of the Phaser.Create PALETTE consts. - * - * For example: - * - * `var data = [ - * ' 333 ', - * ' 777 ', - * 'E333E', - * ' 333 ', - * ' 3 3 ' - * ];` - * - * `game.create.texture('bob', data);` - * - * The above will create a new texture called `bob`, which will look like a little man wearing a hat. You can then use it - * for sprites the same way you use any other texture: `game.add.sprite(0, 0, 'bob');` - * - * @method Phaser.Create#texture - * @param {string} key - The key used to store this texture in the Phaser Cache. - * @param {array} data - An array of pixel data. - * @param {integer} [pixelWidth=8] - The width of each pixel. - * @param {integer} [pixelHeight=8] - The height of each pixel. - * @param {integer} [palette=0] - The palette to use when rendering the texture. One of the Phaser.Create.PALETTE consts. - * @return {PIXI.Texture} The newly generated texture. - */ - texture: function (key, data, pixelWidth, pixelHeight, palette) { - - if (pixelWidth === undefined) { pixelWidth = 8; } - if (pixelHeight === undefined) { pixelHeight = pixelWidth; } - if (palette === undefined) { palette = 0; } - - var w = data[0].length * pixelWidth; - var h = data.length * pixelHeight; - - this.bmd.resize(w, h); - this.bmd.clear(); - - // Draw it - for (var y = 0; y < data.length; y++) - { - var row = data[y]; - - for (var x = 0; x < row.length; x++) - { - var d = row[x]; - - if (d !== '.' && d !== ' ') - { - this.ctx.fillStyle = this.palettes[palette][d]; - this.ctx.fillRect(x * pixelWidth, y * pixelHeight, pixelWidth, pixelHeight); - } - } - } - - return this.bmd.generateTexture(key); - - }, - - /** - * Creates a grid texture based on the given dimensions. - * - * @method Phaser.Create#grid - * @param {string} key - The key used to store this texture in the Phaser Cache. - * @param {integer} width - The width of the grid in pixels. - * @param {integer} height - The height of the grid in pixels. - * @param {integer} cellWidth - The width of the grid cells in pixels. - * @param {integer} cellHeight - The height of the grid cells in pixels. - * @param {string} color - The color to draw the grid lines in. Should be a Canvas supported color string like `#ff5500` or `rgba(200,50,3,0.5)`. - * @return {PIXI.Texture} The newly generated texture. - */ - grid: function (key, width, height, cellWidth, cellHeight, color) { - - this.bmd.resize(width, height); - - this.ctx.fillStyle = color; - - for (var y = 0; y < height; y += cellHeight) - { - this.ctx.fillRect(0, y, width, 1); - } - - for (var x = 0; x < width; x += cellWidth) - { - this.ctx.fillRect(x, 0, 1, height); - } - - return this.bmd.generateTexture(key); - - } - -}; - -Phaser.Create.prototype.constructor = Phaser.Create; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * This is a base State class which can be extended if you are creating your own game. * It provides quick access to common functions such as the camera, cache, input, match, sound and more. @@ -16968,7 +15271,7 @@ Phaser.StateManager.prototype = { if (arguments.length > 2) { - this._args = Array.prototype.splice.call(arguments, 2); + this._args = Array.prototype.slice.call(arguments, 2); } }, @@ -17442,6 +15745,10 @@ Object.defineProperty(Phaser.StateManager.prototype, "created", { }); +/** +* "It's like nailing jelly to a kitten" - Gary Penn +*/ + /** * @author Miller Medeiros http://millermedeiros.github.com/js-signals/ * @author Richard Davey @@ -18250,6 +16557,60 @@ Phaser.Filter.prototype = { }, + /** + * Creates a new Phaser.Image object using a blank texture and assigns + * this Filter to it. The image is then added to the world. + * + * If you don't provide width and height values then Filter.width and Filter.height are used. + * + * If you do provide width and height values then this filter will be resized to match those + * values. + * + * @method Phaser.Filter#addToWorld + * @param {number} [x=0] - The x coordinate to place the Image at. + * @param {number} [y=0] - The y coordinate to place the Image at. + * @param {number} [width] - The width of the Image. If not specified (or null) it will use Filter.width. If specified Filter.width will be set to this value. + * @param {number} [height] - The height of the Image. If not specified (or null) it will use Filter.height. If specified Filter.height will be set to this value. + * @param {number} [anchorX=0] - Set the x anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. + * @param {number} [anchorY=0] - Set the y anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. + * @return {Phaser.Image} The newly added Image object. + */ + addToWorld: function (x, y, width, height, anchorX, anchorY) { + + if (anchorX === undefined) { anchorX = 0; } + if (anchorY === undefined) { anchorY = 0; } + + if (width !== undefined && width !== null) + { + this.width = width; + } + else + { + width = this.width; + } + + if (height !== undefined && height !== null) + { + this.height = height; + } + else + { + height = this.height; + } + + var image = this.game.add.image(x, y, '__default'); + + image.width = width; + image.height = height; + + image.anchor.set(anchorX, anchorY); + + image.filters = [ this ]; + + return image; + + }, + /** * Clear down this Filter and null out references * @method Phaser.Filter#destroy @@ -18473,7 +16834,7 @@ Phaser.PluginManager.prototype = { */ add: function (plugin) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var result = false; // Prototype? @@ -18718,7 +17079,7 @@ Phaser.PluginManager.prototype.constructor = Phaser.PluginManager; * It also handles browser visibility handling and the pausing due to loss of focus. * * @class Phaser.Stage -* @extends PIXI.Stage +* @extends PIXI.DisplayObjectContainer * @constructor * @param {Phaser.Game} game - Game reference to the currently running game. */ @@ -18729,7 +17090,7 @@ Phaser.Stage = function (game) { */ this.game = game; - PIXI.Stage.call(this, 0x000000); + PIXI.DisplayObjectContainer.call(this); /** * @property {string} name - The name of this object. @@ -18749,6 +17110,20 @@ Phaser.Stage = function (game) { */ this.exists = true; + /** + * @property {PIXI.Matrix} worldTransform - Current transform of the object based on world (parent) factors + * @private + * @readOnly + */ + this.worldTransform = new PIXI.Matrix(); + + /** + * @property {Phaser.Stage} stage - The stage reference (the Stage is its own stage) + * @private + * @readOnly + */ + this.stage = this; + /** * @property {number} currentRenderOrderID - Reset each frame, keeps a count of the total number of objects updated. */ @@ -18767,10 +17142,16 @@ Phaser.Stage = function (game) { this._onChange = null; /** - * @property {number} _backgroundColor - Stage background color. + * @property {number} _bgColor - Stage background color object. Populated by setBackgroundColor. * @private */ - this._backgroundColor = 0x000000; + this._bgColor = { r: 0, g: 0, b: 0, a: 0, color: 0, rgba: '#000000' }; + + if (!this.game.transparent) + { + // transparent = 0,0,0,0 - otherwise r,g,b,1 + this._bgColor.a = 1; + } if (game.config) { @@ -18779,7 +17160,7 @@ Phaser.Stage = function (game) { }; -Phaser.Stage.prototype = Object.create(PIXI.Stage.prototype); +Phaser.Stage.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); Phaser.Stage.prototype.constructor = Phaser.Stage; /** @@ -18798,7 +17179,7 @@ Phaser.Stage.prototype.parseConfig = function (config) { if (config['backgroundColor']) { - this.backgroundColor = config['backgroundColor']; + this.setBackgroundColor(config['backgroundColor']); } }; @@ -19015,16 +17396,23 @@ Phaser.Stage.prototype.visibilityChange = function (event) { * * An alpha channel is _not_ supported and will be ignored. * +* If you've set your game to be transparent then calls to setBackgroundColor are ignored. +* * @method Phaser.Stage#setBackgroundColor -* @param {number|string} backgroundColor - The color of the background. +* @param {number|string} color - The color of the background. */ -Phaser.Stage.prototype.setBackgroundColor = function(backgroundColor) -{ - var rgb = Phaser.Color.valueToColor(backgroundColor); - this._backgroundColor = Phaser.Color.getColor(rgb.r, rgb.g, rgb.b); +Phaser.Stage.prototype.setBackgroundColor = function (color) { - this.backgroundColorSplit = [ rgb.r / 255, rgb.g / 255, rgb.b / 255 ]; - this.backgroundColorString = Phaser.Color.RGBtoString(rgb.r, rgb.g, rgb.b, 255, '#'); + if (this.game.transparent) { return; } + + Phaser.Color.valueToColor(color, this._bgColor); + Phaser.Color.updateColor(this._bgColor); + + // For gl.clearColor (canvas uses _bgColor.rgba) + this._bgColor.r /= 255; + this._bgColor.g /= 255; + this._bgColor.b /= 255; + this._bgColor.a = 1; }; @@ -19056,16 +17444,13 @@ Object.defineProperty(Phaser.Stage.prototype, "backgroundColor", { get: function () { - return this._backgroundColor; + return this._bgColor.color; }, set: function (color) { - if (!this.game.transparent) - { - this.setBackgroundColor(color); - } + this.setBackgroundColor(color); } @@ -19153,6 +17538,7 @@ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBody * The z-depth value of this object within its parent container/Group - the World is a Group as well. * This value must be unique for each child in a Group. * @property {integer} z + * @readOnly */ this.z = 0; @@ -19257,7 +17643,7 @@ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBody /** * If {@link #enableBody} is true this is the type of physics body that is created on new Sprites. * - * The valid values are {@link Phaser.Physics.ARCADE}, {@link Phaser.Physics.P2}, {@link Phaser.Physics.NINJA}, etc. + * The valid values are {@link Phaser.Physics.ARCADE}, {@link Phaser.Physics.P2JS}, {@link Phaser.Physics.NINJA}, etc. * @property {integer} physicsBodyType */ this.physicsBodyType = physicsBodyType; @@ -19566,13 +17952,13 @@ Phaser.Group.prototype.getAt = function (index) { /** * Creates a new Phaser.Sprite object and adds it to the top of this group. * -* Use {@link #classType} to change the type of object creaded. +* Use {@link #classType} to change the type of object created. * * @method Phaser.Group#create * @param {number} x - The x coordinate to display the newly created Sprite at. The value is in relation to the group.x point. * @param {number} y - The y coordinate to display the newly created Sprite at. The value is in relation to the group.y point. -* @param {string} key - The Game.cache key of the image that this Sprite will use. -* @param {integer|string} [frame] - If the Sprite image contains multiple frames you can specify which one to use here. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @param {boolean} [exists=true] - The default exists state of the Sprite. * @return {DisplayObject} The child that was created: will be a {@link Phaser.Sprite} unless {@link #classType} has been changed. */ @@ -20874,47 +19260,134 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal /** * Get the first display object that exists, or doesn't exist. +* +* You can use the optional argument `createIfNull` to create a new Game Object if none matching your exists argument were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstExists * @param {boolean} [exists=true] - If true, find the first existing child; otherwise find the first non-existing child. -* @return {any} The first child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no alive children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The first child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstExists = function (exists) { +Phaser.Group.prototype.getFirstExists = function (exists, createIfNull, x, y, key, frame) { + + if (createIfNull === undefined) { createIfNull = false; } if (typeof exists !== 'boolean') { exists = true; } - return this.iterate('exists', exists, Phaser.Group.RETURN_CHILD); + var child = this.iterate('exists', exists, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); }; /** * Get the first child that is alive (`child.alive === true`). * -* This is handy for checking if everything has been wiped out, or choosing a squad leader, etc. +* This is handy for choosing a squad leader, etc. +* +* You can use the optional argument `createIfNull` to create a new Game Object if no alive ones were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstAlive -* @return {any} The first alive child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no alive children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The alive dead child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstAlive = function () { +Phaser.Group.prototype.getFirstAlive = function (createIfNull, x, y, key, frame) { - return this.iterate('alive', true, Phaser.Group.RETURN_CHILD); + if (createIfNull === undefined) { createIfNull = false; } + + var child = this.iterate('alive', true, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); }; /** * Get the first child that is dead (`child.alive === false`). * -* This is handy for checking if everything has been wiped out, or choosing a squad leader, etc. +* This is handy for checking if everything has been wiped out and adding to the pool as needed. +* +* You can use the optional argument `createIfNull` to create a new Game Object if no dead ones were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstDead -* @return {any} The first dead child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no dead children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The first dead child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstDead = function () { +Phaser.Group.prototype.getFirstDead = function (createIfNull, x, y, key, frame) { - return this.iterate('alive', false, Phaser.Group.RETURN_CHILD); + if (createIfNull === undefined) { createIfNull = false; } + + var child = this.iterate('alive', false, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); + +}; + +/** +* Takes a child and if the `x` and `y` arguments are given it calls `child.reset(x, y)` on it. +* +* If the `key` and optionally the `frame` arguments are given, it calls `child.loadTexture(key, frame)` on it. +* +* The two operations are separate. For example if you just wish to load a new texture then pass `null` as the x and y values. +* +* @method Phaser.Group#resetChild +* @param {DisplayObject} child - The child to reset and/or load the texture on. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The child that was reset: usually a {@link Phaser.Sprite}. +*/ +Phaser.Group.prototype.resetChild = function (child, x, y, key, frame) { + + if (child === null) + { + return null; + } + + if (x === undefined) { x = null; } + if (y === undefined) { y = null; } + + if (x !== null && y !== null) + { + child.reset(x, y); + } + + if (key !== undefined) + { + child.loadTexture(key, frame); + } + + return child; }; @@ -21686,2816 +20159,6 @@ Object.defineProperty(Phaser.World.prototype, "randomY", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. -* Please try to avoid using in production games with a long time to build. -* This is also why the documentation is incomplete. -* -* FlexGrid is a a responsive grid manager that works in conjunction with the ScaleManager RESIZE scaling mode and FlexLayers -* to provide for game object positioning in a responsive manner. -* -* @class Phaser.FlexGrid -* @constructor -* @param {Phaser.ScaleManager} manager - The ScaleManager. -* @param {number} width - The width of the game. -* @param {number} height - The height of the game. -*/ -Phaser.FlexGrid = function (manager, width, height) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = manager.game; - - /** - * @property {Phaser.ScaleManager} manager - A reference to the ScaleManager. - */ - this.manager = manager; - - // The perfect dimensions on which everything else is based - this.width = width; - this.height = height; - - this.boundsCustom = new Phaser.Rectangle(0, 0, width, height); - this.boundsFluid = new Phaser.Rectangle(0, 0, width, height); - this.boundsFull = new Phaser.Rectangle(0, 0, width, height); - this.boundsNone = new Phaser.Rectangle(0, 0, width, height); - - /** - * @property {Phaser.Point} position - - * @readonly - */ - this.positionCustom = new Phaser.Point(0, 0); - this.positionFluid = new Phaser.Point(0, 0); - this.positionFull = new Phaser.Point(0, 0); - this.positionNone = new Phaser.Point(0, 0); - - /** - * @property {Phaser.Point} scaleFactor - The scale factor based on the game dimensions vs. the scaled dimensions. - * @readonly - */ - this.scaleCustom = new Phaser.Point(1, 1); - this.scaleFluid = new Phaser.Point(1, 1); - this.scaleFluidInversed = new Phaser.Point(1, 1); - this.scaleFull = new Phaser.Point(1, 1); - this.scaleNone = new Phaser.Point(1, 1); - - this.customWidth = 0; - this.customHeight = 0; - this.customOffsetX = 0; - this.customOffsetY = 0; - - this.ratioH = width / height; - this.ratioV = height / width; - - this.multiplier = 0; - - this.layers = []; - -}; - -Phaser.FlexGrid.prototype = { - - /** - * Sets the core game size. This resets the w/h parameters and bounds. - * - * @method Phaser.FlexGrid#setSize - * @param {number} width - The new dimensions. - * @param {number} height - The new dimensions. - */ - setSize: function (width, height) { - - // These are locked and don't change until setSize is called again - this.width = width; - this.height = height; - - this.ratioH = width / height; - this.ratioV = height / width; - - this.scaleNone = new Phaser.Point(1, 1); - - this.boundsNone.width = this.width; - this.boundsNone.height = this.height; - - this.refresh(); - - }, - - // Need ability to create your own layers with custom scaling, etc. - - /** - * A custom layer is centered on the game and maintains its aspect ratio as it scales up and down. - * - * @method Phaser.FlexGrid#createCustomLayer - * @param {number} width - Width of this layer in pixels. - * @param {number} height - Height of this layer in pixels. - * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createCustomLayer: function (width, height, children, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - this.customWidth = width; - this.customHeight = height; - - this.boundsCustom.width = width; - this.boundsCustom.height = height; - - var layer = new Phaser.FlexLayer(this, this.positionCustom, this.boundsCustom, this.scaleCustom); - - if (addToWorld) - { - this.game.world.add(layer); - } - - this.layers.push(layer); - - if (typeof children !== 'undefined' && typeof children !== null) - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A fluid layer is centered on the game and maintains its aspect ratio as it scales up and down. - * - * @method Phaser.FlexGrid#createFluidLayer - * @param {array} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFluidLayer: function (children, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - var layer = new Phaser.FlexLayer(this, this.positionFluid, this.boundsFluid, this.scaleFluid); - - if (addToWorld) - { - this.game.world.add(layer); - } - - this.layers.push(layer); - - if (typeof children !== 'undefined' && typeof children !== null) - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A full layer is placed at 0,0 and extends to the full size of the game. Children are scaled according to the fluid ratios. - * - * @method Phaser.FlexGrid#createFullLayer - * @param {array} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFullLayer: function (children) { - - var layer = new Phaser.FlexLayer(this, this.positionFull, this.boundsFull, this.scaleFluid); - - this.game.world.add(layer); - - this.layers.push(layer); - - if (typeof children !== 'undefined') - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A fixed layer is centered on the game and is the size of the required dimensions and is never scaled. - * - * @method Phaser.FlexGrid#createFixedLayer - * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFixedLayer: function (children) { - - var layer = new Phaser.FlexLayer(this, this.positionNone, this.boundsNone, this.scaleNone); - - this.game.world.add(layer); - - this.layers.push(layer); - - if (typeof children !== 'undefined') - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * Resets the layer children references - * - * @method Phaser.FlexGrid#reset - */ - reset: function () { - - var i = this.layers.length; - - while (i--) - { - if (!this.layers[i].persist) - { - // Remove references to this class - this.layers[i].position = null; - this.layers[i].scale = null; - this.layers.slice(i, 1); - } - } - - }, - - /** - * Called when the game container changes dimensions. - * - * @method Phaser.FlexGrid#onResize - * @param {number} width - The new width of the game container. - * @param {number} height - The new height of the game container. - */ - onResize: function (width, height) { - - this.ratioH = width / height; - this.ratioV = height / width; - - this.refresh(width, height); - - }, - - /** - * Updates all internal vars such as the bounds and scale values. - * - * @method Phaser.FlexGrid#refresh - */ - refresh: function () { - - this.multiplier = Math.min((this.manager.height / this.height), (this.manager.width / this.width)); - - this.boundsFluid.width = Math.round(this.width * this.multiplier); - this.boundsFluid.height = Math.round(this.height * this.multiplier); - - this.scaleFluid.set(this.boundsFluid.width / this.width, this.boundsFluid.height / this.height); - this.scaleFluidInversed.set(this.width / this.boundsFluid.width, this.height / this.boundsFluid.height); - - this.scaleFull.set(this.boundsFull.width / this.width, this.boundsFull.height / this.height); - - this.boundsFull.width = Math.round(this.manager.width * this.scaleFluidInversed.x); - this.boundsFull.height = Math.round(this.manager.height * this.scaleFluidInversed.y); - - this.boundsFluid.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); - this.boundsNone.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); - - this.positionFluid.set(this.boundsFluid.x, this.boundsFluid.y); - this.positionNone.set(this.boundsNone.x, this.boundsNone.y); - - }, - - /** - * Fits a sprites width to the bounds. - * - * @method Phaser.FlexGrid#fitSprite - * @param {Phaser.Sprite} sprite - The Sprite to fit. - */ - fitSprite: function (sprite) { - - this.manager.scaleSprite(sprite); - - sprite.x = this.manager.bounds.centerX; - sprite.y = this.manager.bounds.centerY; - - }, - - /** - * Call in the render function to output the bounds rects. - * - * @method Phaser.FlexGrid#debug - */ - debug: function () { - - // for (var i = 0; i < this.layers.length; i++) - // { - // this.layers[i].debug(); - // } - - // this.game.debug.text(this.boundsFull.width + ' x ' + this.boundsFull.height, this.boundsFull.x + 4, this.boundsFull.y + 16); - // this.game.debug.geom(this.boundsFull, 'rgba(0,0,255,0.9', false); - - this.game.debug.text(this.boundsFluid.width + ' x ' + this.boundsFluid.height, this.boundsFluid.x + 4, this.boundsFluid.y + 16); - this.game.debug.geom(this.boundsFluid, 'rgba(255,0,0,0.9', false); - - // this.game.debug.text(this.boundsNone.width + ' x ' + this.boundsNone.height, this.boundsNone.x + 4, this.boundsNone.y + 16); - // this.game.debug.geom(this.boundsNone, 'rgba(0,255,0,0.9', false); - - // this.game.debug.text(this.boundsCustom.width + ' x ' + this.boundsCustom.height, this.boundsCustom.x + 4, this.boundsCustom.y + 16); - // this.game.debug.geom(this.boundsCustom, 'rgba(255,255,0,0.9', false); - - } - -}; - -Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. -* Please try to avoid using in production games with a long time to build. -* This is also why the documentation is incomplete. -* -* A responsive grid layer. -* -* @class Phaser.FlexLayer -* @extends Phaser.Group -* @constructor -* @param {Phaser.FlexGrid} manager - The FlexGrid that owns this FlexLayer. -* @param {Phaser.Point} position - A reference to the Point object used for positioning. -* @param {Phaser.Rectangle} bounds - A reference to the Rectangle used for the layer bounds. -* @param {Phaser.Point} scale - A reference to the Point object used for layer scaling. -*/ -Phaser.FlexLayer = function (manager, position, bounds, scale) { - - Phaser.Group.call(this, manager.game, null, '__flexLayer' + manager.game.rnd.uuid(), false); - - /** - * @property {Phaser.ScaleManager} scale - A reference to the ScaleManager. - */ - this.manager = manager.manager; - - /** - * @property {Phaser.FlexGrid} grid - A reference to the FlexGrid that owns this layer. - */ - this.grid = manager; - - /** - * Should the FlexLayer remain through a State swap? - * - * @type {boolean} - */ - this.persist = false; - - /** - * @property {Phaser.Point} position - */ - this.position = position; - - /** - * @property {Phaser.Rectangle} bounds - */ - this.bounds = bounds; - - /** - * @property {Phaser.Point} scale - */ - this.scale = scale; - - /** - * @property {Phaser.Point} topLeft - */ - this.topLeft = bounds.topLeft; - - /** - * @property {Phaser.Point} topMiddle - */ - this.topMiddle = new Phaser.Point(bounds.halfWidth, 0); - - /** - * @property {Phaser.Point} topRight - */ - this.topRight = bounds.topRight; - - /** - * @property {Phaser.Point} bottomLeft - */ - this.bottomLeft = bounds.bottomLeft; - - /** - * @property {Phaser.Point} bottomMiddle - */ - this.bottomMiddle = new Phaser.Point(bounds.halfWidth, bounds.bottom); - - /** - * @property {Phaser.Point} bottomRight - */ - this.bottomRight = bounds.bottomRight; - -}; - -Phaser.FlexLayer.prototype = Object.create(Phaser.Group.prototype); -Phaser.FlexLayer.prototype.constructor = Phaser.FlexLayer; - -/** - * Resize. - * - * @method Phaser.FlexLayer#resize - */ -Phaser.FlexLayer.prototype.resize = function () { -}; - -/** - * Debug. - * - * @method Phaser.FlexLayer#debug - */ -Phaser.FlexLayer.prototype.debug = function () { - - this.game.debug.text(this.bounds.width + ' x ' + this.bounds.height, this.bounds.x + 4, this.bounds.y + 16); - this.game.debug.geom(this.bounds, 'rgba(0,0,255,0.9', false); - - this.game.debug.geom(this.topLeft, 'rgba(255,255,255,0.9'); - this.game.debug.geom(this.topMiddle, 'rgba(255,255,255,0.9'); - this.game.debug.geom(this.topRight, 'rgba(255,255,255,0.9'); - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* @classdesc -* The ScaleManager object handles the the scaling, resizing, and alignment of the -* Game size and the game Display canvas. -* -* The Game size is the logical size of the game; the Display canvas has size as an HTML element. -* -* The calculations of these are heavily influenced by the bounding Parent size which is the computed -* dimensions of the Display canvas's Parent container/element - the _effective CSS rules of the -* canvas's Parent element play an important role_ in the operation of the ScaleManager. -* -* The Display canvas - or Game size, depending {@link #scaleMode} - is updated to best utilize the Parent size. -* When in Fullscreen mode or with {@link #parentIsWindow} the Parent size is that of the visual viewport (see {@link Phaser.ScaleManager#getParentBounds getParentBounds}). -* -* Parent and Display canvas containment guidelines: -* -* - Style the Parent element (of the game canvas) to control the Parent size and -* thus the Display canvas's size and layout. -* -* - The Parent element's CSS styles should _effectively_ apply maximum (and minimum) bounding behavior. -* -* - The Parent element should _not_ apply a padding as this is not accounted for. -* If a padding is required apply it to the Parent's parent or apply a margin to the Parent. -* If you need to add a border, margin or any other CSS around your game container, then use a parent element and -* apply the CSS to this instead, otherwise you'll be constantly resizing the shape of the game container. -* -* - The Display canvas layout CSS styles (i.e. margins, size) should not be altered/specified as -* they may be updated by the ScaleManager. -* -* @description -* Create a new ScaleManager object - this is done automatically by {@link Phaser.Game} -* -* The `width` and `height` constructor parameters can either be a number which represents pixels or a string that represents a percentage: e.g. `800` (for 800 pixels) or `"80%"` for 80%. -* -* @class -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number|string} width - The width of the game. See above. -* @param {number|string} height - The height of the game. See above. -*/ -Phaser.ScaleManager = function (game, width, height) { - - /** - * A reference to the currently running game. - * @property {Phaser.Game} game - * @protected - * @readonly - */ - this.game = game; - - /** - * Provides access to some cross-device DOM functions. - * @property {Phaser.DOM} dom - * @protected - * @readonly - */ - this.dom = Phaser.DOM; - - /** - * _EXPERIMENTAL:_ A responsive grid on which you can align game objects. - * @property {Phaser.FlexGrid} grid - * @public - */ - this.grid = null; - - /** - * Target width (in pixels) of the Display canvas. - * @property {number} width - * @readonly - */ - this.width = 0; - - /** - * Target height (in pixels) of the Display canvas. - * @property {number} height - * @readonly - */ - this.height = 0; - - /** - * Minimum width the canvas should be scaled to (in pixels). - * Change with {@link #setMinMax}. - * @property {?number} minWidth - * @readonly - * @protected - */ - this.minWidth = null; - - /** - * Maximum width the canvas should be scaled to (in pixels). - * If null it will scale to whatever width the browser can handle. - * Change with {@link #setMinMax}. - * @property {?number} maxWidth - * @readonly - * @protected - */ - this.maxWidth = null; - - /** - * Minimum height the canvas should be scaled to (in pixels). - * Change with {@link #setMinMax}. - * @property {?number} minHeight - * @readonly - * @protected - */ - this.minHeight = null; - - /** - * Maximum height the canvas should be scaled to (in pixels). - * If null it will scale to whatever height the browser can handle. - * Change with {@link #setMinMax}. - * @property {?number} maxHeight - * @readonly - * @protected - */ - this.maxHeight = null; - - /** - * The offset coordinates of the Display canvas from the top-left of the browser window. - * The is used internally by Phaser.Pointer (for Input) and possibly other types. - * @property {Phaser.Point} offset - * @readonly - * @protected - */ - this.offset = new Phaser.Point(); - - /** - * If true, the game should only run in a landscape orientation. - * Change with {@link #forceOrientation}. - * @property {boolean} forceLandscape - * @readonly - * @default - * @protected - */ - this.forceLandscape = false; - - /** - * If true, the game should only run in a portrait - * Change with {@link #forceOrientation}. - * @property {boolean} forcePortrait - * @readonly - * @default - * @protected - */ - this.forcePortrait = false; - - /** - * True if {@link #forceLandscape} or {@link #forcePortrait} are set and do not agree with the browser orientation. - * - * This value is not updated immediately. - * - * @property {boolean} incorrectOrientation - * @readonly - * @protected - */ - this.incorrectOrientation = false; - - /** - * See {@link #pageAlignHorizontally}. - * @property {boolean} _pageAlignHorizontally - * @private - */ - this._pageAlignHorizontally = false; - - /** - * See {@link #pageAlignVertically}. - * @property {boolean} _pageAlignVertically - * @private - */ - this._pageAlignVertically = false; - - /** - * This signal is dispatched when the orientation changes _or_ the validity of the current orientation changes. - * - * The signal is supplied with the following arguments: - * - `scale` - the ScaleManager object - * - `prevOrientation`, a string - The previous orientation as per {@link Phaser.ScaleManager#screenOrientation screenOrientation}. - * - `wasIncorrect`, a boolean - True if the previous orientation was last determined to be incorrect. - * - * Access the current orientation and validity with `scale.screenOrientation` and `scale.incorrectOrientation`. - * Thus the following tests can be done: - * - * // The orientation itself changed: - * scale.screenOrientation !== prevOrientation - * // The orientation just became incorrect: - * scale.incorrectOrientation && !wasIncorrect - * - * It is possible that this signal is triggered after {@link #forceOrientation} so the orientation - * correctness changes even if the orientation itself does not change. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} onOrientationChange - * @public - */ - this.onOrientationChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser enters an incorrect orientation, as defined by {@link #forceOrientation}. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} enterIncorrectOrientation - * @public - */ - this.enterIncorrectOrientation = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser leaves an incorrect orientation, as defined by {@link #forceOrientation}. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} leaveIncorrectOrientation - * @public - */ - this.leaveIncorrectOrientation = new Phaser.Signal(); - - /** - * If specified, this is the DOM element on which the Fullscreen API enter request will be invoked. - * The target element must have the correct CSS styling and contain the Display canvas. - * - * The elements style will be modified (ie. the width and height might be set to 100%) - * but it will not be added to, removed from, or repositioned within the DOM. - * An attempt is made to restore relevant style changes when fullscreen mode is left. - * - * For pre-2.2.0 behavior set `game.scale.fullScreenTarget = game.canvas`. - * - * @property {?DOMElement} fullScreenTarget - * @default - */ - this.fullScreenTarget = null; - - /** - * The fullscreen target, as created by {@link #createFullScreenTarget}. - * This is not set if {@link #fullScreenTarget} is used and is cleared when fullscreen mode ends. - * @property {?DOMElement} _createdFullScreenTarget - * @private - */ - this._createdFullScreenTarget = null; - - /** - * This signal is dispatched when fullscreen mode is ready to be initialized but - * before the fullscreen request. - * - * The signal is passed two arguments: `scale` (the ScaleManager), and an object in the form `{targetElement: DOMElement}`. - * - * The `targetElement` is the {@link #fullScreenTarget} element, - * if such is assigned, or a new element created by {@link #createFullScreenTarget}. - * - * Custom CSS styling or resets can be applied to `targetElement` as required. - * - * If `targetElement` is _not_ the same element as {@link #fullScreenTarget}: - * - After initialization the Display canvas is moved onto the `targetElement` for - * the duration of the fullscreen mode, and restored to it's original DOM location when fullscreen is exited. - * - The `targetElement` is moved/re-parented within the DOM and may have its CSS styles updated. - * - * The behavior of a pre-assigned target element is covered in {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget}. - * - * @property {Phaser.Signal} onFullScreenInit - * @public - */ - this.onFullScreenInit = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser enters or leaves fullscreen mode, if supported. - * - * The signal is supplied with a single argument: `scale` (the ScaleManager). Use `scale.isFullScreen` to determine - * if currently running in Fullscreen mode. - * - * @property {Phaser.Signal} onFullScreenChange - * @public - */ - this.onFullScreenChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser fails to enter fullscreen mode; - * or if the device does not support fullscreen mode and `startFullScreen` is invoked. - * - * The signal is supplied with a single argument: `scale` (the ScaleManager). - * - * @property {Phaser.Signal} onFullScreenError - * @public - */ - this.onFullScreenError = new Phaser.Signal(); - - /** - * The _last known_ orientation of the screen, as defined in the Window Screen Web API. - * See {@link Phaser.DOM.getScreenOrientation} for possible values. - * - * @property {string} screenOrientation - * @readonly - * @public - */ - this.screenOrientation = this.dom.getScreenOrientation(); - - /** - * The _current_ scale factor based on the game dimensions vs. the scaled dimensions. - * @property {Phaser.Point} scaleFactor - * @readonly - */ - this.scaleFactor = new Phaser.Point(1, 1); - - /** - * The _current_ inversed scale factor. The displayed dimensions divided by the game dimensions. - * @property {Phaser.Point} scaleFactorInversed - * @readonly - * @protected - */ - this.scaleFactorInversed = new Phaser.Point(1, 1); - - /** - * The Display canvas is aligned by adjusting the margins; the last margins are stored here. - * - * @property {Bounds-like} margin - * @readonly - * @protected - */ - this.margin = {left: 0, top: 0, right: 0, bottom: 0, x: 0, y: 0}; - - /** - * The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height. - * @property {Phaser.Rectangle} bounds - * @readonly - */ - this.bounds = new Phaser.Rectangle(); - - /** - * The aspect ratio of the scaled Display canvas. - * @property {number} aspectRatio - * @readonly - */ - this.aspectRatio = 0; - - /** - * The aspect ratio of the original game dimensions. - * @property {number} sourceAspectRatio - * @readonly - */ - this.sourceAspectRatio = 0; - - /** - * The native browser events from Fullscreen API changes. - * @property {any} event - * @readonly - * @private - */ - this.event = null; - - /** - * The edges on which to constrain the game Display/canvas in _addition_ to the restrictions of the parent container. - * - * The properties are strings and can be '', 'visual', 'layout', or 'layout-soft'. - * - If 'visual', the edge will be constrained to the Window / displayed screen area - * - If 'layout', the edge will be constrained to the CSS Layout bounds - * - An invalid value is treated as 'visual' - * - * @member - * @property {string} bottom - * @property {string} right - * @default - */ - this.windowConstraints = { - right: 'layout', - bottom: '' - }; - - /** - * Various compatibility settings. - * A value of "(auto)" indicates the setting is configured based on device and runtime information. - * - * A {@link #refresh} may need to be performed after making changes. - * - * @protected - * - * @property {boolean} [supportsFullscreen=(auto)] - True only if fullscreen support will be used. (Changing to fullscreen still might not work.) - * - * @property {boolean} [orientationFallback=(auto)] - See {@link Phaser.DOM.getScreenOrientation}. - * - * @property {boolean} [noMargins=false] - If true then the Display canvas's margins will not be updated anymore: existing margins must be manually cleared. Disabling margins prevents automatic canvas alignment/centering, possibly in fullscreen. - * - * @property {?Phaser.Point} [scrollTo=(auto)] - If specified the window will be scrolled to this position on every refresh. - * - * @property {boolean} [forceMinimumDocumentHeight=false] - If enabled the document elements minimum height is explicitly set on updates. - * The height set varies by device and may either be the height of the window or the viewport. - * - * @property {boolean} [canExpandParent=true] - If enabled then SHOW_ALL and USER_SCALE modes can try and expand the parent element. It may be necessary for the parent element to impose CSS width/height restrictions. - * - * @property {string} [clickTrampoline=(auto)] - On certain browsers (eg. IE) FullScreen events need to be triggered via 'click' events. - * A value of 'when-not-mouse' uses a click trampoline when a pointer that is not the primary mouse is used. - * Any other string value (including the empty string) prevents using click trampolines. - * For more details on click trampolines see {@link Phaser.Pointer#addClickTrampoline}. - */ - this.compatibility = { - supportsFullScreen: false, - orientationFallback: null, - noMargins: false, - scrollTo: null, - forceMinimumDocumentHeight: false, - canExpandParent: true, - clickTrampoline: '' - }; - - /** - * Scale mode to be used when not in fullscreen. - * @property {number} _scaleMode - * @private - */ - this._scaleMode = Phaser.ScaleManager.NO_SCALE; - - /* - * Scale mode to be used in fullscreen. - * @property {number} _fullScreenScaleMode - * @private - */ - this._fullScreenScaleMode = Phaser.ScaleManager.NO_SCALE; - - /** - * If the parent container of the Game canvas is the browser window itself (i.e. document.body), - * rather than another div, this should set to `true`. - * - * The {@link #parentNode} property is generally ignored while this is in effect. - * - * @property {boolean} parentIsWindow - */ - this.parentIsWindow = false; - - /** - * The _original_ DOM element for the parent of the Display canvas. - * This may be different in fullscreen - see {@link #createFullScreenTarget}. - * - * This should only be changed after moving the Game canvas to a different DOM parent. - * - * @property {?DOMElement} parentNode - */ - this.parentNode = null; - - /** - * The scale of the game in relation to its parent container. - * @property {Phaser.Point} parentScaleFactor - * @readonly - */ - this.parentScaleFactor = new Phaser.Point(1, 1); - - /** - * The maximum time (in ms) between dimension update checks for the Canvas's parent element (or window). - * Update checks normally happen quicker in response to other events. - * - * @property {integer} trackParentInterval - * @default - * @protected - * @see {@link Phaser.ScaleManager#refresh refresh} - */ - this.trackParentInterval = 2000; - - /** - * This signal is dispatched when the size of the Display canvas changes _or_ the size of the Game changes. - * When invoked this is done _after_ the Canvas size/position have been updated. - * - * This signal is _only_ called when a change occurs and a reflow may be required. - * For example, if the canvas does not change sizes because of CSS settings (such as min-width) - * then this signal will _not_ be triggered. - * - * Use this to handle responsive game layout options. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} onSizeChange - * @todo Formalize the arguments, if any, supplied to this signal. - */ - this.onSizeChange = new Phaser.Signal(); - - /** - * The callback that will be called each the parent container resizes. - * @property {function} onResize - * @private - */ - this.onResize = null; - - /** - * The context in which the {@link #onResize} callback will be called. - * @property {object} onResizeContext - * @private - */ - this.onResizeContext = null; - - /** - * @property {integer} _pendingScaleMode - Used to retain the scale mode if set from config before Boot. - * @private - */ - this._pendingScaleMode = null; - - /** - * Information saved when fullscreen mode is started. - * @property {?object} _fullScreenRestore - * @private - */ - this._fullScreenRestore = null; - - /** - * The _actual_ game dimensions, as initially set or set by {@link #setGameSize}. - * @property {Phaser.Rectangle} _gameSize - * @private - */ - this._gameSize = new Phaser.Rectangle(); - - /** - * The user-supplied scale factor, used with the USER_SCALE scaling mode. - * @property {Phaser.Point} _userScaleFactor - * @private - */ - this._userScaleFactor = new Phaser.Point(1, 1); - - /** - * The user-supplied scale trim, used with the USER_SCALE scaling mode. - * @property {Phaser.Point} _userScaleTrim - * @private - */ - this._userScaleTrim = new Phaser.Point(0, 0); - - /** - * The last time the bounds were checked in `preUpdate`. - * @property {number} _lastUpdate - * @private - */ - this._lastUpdate = 0; - - /** - * Size checks updates are delayed according to the throttle. - * The throttle increases to `trackParentInterval` over time and is used to more - * rapidly detect changes in certain browsers (eg. IE) while providing back-off safety. - * @property {integer} _updateThrottle - * @private - */ - this._updateThrottle = 0; - - /** - * The minimum throttle allowed until it has slowed down sufficiently. - * @property {integer} _updateThrottleReset - * @private - */ - this._updateThrottleReset = 100; - - /** - * The cached result of the parent (possibly window) bounds; used to invalidate sizing. - * @property {Phaser.Rectangle} _parentBounds - * @private - */ - this._parentBounds = new Phaser.Rectangle(); - - /** - * Temporary bounds used for internal work to cut down on new objects created. - * @property {Phaser.Rectangle} _parentBounds - * @private - */ - this._tempBounds = new Phaser.Rectangle(); - - /** - * The Canvas size at which the last onSizeChange signal was triggered. - * @property {Phaser.Rectangle} _lastReportedCanvasSize - * @private - */ - this._lastReportedCanvasSize = new Phaser.Rectangle(); - - /** - * The Game size at which the last onSizeChange signal was triggered. - * @property {Phaser.Rectangle} _lastReportedGameSize - * @private - */ - this._lastReportedGameSize = new Phaser.Rectangle(); - - /** - * @property {boolean} _booted - ScaleManager booted state. - * @private - */ - this._booted = false; - - if (game.config) - { - this.parseConfig(game.config); - } - - this.setupScale(width, height); - -}; - -/** -* A scale mode that stretches content to fill all available space - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.EXACT_FIT = 0; - -/** -* A scale mode that prevents any scaling - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.NO_SCALE = 1; - -/** -* A scale mode that shows the entire game while maintaining proportions - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.SHOW_ALL = 2; - -/** -* A scale mode that causes the Game size to change - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.RESIZE = 3; - -/** -* A scale mode that allows a custom scale factor - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.USER_SCALE = 4; - -Phaser.ScaleManager.prototype = { - - /** - * Start the ScaleManager. - * - * @method Phaser.ScaleManager#boot - * @protected - */ - boot: function () { - - // Configure device-dependent compatibility - - var compat = this.compatibility; - - compat.supportsFullScreen = this.game.device.fullscreen && !this.game.device.cocoonJS; - - // We can't do anything about the status bars in iPads, web apps or desktops - if (!this.game.device.iPad && !this.game.device.webApp && !this.game.device.desktop) - { - if (this.game.device.android && !this.game.device.chrome) - { - compat.scrollTo = new Phaser.Point(0, 1); - } - else - { - compat.scrollTo = new Phaser.Point(0, 0); - } - } - - if (this.game.device.desktop) - { - compat.orientationFallback = 'screen'; - compat.clickTrampoline = 'when-not-mouse'; - } - else - { - compat.orientationFallback = ''; - compat.clickTrampoline = ''; - } - - // Configure event listeners - - var _this = this; - - this._orientationChange = function(event) { - return _this.orientationChange(event); - }; - - this._windowResize = function(event) { - return _this.windowResize(event); - }; - - // This does not appear to be on the standards track - window.addEventListener('orientationchange', this._orientationChange, false); - window.addEventListener('resize', this._windowResize, false); - - if (this.compatibility.supportsFullScreen) - { - this._fullScreenChange = function(event) { - return _this.fullScreenChange(event); - }; - - this._fullScreenError = function(event) { - return _this.fullScreenError(event); - }; - - document.addEventListener('webkitfullscreenchange', this._fullScreenChange, false); - document.addEventListener('mozfullscreenchange', this._fullScreenChange, false); - document.addEventListener('MSFullscreenChange', this._fullScreenChange, false); - document.addEventListener('fullscreenchange', this._fullScreenChange, false); - - document.addEventListener('webkitfullscreenerror', this._fullScreenError, false); - document.addEventListener('mozfullscreenerror', this._fullScreenError, false); - document.addEventListener('MSFullscreenError', this._fullScreenError, false); - document.addEventListener('fullscreenerror', this._fullScreenError, false); - } - - this.game.onResume.add(this._gameResumed, this); - - // Initialize core bounds - - this.dom.getOffset(this.game.canvas, this.offset); - - this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); - - this.setGameSize(this.game.width, this.game.height); - - // Don't use updateOrientationState so events are not fired - this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); - - this.grid = new Phaser.FlexGrid(this, this.width, this.height); - - this._booted = true; - - if (this._pendingScaleMode) - { - this.scaleMode = this._pendingScaleMode; - this._pendingScaleMode = null; - } - - }, - - /** - * Load configuration settings. - * - * @method Phaser.ScaleManager#parseConfig - * @protected - * @param {object} config - The game configuration object. - */ - parseConfig: function (config) { - - if (config['scaleMode']) - { - if (this._booted) - { - this.scaleMode = config['scaleMode']; - } - else - { - this._pendingScaleMode = config['scaleMode']; - } - } - - if (config['fullScreenScaleMode']) - { - this.fullScreenScaleMode = config['fullScreenScaleMode']; - } - - if (config['fullScreenTarget']) - { - this.fullScreenTarget = config['fullScreenTarget']; - } - - }, - - /** - * Calculates and sets the game dimensions based on the given width and height. - * - * This should _not_ be called when in fullscreen mode. - * - * @method Phaser.ScaleManager#setupScale - * @protected - * @param {number|string} width - The width of the game. - * @param {number|string} height - The height of the game. - */ - setupScale: function (width, height) { - - var target; - var rect = new Phaser.Rectangle(); - - if (this.game.parent !== '') - { - if (typeof this.game.parent === 'string') - { - // hopefully an element ID - target = document.getElementById(this.game.parent); - } - else if (this.game.parent && this.game.parent.nodeType === 1) - { - // quick test for a HTMLelement - target = this.game.parent; - } - } - - // Fallback, covers an invalid ID and a non HTMLelement object - if (!target) - { - // Use the full window - this.parentNode = null; - this.parentIsWindow = true; - - rect.width = this.dom.visualBounds.width; - rect.height = this.dom.visualBounds.height; - - this.offset.set(0, 0); - } - else - { - this.parentNode = target; - this.parentIsWindow = false; - - this.getParentBounds(this._parentBounds); - - rect.width = this._parentBounds.width; - rect.height = this._parentBounds.height; - - this.offset.set(this._parentBounds.x, this._parentBounds.y); - } - - var newWidth = 0; - var newHeight = 0; - - if (typeof width === 'number') - { - newWidth = width; - } - else - { - // Percentage based - this.parentScaleFactor.x = parseInt(width, 10) / 100; - newWidth = rect.width * this.parentScaleFactor.x; - } - - if (typeof height === 'number') - { - newHeight = height; - } - else - { - // Percentage based - this.parentScaleFactor.y = parseInt(height, 10) / 100; - newHeight = rect.height * this.parentScaleFactor.y; - } - - this._gameSize.setTo(0, 0, newWidth, newHeight); - - this.updateDimensions(newWidth, newHeight, false); - - }, - - /** - * Invoked when the game is resumed. - * - * @method Phaser.ScaleManager#_gameResumed - * @private - */ - _gameResumed: function () { - - this.queueUpdate(true); - - }, - - /** - * Set the actual Game size. - * Use this instead of directly changing `game.width` or `game.height`. - * - * The actual physical display (Canvas element size) depends on various settings including - * - Scale mode - * - Scaling factor - * - Size of Canvas's parent element or CSS rules such as min-height/max-height; - * - The size of the Window - * - * @method Phaser.ScaleManager#setGameSize - * @public - * @param {integer} width - _Game width_, in pixels. - * @param {integer} height - _Game height_, in pixels. - */ - setGameSize: function (width, height) { - - this._gameSize.setTo(0, 0, width, height); - - if (this.currentScaleMode !== Phaser.ScaleManager.RESIZE) - { - this.updateDimensions(width, height, true); - } - - this.queueUpdate(true); - - }, - - /** - * Set a User scaling factor used in the USER_SCALE scaling mode. - * - * The target canvas size is computed by: - * - * canvas.width = (game.width * hScale) - hTrim - * canvas.height = (game.height * vScale) - vTrim - * - * This method can be used in the {@link Phaser.ScaleManager#setResizeCallback resize callback}. - * - * @method Phaser.ScaleManager#setUserScale - * @param {number} hScale - Horizontal scaling factor. - * @param {numer} vScale - Vertical scaling factor. - * @param {integer} [hTrim=0] - Horizontal trim, applied after scaling. - * @param {integer} [vTrim=0] - Vertical trim, applied after scaling. - */ - setUserScale: function (hScale, vScale, hTrim, vTrim) { - - this._userScaleFactor.setTo(hScale, vScale); - this._userScaleTrim.setTo(hTrim | 0, vTrim | 0); - this.queueUpdate(true); - - }, - - /** - * Sets the callback that will be invoked before sizing calculations. - * - * This is the appropriate place to call {@link #setUserScale} if needing custom dynamic scaling. - * - * The callback is supplied with two arguments `scale` and `parentBounds` where `scale` is the ScaleManager - * and `parentBounds`, a Phaser.Rectangle, is the size of the Parent element. - * - * This callback - * - May be invoked even though the parent container or canvas sizes have not changed - * - Unlike {@link #onSizeChange}, it runs _before_ the canvas is guaranteed to be updated - * - Will be invoked from `preUpdate`, _even when_ the game is paused - * - * See {@link #onSizeChange} for a better way of reacting to layout updates. - * - * @method Phaser.ScaleManager#setResizeCallback - * @public - * @param {function} callback - The callback that will be called each time a window.resize event happens or if set, the parent container resizes. - * @param {object} context - The context in which the callback will be called. - */ - setResizeCallback: function (callback, context) { - - this.onResize = callback; - this.onResizeContext = context; - - }, - - /** - * Signals a resize - IF the canvas or Game size differs from the last signal. - * - * This also triggers updates on {@link #grid} (FlexGrid) and, if in a RESIZE mode, `game.state` (StateManager). - * - * @method Phaser.ScaleManager#signalSizeChange - * @private - */ - signalSizeChange: function () { - - if (!Phaser.Rectangle.sameDimensions(this, this._lastReportedCanvasSize) || - !Phaser.Rectangle.sameDimensions(this.game, this._lastReportedGameSize)) - { - var width = this.width; - var height = this.height; - - this._lastReportedCanvasSize.setTo(0, 0, width, height); - this._lastReportedGameSize.setTo(0, 0, this.game.width, this.game.height); - - this.grid.onResize(width, height); - - this.onSizeChange.dispatch(this, width, height); - - // Per StateManager#onResizeCallback, it only occurs when in RESIZE mode. - if (this.currentScaleMode === Phaser.ScaleManager.RESIZE) - { - this.game.state.resize(width, height); - this.game.load.resize(width, height); - } - } - - }, - - /** - * Set the min and max dimensions for the Display canvas. - * - * _Note:_ The min/max dimensions are only applied in some cases - * - When the device is not in an incorrect orientation; or - * - The scale mode is EXACT_FIT when not in fullscreen - * - * @method Phaser.ScaleManager#setMinMax - * @public - * @param {number} minWidth - The minimum width the game is allowed to scale down to. - * @param {number} minHeight - The minimum height the game is allowed to scale down to. - * @param {number} [maxWidth] - The maximum width the game is allowed to scale up to; only changed if specified. - * @param {number} [maxHeight] - The maximum height the game is allowed to scale up to; only changed if specified. - * @todo These values are only sometimes honored. - */ - setMinMax: function (minWidth, minHeight, maxWidth, maxHeight) { - - this.minWidth = minWidth; - this.minHeight = minHeight; - - if (typeof maxWidth !== 'undefined') - { - this.maxWidth = maxWidth; - } - - if (typeof maxHeight !== 'undefined') - { - this.maxHeight = maxHeight; - } - - }, - - /** - * The ScaleManager.preUpdate is called automatically by the core Game loop. - * - * @method Phaser.ScaleManager#preUpdate - * @protected - */ - preUpdate: function () { - - if (this.game.time.time < (this._lastUpdate + this._updateThrottle)) - { - return; - } - - var prevThrottle = this._updateThrottle; - this._updateThrottleReset = prevThrottle >= 400 ? 0 : 100; - - this.dom.getOffset(this.game.canvas, this.offset); - - var prevWidth = this._parentBounds.width; - var prevHeight = this._parentBounds.height; - var bounds = this.getParentBounds(this._parentBounds); - - var boundsChanged = bounds.width !== prevWidth || bounds.height !== prevHeight; - - // Always invalidate on a newly detected orientation change - var orientationChanged = this.updateOrientationState(); - - if (boundsChanged || orientationChanged) - { - if (this.onResize) - { - this.onResize.call(this.onResizeContext, this, bounds); - } - - this.updateLayout(); - - this.signalSizeChange(); - } - - // Next throttle, eg. 25, 50, 100, 200.. - var throttle = this._updateThrottle * 2; - - // Don't let an update be too eager about resetting the throttle. - if (this._updateThrottle < prevThrottle) - { - throttle = Math.min(prevThrottle, this._updateThrottleReset); - } - - this._updateThrottle = Phaser.Math.clamp(throttle, 25, this.trackParentInterval); - this._lastUpdate = this.game.time.time; - - }, - - /** - * Update method while paused. - * - * @method Phaser.ScaleManager#pauseUpdate - * @private - */ - pauseUpdate: function () { - - this.preUpdate(); - - // Updates at slowest. - this._updateThrottle = this.trackParentInterval; - - }, - - /** - * Update the dimensions taking the parent scaling factor into account. - * - * @method Phaser.ScaleManager#updateDimensions - * @private - * @param {number} width - The new width of the parent container. - * @param {number} height - The new height of the parent container. - * @param {boolean} resize - True if the renderer should be resized, otherwise false to just update the internal vars. - */ - updateDimensions: function (width, height, resize) { - - this.width = width * this.parentScaleFactor.x; - this.height = height * this.parentScaleFactor.y; - - this.game.width = this.width; - this.game.height = this.height; - - this.sourceAspectRatio = this.width / this.height; - this.updateScalingAndBounds(); - - if (resize) - { - // Resize the renderer (which in turn resizes the Display canvas!) - this.game.renderer.resize(this.width, this.height); - - // The Camera can never be smaller than the Game size - this.game.camera.setSize(this.width, this.height); - - // This should only happen if the world is smaller than the new canvas size - this.game.world.resize(this.width, this.height); - } - - }, - - /** - * Update relevant scaling values based on the ScaleManager dimension and game dimensions, - * which should already be set. This does not change {@link #sourceAspectRatio}. - * - * @method Phaser.ScaleManager#updateScalingAndBounds - * @private - */ - updateScalingAndBounds: function () { - - this.scaleFactor.x = this.game.width / this.width; - this.scaleFactor.y = this.game.height / this.height; - - this.scaleFactorInversed.x = this.width / this.game.width; - this.scaleFactorInversed.y = this.height / this.game.height; - - this.aspectRatio = this.width / this.height; - - // This can be invoked in boot pre-canvas - if (this.game.canvas) - { - this.dom.getOffset(this.game.canvas, this.offset); - } - - this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); - - // Can be invoked in boot pre-input - if (this.game.input && this.game.input.scale) - { - this.game.input.scale.setTo(this.scaleFactor.x, this.scaleFactor.y); - } - - }, - - /** - * Force the game to run in only one orientation. - * - * This enables generation of incorrect orientation signals and affects resizing but does not otherwise rotate or lock the orientation. - * - * Orientation checks are performed via the Screen Orientation API, if available in browser. This means it will check your monitor - * orientation on desktop, or your device orientation on mobile, rather than comparing actual game dimensions. If you need to check the - * viewport dimensions instead and bypass the Screen Orientation API then set: `ScaleManager.compatibility.orientationFallback = 'viewport'` - * - * @method Phaser.ScaleManager#forceOrientation - * @public - * @param {boolean} forceLandscape - true if the game should run in landscape mode only. - * @param {boolean} [forcePortrait=false] - true if the game should run in portrait mode only. - */ - forceOrientation: function (forceLandscape, forcePortrait) { - - if (forcePortrait === undefined) { forcePortrait = false; } - - this.forceLandscape = forceLandscape; - this.forcePortrait = forcePortrait; - - this.queueUpdate(true); - - }, - - /** - * Classify the orientation, per `getScreenOrientation`. - * - * @method Phaser.ScaleManager#classifyOrientation - * @private - * @param {string} orientation - The orientation string, e.g. 'portrait-primary'. - * @return {?string} The classified orientation: 'portrait', 'landscape`, or null. - */ - classifyOrientation: function (orientation) { - - if (orientation === 'portrait-primary' || orientation === 'portrait-secondary') - { - return 'portrait'; - } - else if (orientation === 'landscape-primary' || orientation === 'landscape-secondary') - { - return 'landscape'; - } - else - { - return null; - } - - }, - - /** - * Updates the current orientation and dispatches orientation change events. - * - * @method Phaser.ScaleManager#updateOrientationState - * @private - * @return {boolean} True if the orientation state changed which means a forced update is likely required. - */ - updateOrientationState: function () { - - var previousOrientation = this.screenOrientation; - var previouslyIncorrect = this.incorrectOrientation; - - this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); - - this.incorrectOrientation = (this.forceLandscape && !this.isLandscape) || - (this.forcePortrait && !this.isPortrait); - - var changed = previousOrientation !== this.screenOrientation; - var correctnessChanged = previouslyIncorrect !== this.incorrectOrientation; - - if (correctnessChanged) - { - if (this.incorrectOrientation) - { - this.enterIncorrectOrientation.dispatch(); - } - else - { - this.leaveIncorrectOrientation.dispatch(); - } - } - - if (changed || correctnessChanged) - { - this.onOrientationChange.dispatch(this, previousOrientation, previouslyIncorrect); - } - - return changed || correctnessChanged; - - }, - - /** - * window.orientationchange event handler. - * - * @method Phaser.ScaleManager#orientationChange - * @private - * @param {Event} event - The orientationchange event data. - */ - orientationChange: function (event) { - - this.event = event; - - this.queueUpdate(true); - - }, - - /** - * window.resize event handler. - * - * @method Phaser.ScaleManager#windowResize - * @private - * @param {Event} event - The resize event data. - */ - windowResize: function (event) { - - this.event = event; - - this.queueUpdate(true); - - }, - - /** - * Scroll to the top - in some environments. See `compatibility.scrollTo`. - * - * @method Phaser.ScaleManager#scrollTop - * @private - */ - scrollTop: function () { - - var scrollTo = this.compatibility.scrollTo; - - if (scrollTo) - { - window.scrollTo(scrollTo.x, scrollTo.y); - } - - }, - - /** - * The "refresh" methods informs the ScaleManager that a layout refresh is required. - * - * The ScaleManager automatically queues a layout refresh (eg. updates the Game size or Display canvas layout) - * when the browser is resized, the orientation changes, or when there is a detected change - * of the Parent size. Refreshing is also done automatically when public properties, - * such as {@link #scaleMode}, are updated or state-changing methods are invoked. - * - * The "refresh" method _may_ need to be used in a few (rare) situtations when - * - * - a device change event is not correctly detected; or - * - the Parent size changes (and an immediate reflow is desired); or - * - the ScaleManager state is updated by non-standard means; or - * - certain {@link #compatibility} properties are manually changed. - * - * The queued layout refresh is not immediate but will run promptly in an upcoming `preRender`. - * - * @method Phaser.ScaleManager#refresh - * @public - */ - refresh: function () { - - this.scrollTop(); - this.queueUpdate(true); - - }, - - /** - * Updates the game / canvas position and size. - * - * @method Phaser.ScaleManager#updateLayout - * @private - */ - updateLayout: function () { - - var scaleMode = this.currentScaleMode; - - if (scaleMode === Phaser.ScaleManager.RESIZE) - { - this.reflowGame(); - return; - } - - this.scrollTop(); - - if (this.compatibility.forceMinimumDocumentHeight) - { - // (This came from older code, by why is it here?) - // Set minimum height of content to new window height - document.documentElement.style.minHeight = window.innerHeight + 'px'; - } - - if (this.incorrectOrientation) - { - this.setMaximum(); - } - else - { - if (scaleMode === Phaser.ScaleManager.EXACT_FIT) - { - this.setExactFit(); - } - else if (scaleMode === Phaser.ScaleManager.SHOW_ALL) - { - if (!this.isFullScreen && this.boundingParent && - this.compatibility.canExpandParent) - { - // Try to expand parent out, but choosing maximizing dimensions. - // Then select minimize dimensions which should then honor parent - // maximum bound applications. - this.setShowAll(true); - this.resetCanvas(); - this.setShowAll(); - } - else - { - this.setShowAll(); - } - } - else if (scaleMode === Phaser.ScaleManager.NO_SCALE) - { - this.width = this.game.width; - this.height = this.game.height; - } - else if (scaleMode === Phaser.ScaleManager.USER_SCALE) - { - this.width = (this.game.width * this._userScaleFactor.x) - this._userScaleTrim.x; - this.height = (this.game.height * this._userScaleFactor.y) - this._userScaleTrim.y; - } - } - - if (!this.compatibility.canExpandParent && - (scaleMode === Phaser.ScaleManager.SHOW_ALL || scaleMode === Phaser.ScaleManager.USER_SCALE)) - { - var bounds = this.getParentBounds(this._tempBounds); - this.width = Math.min(this.width, bounds.width); - this.height = Math.min(this.height, bounds.height); - } - - // Always truncate / force to integer - this.width = this.width | 0; - this.height = this.height | 0; - - this.reflowCanvas(); - - }, - - /** - * Returns the computed Parent size/bounds that the Display canvas is allowed/expected to fill. - * - * If in fullscreen mode or without parent (see {@link #parentIsWindow}), - * this will be the bounds of the visual viewport itself. - * - * This function takes the {@link #windowConstraints} into consideration - if the parent is partially outside - * the viewport then this function may return a smaller than expected size. - * - * Values are rounded to the nearest pixel. - * - * @method Phaser.ScaleManager#getParentBounds - * @protected - * @param {Phaser.Rectangle} [target=(new Rectangle)] - The rectangle to update; a new one is created as needed. - * @return {Phaser.Rectangle} The established parent bounds. - */ - getParentBounds: function (target) { - - var bounds = target || new Phaser.Rectangle(); - var parentNode = this.boundingParent; - var visualBounds = this.dom.visualBounds; - var layoutBounds = this.dom.layoutBounds; - - if (!parentNode) - { - bounds.setTo(0, 0, visualBounds.width, visualBounds.height); - } - else - { - // Ref. http://msdn.microsoft.com/en-us/library/hh781509(v=vs.85).aspx for getBoundingClientRect - var clientRect = parentNode.getBoundingClientRect(); - - bounds.setTo(clientRect.left, clientRect.top, clientRect.width, clientRect.height); - - var wc = this.windowConstraints; - - if (wc.right) - { - var windowBounds = wc.right === 'layout' ? layoutBounds : visualBounds; - bounds.right = Math.min(bounds.right, windowBounds.width); - } - - if (wc.bottom) - { - var windowBounds = wc.bottom === 'layout' ? layoutBounds : visualBounds; - bounds.bottom = Math.min(bounds.bottom, windowBounds.height); - } - } - - bounds.setTo( - Math.round(bounds.x), Math.round(bounds.y), - Math.round(bounds.width), Math.round(bounds.height)); - - return bounds; - - }, - - /** - * Update the canvas position/margins - for alignment within the parent container. - * - * The canvas margins _must_ be reset/cleared prior to invoking this. - * - * @method Phaser.ScaleManager#alignCanvas - * @private - * @param {boolean} horizontal - Align horizontally? - * @param {boolean} vertical - Align vertically? - */ - alignCanvas: function (horizontal, vertical) { - - var parentBounds = this.getParentBounds(this._tempBounds); - var canvas = this.game.canvas; - var margin = this.margin; - - if (horizontal) - { - margin.left = margin.right = 0; - - var canvasBounds = canvas.getBoundingClientRect(); - - if (this.width < parentBounds.width && !this.incorrectOrientation) - { - var currentEdge = canvasBounds.left - parentBounds.x; - var targetEdge = (parentBounds.width / 2) - (this.width / 2); - - targetEdge = Math.max(targetEdge, 0); - - var offset = targetEdge - currentEdge; - - margin.left = Math.round(offset); - } - - canvas.style.marginLeft = margin.left + 'px'; - - if (margin.left !== 0) - { - margin.right = -(parentBounds.width - canvasBounds.width - margin.left); - canvas.style.marginRight = margin.right + 'px'; - } - } - - if (vertical) - { - margin.top = margin.bottom = 0; - - var canvasBounds = canvas.getBoundingClientRect(); - - if (this.height < parentBounds.height && !this.incorrectOrientation) - { - var currentEdge = canvasBounds.top - parentBounds.y; - var targetEdge = (parentBounds.height / 2) - (this.height / 2); - - targetEdge = Math.max(targetEdge, 0); - - var offset = targetEdge - currentEdge; - margin.top = Math.round(offset); - } - - canvas.style.marginTop = margin.top + 'px'; - - if (margin.top !== 0) - { - margin.bottom = -(parentBounds.height - canvasBounds.height - margin.top); - canvas.style.marginBottom = margin.bottom + 'px'; - } - } - - // Silly backwards compatibility.. - margin.x = margin.left; - margin.y = margin.top; - - }, - - /** - * Updates the Game state / size. - * - * The canvas margins may always be adjusted, even if alignment is not in effect. - * - * @method Phaser.ScaleManager#reflowGame - * @private - */ - reflowGame: function () { - - this.resetCanvas('', ''); - - var bounds = this.getParentBounds(this._tempBounds); - this.updateDimensions(bounds.width, bounds.height, true); - - }, - - /** - * Updates the Display canvas size. - * - * The canvas margins may always be adjusted, even alignment is not in effect. - * - * @method Phaser.ScaleManager#reflowCanvas - * @private - */ - reflowCanvas: function () { - - if (!this.incorrectOrientation) - { - this.width = Phaser.Math.clamp(this.width, this.minWidth || 0, this.maxWidth || this.width); - this.height = Phaser.Math.clamp(this.height, this.minHeight || 0, this.maxHeight || this.height); - } - - this.resetCanvas(); - - if (!this.compatibility.noMargins) - { - if (this.isFullScreen && this._createdFullScreenTarget) - { - this.alignCanvas(true, true); - } - else - { - this.alignCanvas(this.pageAlignHorizontally, this.pageAlignVertically); - } - } - - this.updateScalingAndBounds(); - - }, - - /** - * "Reset" the Display canvas and set the specified width/height. - * - * @method Phaser.ScaleManager#resetCanvas - * @private - * @param {string} [cssWidth=(current width)] - The css width to set. - * @param {string} [cssHeight=(current height)] - The css height to set. - */ - resetCanvas: function (cssWidth, cssHeight) { - - if (cssWidth === undefined) { cssWidth = this.width + 'px'; } - if (cssHeight === undefined) { cssHeight = this.height + 'px'; } - - var canvas = this.game.canvas; - - if (!this.compatibility.noMargins) - { - canvas.style.marginLeft = ''; - canvas.style.marginTop = ''; - canvas.style.marginRight = ''; - canvas.style.marginBottom = ''; - } - - canvas.style.width = cssWidth; - canvas.style.height = cssHeight; - - }, - - /** - * Queues/marks a size/bounds check as needing to occur (from `preUpdate`). - * - * @method Phaser.ScaleManager#queueUpdate - * @private - * @param {boolean} force - If true resets the parent bounds to ensure the check is dirty. - */ - queueUpdate: function (force) { - - if (force) - { - this._parentBounds.width = 0; - this._parentBounds.height = 0; - } - - this._updateThrottle = this._updateThrottleReset; - - }, - - /** - * Reset internal data/state. - * - * @method Phaser.ScaleManager#reset - * @private - */ - reset: function (clearWorld) { - - if (clearWorld) - { - this.grid.reset(); - } - - }, - - /** - * Updates the width/height to that of the window. - * - * @method Phaser.ScaleManager#setMaximum - * @private - */ - setMaximum: function () { - - this.width = this.dom.visualBounds.width; - this.height = this.dom.visualBounds.height; - - }, - - /** - * Updates the width/height such that the game is scaled proportionally. - * - * @method Phaser.ScaleManager#setShowAll - * @private - * @param {boolean} expanding - If true then the maximizing dimension is chosen. - */ - setShowAll: function (expanding) { - - var bounds = this.getParentBounds(this._tempBounds); - var width = bounds.width; - var height = bounds.height; - - var multiplier; - - if (expanding) - { - multiplier = Math.max((height / this.game.height), (width / this.game.width)); - } - else - { - multiplier = Math.min((height / this.game.height), (width / this.game.width)); - } - - this.width = Math.round(this.game.width * multiplier); - this.height = Math.round(this.game.height * multiplier); - - }, - - /** - * Updates the width/height such that the game is stretched to the available size. - * Honors {@link #maxWidth} and {@link #maxHeight} when _not_ in fullscreen. - * - * @method Phaser.ScaleManager#setExactFit - * @private - */ - setExactFit: function () { - - var bounds = this.getParentBounds(this._tempBounds); - - this.width = bounds.width; - this.height = bounds.height; - - if (this.isFullScreen) - { - // Max/min not honored fullscreen - return; - } - - if (this.maxWidth) - { - this.width = Math.min(this.width, this.maxWidth); - } - - if (this.maxHeight) - { - this.height = Math.min(this.height, this.maxHeight); - } - - }, - - /** - * Creates a fullscreen target. This is called automatically as as needed when entering - * fullscreen mode and the resulting element is supplied to {@link #onFullScreenInit}. - * - * Use {@link #onFullScreenInit} to customize the created object. - * - * @method Phaser.ScaleManager#createFullScreenTarget - * @protected - */ - createFullScreenTarget: function () { - - var fsTarget = document.createElement('div'); - - fsTarget.style.margin = '0'; - fsTarget.style.padding = '0'; - fsTarget.style.background = '#000'; - - return fsTarget; - - }, - - /** - * Start the browsers fullscreen mode - this _must_ be called from a user input Pointer or Mouse event. - * - * The Fullscreen API must be supported by the browser for this to work - it is not the same as setting - * the game size to fill the browser window. See {@link Phaser.ScaleManager#compatibility compatibility.supportsFullScreen} to check if the current - * device is reported to support fullscreen mode. - * - * The {@link #fullScreenFailed} signal will be dispatched if the fullscreen change request failed or the game does not support the Fullscreen API. - * - * @method Phaser.ScaleManager#startFullScreen - * @public - * @param {boolean} [antialias] - Changes the anti-alias feature of the canvas before jumping in to fullscreen (false = retain pixel art, true = smooth art). If not specified then no change is made. Only works in CANVAS mode. - * @param {boolean} [allowTrampoline=undefined] - Internal argument. If `false` click trampolining is suppressed. - * @return {boolean} Returns true if the device supports fullscreen mode and fullscreen mode was attempted to be started. (It might not actually start, wait for the signals.) - */ - startFullScreen: function (antialias, allowTrampoline) { - - if (this.isFullScreen) - { - return false; - } - - if (!this.compatibility.supportsFullScreen) - { - // Error is called in timeout to emulate the real fullscreenerror event better - var _this = this; - setTimeout(function () { - _this.fullScreenError(); - }, 10); - return; - } - - if (this.compatibility.clickTrampoline === 'when-not-mouse') - { - var input = this.game.input; - - if (input.activePointer && - input.activePointer !== input.mousePointer && - (allowTrampoline || allowTrampoline !== false)) - { - input.activePointer.addClickTrampoline("startFullScreen", this.startFullScreen, this, [antialias, false]); - return; - } - } - - if (typeof antialias !== 'undefined' && this.game.renderType === Phaser.CANVAS) - { - this.game.stage.smoothed = antialias; - } - - var fsTarget = this.fullScreenTarget; - - if (!fsTarget) - { - this.cleanupCreatedTarget(); - - this._createdFullScreenTarget = this.createFullScreenTarget(); - fsTarget = this._createdFullScreenTarget; - } - - var initData = { - targetElement: fsTarget - }; - - this.onFullScreenInit.dispatch(this, initData); - - if (this._createdFullScreenTarget) - { - // Move the Display canvas inside of the target and add the target to the DOM - // (The target has to be added for the Fullscreen API to work.) - var canvas = this.game.canvas; - var parent = canvas.parentNode; - parent.insertBefore(fsTarget, canvas); - fsTarget.appendChild(canvas); - } - - if (this.game.device.fullscreenKeyboard) - { - fsTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); - } - else - { - fsTarget[this.game.device.requestFullscreen](); - } - - return true; - - }, - - /** - * Stops / exits fullscreen mode, if active. - * - * @method Phaser.ScaleManager#stopFullScreen - * @public - * @return {boolean} Returns true if the browser supports fullscreen mode and fullscreen mode will be exited. - */ - stopFullScreen: function () { - - if (!this.isFullScreen || !this.compatibility.supportsFullScreen) - { - return false; - } - - document[this.game.device.cancelFullscreen](); - - return true; - - }, - - /** - * Cleans up the previous fullscreen target, if such was automatically created. - * This ensures the canvas is restored to its former parent, assuming the target didn't move. - * - * @method Phaser.ScaleManager#cleanupCreatedTarget - * @private - */ - cleanupCreatedTarget: function () { - - var fsTarget = this._createdFullScreenTarget; - - if (fsTarget && fsTarget.parentNode) - { - // Make sure to cleanup synthetic target for sure; - // swap the canvas back to the parent. - var parent = fsTarget.parentNode; - parent.insertBefore(this.game.canvas, fsTarget); - parent.removeChild(fsTarget); - } - - this._createdFullScreenTarget = null; - - }, - - /** - * Used to prepare/restore extra fullscreen mode settings. - * (This does move any elements within the DOM tree.) - * - * @method Phaser.ScaleManager#prepScreenMode - * @private - * @param {boolean} enteringFullscreen - True if _entering_ fullscreen, false if _leaving_. - */ - prepScreenMode: function (enteringFullscreen) { - - var createdTarget = !!this._createdFullScreenTarget; - var fsTarget = this._createdFullScreenTarget || this.fullScreenTarget; - - if (enteringFullscreen) - { - if (createdTarget || this.fullScreenScaleMode === Phaser.ScaleManager.EXACT_FIT) - { - // Resize target, as long as it's not the canvas - if (fsTarget !== this.game.canvas) - { - this._fullScreenRestore = { - targetWidth: fsTarget.style.width, - targetHeight: fsTarget.style.height - }; - - fsTarget.style.width = '100%'; - fsTarget.style.height = '100%'; - } - } - } - else - { - // Have restore information - if (this._fullScreenRestore) - { - fsTarget.style.width = this._fullScreenRestore.targetWidth; - fsTarget.style.height = this._fullScreenRestore.targetHeight; - - this._fullScreenRestore = null; - } - - // Always reset to game size - this.updateDimensions(this._gameSize.width, this._gameSize.height, true); - this.resetCanvas(); - } - - }, - - /** - * Called automatically when the browser enters of leaves fullscreen mode. - * - * @method Phaser.ScaleManager#fullScreenChange - * @private - * @param {Event} [event=undefined] - The fullscreenchange event - */ - fullScreenChange: function (event) { - - this.event = event; - - if (this.isFullScreen) - { - this.prepScreenMode(true); - - this.updateLayout(); - this.queueUpdate(true); - } - else - { - this.prepScreenMode(false); - - this.cleanupCreatedTarget(); - - this.updateLayout(); - this.queueUpdate(true); - } - - this.onFullScreenChange.dispatch(this, this.width, this.height); - - }, - - /** - * Called automatically when the browser fullscreen request fails; - * or called when a fullscreen request is made on a device for which it is not supported. - * - * @method Phaser.ScaleManager#fullScreenError - * @private - * @param {Event} [event=undefined] - The fullscreenerror event; undefined if invoked on a device that does not support the Fullscreen API. - */ - fullScreenError: function (event) { - - this.event = event; - - this.cleanupCreatedTarget(); - - console.warn('Phaser.ScaleManager: requestFullscreen failed or device does not support the Fullscreen API'); - - this.onFullScreenError.dispatch(this); - - }, - - /** - * Takes a Sprite or Image object and scales it to fit the given dimensions. - * Scaling happens proportionally without distortion to the sprites texture. - * The letterBox parameter controls if scaling will produce a letter-box effect or zoom the - * sprite until it fills the given values. Note that with letterBox set to false the scaled sprite may spill out over either - * the horizontal or vertical sides of the target dimensions. If you wish to stop this you can crop the Sprite. - * - * @method Phaser.ScaleManager#scaleSprite - * @protected - * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite we want to scale. - * @param {integer} [width] - The target width that we want to fit the sprite in to. If not given it defaults to ScaleManager.width. - * @param {integer} [height] - The target height that we want to fit the sprite in to. If not given it defaults to ScaleManager.height. - * @param {boolean} [letterBox=false] - True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. - * @return {Phaser.Sprite|Phaser.Image} The scaled sprite. - */ - scaleSprite: function (sprite, width, height, letterBox) { - - if (width === undefined) { width = this.width; } - if (height === undefined) { height = this.height; } - if (letterBox === undefined) { letterBox = false; } - - if (!sprite || !sprite['scale']) - { - return sprite; - } - - sprite.scale.x = 1; - sprite.scale.y = 1; - - if ((sprite.width <= 0) || (sprite.height <= 0) || (width <= 0) || (height <= 0)) - { - return sprite; - } - - var scaleX1 = width; - var scaleY1 = (sprite.height * width) / sprite.width; - - var scaleX2 = (sprite.width * height) / sprite.height; - var scaleY2 = height; - - var scaleOnWidth = (scaleX2 > width); - - if (scaleOnWidth) - { - scaleOnWidth = letterBox; - } - else - { - scaleOnWidth = !letterBox; - } - - if (scaleOnWidth) - { - sprite.width = Math.floor(scaleX1); - sprite.height = Math.floor(scaleY1); - } - else - { - sprite.width = Math.floor(scaleX2); - sprite.height = Math.floor(scaleY2); - } - - // Enable at some point? - // sprite.x = Math.floor((width - sprite.width) / 2); - // sprite.y = Math.floor((height - sprite.height) / 2); - - return sprite; - - }, - - /** - * Destroys the ScaleManager and removes any event listeners. - * This should probably only be called when the game is destroyed. - * - * @method Phaser.ScaleManager#destroy - * @protected - */ - destroy: function () { - - this.game.onResume.remove(this._gameResumed, this); - - window.removeEventListener('orientationchange', this._orientationChange, false); - window.removeEventListener('resize', this._windowResize, false); - - if (this.compatibility.supportsFullScreen) - { - document.removeEventListener('webkitfullscreenchange', this._fullScreenChange, false); - document.removeEventListener('mozfullscreenchange', this._fullScreenChange, false); - document.removeEventListener('MSFullscreenChange', this._fullScreenChange, false); - document.removeEventListener('fullscreenchange', this._fullScreenChange, false); - - document.removeEventListener('webkitfullscreenerror', this._fullScreenError, false); - document.removeEventListener('mozfullscreenerror', this._fullScreenError, false); - document.removeEventListener('MSFullscreenError', this._fullScreenError, false); - document.removeEventListener('fullscreenerror', this._fullScreenError, false); - } - - } - -}; - -Phaser.ScaleManager.prototype.constructor = Phaser.ScaleManager; - -/** -* The DOM element that is considered the Parent bounding element, if any. -* -* This `null` if {@link #parentIsWindow} is true or if fullscreen mode is entered and {@link #fullScreenTarget} is specified. -* It will also be null if there is no game canvas or if the game canvas has no parent. -* -* @name Phaser.ScaleManager#boundingParent -* @property {?DOMElement} boundingParent -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "boundingParent", { - - get: function () { - if (this.parentIsWindow || - (this.isFullScreen && !this._createdFullScreenTarget)) - { - return null; - } - - var parentNode = this.game.canvas && this.game.canvas.parentNode; - return parentNode || null; - } - -}); - -/** -* The scaling method used by the ScaleManager when not in fullscreen. -* -*
-*
{@link Phaser.ScaleManager.NO_SCALE}
-*
-* The Game display area will not be scaled - even if it is too large for the canvas/screen. -* This mode _ignores_ any applied scaling factor and displays the canvas at the Game size. -*
-*
{@link Phaser.ScaleManager.EXACT_FIT}
-*
-* The Game display area will be _stretched_ to fill the entire size of the canvas's parent element and/or screen. -* Proportions are not mainted. -*
-*
{@link Phaser.ScaleManager.SHOW_ALL}
-*
-* Show the entire game display area while _maintaining_ the original aspect ratio. -*
-*
{@link Phaser.ScaleManager.RESIZE}
-*
-* The dimensions of the game display area are changed to match the size of the parent container. -* That is, this mode _changes the Game size_ to match the display size. -*

-* Any manually set Game size (see {@link #setGameSize}) is ignored while in effect. -*

-*
{@link Phaser.ScaleManager.USER_SCALE}
-*
-* The game Display is scaled according to the user-specified scale set by {@link Phaser.ScaleManager#setUserScale setUserScale}. -*

-* This scale can be adjusted in the {@link Phaser.ScaleManager#setResizeCallback resize callback} -* for flexible custom-sizing needs. -*

-*
-* -* @name Phaser.ScaleManager#scaleMode -* @property {integer} scaleMode -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "scaleMode", { - - get: function () { - - return this._scaleMode; - - }, - - set: function (value) { - - if (value !== this._scaleMode) - { - if (!this.isFullScreen) - { - this.updateDimensions(this._gameSize.width, this._gameSize.height, true); - this.queueUpdate(true); - } - - this._scaleMode = value; - } - - return this._scaleMode; - - } - -}); - -/** -* The scaling method used by the ScaleManager when in fullscreen. -* -* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. -* -* @name Phaser.ScaleManager#fullScreenScaleMode -* @property {integer} fullScreenScaleMode -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "fullScreenScaleMode", { - - get: function () { - - return this._fullScreenScaleMode; - - }, - - set: function (value) { - - if (value !== this._fullScreenScaleMode) - { - // If in fullscreen then need a wee bit more work - if (this.isFullScreen) - { - this.prepScreenMode(false); - this._fullScreenScaleMode = value; - this.prepScreenMode(true); - - this.queueUpdate(true); - } - else - { - this._fullScreenScaleMode = value; - } - } - - return this._fullScreenScaleMode; - - } - -}); - -/** -* Returns the current scale mode - for normal or fullscreen operation. -* -* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. -* -* @name Phaser.ScaleManager#currentScaleMode -* @property {number} currentScaleMode -* @protected -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "currentScaleMode", { - - get: function () { - - return this.isFullScreen ? this._fullScreenScaleMode : this._scaleMode; - - } - -}); - -/** -* When enabled the Display canvas will be horizontally-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). -* -* To align horizontally across the page the Display canvas should be added directly to page; -* or the parent container should itself be horizontally aligned. -* -* Horizontal alignment is not applicable with the {@link .RESIZE} scaling mode. -* -* @name Phaser.ScaleManager#pageAlignHorizontally -* @property {boolean} pageAlignHorizontally -* @default false -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignHorizontally", { - - get: function () { - - return this._pageAlignHorizontally; - - }, - - set: function (value) { - - if (value !== this._pageAlignHorizontally) - { - this._pageAlignHorizontally = value; - this.queueUpdate(true); - } - - } - -}); - -/** -* When enabled the Display canvas will be vertically-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). -* -* To align vertically the Parent element should have a _non-collapsible_ height, such that it will maintain -* a height _larger_ than the height of the contained Game canvas - the game canvas will then be scaled vertically -* _within_ the remaining available height dictated by the Parent element. -* -* One way to prevent the parent from collapsing is to add an absolute "min-height" CSS property to the parent element. -* If specifying a relative "min-height/height" or adjusting margins, the Parent height must still be non-collapsible (see note). -* -* _Note_: In version 2.2 the minimum document height is _not_ automatically set to the viewport/window height. -* To automatically update the minimum document height set {@link Phaser.ScaleManager#compatibility compatibility.forceMinimumDocumentHeight} to true. -* -* Vertical alignment is not applicable with the {@link .RESIZE} scaling mode. -* -* @name Phaser.ScaleManager#pageAlignVertically -* @property {boolean} pageAlignVertically -* @default false -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignVertically", { - - get: function () { - - return this._pageAlignVertically; - - }, - - set: function (value) { - - if (value !== this._pageAlignVertically) - { - this._pageAlignVertically = value; - this.queueUpdate(true); - } - - } - -}); - -/** -* Returns true if the browser is in fullscreen mode, otherwise false. -* @name Phaser.ScaleManager#isFullScreen -* @property {boolean} isFullScreen -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isFullScreen", { - - get: function () { - return !!(document['fullscreenElement'] || - document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || - document['msFullscreenElement']); - } - -}); - -/** -* Returns true if the screen orientation is in portrait mode. -* -* @name Phaser.ScaleManager#isPortrait -* @property {boolean} isPortrait -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isPortrait", { - - get: function () { - return this.classifyOrientation(this.screenOrientation) === 'portrait'; - } - -}); - -/** -* Returns true if the screen orientation is in landscape mode. -* -* @name Phaser.ScaleManager#isLandscape -* @property {boolean} isLandscape -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isLandscape", { - - get: function () { - return this.classifyOrientation(this.screenOrientation) === 'landscape'; - } - -}); - -/** -* Returns true if the game dimensions are portrait (height > width). -* This is especially useful to check when using the RESIZE scale mode -* but wanting to maintain game orientation on desktop browsers, -* where typically the screen orientation will always be landscape regardless of the browser viewport. -* -* @name Phaser.ScaleManager#isGamePortrait -* @property {boolean} isGamePortrait -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isGamePortrait", { - - get: function () { - return (this.height > this.width); - } - -}); - -/** -* Returns true if the game dimensions are landscape (width > height). -* This is especially useful to check when using the RESIZE scale mode -* but wanting to maintain game orientation on desktop browsers, -* where typically the screen orientation will always be landscape regardless of the browser viewport. -* -* @name Phaser.ScaleManager#isGameLandscape -* @property {boolean} isGameLandscape -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { - - get: function () { - return (this.width > this.height); - } - -}); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * This is where the magic happens. The Game object is the heart of your game, * providing quick access to common functions and handling the boot process. @@ -24599,6 +20262,14 @@ Phaser.Game = function (width, height, renderer, parent, state, transparent, ant */ this.preserveDrawingBuffer = false; + /** + * Clear the Canvas each frame before rendering the display list. + * You can set this to `false` to gain some performance if your game always contains a background that completely fills the display. + * @property {boolean} clearBeforeRender + * @default + */ + this.clearBeforeRender = true; + /** * @property {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The Pixi Renderer. * @protected @@ -25021,6 +20692,8 @@ Phaser.Game.prototype = { this.isBooted = true; + PIXI.game = this; + this.math = Phaser.Math; this.scale = new Phaser.ScaleManager(this, this._width, this._height); @@ -25174,37 +20847,20 @@ Phaser.Game.prototype = { this.canvas.style['-webkit-full-screen'] = 'width: 100%; height: 100%'; } - if (this.device.cocoonJS) - { - if (this.renderType === Phaser.CANVAS) - { - this.canvas.screencanvas = true; - } - else - { - // Some issue related to scaling arise with Cocoon using screencanvas and webgl renderer. - this.canvas.screencanvas = false; - } - } - - if (this.renderType === Phaser.HEADLESS || this.renderType === Phaser.CANVAS || (this.renderType === Phaser.AUTO && this.device.webGL === false)) + if (this.renderType === Phaser.HEADLESS || this.renderType === Phaser.CANVAS || (this.renderType === Phaser.AUTO && !this.device.webGL)) { if (this.device.canvas) { - if (this.renderType === Phaser.AUTO) - { - this.renderType = Phaser.CANVAS; - } + // They requested Canvas and their browser supports it + this.renderType = Phaser.CANVAS; + + this.renderer = new PIXI.CanvasRenderer(this); - this.renderer = new PIXI.CanvasRenderer(this.width, this.height, { "view": this.canvas, - "transparent": this.transparent, - "resolution": this.resolution, - "clearBeforeRender": true }); this.context = this.renderer.context; } else { - throw new Error('Phaser.Game - cannot create Canvas or WebGL context, aborting.'); + throw new Error('Phaser.Game - Cannot create Canvas or WebGL context, aborting.'); } } else @@ -25212,17 +20868,19 @@ Phaser.Game.prototype = { // They requested WebGL and their browser supports it this.renderType = Phaser.WEBGL; - this.renderer = new PIXI.WebGLRenderer(this.width, this.height, { "view": this.canvas, - "transparent": this.transparent, - "resolution": this.resolution, - "antialias": this.antialias, - "preserveDrawingBuffer": this.preserveDrawingBuffer }); + this.renderer = new PIXI.WebGLRenderer(this); + this.context = null; this.canvas.addEventListener('webglcontextlost', this.contextLost.bind(this), false); this.canvas.addEventListener('webglcontextrestored', this.contextRestored.bind(this), false); } + if (this.device.cocoonJS) + { + this.canvas.screencanvas = (this.renderType === Phaser.CANVAS) ? true : false; + } + if (this.renderType !== Phaser.HEADLESS) { this.stage.smoothed = this.antialias; @@ -25277,7 +20935,7 @@ Phaser.Game.prototype = { if (this._kickstart) { - this.updateLogic(1.0 / this.time.desiredFps); + this.updateLogic(this.time.desiredFpsMult); // Sync the scene graph after _every_ logic update to account for moved game objects this.stage.updateTransform(); @@ -25297,7 +20955,7 @@ Phaser.Game.prototype = { if (this.time.time > this._nextFpsNotification) { // only permit one fps notification per 10 seconds - this._nextFpsNotification = this.time.time + 1000 * 10; + this._nextFpsNotification = this.time.time + 10000; // dispatch the notification signal this.fpsProblemNotifier.dispatch(); @@ -25334,7 +20992,7 @@ Phaser.Game.prototype = { this._deltaTime -= slowStep; this.currentUpdateID = count; - this.updateLogic(1.0 / this.time.desiredFps); + this.updateLogic(this.time.desiredFpsMult); // Sync the scene graph after _every_ logic update to account for moved game objects this.stage.updateTransform(); @@ -25345,6 +21003,10 @@ Phaser.Game.prototype = { { break; } + else + { + this.time.refresh(); + } } // detect spiraling (if the catch-up loop isn't fast enough, the number of iterations will increase constantly) @@ -25392,7 +21054,7 @@ Phaser.Game.prototype = { this.state.update(); this.stage.update(); - this.tweens.update(timeStep); + this.tweens.update(); this.sound.update(); this.input.update(); this.physics.update(); @@ -25435,10 +21097,13 @@ Phaser.Game.prototype = { } this.state.preRender(elapsedTime); + this.renderer.render(this.stage); this.plugins.render(elapsedTime); + this.state.render(elapsedTime); + this.plugins.postRender(elapsedTime); }, @@ -26035,7 +21700,7 @@ Phaser.Input.prototype = { */ boot: function () { - this.mousePointer = new Phaser.Pointer(this.game, 0); + this.mousePointer = new Phaser.Pointer(this.game, 0, Phaser.PointerMode.CURSOR); this.addPointer(); this.addPointer(); @@ -26178,7 +21843,7 @@ Phaser.Input.prototype = { } var id = this.pointers.length + 1; - var pointer = new Phaser.Pointer(this.game, id); + var pointer = new Phaser.Pointer(this.game, id, Phaser.PointerMode.TOUCH); this.pointers.push(pointer); this['pointer' + id] = pointer; @@ -27852,20 +23517,23 @@ Phaser.MSPointer.prototype = { var canvas = this.game.canvas; - canvas.removeEventListener('MSPointerDown', this._onMSPointerDown); - canvas.removeEventListener('MSPointerMove', this._onMSPointerMove); - canvas.removeEventListener('MSPointerUp', this._onMSPointerUp); - canvas.removeEventListener('MSPointerOver', this._onMSPointerOver); - canvas.removeEventListener('MSPointerOut', this._onMSPointerOut); + canvas.removeEventListener('MSPointerDown', this._onMSPointerDown, false); + canvas.removeEventListener('MSPointerMove', this._onMSPointerMove, false); + canvas.removeEventListener('MSPointerUp', this._onMSPointerUp, false); - canvas.removeEventListener('pointerdown', this._onMSPointerDown); - canvas.removeEventListener('pointermove', this._onMSPointerMove); - canvas.removeEventListener('pointerup', this._onMSPointerUp); - canvas.removeEventListener('pointerover', this._onMSPointerOver); - canvas.removeEventListener('pointerout', this._onMSPointerOut); + // IE11+ uses non-prefix events + canvas.removeEventListener('pointerdown', this._onMSPointerDown, false); + canvas.removeEventListener('pointermove', this._onMSPointerMove, false); + canvas.removeEventListener('pointerup', this._onMSPointerUp, false); - window.removeEventListener('MSPointerUp', this._onMSPointerUpGlobal); - window.removeEventListener('pointerup', this._onMSPointerUpGlobal); + window.removeEventListener('MSPointerUp', this._onMSPointerUpGlobal, true); + canvas.removeEventListener('MSPointerOver', this._onMSPointerOver, true); + canvas.removeEventListener('MSPointerOut', this._onMSPointerOut, true); + + // IE11+ uses non-prefix events + window.removeEventListener('pointerup', this._onMSPointerUpGlobal, true); + canvas.removeEventListener('pointerover', this._onMSPointerOver, true); + canvas.removeEventListener('pointerout', this._onMSPointerOut, true); } @@ -27939,15 +23607,6 @@ Phaser.DeviceButton = function (parent, buttonCode) { */ this.timeDown = 0; - /** - * If the button is down this value holds the duration of that button press and is constantly updated. - * If the button is up it holds the duration of the previous down session. - * The value is stored in milliseconds. - * @property {number} duration - * @default - */ - this.duration = 0; - /** * @property {number} timeUp - The timestamp when the button was last released. * @default @@ -28044,7 +23703,6 @@ Phaser.DeviceButton.prototype = { this.isDown = true; this.isUp = false; this.timeDown = this.game.time.time; - this.duration = 0; this.repeats = 0; this.event = event; @@ -28153,7 +23811,6 @@ Phaser.DeviceButton.prototype = { this.isUp = true; this.timeDown = this.game.time.time; - this.duration = 0; this.repeats = 0; this.altKey = false; @@ -28184,7 +23841,7 @@ Phaser.DeviceButton.prototype = { Phaser.DeviceButton.prototype.constructor = Phaser.DeviceButton; /** -* How long the button has been held down. +* How long the button has been held down for in milliseconds. * If not currently down it returns -1. * * @name Phaser.DeviceButton#duration @@ -28219,8 +23876,9 @@ Object.defineProperty(Phaser.DeviceButton.prototype, "duration", { * @constructor * @param {Phaser.Game} game - A reference to the currently running game. * @param {number} id - The ID of the Pointer object within the game. Each game can have up to 10 active pointers. +* @param {Phaser.PointerMode} pointerMode=(CURSOR|CONTACT) - The operational mode of this pointer, eg. CURSOR or TOUCH. */ -Phaser.Pointer = function (game, id) { +Phaser.Pointer = function (game, id, pointerMode) { /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -28256,6 +23914,11 @@ Phaser.Pointer = function (game, id) { */ this.pointerId = null; + /** + * @property {Phaser.PointerMode} pointerMode - The operational mode of this pointer. + */ + this.pointerMode = pointerMode || (Phaser.PointerMode.CURSOR | Phaser.PointerMode.CONTACT); + /** * @property {any} target - The target property of the Pointer as set by the DOM event when this Pointer is started. * @default @@ -28780,6 +24443,8 @@ Phaser.Pointer.prototype = { */ start: function (event) { + var input = this.game.input; + if (event['pointerId']) { this.pointerId = event.pointerId; @@ -28817,18 +24482,19 @@ Phaser.Pointer.prototype = { // x and y are the old values here? this.positionDown.setTo(this.x, this.y); - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.x = this.x; - this.game.input.y = this.y; - this.game.input.position.setTo(this.x, this.y); - this.game.input.onDown.dispatch(this, event); - this.game.input.resetSpeed(this.x, this.y); + input.x = this.x; + input.y = this.y; + input.position.setTo(this.x, this.y); + input.onDown.dispatch(this, event); + input.resetSpeed(this.x, this.y); } this._stateReset = false; + this.totalTouches++; if (this.targetObject !== null) @@ -28846,12 +24512,14 @@ Phaser.Pointer.prototype = { */ update: function () { + var input = this.game.input; + if (this.active) { // Force a check? if (this.dirty) { - if (this.game.input.interactiveItems.total > 0) + if (input.interactiveItems.total > 0) { this.processInteractiveObjects(false); } @@ -28859,29 +24527,29 @@ Phaser.Pointer.prototype = { this.dirty = false; } - if (this._holdSent === false && this.duration >= this.game.input.holdRate) + if (this._holdSent === false && this.duration >= input.holdRate) { - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.onHold.dispatch(this); + input.onHold.dispatch(this); } this._holdSent = true; } // Update the droppings history - if (this.game.input.recordPointerHistory && this.game.time.time >= this._nextDrop) + if (input.recordPointerHistory && this.game.time.time >= this._nextDrop) { - this._nextDrop = this.game.time.time + this.game.input.recordRate; + this._nextDrop = this.game.time.time + input.recordRate; this._history.push({ x: this.position.x, y: this.position.y }); - if (this._history.length > this.game.input.recordLimit) + if (this._history.length > input.recordLimit) { this._history.shift(); } @@ -29035,7 +24703,7 @@ Phaser.Pointer.prototype = { var currentNode = this.game.input.interactiveItems.first; - while(currentNode) + while (currentNode) { if (!currentNode.checked && currentNode.validForInput(highestInputPriorityID, highestRenderOrderID, true)) @@ -29118,6 +24786,8 @@ Phaser.Pointer.prototype = { */ stop: function (event) { + var input = this.game.input; + if (this._stateReset && this.withinGame) { event.preventDefault(); @@ -29126,25 +24796,25 @@ Phaser.Pointer.prototype = { this.timeUp = this.game.time.time; - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.onUp.dispatch(this, event); + input.onUp.dispatch(this, event); // Was it a tap? - if (this.duration >= 0 && this.duration <= this.game.input.tapRate) + if (this.duration >= 0 && this.duration <= input.tapRate) { // Was it a double-tap? - if (this.timeUp - this.previousTapTime < this.game.input.doubleTapRate) + if (this.timeUp - this.previousTapTime < input.doubleTapRate) { // Yes, let's dispatch the signal then with the 2nd parameter set to true - this.game.input.onTap.dispatch(this, true); + input.onTap.dispatch(this, true); } else { // Wasn't a double-tap, so dispatch a single tap signal - this.game.input.onTap.dispatch(this, false); + input.onTap.dispatch(this, false); } this.previousTapTime = this.timeUp; @@ -29175,10 +24845,10 @@ Phaser.Pointer.prototype = { if (this.isMouse === false) { - this.game.input.currentPointers--; + input.currentPointers--; } - this.game.input.interactiveItems.callAll('_releasedHandler', this); + input.interactiveItems.callAll('_releasedHandler', this); if (this._clickTrampolines) { @@ -29398,6 +25068,35 @@ Object.defineProperty(Phaser.Pointer.prototype, "worldY", { }); +/** +* Enumeration categorizing operational modes of pointers. +* +* PointerType values represent valid bitmasks. +* For example, a value representing both Mouse and Touch devices +* can be expressed as `PointerMode.CURSOR | PointerMode.CONTACT`. +* +* Values may be added for future mode categorizations. +* @class Phaser.PointerMode +*/ +Phaser.PointerMode = { + + /** + * A 'CURSOR' is a pointer with a *passive cursor* such as a mouse, touchpad, watcom stylus, or even TV-control arrow-pad. + * + * It has the property that a cursor is passively moved without activating the input. + * This currently corresponds with {@link Phaser.Pointer#isMouse} property. + * @constant + */ + CURSOR: 1 << 0, + + /** + * A 'CONTACT' pointer has an *active cursor* that only tracks movement when actived; notably this is a touch-style input. + * @constant + */ + CONTACT: 1 << 1 + +}; + /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -29428,7 +25127,7 @@ Phaser.Touch = function (game) { this.enabled = true; /** - * An array of callbacks that will be fired every time a native touch start event is received from the browser. + * An array of callbacks that will be fired every time a native touch start or touch end event is received from the browser. * This is used internally to handle audio and video unlocking on mobile devices. * To add a callback to this array please use `Touch.addTouchLockCallback`. * @property {array} touchLockCallbacks @@ -29598,7 +25297,7 @@ Phaser.Touch.prototype = { }, /** - * Adds a callback that is fired when a browser touchstart event is received. + * Adds a callback that is fired when a browser touchstart or touchend event is received. * * This is used internally to handle audio and video unlocking on mobile devices. * @@ -29609,10 +25308,13 @@ Phaser.Touch.prototype = { * @method Phaser.Touch#addTouchLockCallback * @param {function} callback - The callback that will be called when a touchstart event is received. * @param {object} context - The context in which the callback will be called. + * @param {boolean} [onEnd=false] - Will the callback fire on a touchstart (default) or touchend event? */ - addTouchLockCallback: function (callback, context) { + addTouchLockCallback: function (callback, context, onEnd) { - this.touchLockCallbacks.push({ callback: callback, context: context }); + if (onEnd === undefined) { onEnd = false; } + + this.touchLockCallbacks.push({ callback: callback, context: context, onEnd: onEnd }); }, @@ -29652,7 +25354,9 @@ Phaser.Touch.prototype = { while (i--) { - if (this.touchLockCallbacks[i].callback.call(this.touchLockCallbacks[i].context, this, event)) + var cb = this.touchLockCallbacks[i]; + + if (!cb.onEnd && cb.callback.call(cb.context, this, event)) { this.touchLockCallbacks.splice(i, 1); } @@ -29801,6 +25505,18 @@ Phaser.Touch.prototype = { */ onTouchEnd: function (event) { + var i = this.touchLockCallbacks.length; + + while (i--) + { + var cb = this.touchLockCallbacks[i]; + + if (cb.onEnd && cb.callback.call(cb.context, this, event)) + { + this.touchLockCallbacks.splice(i, 1); + } + } + this.event = event; if (this.touchEndCallback) @@ -30285,7 +26001,7 @@ Phaser.InputHandler.prototype = { if (includePixelPerfect === undefined) { includePixelPerfect = true; } - if (this.sprite.scale.x === 0 || this.sprite.scale.y === 0 || this.priorityID < this.game.input.minPriorityID) + if (!this.enabled || this.sprite.scale.x === 0 || this.sprite.scale.y === 0 || this.priorityID < this.game.input.minPriorityID) { return false; } @@ -30322,14 +26038,14 @@ Phaser.InputHandler.prototype = { * This value is only set when the pointer is over this Sprite. * * @method Phaser.InputHandler#pointerX - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {number} The x coordinate of the Input pointer. */ - pointerX: function (pointer) { + pointerX: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].x; + return this._pointerData[pointerId].x; }, @@ -30338,44 +26054,46 @@ Phaser.InputHandler.prototype = { * This value is only set when the pointer is over this Sprite. * * @method Phaser.InputHandler#pointerY - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {number} The y coordinate of the Input pointer. */ - pointerY: function (pointer) { + pointerY: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].y; + return this._pointerData[pointerId].y; }, /** - * If the Pointer is down this returns true. Please note that it only checks if the Pointer is down, not if it's down over any specific Sprite. + * If the Pointer is down this returns true. + * This *only* checks if the Pointer is down, not if it's down over any specific Sprite. * * @method Phaser.InputHandler#pointerDown - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {boolean} - True if the given pointer is down, otherwise false. */ - pointerDown: function (pointer) { + pointerDown: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isDown; + return this._pointerData[pointerId].isDown; }, /** - * If the Pointer is up this returns true. Please note that it only checks if the Pointer is up, not if it's up over any specific Sprite. + * If the Pointer is up this returns true. + * This *only* checks if the Pointer is up, not if it's up over any specific Sprite. * * @method Phaser.InputHandler#pointerUp - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {boolean} - True if the given pointer is up, otherwise false. */ - pointerUp: function (pointer) { + pointerUp: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isUp; + return this._pointerData[pointerId].isUp; }, @@ -30383,28 +26101,29 @@ Phaser.InputHandler.prototype = { * A timestamp representing when the Pointer first touched the touchscreen. * * @method Phaser.InputHandler#pointerTimeDown - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=(check all)] * @return {number} */ - pointerTimeDown: function (pointer) { + pointerTimeDown: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeDown; + return this._pointerData[pointerId].timeDown; }, /** * A timestamp representing when the Pointer left the touchscreen. + * * @method Phaser.InputHandler#pointerTimeUp - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeUp: function (pointer) { + pointerTimeUp: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeUp; + return this._pointerData[pointerId].timeUp; }, @@ -30412,102 +26131,106 @@ Phaser.InputHandler.prototype = { * Is the Pointer over this Sprite? * * @method Phaser.InputHandler#pointerOver - * @param {number} [index] - The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. + * @param {integer} [pointerId=(check all)] The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. * @return {boolean} - True if the given pointer (if a index was given, or any pointer if not) is over this object. */ - pointerOver: function (index) { + pointerOver: function (pointerId) { - if (this.enabled) + if (!this.enabled) { - if (index === undefined) - { - for (var i = 0; i < 10; i++) - { - if (this._pointerData[i].isOver) - { - return true; - } - } - } - else - { - return this._pointerData[index].isOver; - } + return false; } - return false; + if (pointerId === undefined) + { + for (var i = 0; i < 10; i++) + { + if (this._pointerData[i].isOver) + { + return true; + } + } + } + else + { + return this._pointerData[pointerId].isOver; + } }, /** * Is the Pointer outside of this Sprite? + * * @method Phaser.InputHandler#pointerOut - * @param {number} [index] - The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. + * @param {integer} [pointerId=(check all)] The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. * @return {boolean} True if the given pointer (if a index was given, or any pointer if not) is out of this object. */ - pointerOut: function (index) { + pointerOut: function (pointerId) { - if (this.enabled) + if (!this.enabled) { - if (index === undefined) - { - for (var i = 0; i < 10; i++) - { - if (this._pointerData[i].isOut) - { - return true; - } - } - } - else - { - return this._pointerData[index].isOut; - } + return false; } - return false; + if (pointerId === undefined) + { + for (var i = 0; i < 10; i++) + { + if (this._pointerData[i].isOut) + { + return true; + } + } + } + else + { + return this._pointerData[pointerId].isOut; + } }, /** * A timestamp representing when the Pointer first touched the touchscreen. + * * @method Phaser.InputHandler#pointerTimeOver - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeOver: function (pointer) { + pointerTimeOver: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeOver; + return this._pointerData[pointerId].timeOver; }, /** * A timestamp representing when the Pointer left the touchscreen. + * * @method Phaser.InputHandler#pointerTimeOut - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeOut: function (pointer) { + pointerTimeOut: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeOut; + return this._pointerData[pointerId].timeOut; }, /** * Is this sprite being dragged by the mouse or not? + * * @method Phaser.InputHandler#pointerDragged - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {boolean} True if the pointer is dragging an object, otherwise false. */ - pointerDragged: function (pointer) { + pointerDragged: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isDragged; + return this._pointerData[pointerId].isDragged; }, @@ -30590,6 +26313,7 @@ Phaser.InputHandler.prototype = { /** * Runs a pixel perfect check against the given x/y coordinates of the Sprite this InputHandler is bound to. * It compares the alpha value of the pixel and if >= InputHandler.pixelPerfectAlpha it returns true. + * * @method Phaser.InputHandler#checkPixel * @param {number} x - The x coordinate to check. * @param {number} y - The y coordinate to check. @@ -30964,81 +26688,86 @@ Phaser.InputHandler.prototype = { /** * Returns true if the pointer has entered the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justOver - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just over. * @return {boolean} */ - justOver: function (pointer, delay) { + justOver: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isOver && this.overDuration(pointer) < delay); + return (this._pointerData[pointerId].isOver && this.overDuration(pointerId) < delay); }, /** * Returns true if the pointer has left the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justOut - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just out. * @return {boolean} */ - justOut: function (pointer, delay) { + justOut: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isOut && (this.game.time.time - this._pointerData[pointer].timeOut < delay)); + return (this._pointerData[pointerId].isOut && (this.game.time.time - this._pointerData[pointerId].timeOut < delay)); }, /** * Returns true if the pointer has touched or clicked on the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justPressed - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just over. * @return {boolean} */ - justPressed: function (pointer, delay) { + justPressed: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isDown && this.downDuration(pointer) < delay); + return (this._pointerData[pointerId].isDown && this.downDuration(pointerId) < delay); }, /** * Returns true if the pointer was touching this Sprite, but has been released within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justReleased - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just out. * @return {boolean} */ - justReleased: function (pointer, delay) { + justReleased: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isUp && (this.game.time.time - this._pointerData[pointer].timeUp < delay)); + return (this._pointerData[pointerId].isUp && (this.game.time.time - this._pointerData[pointerId].timeUp < delay)); }, /** * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. + * * @method Phaser.InputHandler#overDuration - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} The number of milliseconds the pointer has been over the Sprite, or -1 if not over. */ - overDuration: function (pointer) { + overDuration: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - if (this._pointerData[pointer].isOver) + if (this._pointerData[pointerId].isOver) { - return this.game.time.time - this._pointerData[pointer].timeOver; + return this.game.time.time - this._pointerData[pointerId].timeOver; } return -1; @@ -31047,17 +26776,18 @@ Phaser.InputHandler.prototype = { /** * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. + * * @method Phaser.InputHandler#downDuration - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} The number of milliseconds the pointer has been pressed down on the Sprite, or -1 if not over. */ - downDuration: function (pointer) { + downDuration: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - if (this._pointerData[pointer].isDown) + if (this._pointerData[pointerId].isDown) { - return this.game.time.time - this._pointerData[pointer].timeDown; + return this.game.time.time - this._pointerData[pointerId].timeDown; } return -1; @@ -31113,7 +26843,9 @@ Phaser.InputHandler.prototype = { }, /** - * Stops this sprite from being able to be dragged. If it is currently the target of an active drag it will be stopped immediately. Also disables any set callbacks. + * Stops this sprite from being able to be dragged. + * If it is currently the target of an active drag it will be stopped immediately; also disables any set callbacks. + * * @method Phaser.InputHandler#disableDrag */ disableDrag: function () { @@ -31134,6 +26866,7 @@ Phaser.InputHandler.prototype = { /** * Called by Pointer when drag starts on this Sprite. Should not usually be called directly. + * * @method Phaser.InputHandler#startDrag * @param {Phaser.Pointer} pointer */ @@ -31186,6 +26919,7 @@ Phaser.InputHandler.prototype = { /** * Warning: EXPERIMENTAL + * * @method Phaser.InputHandler#globalToLocalX * @param {number} x */ @@ -31203,6 +26937,7 @@ Phaser.InputHandler.prototype = { /** * Warning: EXPERIMENTAL + * * @method Phaser.InputHandler#globalToLocalY * @param {number} y */ @@ -31220,6 +26955,7 @@ Phaser.InputHandler.prototype = { /** * Called by Pointer when drag is stopped on this Sprite. Should not usually be called directly. + * * @method Phaser.InputHandler#stopDrag * @param {Phaser.Pointer} pointer */ @@ -31255,6 +26991,7 @@ Phaser.InputHandler.prototype = { /** * Restricts this sprite to drag movement only on the given axis. Note: If both are set to false the sprite will never move! + * * @method Phaser.InputHandler#setDragLock * @param {boolean} [allowHorizontal=true] - To enable the sprite to be dragged horizontally set to true, otherwise false. * @param {boolean} [allowVertical=true] - To enable the sprite to be dragged vertically set to true, otherwise false. @@ -31272,6 +27009,7 @@ Phaser.InputHandler.prototype = { /** * Make this Sprite snap to the given grid either during drag or when it's released. * For example 16x16 as the snapX and snapY would make the sprite snap to every 16 pixels. + * * @method Phaser.InputHandler#enableSnap * @param {number} snapX - The width of the grid cell to snap to. * @param {number} snapY - The height of the grid cell to snap to. @@ -31298,6 +27036,7 @@ Phaser.InputHandler.prototype = { /** * Stops the sprite from snapping to a grid during drag or release. + * * @method Phaser.InputHandler#disableSnap */ disableSnap: function () { @@ -31310,6 +27049,7 @@ Phaser.InputHandler.prototype = { /** * Bounds Rect check for the sprite drag + * * @method Phaser.InputHandler#checkBoundsRect */ checkBoundsRect: function () { @@ -31359,6 +27099,7 @@ Phaser.InputHandler.prototype = { /** * Parent Sprite Bounds check for the sprite drag. + * * @method Phaser.InputHandler#checkBoundsSprite */ checkBoundsSprite: function () { @@ -32657,7 +28398,7 @@ Phaser.SinglePad.prototype.constructor = Phaser.SinglePad; * @class Phaser.Key * @constructor * @param {Phaser.Game} game - Current game instance. -* @param {number} keycode - The key code this Key is responsible for. +* @param {integer} keycode - The key code this Key is responsible for. See {@link Phaser.KeyCode}. */ Phaser.Key = function (game, keycode) { @@ -33019,8 +28760,8 @@ Phaser.Key.prototype.constructor = Phaser.Key; /** * The Keyboard class monitors keyboard input and dispatches keyboard events. * -* _Be aware_ that many keyboards are unable to process certain combinations of keys due to hardware -* limitations known as ghosting. Full details here: http://www.html5gamedevs.com/topic/4876-impossible-to-use-more-than-2-keyboard-input-buttons-at-the-same-time/ +* _Note_: many keyboards are unable to process certain combinations of keys due to hardware limitations known as ghosting. +* See http://www.html5gamedevs.com/topic/4876-impossible-to-use-more-than-2-keyboard-input-buttons-at-the-same-time/ for more details. * * @class Phaser.Keyboard * @constructor @@ -33132,17 +28873,17 @@ Phaser.Keyboard.prototype = { this.callbackContext = context; - if (typeof onDown !== 'undefined') + if (onDown !== undefined && onDown !== null) { this.onDownCallback = onDown; } - if (typeof onUp !== 'undefined') + if (onUp !== undefined && onUp !== null) { this.onUpCallback = onUp; } - if (typeof onPress !== 'undefined') + if (onPress !== undefined && onPress !== null) { this.onPressCallback = onPress; } @@ -33154,7 +28895,7 @@ Phaser.Keyboard.prototype = { * The Key object can then be polled, have events attached to it, etc. * * @method Phaser.Keyboard#addKey - * @param {number} keycode - The keycode of the key, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key. * @return {Phaser.Key} The Key object which you can store locally and reference directly. */ addKey: function (keycode) { @@ -33173,13 +28914,15 @@ Phaser.Keyboard.prototype = { /** * A practical way to create an object containing user selected hotkeys. * - * For example: `addKeys( { 'up': Phaser.Keyboard.W, 'down': Phaser.Keyboard.S, 'left': Phaser.Keyboard.A, 'right': Phaser.Keyboard.D } );` + * For example, * - * Would return an object containing the properties `up`, `down`, `left` and `right` that you could poll just like a Phaser.Key object. + * addKeys( { 'up': Phaser.KeyCode.W, 'down': Phaser.KeyCode.S, 'left': Phaser.KeyCode.A, 'right': Phaser.KeyCode.D } ); + * + * would return an object containing properties (`up`, `down`, `left` and `right`) referring to {@link Phaser.Key} object. * * @method Phaser.Keyboard#addKeys - * @param {object} keys - A key mapping object, i.e. `{ 'up': Phaser.Keyboard.W, 'down': Phaser.Keyboard.S }` or `{ 'up': 52, 'down': 53 }`. - * @return {object} An object containing user selected properties + * @param {object} keys - A key mapping object, i.e. `{ 'up': Phaser.KeyCode.W, 'down': Phaser.KeyCode.S }` or `{ 'up': 52, 'down': 53 }`. + * @return {object} An object containing the properties mapped to {@link Phaser.Key} values. */ addKeys: function (keys) { @@ -33198,7 +28941,7 @@ Phaser.Keyboard.prototype = { * Removes a Key object from the Keyboard manager. * * @method Phaser.Keyboard#removeKey - * @param {number} keycode - The keycode of the key to remove, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to remove. */ removeKey: function (keycode) { @@ -33215,11 +28958,11 @@ Phaser.Keyboard.prototype = { * Creates and returns an object containing 4 hotkeys for Up, Down, Left and Right. * * @method Phaser.Keyboard#createCursorKeys - * @return {object} An object containing properties: up, down, left and right. Which can be polled like any other Phaser.Key object. + * @return {object} An object containing properties: `up`, `down`, `left` and `right` of {@link Phaser.Key} objects. */ createCursorKeys: function () { - return this.addKeys({ 'up': Phaser.Keyboard.UP, 'down': Phaser.Keyboard.DOWN, 'left': Phaser.Keyboard.LEFT, 'right': Phaser.Keyboard.RIGHT }); + return this.addKeys({ 'up': Phaser.KeyCode.UP, 'down': Phaser.KeyCode.DOWN, 'left': Phaser.KeyCode.LEFT, 'right': Phaser.KeyCode.RIGHT }); }, @@ -33228,6 +28971,7 @@ Phaser.Keyboard.prototype = { * This is called automatically by Phaser.Input and should not normally be invoked directly. * * @method Phaser.Keyboard#start + * @protected */ start: function () { @@ -33299,11 +29043,14 @@ Phaser.Keyboard.prototype = { /** * By default when a key is pressed Phaser will not stop the event from propagating up to the browser. * There are some keys this can be annoying for, like the arrow keys or space bar, which make the browser window scroll. - * You can use addKeyCapture to consume the keyboard event for specific keys so it doesn't bubble up to the the browser. + * + * The `addKeyCapture` method enables consuming keyboard event for specific keys so it doesn't bubble up to the the browser + * and cause the default browser behavior. + * * Pass in either a single keycode or an array/hash of keycodes. * * @method Phaser.Keyboard#addKeyCapture - * @param {number|array|object} keycode - Either a single numeric keycode or an array/hash of keycodes: [65, 67, 68]. + * @param {integer|integer[]|object} keycode - Either a single {@link Phaser.KeyCode keycode} or an array/hash of keycodes such as `[65, 67, 68]`. */ addKeyCapture: function (keycode) { @@ -33324,7 +29071,7 @@ Phaser.Keyboard.prototype = { * Removes an existing key capture. * * @method Phaser.Keyboard#removeKeyCapture - * @param {number} keycode + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} to remove capturing of. */ removeKeyCapture: function (keycode) { @@ -33487,7 +29234,7 @@ Phaser.Keyboard.prototype = { * or was pressed down longer ago than then given duration. * * @method Phaser.Keyboard#downDuration - * @param {number} keycode - The keycode of the key to check, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to check: i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. * @param {number} [duration=50] - The duration within which the key is considered as being just pressed. Given in ms. * @return {boolean} True if the key was pressed down within the given duration, false if not or null if the Key wasn't found. */ @@ -33509,7 +29256,7 @@ Phaser.Keyboard.prototype = { * or was pressed down longer ago than then given duration. * * @method Phaser.Keyboard#upDuration - * @param {number} keycode - The keycode of the key to check, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {Phaser.KeyCode|integer} keycode - The keycode of the key to check, i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. * @param {number} [duration=50] - The duration within which the key is considered as being just released. Given in ms. * @return {boolean} True if the key was released within the given duration, false if not or null if the Key wasn't found. */ @@ -33530,7 +29277,7 @@ Phaser.Keyboard.prototype = { * Returns true of the key is currently pressed down. Note that it can only detect key presses on the web browser. * * @method Phaser.Keyboard#isDown - * @param {number} keycode - The keycode of the key to check, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to check: i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. * @return {boolean} True if the key is currently down, false if not or null if the Key wasn't found. */ isDown: function (keycode) { @@ -33589,108 +29336,234 @@ Object.defineProperty(Phaser.Keyboard.prototype, "lastKey", { Phaser.Keyboard.prototype.constructor = Phaser.Keyboard; -Phaser.Keyboard.A = "A".charCodeAt(0); -Phaser.Keyboard.B = "B".charCodeAt(0); -Phaser.Keyboard.C = "C".charCodeAt(0); -Phaser.Keyboard.D = "D".charCodeAt(0); -Phaser.Keyboard.E = "E".charCodeAt(0); -Phaser.Keyboard.F = "F".charCodeAt(0); -Phaser.Keyboard.G = "G".charCodeAt(0); -Phaser.Keyboard.H = "H".charCodeAt(0); -Phaser.Keyboard.I = "I".charCodeAt(0); -Phaser.Keyboard.J = "J".charCodeAt(0); -Phaser.Keyboard.K = "K".charCodeAt(0); -Phaser.Keyboard.L = "L".charCodeAt(0); -Phaser.Keyboard.M = "M".charCodeAt(0); -Phaser.Keyboard.N = "N".charCodeAt(0); -Phaser.Keyboard.O = "O".charCodeAt(0); -Phaser.Keyboard.P = "P".charCodeAt(0); -Phaser.Keyboard.Q = "Q".charCodeAt(0); -Phaser.Keyboard.R = "R".charCodeAt(0); -Phaser.Keyboard.S = "S".charCodeAt(0); -Phaser.Keyboard.T = "T".charCodeAt(0); -Phaser.Keyboard.U = "U".charCodeAt(0); -Phaser.Keyboard.V = "V".charCodeAt(0); -Phaser.Keyboard.W = "W".charCodeAt(0); -Phaser.Keyboard.X = "X".charCodeAt(0); -Phaser.Keyboard.Y = "Y".charCodeAt(0); -Phaser.Keyboard.Z = "Z".charCodeAt(0); -Phaser.Keyboard.ZERO = "0".charCodeAt(0); -Phaser.Keyboard.ONE = "1".charCodeAt(0); -Phaser.Keyboard.TWO = "2".charCodeAt(0); -Phaser.Keyboard.THREE = "3".charCodeAt(0); -Phaser.Keyboard.FOUR = "4".charCodeAt(0); -Phaser.Keyboard.FIVE = "5".charCodeAt(0); -Phaser.Keyboard.SIX = "6".charCodeAt(0); -Phaser.Keyboard.SEVEN = "7".charCodeAt(0); -Phaser.Keyboard.EIGHT = "8".charCodeAt(0); -Phaser.Keyboard.NINE = "9".charCodeAt(0); -Phaser.Keyboard.NUMPAD_0 = 96; -Phaser.Keyboard.NUMPAD_1 = 97; -Phaser.Keyboard.NUMPAD_2 = 98; -Phaser.Keyboard.NUMPAD_3 = 99; -Phaser.Keyboard.NUMPAD_4 = 100; -Phaser.Keyboard.NUMPAD_5 = 101; -Phaser.Keyboard.NUMPAD_6 = 102; -Phaser.Keyboard.NUMPAD_7 = 103; -Phaser.Keyboard.NUMPAD_8 = 104; -Phaser.Keyboard.NUMPAD_9 = 105; -Phaser.Keyboard.NUMPAD_MULTIPLY = 106; -Phaser.Keyboard.NUMPAD_ADD = 107; -Phaser.Keyboard.NUMPAD_ENTER = 108; -Phaser.Keyboard.NUMPAD_SUBTRACT = 109; -Phaser.Keyboard.NUMPAD_DECIMAL = 110; -Phaser.Keyboard.NUMPAD_DIVIDE = 111; -Phaser.Keyboard.F1 = 112; -Phaser.Keyboard.F2 = 113; -Phaser.Keyboard.F3 = 114; -Phaser.Keyboard.F4 = 115; -Phaser.Keyboard.F5 = 116; -Phaser.Keyboard.F6 = 117; -Phaser.Keyboard.F7 = 118; -Phaser.Keyboard.F8 = 119; -Phaser.Keyboard.F9 = 120; -Phaser.Keyboard.F10 = 121; -Phaser.Keyboard.F11 = 122; -Phaser.Keyboard.F12 = 123; -Phaser.Keyboard.F13 = 124; -Phaser.Keyboard.F14 = 125; -Phaser.Keyboard.F15 = 126; -Phaser.Keyboard.COLON = 186; -Phaser.Keyboard.EQUALS = 187; -Phaser.Keyboard.COMMA = 188; -Phaser.Keyboard.UNDERSCORE = 189; -Phaser.Keyboard.PERIOD = 190; -Phaser.Keyboard.QUESTION_MARK = 191; -Phaser.Keyboard.TILDE = 192; -Phaser.Keyboard.OPEN_BRACKET = 219; -Phaser.Keyboard.BACKWARD_SLASH = 220; -Phaser.Keyboard.CLOSED_BRACKET = 221; -Phaser.Keyboard.QUOTES = 222; -Phaser.Keyboard.BACKSPACE = 8; -Phaser.Keyboard.TAB = 9; -Phaser.Keyboard.CLEAR = 12; -Phaser.Keyboard.ENTER = 13; -Phaser.Keyboard.SHIFT = 16; -Phaser.Keyboard.CONTROL = 17; -Phaser.Keyboard.ALT = 18; -Phaser.Keyboard.CAPS_LOCK = 20; -Phaser.Keyboard.ESC = 27; -Phaser.Keyboard.SPACEBAR = 32; -Phaser.Keyboard.PAGE_UP = 33; -Phaser.Keyboard.PAGE_DOWN = 34; -Phaser.Keyboard.END = 35; -Phaser.Keyboard.HOME = 36; -Phaser.Keyboard.LEFT = 37; -Phaser.Keyboard.UP = 38; -Phaser.Keyboard.RIGHT = 39; -Phaser.Keyboard.DOWN = 40; -Phaser.Keyboard.PLUS = 43; -Phaser.Keyboard.MINUS = 44; -Phaser.Keyboard.INSERT = 45; -Phaser.Keyboard.DELETE = 46; -Phaser.Keyboard.HELP = 47; -Phaser.Keyboard.NUM_LOCK = 144; +/** +* A key code represents a physical key on a keyboard. +* +* The KeyCode class contains commonly supported keyboard key codes which can be used +* as keycode`-parameters in several {@link Phaser.Keyboard} and {@link Phaser.Key} methods. +* +* _Note_: These values should only be used indirectly, eg. as `Phaser.KeyCode.KEY`. +* Future versions may replace the actual values, such that they remain compatible with `keycode`-parameters. +* The current implementation maps to the {@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode KeyboardEvent.keyCode} property. +* +* _Note_: Use `Phaser.KeyCode.KEY` instead of `Phaser.Keyboard.KEY` to refer to a key code; +* the latter approach is supported for compatibility. +* +* @namespace +*/ +Phaser.KeyCode = { + /** @static */ + A: "A".charCodeAt(0), + /** @static */ + B: "B".charCodeAt(0), + /** @static */ + C: "C".charCodeAt(0), + /** @static */ + D: "D".charCodeAt(0), + /** @static */ + E: "E".charCodeAt(0), + /** @static */ + F: "F".charCodeAt(0), + /** @static */ + G: "G".charCodeAt(0), + /** @static */ + H: "H".charCodeAt(0), + /** @static */ + I: "I".charCodeAt(0), + /** @static */ + J: "J".charCodeAt(0), + /** @static */ + K: "K".charCodeAt(0), + /** @static */ + L: "L".charCodeAt(0), + /** @static */ + M: "M".charCodeAt(0), + /** @static */ + N: "N".charCodeAt(0), + /** @static */ + O: "O".charCodeAt(0), + /** @static */ + P: "P".charCodeAt(0), + /** @static */ + Q: "Q".charCodeAt(0), + /** @static */ + R: "R".charCodeAt(0), + /** @static */ + S: "S".charCodeAt(0), + /** @static */ + T: "T".charCodeAt(0), + /** @static */ + U: "U".charCodeAt(0), + /** @static */ + V: "V".charCodeAt(0), + /** @static */ + W: "W".charCodeAt(0), + /** @static */ + X: "X".charCodeAt(0), + /** @static */ + Y: "Y".charCodeAt(0), + /** @static */ + Z: "Z".charCodeAt(0), + /** @static */ + ZERO: "0".charCodeAt(0), + /** @static */ + ONE: "1".charCodeAt(0), + /** @static */ + TWO: "2".charCodeAt(0), + /** @static */ + THREE: "3".charCodeAt(0), + /** @static */ + FOUR: "4".charCodeAt(0), + /** @static */ + FIVE: "5".charCodeAt(0), + /** @static */ + SIX: "6".charCodeAt(0), + /** @static */ + SEVEN: "7".charCodeAt(0), + /** @static */ + EIGHT: "8".charCodeAt(0), + /** @static */ + NINE: "9".charCodeAt(0), + /** @static */ + NUMPAD_0: 96, + /** @static */ + NUMPAD_1: 97, + /** @static */ + NUMPAD_2: 98, + /** @static */ + NUMPAD_3: 99, + /** @static */ + NUMPAD_4: 100, + /** @static */ + NUMPAD_5: 101, + /** @static */ + NUMPAD_6: 102, + /** @static */ + NUMPAD_7: 103, + /** @static */ + NUMPAD_8: 104, + /** @static */ + NUMPAD_9: 105, + /** @static */ + NUMPAD_MULTIPLY: 106, + /** @static */ + NUMPAD_ADD: 107, + /** @static */ + NUMPAD_ENTER: 108, + /** @static */ + NUMPAD_SUBTRACT: 109, + /** @static */ + NUMPAD_DECIMAL: 110, + /** @static */ + NUMPAD_DIVIDE: 111, + /** @static */ + F1: 112, + /** @static */ + F2: 113, + /** @static */ + F3: 114, + /** @static */ + F4: 115, + /** @static */ + F5: 116, + /** @static */ + F6: 117, + /** @static */ + F7: 118, + /** @static */ + F8: 119, + /** @static */ + F9: 120, + /** @static */ + F10: 121, + /** @static */ + F11: 122, + /** @static */ + F12: 123, + /** @static */ + F13: 124, + /** @static */ + F14: 125, + /** @static */ + F15: 126, + /** @static */ + COLON: 186, + /** @static */ + EQUALS: 187, + /** @static */ + COMMA: 188, + /** @static */ + UNDERSCORE: 189, + /** @static */ + PERIOD: 190, + /** @static */ + QUESTION_MARK: 191, + /** @static */ + TILDE: 192, + /** @static */ + OPEN_BRACKET: 219, + /** @static */ + BACKWARD_SLASH: 220, + /** @static */ + CLOSED_BRACKET: 221, + /** @static */ + QUOTES: 222, + /** @static */ + BACKSPACE: 8, + /** @static */ + TAB: 9, + /** @static */ + CLEAR: 12, + /** @static */ + ENTER: 13, + /** @static */ + SHIFT: 16, + /** @static */ + CONTROL: 17, + /** @static */ + ALT: 18, + /** @static */ + CAPS_LOCK: 20, + /** @static */ + ESC: 27, + /** @static */ + SPACEBAR: 32, + /** @static */ + PAGE_UP: 33, + /** @static */ + PAGE_DOWN: 34, + /** @static */ + END: 35, + /** @static */ + HOME: 36, + /** @static */ + LEFT: 37, + /** @static */ + UP: 38, + /** @static */ + RIGHT: 39, + /** @static */ + DOWN: 40, + /** @static */ + PLUS: 43, + /** @static */ + MINUS: 44, + /** @static */ + INSERT: 45, + /** @static */ + DELETE: 46, + /** @static */ + HELP: 47, + /** @static */ + NUM_LOCK: 144 +}; + +// Duplicate Phaser.KeyCode values in Phaser.Keyboard for compatibility +for (var key in Phaser.KeyCode) { + if (Phaser.KeyCode.hasOwnProperty(key) && !key.match(/[a-z]/)) { + Phaser.Keyboard[key] = Phaser.KeyCode[key]; + } +} /** * @author Richard Davey @@ -34225,7 +30098,9 @@ Phaser.Component.Core.prototype = { * The z depth of this Game Object within its parent Group. * No two objects in a Group can have the same z value. * This value is adjusted automatically whenever the Group hierarchy changes. + * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. * @property {number} z + * @readOnly */ z: 0, @@ -34726,9 +30601,13 @@ Phaser.Component.Destroy.prototype = { // In case Pixi is still going to try and render it even though destroyed this.renderable = false; + if (this.transformCallback) + { + this.transformCallback = null; + this.transformCallbackContext = null; + } + // Pixi level DisplayObject destroy - this.transformCallback = null; - this.transformCallbackContext = null; this.hitArea = null; this.parent = null; this.stage = null; @@ -34738,8 +30617,6 @@ Phaser.Component.Destroy.prototype = { this._currentBounds = null; this._mask = null; - - this._destroyCachedSprite(); this.destroyPhase = false; @@ -35393,10 +31270,10 @@ Phaser.Component.LifeSpan.prototype = { /** * A useful flag to control if the Game Object is alive or dead. - * + * * This is set automatically by the Health components `damage` method should the object run out of health. * Or you can toggle it via your game code. - * + * * This property is mostly just provided to be used by your game - it doesn't effect rendering or logic updates. * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. * @property {boolean} alive @@ -35406,12 +31283,12 @@ Phaser.Component.LifeSpan.prototype = { /** * The lifespan allows you to give a Game Object a lifespan in milliseconds. - * + * * Once the Game Object is 'born' you can set this to a positive value. - * + * * It is automatically decremented by the millisecond equivalent of `game.time.physicsElapsed` each frame. * When it reaches zero it will call the `kill` method. - * + * * Very handy for particles, bullets, collectibles, or any other short-lived entity. * * @property {number} lifespan @@ -35421,9 +31298,9 @@ Phaser.Component.LifeSpan.prototype = { /** * Brings a 'dead' Game Object back to life, optionally resetting its health value in the process. - * + * * A resurrected Game Object has its `alive`, `exists` and `visible` properties all set to true. - * + * * It will dispatch the `onRevived` event. Listen to `events.onRevived` for the signal. * * @method @@ -35437,10 +31314,10 @@ Phaser.Component.LifeSpan.prototype = { this.alive = true; this.exists = true; this.visible = true; - - if (typeof this.health === 'number') + + if (typeof this.heal === 'function') { - this.health = health; + this.heal(health); } if (this.events) @@ -35454,12 +31331,12 @@ Phaser.Component.LifeSpan.prototype = { /** * Kills a Game Object. A killed Game Object has its `alive`, `exists` and `visible` properties all set to false. - * + * * It will dispatch the `onKilled` event. You can listen to `events.onKilled` for the signal. - * - * Note that killing a Game Object is a way for you to quickly recycle it in an object pool, + * + * Note that killing a Game Object is a way for you to quickly recycle it in an object pool, * it doesn't destroy the object or free it up from memory. - * + * * If you don't need this Game Object any more you should call `destroy` instead. * * @method @@ -36003,7 +31880,7 @@ Phaser.Component.ScaleMinMax.prototype = { * The callback that will apply any scale limiting to the worldTransform. * @property {function} transformCallback */ - transformCallback: this.checkTransform, + transformCallback: null, /** * The context under which `transformCallback` is called. @@ -36139,6 +32016,16 @@ Phaser.Component.ScaleMinMax.prototype = { } } + if (this.scaleMin === null) + { + this.transformCallback = null; + } + else + { + this.transformCallback = this.checkTransform; + this.transformCallbackContext = this; + } + } }; @@ -36362,7 +32249,7 @@ Phaser.GameObjectFactory.prototype = { * are automatically given a physics body. * * @method Phaser.GameObjectFactory#physicsGroup - * @param {number} [physicsBodyType=Phaser.Physics.ARCADE] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, etc. + * @param {number} [physicsBodyType=Phaser.Physics.ARCADE] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2JS, Phaser.Physics.NINJA, etc. * @param {any} [parent] - The parent Group or DisplayObjectContainer that will hold this group, if any. If set to null the Group won't be added to the display list. If undefined it will be added to World by default. * @param {string} [name='group'] - A name for this Group. Not used internally but useful for debugging. * @param {boolean} [addToStage=false] - If set to true this Group will be added directly to the Game.Stage instead of Game.World. @@ -36729,7 +32616,7 @@ Phaser.GameObjectFactory.prototype = { */ filter: function (filter) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var filter = new Phaser.Filter[filter](this.game); @@ -37175,7 +33062,7 @@ Phaser.GameObjectCreator.prototype = { */ filter: function (filter) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var filter = new Phaser.Filter[filter](this.game); @@ -37405,450 +33292,6 @@ Phaser.Image.prototype.preUpdate = function() { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* A TileSprite is a Sprite that has a repeating texture. The texture can be scrolled and scaled independently of the TileSprite itself. -* Textures will automatically wrap and are designed so that you can create game backdrops using seamless textures as a source. -* -* TileSprites have no input handler or physics bodies by default, both need enabling in the same way as for normal Sprites. -* -* You shouldn't ever create a TileSprite any larger than your actual screen size. If you want to create a large repeating background -* that scrolls across the whole map of your game, then you create a TileSprite that fits the screen size and then use the `tilePosition` -* property to scroll the texture as the player moves. If you create a TileSprite that is thousands of pixels in size then it will -* consume huge amounts of memory and cause performance issues. Remember: use `tilePosition` to scroll your texture and `tileScale` to -* adjust the scale of the texture - don't resize the sprite itself or make it larger than it needs. -* -* An important note about texture dimensions: -* -* When running under Canvas a TileSprite can use any texture size without issue. When running under WebGL the texture should ideally be -* a power of two in size (i.e. 4, 8, 16, 32, 64, 128, 256, 512, etch pixels width by height). If the texture isn't a power of two -* it will be rendered to a blank canvas that is the correct size, which means you may have 'blank' areas appearing to the right and -* bottom of your frame. To avoid this ensure your textures are perfect powers of two. -* -* TileSprites support animations in the same way that Sprites do. You add and play animations using the AnimationManager. However -* if your game is running under WebGL please note that each frame of the animation must be a power of two in size, or it will receive -* additional padding to enforce it to be so. -* -* @class Phaser.TileSprite -* @constructor -* @extends PIXI.TilingSprite -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.Health -* @extends Phaser.Component.InCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the TileSprite at. -* @param {number} y - The y coordinate (in world space) to position the TileSprite at. -* @param {number} width - The width of the TileSprite. -* @param {number} height - The height of the TileSprite. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the TileSprite during rendering. It can be a string which is a reference to the Phaser Image Cache entry, or an instance of a RenderTexture, PIXI.Texture or BitmapData. -* @param {string|number} frame - If this TileSprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.TileSprite = function (game, x, y, width, height, key, frame) { - - x = x || 0; - y = y || 0; - width = width || 256; - height = height || 256; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.TILESPRITE; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.SPRITE; - - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - - var def = game.cache.getImage('__default', true); - - PIXI.TilingSprite.call(this, new PIXI.Texture(def.base), width, height); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.TileSprite.prototype = Object.create(PIXI.TilingSprite.prototype); -Phaser.TileSprite.prototype.constructor = Phaser.TileSprite; - -Phaser.Component.Core.install.call(Phaser.TileSprite.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Destroy', - 'FixedToCamera', - 'Health', - 'InCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'Smoothed' -]); - -Phaser.TileSprite.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.TileSprite.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.TileSprite.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.TileSprite.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.TileSprite#preUpdate -* @memberof Phaser.TileSprite -*/ -Phaser.TileSprite.prototype.preUpdate = function() { - - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Sets this TileSprite to automatically scroll in the given direction until stopped via TileSprite.stopScroll(). -* The scroll speed is specified in pixels per second. -* A negative x value will scroll to the left. A positive x value will scroll to the right. -* A negative y value will scroll up. A positive y value will scroll down. -* -* @method Phaser.TileSprite#autoScroll -* @memberof Phaser.TileSprite -* @param {number} x - Horizontal scroll speed in pixels per second. -* @param {number} y - Vertical scroll speed in pixels per second. -*/ -Phaser.TileSprite.prototype.autoScroll = function(x, y) { - - this._scroll.set(x, y); - -}; - -/** -* Stops an automatically scrolling TileSprite. -* -* @method Phaser.TileSprite#stopScroll -* @memberof Phaser.TileSprite -*/ -Phaser.TileSprite.prototype.stopScroll = function() { - - this._scroll.set(0, 0); - -}; - -/** -* Destroys the TileSprite. This removes it from its parent group, destroys the event and animation handlers if present -* and nulls its reference to game, freeing it up for garbage collection. -* -* @method Phaser.TileSprite#destroy -* @memberof Phaser.TileSprite -* @param {boolean} [destroyChildren=true] - Should every child of this object have its destroy method called? -*/ -Phaser.TileSprite.prototype.destroy = function(destroyChildren) { - - Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren); - - PIXI.TilingSprite.prototype.destroy.call(this); - -}; - -/** -* Resets the TileSprite. This places the TileSprite at the given x/y world coordinates, resets the tilePosition and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. -* If the TileSprite has a physics body that too is reset. -* -* @method Phaser.TileSprite#reset -* @memberof Phaser.TileSprite -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @return (Phaser.TileSprite) This instance. -*/ -Phaser.TileSprite.prototype.reset = function(x, y) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y); - - this.tilePosition.x = 0; - this.tilePosition.y = 0; - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd, Richard Davey -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Rope is a Sprite that has a repeating texture. The texture can be scrolled and scaled and will automatically wrap on the edges as it does so. -* Please note that Ropes, as with normal Sprites, have no input handler or physics bodies by default. Both need enabling. -* Example usage: https://github.com/codevinsky/phaser-rope-demo/blob/master/dist/demo.js -* -* @class Phaser.Rope -* @constructor -* @extends PIXI.Rope -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Crop -* @extends Phaser.Component.Delta -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.ScaleMinMax -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Rope at. -* @param {number} y - The y coordinate (in world space) to position the Rope at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Rope during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Rope is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @param {Array} points - An array of {Phaser.Point}. -*/ -Phaser.Rope = function (game, x, y, key, frame, points) { - - this.points = []; - this.points = points; - this._hasUpdateAnimation = false; - this._updateAnimationCallback = null; - x = x || 0; - y = y || 0; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.ROPE; - - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.Rope.prototype = Object.create(PIXI.Rope.prototype); -Phaser.Rope.prototype.constructor = Phaser.Rope; - -Phaser.Component.Core.install.call(Phaser.Rope.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Crop', - 'Delta', - 'Destroy', - 'FixedToCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'ScaleMinMax', - 'Smoothed' -]); - -Phaser.Rope.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.Rope.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.Rope.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.Rope.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.Rope#preUpdate -* @memberof Phaser.Rope -*/ -Phaser.Rope.prototype.preUpdate = function() { - - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Override and use this function in your own custom objects to handle any update requirements you may have. -* -* @method Phaser.Rope#update -* @memberof Phaser.Rope -*/ -Phaser.Rope.prototype.update = function() { - - if (this._hasUpdateAnimation) - { - this.updateAnimation.call(this); - } - -}; - -/** -* Resets the Rope. This places the Rope at the given x/y world coordinates, resets the tilePosition and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. -* If the Rope has a physics body that too is reset. -* -* @method Phaser.Rope#reset -* @memberof Phaser.Rope -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @return (Phaser.Rope) This instance. -*/ -Phaser.Rope.prototype.reset = function(x, y) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y); - - this.tilePosition.x = 0; - this.tilePosition.y = 0; - - return this; - -}; - -/** -* A Rope will call it's updateAnimation function on each update loop if it has one -* -* @name Phaser.Rope#updateAnimation -* @property {function} updateAnimation - Set to a function if you'd like the rope to animate during the update phase. Set to false or null to remove it. -*/ -Object.defineProperty(Phaser.Rope.prototype, "updateAnimation", { - - get: function () { - - return this._updateAnimation; - - }, - - set: function (value) { - - if (value && typeof value === 'function') - { - this._hasUpdateAnimation = true; - this._updateAnimation = value; - } - else - { - this._hasUpdateAnimation = false; - this._updateAnimation = null; - } - - } - -}); - -/** -* The segments that make up the rope body as an array of Phaser.Rectangles -* -* @name Phaser.Rope#segments -* @property {Phaser.Rectangles[]} updateAnimation - Returns an array of Phaser.Rectangles that represent the segments of the given rope -*/ -Object.defineProperty(Phaser.Rope.prototype, "segments", { - - get: function() { - - var segments = []; - var index, x1, y1, x2, y2, width, height, rect; - - for (var i = 0; i < this.points.length; i++) - { - index = i * 4; - - x1 = this.vertices[index] * this.scale.x; - y1 = this.vertices[index + 1] * this.scale.y; - x2 = this.vertices[index + 4] * this.scale.x; - y2 = this.vertices[index + 3] * this.scale.y; - - width = Phaser.Math.difference(x1, x2); - height = Phaser.Math.difference(y1, y2); - - x1 += this.world.x; - y1 += this.world.y; - rect = new Phaser.Rectangle(x1, y1, width, height); - segments.push(rect); - } - - return segments; - } - -}); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * Create a new `Button` object. A Button is a special type of Sprite that is set-up to handle Pointer events automatically. * @@ -38011,10 +33454,20 @@ Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame, /** * If true then onOver events (such as onOverSound) will only be triggered if the Pointer object causing them was the Mouse Pointer. * The frame will still be changed as applicable. + * * @property {boolean} onOverMouseOnly * @default */ - this.onOverMouseOnly = false; + this.onOverMouseOnly = true; + + /** + * Suppresse the over event if a pointer was just released and it matches the given {@link Phaser.PointerModer pointer mode bitmask}. + * + * This behavior was introduced in Phaser 2.3.1; this property is a soft-revert of the change. + * + * @property {Phaser.PointerMode?} justReleasedPreventsOver=ACTIVE_CURSOR + */ + this.justReleasedPreventsOver = Phaser.PointerMode.TOUCH; /** * When true the the texture frame will not be automatically switched on up/down/over/out events. @@ -38025,7 +33478,10 @@ Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame, /** * When the Button is touched / clicked and then released you can force it to enter a state of "out" instead of "up". - * @property {boolean} forceOut + * + * This can also accept a {@link Phaser.PointerModer pointer mode bitmask} for more refined control. + * + * @property {boolean|Phaser.PointerMode} forceOut=false * @default */ this.forceOut = false; @@ -38317,9 +33773,10 @@ Phaser.Button.prototype.setUpSound = function (sound, marker) { */ Phaser.Button.prototype.onInputOverHandler = function (sprite, pointer) { - // If the Pointer was only just released then we don't fire an over event - if (pointer.justReleased()) + if (pointer.justReleased() && + (this.justReleasedPreventsOver & pointer.pointerMode) === pointer.pointerMode) { + // If the Pointer was only just released then we don't fire an over event return; } @@ -38402,7 +33859,7 @@ Phaser.Button.prototype.onInputUpHandler = function (sprite, pointer, isOver) { return; } - if (this.forceOut) + if (this.forceOut === true || (this.forceOut & pointer.pointerMode) === pointer.pointerMode) { this.changeStateFrame(STATE_OUT); } @@ -38473,172 +33930,6 @@ Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* Create a new `Particle` object. Particles are extended Sprites that are emitted by a particle emitter such as Phaser.Particles.Arcade.Emitter. -* -* @class Phaser.Particle -* @constructor -* @extends Phaser.Sprite -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.Particle = function (game, x, y, key, frame) { - - Phaser.Sprite.call(this, game, x, y, key, frame); - - /** - * @property {boolean} autoScale - If this Particle automatically scales this is set to true by Particle.setScaleData. - * @protected - */ - this.autoScale = false; - - /** - * @property {array} scaleData - A reference to the scaleData array owned by the Emitter that emitted this Particle. - * @protected - */ - this.scaleData = null; - - /** - * @property {number} _s - Internal cache var for tracking auto scale. - * @private - */ - this._s = 0; - - /** - * @property {boolean} autoAlpha - If this Particle automatically changes alpha this is set to true by Particle.setAlphaData. - * @protected - */ - this.autoAlpha = false; - - /** - * @property {array} alphaData - A reference to the alphaData array owned by the Emitter that emitted this Particle. - * @protected - */ - this.alphaData = null; - - /** - * @property {number} _a - Internal cache var for tracking auto alpha. - * @private - */ - this._a = 0; - -}; - -Phaser.Particle.prototype = Object.create(Phaser.Sprite.prototype); -Phaser.Particle.prototype.constructor = Phaser.Particle; - -/** -* Updates the Particle scale or alpha if autoScale and autoAlpha are set. -* -* @method Phaser.Particle#update -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.update = function() { - - if (this.autoScale) - { - this._s--; - - if (this._s) - { - this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); - } - else - { - this.autoScale = false; - } - } - - if (this.autoAlpha) - { - this._a--; - - if (this._a) - { - this.alpha = this.alphaData[this._a].v; - } - else - { - this.autoAlpha = false; - } - } - -}; - -/** -* Called by the Emitter when this particle is emitted. Left empty for you to over-ride as required. -* -* @method Phaser.Particle#onEmit -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.onEmit = function() { -}; - -/** -* Called by the Emitter if autoAlpha has been enabled. Passes over the alpha ease data and resets the alpha counter. -* -* @method Phaser.Particle#setAlphaData -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.setAlphaData = function(data) { - - this.alphaData = data; - this._a = data.length - 1; - this.alpha = this.alphaData[this._a].v; - this.autoAlpha = true; - -}; - -/** -* Called by the Emitter if autoScale has been enabled. Passes over the scale ease data and resets the scale counter. -* -* @method Phaser.Particle#setScaleData -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.setScaleData = function(data) { - - this.scaleData = data; - this._s = data.length - 1; - this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); - this.autoScale = true; - -}; - -/** -* Resets the Particle. This places the Particle at the given x/y world coordinates and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state and health values. -* If the Particle has a physics body that too is reset. -* -* @method Phaser.Particle#reset -* @memberof Phaser.Particle -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {number} [health=1] - The health to give the Particle. -* @return (Phaser.Particle) This instance. -*/ -Phaser.Particle.prototype.reset = function(x, y, health) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y, health); - - this.alpha = 1; - this.scale.set(1); - - this.autoScale = false; - this.autoAlpha = false; - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * A BitmapData object contains a Canvas element to which you can draw anything you like via normal Canvas context operations. * A single BitmapData can be used as the texture for one or many Images/Sprites. @@ -38860,23 +34151,24 @@ Phaser.BitmapData.prototype = { /** * Shifts the contents of this BitmapData by the distances given. * - * The image will wrap-around the edges on all sides. + * The image will wrap-around the edges on all sides if the wrap argument is true (the default). * * @method Phaser.BitmapData#move * @param {integer} x - The amount of pixels to horizontally shift the canvas by. Use a negative value to shift to the left, positive to the right. * @param {integer} y - The amount of pixels to vertically shift the canvas by. Use a negative value to shift up, positive to shift down. + * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. * @return {Phaser.BitmapData} This BitmapData object for method chaining. */ - move: function (x, y) { + move: function (x, y, wrap) { if (x !== 0) { - this.moveH(x); + this.moveH(x, wrap); } if (y !== 0) { - this.moveV(y); + this.moveV(y, wrap); } return this; @@ -38886,13 +34178,16 @@ Phaser.BitmapData.prototype = { /** * Shifts the contents of this BitmapData horizontally. * - * The image will wrap-around the sides. + * The image will wrap-around the sides if the wrap argument is true (the default). * * @method Phaser.BitmapData#moveH * @param {integer} distance - The amount of pixels to horizontally shift the canvas by. Use a negative value to shift to the left, positive to the right. + * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. * @return {Phaser.BitmapData} This BitmapData object for method chaining. */ - moveH: function (distance) { + moveH: function (distance, wrap) { + + if (wrap === undefined) { wrap = true; } var c = this._swapCanvas; var ctx = c.getContext('2d'); @@ -38909,7 +34204,10 @@ Phaser.BitmapData.prototype = { var w = this.width - distance; // Left-hand chunk - ctx.drawImage(src, 0, 0, distance, h, w, 0, distance, h); + if (wrap) + { + ctx.drawImage(src, 0, 0, distance, h, w, 0, distance, h); + } // Rest of the image ctx.drawImage(src, distance, 0, w, h, 0, 0, w, h); @@ -38920,7 +34218,10 @@ Phaser.BitmapData.prototype = { var w = this.width - distance; // Right-hand chunk - ctx.drawImage(src, w, 0, distance, h, 0, 0, distance, h); + if (wrap) + { + ctx.drawImage(src, w, 0, distance, h, 0, 0, distance, h); + } // Rest of the image ctx.drawImage(src, 0, 0, w, h, distance, 0, w, h); @@ -38935,13 +34236,16 @@ Phaser.BitmapData.prototype = { /** * Shifts the contents of this BitmapData vertically. * - * The image will wrap-around the sides. + * The image will wrap-around the sides if the wrap argument is true (the default). * * @method Phaser.BitmapData#moveV * @param {integer} distance - The amount of pixels to vertically shift the canvas by. Use a negative value to shift up, positive to shift down. + * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. * @return {Phaser.BitmapData} This BitmapData object for method chaining. */ - moveV: function (distance) { + moveV: function (distance, wrap) { + + if (wrap === undefined) { wrap = true; } var c = this._swapCanvas; var ctx = c.getContext('2d'); @@ -38958,7 +34262,10 @@ Phaser.BitmapData.prototype = { var h = this.height - distance; // Top chunk - ctx.drawImage(src, 0, 0, w, distance, 0, h, w, distance); + if (wrap) + { + ctx.drawImage(src, 0, 0, w, distance, 0, h, w, distance); + } // Rest of the image ctx.drawImage(src, 0, distance, w, h, 0, 0, w, h); @@ -38969,7 +34276,10 @@ Phaser.BitmapData.prototype = { var h = this.height - distance; // Bottom chunk - ctx.drawImage(src, 0, h, w, distance, 0, 0, w, distance); + if (wrap) + { + ctx.drawImage(src, 0, h, w, distance, 0, 0, w, distance); + } // Rest of the image ctx.drawImage(src, 0, 0, w, h, 0, distance, w, h); @@ -39073,6 +34383,8 @@ Phaser.BitmapData.prototype = { this.context.clearRect(x, y, width, height); + this.update(); + this.dirty = true; return this; @@ -41492,6 +36804,8 @@ PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode) canvasBuffer.context.scale(resolution, resolution); canvasBuffer.context.translate(-bounds.x, -bounds.y); + + // Call here PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); @@ -41609,6 +36923,7 @@ PIXI.Graphics.prototype._renderCanvas = function(renderSession) } this._cachedSprite.alpha = this.alpha; + PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); return; @@ -42149,6 +37464,1405 @@ PIXI.GraphicsData.prototype.clone = function() { ); }; +/* + PolyK library + url: http://polyk.ivank.net + Released under MIT licence. + + Copyright (c) 2012 Ivan Kuckir + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + This is an amazing lib! + + Slightly modified by Mat Groves (matgroves.com); +*/ + +/** + * Based on the Polyk library http://polyk.ivank.net released under MIT licence. + * This is an amazing lib! + * Slightly modified by Mat Groves (matgroves.com); + * @class PolyK + */ +PIXI.PolyK = {}; + +/** + * Triangulates shapes for webGL graphic fills. + * + * @method Triangulate + */ +PIXI.PolyK.Triangulate = function(p) +{ + var sign = true; + + var n = p.length >> 1; + if(n < 3) return []; + + var tgs = []; + var avl = []; + for(var i = 0; i < n; i++) avl.push(i); + + i = 0; + var al = n; + while(al > 3) + { + var i0 = avl[(i+0)%al]; + var i1 = avl[(i+1)%al]; + var i2 = avl[(i+2)%al]; + + var ax = p[2*i0], ay = p[2*i0+1]; + var bx = p[2*i1], by = p[2*i1+1]; + var cx = p[2*i2], cy = p[2*i2+1]; + + var earFound = false; + if(PIXI.PolyK._convex(ax, ay, bx, by, cx, cy, sign)) + { + earFound = true; + for(var j = 0; j < al; j++) + { + var vi = avl[j]; + if(vi === i0 || vi === i1 || vi === i2) continue; + + if(PIXI.PolyK._PointInTriangle(p[2*vi], p[2*vi+1], ax, ay, bx, by, cx, cy)) { + earFound = false; + break; + } + } + } + + if(earFound) + { + tgs.push(i0, i1, i2); + avl.splice((i+1)%al, 1); + al--; + i = 0; + } + else if(i++ > 3*al) + { + // need to flip flip reverse it! + // reset! + if(sign) + { + tgs = []; + avl = []; + for(i = 0; i < n; i++) avl.push(i); + + i = 0; + al = n; + + sign = false; + } + else + { + // window.console.log("PIXI Warning: shape too complex to fill"); + return null; + } + } + } + + tgs.push(avl[0], avl[1], avl[2]); + return tgs; +}; + +/** + * Checks whether a point is within a triangle + * + * @method _PointInTriangle + * @param px {Number} x coordinate of the point to test + * @param py {Number} y coordinate of the point to test + * @param ax {Number} x coordinate of the a point of the triangle + * @param ay {Number} y coordinate of the a point of the triangle + * @param bx {Number} x coordinate of the b point of the triangle + * @param by {Number} y coordinate of the b point of the triangle + * @param cx {Number} x coordinate of the c point of the triangle + * @param cy {Number} y coordinate of the c point of the triangle + * @private + * @return {Boolean} + */ +PIXI.PolyK._PointInTriangle = function(px, py, ax, ay, bx, by, cx, cy) +{ + var v0x = cx-ax; + var v0y = cy-ay; + var v1x = bx-ax; + var v1y = by-ay; + var v2x = px-ax; + var v2y = py-ay; + + var dot00 = v0x*v0x+v0y*v0y; + var dot01 = v0x*v1x+v0y*v1y; + var dot02 = v0x*v2x+v0y*v2y; + var dot11 = v1x*v1x+v1y*v1y; + var dot12 = v1x*v2x+v1y*v2y; + + var invDenom = 1 / (dot00 * dot11 - dot01 * dot01); + var u = (dot11 * dot02 - dot01 * dot12) * invDenom; + var v = (dot00 * dot12 - dot01 * dot02) * invDenom; + + // Check if point is in triangle + return (u >= 0) && (v >= 0) && (u + v < 1); +}; + +/** + * Checks whether a shape is convex + * + * @method _convex + * @private + * @return {Boolean} + */ +PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) +{ + return ((ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0) === sign; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * A set of functions used by the webGL renderer to draw the primitive graphics data + * + * @class WebGLGraphics + * @private + * @static + */ +PIXI.WebGLGraphics = function() +{ +}; + +/** + * Renders the graphics object + * + * @static + * @private + * @method renderGraphics + * @param graphics {Graphics} + * @param renderSession {Object} + */ +PIXI.WebGLGraphics.renderGraphics = function(graphics, renderSession)//projection, offset) +{ + var gl = renderSession.gl; + var projection = renderSession.projection, + offset = renderSession.offset, + shader = renderSession.shaderManager.primitiveShader, + webGLData; + + if(graphics.dirty) + { + PIXI.WebGLGraphics.updateGraphics(graphics, gl); + } + + var webGL = graphics._webGL[gl.id]; + + // This could be speeded up for sure! + + for (var i = 0; i < webGL.data.length; i++) + { + if(webGL.data[i].mode === 1) + { + webGLData = webGL.data[i]; + + renderSession.stencilManager.pushStencil(graphics, webGLData, renderSession); + + // render quad.. + gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); + + renderSession.stencilManager.popStencil(graphics, webGLData, renderSession); + } + else + { + webGLData = webGL.data[i]; + + + renderSession.shaderManager.setShader( shader );//activatePrimitiveShader(); + shader = renderSession.shaderManager.primitiveShader; + gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); + + gl.uniform1f(shader.flipY, 1); + + gl.uniform2f(shader.projectionVector, projection.x, -projection.y); + gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); + + gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); + + gl.uniform1f(shader.alpha, graphics.worldAlpha); + + + gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); + + gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); + gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); + + // set the index buffer! + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); + gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); + } + } +}; + +/** + * Updates the graphics object + * + * @static + * @private + * @method updateGraphics + * @param graphicsData {Graphics} The graphics object to update + * @param gl {WebGLContext} the current WebGL drawing context + */ +PIXI.WebGLGraphics.updateGraphics = function(graphics, gl) +{ + // get the contexts graphics object + var webGL = graphics._webGL[gl.id]; + // if the graphics object does not exist in the webGL context time to create it! + if(!webGL)webGL = graphics._webGL[gl.id] = {lastIndex:0, data:[], gl:gl}; + + // flag the graphics as not dirty as we are about to update it... + graphics.dirty = false; + + var i; + + // if the user cleared the graphics object we will need to clear every object + if(graphics.clearDirty) + { + graphics.clearDirty = false; + + // lop through and return all the webGLDatas to the object pool so than can be reused later on + for (i = 0; i < webGL.data.length; i++) + { + var graphicsData = webGL.data[i]; + graphicsData.reset(); + PIXI.WebGLGraphics.graphicsDataPool.push( graphicsData ); + } + + // clear the array and reset the index.. + webGL.data = []; + webGL.lastIndex = 0; + } + + var webGLData; + + // loop through the graphics datas and construct each one.. + // if the object is a complex fill then the new stencil buffer technique will be used + // other wise graphics objects will be pushed into a batch.. + for (i = webGL.lastIndex; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + + if(data.type === PIXI.Graphics.POLY) + { + // need to add the points the the graphics object.. + data.points = data.shape.points.slice(); + if(data.shape.closed) + { + // close the poly if the value is true! + if(data.points[0] !== data.points[data.points.length-2] || data.points[1] !== data.points[data.points.length-1]) + { + data.points.push(data.points[0], data.points[1]); + } + } + + // MAKE SURE WE HAVE THE CORRECT TYPE.. + if(data.fill) + { + if(data.points.length >= 6) + { + if(data.points.length < 6 * 2) + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); + + var canDrawUsingSimple = PIXI.WebGLGraphics.buildPoly(data, webGLData); + // console.log(canDrawUsingSimple); + + if(!canDrawUsingSimple) + { + // console.log("<>>>") + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); + PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); + } + + } + else + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); + PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); + } + } + } + + if(data.lineWidth > 0) + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); + PIXI.WebGLGraphics.buildLine(data, webGLData); + + } + } + else + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); + + if(data.type === PIXI.Graphics.RECT) + { + PIXI.WebGLGraphics.buildRectangle(data, webGLData); + } + else if(data.type === PIXI.Graphics.CIRC || data.type === PIXI.Graphics.ELIP) + { + PIXI.WebGLGraphics.buildCircle(data, webGLData); + } + else if(data.type === PIXI.Graphics.RREC) + { + PIXI.WebGLGraphics.buildRoundedRectangle(data, webGLData); + } + } + + webGL.lastIndex++; + } + + // upload all the dirty data... + for (i = 0; i < webGL.data.length; i++) + { + webGLData = webGL.data[i]; + if(webGLData.dirty)webGLData.upload(); + } +}; + +/** + * @static + * @private + * @method switchMode + * @param webGL {WebGLContext} + * @param type {Number} + */ +PIXI.WebGLGraphics.switchMode = function(webGL, type) +{ + var webGLData; + + if(!webGL.data.length) + { + webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); + webGLData.mode = type; + webGL.data.push(webGLData); + } + else + { + webGLData = webGL.data[webGL.data.length-1]; + + if(webGLData.mode !== type || type === 1) + { + webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); + webGLData.mode = type; + webGL.data.push(webGLData); + } + } + + webGLData.dirty = true; + + return webGLData; +}; + +/** + * Builds a rectangle to draw + * + * @static + * @private + * @method buildRectangle + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.shape; + var x = rectData.x; + var y = rectData.y; + var width = rectData.width; + var height = rectData.height; + + if(graphicsData.fill) + { + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + var indices = webGLData.indices; + + var vertPos = verts.length/6; + + // start + verts.push(x, y); + verts.push(r, g, b, alpha); + + verts.push(x + width, y); + verts.push(r, g, b, alpha); + + verts.push(x , y + height); + verts.push(r, g, b, alpha); + + verts.push(x + width, y + height); + verts.push(r, g, b, alpha); + + // insert 2 dead triangles.. + indices.push(vertPos, vertPos, vertPos+1, vertPos+2, vertPos+3, vertPos+3); + } + + if(graphicsData.lineWidth) + { + var tempPoints = graphicsData.points; + + graphicsData.points = [x, y, + x + width, y, + x + width, y + height, + x, y + height, + x, y]; + + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + + graphicsData.points = tempPoints; + } +}; + +/** + * Builds a rounded rectangle to draw + * + * @static + * @private + * @method buildRoundedRectangle + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildRoundedRectangle = function(graphicsData, webGLData) +{ + var rrectData = graphicsData.shape; + var x = rrectData.x; + var y = rrectData.y; + var width = rrectData.width; + var height = rrectData.height; + + var radius = rrectData.radius; + + var recPoints = []; + recPoints.push(x, y + radius); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x, y + height - radius, x, y + height, x + radius, y + height)); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width - radius, y + height, x + width, y + height, x + width, y + height - radius)); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width, y + radius, x + width, y, x + width - radius, y)); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + radius, y, x, y, x, y + radius)); + + if (graphicsData.fill) { + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + var indices = webGLData.indices; + + var vecPos = verts.length/6; + + var triangles = PIXI.PolyK.Triangulate(recPoints); + + // + + var i = 0; + for (i = 0; i < triangles.length; i+=3) + { + indices.push(triangles[i] + vecPos); + indices.push(triangles[i] + vecPos); + indices.push(triangles[i+1] + vecPos); + indices.push(triangles[i+2] + vecPos); + indices.push(triangles[i+2] + vecPos); + } + + + for (i = 0; i < recPoints.length; i++) + { + verts.push(recPoints[i], recPoints[++i], r, g, b, alpha); + } + } + + if (graphicsData.lineWidth) { + var tempPoints = graphicsData.points; + + graphicsData.points = recPoints; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + + graphicsData.points = tempPoints; + } +}; + +/** + * Calculate the points for a quadratic bezier curve. (helper function..) + * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c + * + * @static + * @private + * @method quadraticBezierCurve + * @param fromX {Number} Origin point x + * @param fromY {Number} Origin point x + * @param cpX {Number} Control point x + * @param cpY {Number} Control point y + * @param toX {Number} Destination point x + * @param toY {Number} Destination point y + * @return {Array(Number)} + */ +PIXI.WebGLGraphics.quadraticBezierCurve = function(fromX, fromY, cpX, cpY, toX, toY) { + + var xa, + ya, + xb, + yb, + x, + y, + n = 20, + points = []; + + function getPt(n1 , n2, perc) { + var diff = n2 - n1; + + return n1 + ( diff * perc ); + } + + var j = 0; + for (var i = 0; i <= n; i++ ) + { + j = i / n; + + // The Green Line + xa = getPt( fromX , cpX , j ); + ya = getPt( fromY , cpY , j ); + xb = getPt( cpX , toX , j ); + yb = getPt( cpY , toY , j ); + + // The Black Dot + x = getPt( xa , xb , j ); + y = getPt( ya , yb , j ); + + points.push(x, y); + } + return points; +}; + +/** + * Builds a circle to draw + * + * @static + * @private + * @method buildCircle + * @param graphicsData {Graphics} The graphics object to draw + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) +{ + // need to convert points to a nice regular data + var circleData = graphicsData.shape; + var x = circleData.x; + var y = circleData.y; + var width; + var height; + + // TODO - bit hacky?? + if(graphicsData.type === PIXI.Graphics.CIRC) + { + width = circleData.radius; + height = circleData.radius; + } + else + { + width = circleData.width; + height = circleData.height; + } + + var totalSegs = 40; + var seg = (Math.PI * 2) / totalSegs ; + + var i = 0; + + if(graphicsData.fill) + { + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + var indices = webGLData.indices; + + var vecPos = verts.length/6; + + indices.push(vecPos); + + for (i = 0; i < totalSegs + 1 ; i++) + { + verts.push(x,y, r, g, b, alpha); + + verts.push(x + Math.sin(seg * i) * width, + y + Math.cos(seg * i) * height, + r, g, b, alpha); + + indices.push(vecPos++, vecPos++); + } + + indices.push(vecPos-1); + } + + if(graphicsData.lineWidth) + { + var tempPoints = graphicsData.points; + + graphicsData.points = []; + + for (i = 0; i < totalSegs + 1; i++) + { + graphicsData.points.push(x + Math.sin(seg * i) * width, + y + Math.cos(seg * i) * height); + } + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + + graphicsData.points = tempPoints; + } +}; + +/** + * Builds a line to draw + * + * @static + * @private + * @method buildLine + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) +{ + // TODO OPTIMISE! + var i = 0; + var points = graphicsData.points; + if(points.length === 0)return; + + // if the line width is an odd number add 0.5 to align to a whole pixel + if(graphicsData.lineWidth%2) + { + for (i = 0; i < points.length; i++) { + points[i] += 0.5; + } + } + + // get first and last point.. figure out the middle! + var firstPoint = new PIXI.Point( points[0], points[1] ); + var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + // if the first point is the last point - gonna have issues :) + if(firstPoint.x === lastPoint.x && firstPoint.y === lastPoint.y) + { + // need to clone as we are going to slightly modify the shape.. + points = points.slice(); + + points.pop(); + points.pop(); + + lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; + var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; + + points.unshift(midPointX, midPointY); + points.push(midPointX, midPointY); + } + + var verts = webGLData.points; + var indices = webGLData.indices; + var length = points.length / 2; + var indexCount = points.length; + var indexStart = verts.length/6; + + // DRAW the Line + var width = graphicsData.lineWidth / 2; + + // sort color + var color = PIXI.hex2rgb(graphicsData.lineColor); + var alpha = graphicsData.lineAlpha; + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var px, py, p1x, p1y, p2x, p2y, p3x, p3y; + var perpx, perpy, perp2x, perp2y, perp3x, perp3y; + var a1, b1, c1, a2, b2, c2; + var denom, pdist, dist; + + p1x = points[0]; + p1y = points[1]; + + p2x = points[2]; + p2y = points[3]; + + perpx = -(p1y - p2y); + perpy = p1x - p2x; + + dist = Math.sqrt(perpx*perpx + perpy*perpy); + + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + + // start + verts.push(p1x - perpx , p1y - perpy, + r, g, b, alpha); + + verts.push(p1x + perpx , p1y + perpy, + r, g, b, alpha); + + for (i = 1; i < length-1; i++) + { + p1x = points[(i-1)*2]; + p1y = points[(i-1)*2 + 1]; + + p2x = points[(i)*2]; + p2y = points[(i)*2 + 1]; + + p3x = points[(i+1)*2]; + p3y = points[(i+1)*2 + 1]; + + perpx = -(p1y - p2y); + perpy = p1x - p2x; + + dist = Math.sqrt(perpx*perpx + perpy*perpy); + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + + perp2x = -(p2y - p3y); + perp2y = p2x - p3x; + + dist = Math.sqrt(perp2x*perp2x + perp2y*perp2y); + perp2x /= dist; + perp2y /= dist; + perp2x *= width; + perp2y *= width; + + a1 = (-perpy + p1y) - (-perpy + p2y); + b1 = (-perpx + p2x) - (-perpx + p1x); + c1 = (-perpx + p1x) * (-perpy + p2y) - (-perpx + p2x) * (-perpy + p1y); + a2 = (-perp2y + p3y) - (-perp2y + p2y); + b2 = (-perp2x + p2x) - (-perp2x + p3x); + c2 = (-perp2x + p3x) * (-perp2y + p2y) - (-perp2x + p2x) * (-perp2y + p3y); + + denom = a1*b2 - a2*b1; + + if(Math.abs(denom) < 0.1 ) + { + + denom+=10.1; + verts.push(p2x - perpx , p2y - perpy, + r, g, b, alpha); + + verts.push(p2x + perpx , p2y + perpy, + r, g, b, alpha); + + continue; + } + + px = (b1*c2 - b2*c1)/denom; + py = (a2*c1 - a1*c2)/denom; + + + pdist = (px -p2x) * (px -p2x) + (py -p2y) + (py -p2y); + + + if(pdist > 140 * 140) + { + perp3x = perpx - perp2x; + perp3y = perpy - perp2y; + + dist = Math.sqrt(perp3x*perp3x + perp3y*perp3y); + perp3x /= dist; + perp3y /= dist; + perp3x *= width; + perp3y *= width; + + verts.push(p2x - perp3x, p2y -perp3y); + verts.push(r, g, b, alpha); + + verts.push(p2x + perp3x, p2y +perp3y); + verts.push(r, g, b, alpha); + + verts.push(p2x - perp3x, p2y -perp3y); + verts.push(r, g, b, alpha); + + indexCount++; + } + else + { + + verts.push(px , py); + verts.push(r, g, b, alpha); + + verts.push(p2x - (px-p2x), p2y - (py - p2y)); + verts.push(r, g, b, alpha); + } + } + + p1x = points[(length-2)*2]; + p1y = points[(length-2)*2 + 1]; + + p2x = points[(length-1)*2]; + p2y = points[(length-1)*2 + 1]; + + perpx = -(p1y - p2y); + perpy = p1x - p2x; + + dist = Math.sqrt(perpx*perpx + perpy*perpy); + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + + verts.push(p2x - perpx , p2y - perpy); + verts.push(r, g, b, alpha); + + verts.push(p2x + perpx , p2y + perpy); + verts.push(r, g, b, alpha); + + indices.push(indexStart); + + for (i = 0; i < indexCount; i++) + { + indices.push(indexStart++); + } + + indices.push(indexStart-1); +}; + +/** + * Builds a complex polygon to draw + * + * @static + * @private + * @method buildComplexPoly + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildComplexPoly = function(graphicsData, webGLData) +{ + //TODO - no need to copy this as it gets turned into a FLoat32Array anyways.. + var points = graphicsData.points.slice(); + if(points.length < 6)return; + + // get first and last point.. figure out the middle! + var indices = webGLData.indices; + webGLData.points = points; + webGLData.alpha = graphicsData.fillAlpha; + webGLData.color = PIXI.hex2rgb(graphicsData.fillColor); + + /* + calclate the bounds.. + */ + var minX = Infinity; + var maxX = -Infinity; + + var minY = Infinity; + var maxY = -Infinity; + + var x,y; + + // get size.. + for (var i = 0; i < points.length; i+=2) + { + x = points[i]; + y = points[i+1]; + + minX = x < minX ? x : minX; + maxX = x > maxX ? x : maxX; + + minY = y < minY ? y : minY; + maxY = y > maxY ? y : maxY; + } + + // add a quad to the end cos there is no point making another buffer! + points.push(minX, minY, + maxX, minY, + maxX, maxY, + minX, maxY); + + // push a quad onto the end.. + + //TODO - this aint needed! + var length = points.length / 2; + for (i = 0; i < length; i++) + { + indices.push( i ); + } + +}; + +/** + * Builds a polygon to draw + * + * @static + * @private + * @method buildPoly + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildPoly = function(graphicsData, webGLData) +{ + var points = graphicsData.points; + + if(points.length < 6)return; + // get first and last point.. figure out the middle! + var verts = webGLData.points; + var indices = webGLData.indices; + + var length = points.length / 2; + + // sort color + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var triangles = PIXI.PolyK.Triangulate(points); + + if(!triangles)return false; + + var vertPos = verts.length / 6; + + var i = 0; + + for (i = 0; i < triangles.length; i+=3) + { + indices.push(triangles[i] + vertPos); + indices.push(triangles[i] + vertPos); + indices.push(triangles[i+1] + vertPos); + indices.push(triangles[i+2] +vertPos); + indices.push(triangles[i+2] + vertPos); + } + + for (i = 0; i < length; i++) + { + verts.push(points[i * 2], points[i * 2 + 1], + r, g, b, alpha); + } + + return true; +}; + +PIXI.WebGLGraphics.graphicsDataPool = []; + +/** + * @class WebGLGraphicsData + * @private + * @static + */ +PIXI.WebGLGraphicsData = function(gl) +{ + this.gl = gl; + + //TODO does this need to be split before uploding?? + this.color = [0,0,0]; // color split! + this.points = []; + this.indices = []; + this.buffer = gl.createBuffer(); + this.indexBuffer = gl.createBuffer(); + this.mode = 1; + this.alpha = 1; + this.dirty = true; +}; + +/** + * @method reset + */ +PIXI.WebGLGraphicsData.prototype.reset = function() +{ + this.points = []; + this.indices = []; +}; + +/** + * @method upload + */ +PIXI.WebGLGraphicsData.prototype.upload = function() +{ + var gl = this.gl; + +// this.lastIndex = graphics.graphicsData.length; + this.glPoints = new PIXI.Float32Array(this.points); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); + gl.bufferData(gl.ARRAY_BUFFER, this.glPoints, gl.STATIC_DRAW); + + this.glIndicies = new PIXI.Uint16Array(this.indices); + + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.glIndicies, gl.STATIC_DRAW); + + this.dirty = false; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A set of functions used by the canvas renderer to draw the primitive graphics data. + * + * @class CanvasGraphics + * @static + */ +PIXI.CanvasGraphics = function() +{ +}; + +/* + * Renders a PIXI.Graphics object to a canvas. + * + * @method renderGraphics + * @static + * @param graphics {Graphics} the actual graphics object to render + * @param context {CanvasRenderingContext2D} the 2d drawing method of the canvas + */ +PIXI.CanvasGraphics.renderGraphics = function(graphics, context) +{ + var worldAlpha = graphics.worldAlpha; + + if (graphics.dirty) + { + this.updateGraphicsTint(graphics); + graphics.dirty = false; + } + + for (var i = 0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + var shape = data.shape; + + var fillColor = data._fillTint; + var lineColor = data._lineTint; + + context.lineWidth = data.lineWidth; + + if (data.type === PIXI.Graphics.POLY) + { + context.beginPath(); + + var points = shape.points; + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + if (shape.closed) + { + context.lineTo(points[0], points[1]); + } + + // if the first and last point are the same close the path - much neater :) + if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) + { + context.closePath(); + } + + if (data.fill) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + else if (data.type === PIXI.Graphics.RECT) + { + if (data.fillColor || data.fillColor === 0) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fillRect(shape.x, shape.y, shape.width, shape.height); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.strokeRect(shape.x, shape.y, shape.width, shape.height); + } + } + else if (data.type === PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.beginPath(); + context.arc(shape.x, shape.y, shape.radius,0,2*Math.PI); + context.closePath(); + + if (data.fill) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + else if (data.type === PIXI.Graphics.ELIP) + { + // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + + var w = shape.width * 2; + var h = shape.height * 2; + + var x = shape.x - w/2; + var y = shape.y - h/2; + + context.beginPath(); + + var kappa = 0.5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle + + context.moveTo(x, ym); + context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + + context.closePath(); + + if (data.fill) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + else if (data.type === PIXI.Graphics.RREC) + { + var rx = shape.x; + var ry = shape.y; + var width = shape.width; + var height = shape.height; + var radius = shape.radius; + + var maxRadius = Math.min(width, height) / 2 | 0; + radius = radius > maxRadius ? maxRadius : radius; + + context.beginPath(); + context.moveTo(rx, ry + radius); + context.lineTo(rx, ry + height - radius); + context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); + context.lineTo(rx + width - radius, ry + height); + context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); + context.lineTo(rx + width, ry + radius); + context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); + context.lineTo(rx + radius, ry); + context.quadraticCurveTo(rx, ry, rx, ry + radius); + context.closePath(); + + if (data.fillColor || data.fillColor === 0) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + } + +}; + +/* + * Renders a graphics mask + * + * @static + * @private + * @method renderGraphicsMask + * @param graphics {Graphics} the graphics which will be used as a mask + * @param context {CanvasRenderingContext2D} the context 2d method of the canvas + */ +PIXI.CanvasGraphics.renderGraphicsMask = function(graphics, context) +{ + var len = graphics.graphicsData.length; + + if (len === 0) + { + return; + } + + context.beginPath(); + + for (var i = 0; i < len; i++) + { + var data = graphics.graphicsData[i]; + var shape = data.shape; + + if (data.type === PIXI.Graphics.POLY) + { + + var points = shape.points; + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + // if the first and last point are the same close the path - much neater :) + if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) + { + context.closePath(); + } + + } + else if (data.type === PIXI.Graphics.RECT) + { + context.rect(shape.x, shape.y, shape.width, shape.height); + context.closePath(); + } + else if (data.type === PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.arc(shape.x, shape.y, shape.radius, 0, 2 * Math.PI); + context.closePath(); + } + else if (data.type === PIXI.Graphics.ELIP) + { + + // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + + var w = shape.width * 2; + var h = shape.height * 2; + + var x = shape.x - w/2; + var y = shape.y - h/2; + + var kappa = 0.5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle + + context.moveTo(x, ym); + context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + context.closePath(); + } + else if (data.type === PIXI.Graphics.RREC) + { + + var rx = shape.x; + var ry = shape.y; + var width = shape.width; + var height = shape.height; + var radius = shape.radius; + + var maxRadius = Math.min(width, height) / 2 | 0; + radius = radius > maxRadius ? maxRadius : radius; + + context.moveTo(rx, ry + radius); + context.lineTo(rx, ry + height - radius); + context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); + context.lineTo(rx + width - radius, ry + height); + context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); + context.lineTo(rx + width, ry + radius); + context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); + context.lineTo(rx + radius, ry); + context.quadraticCurveTo(rx, ry, rx, ry + radius); + context.closePath(); + } + } +}; + +PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) +{ + if (graphics.tint === 0xFFFFFF) + { + return; + } + + var tintR = (graphics.tint >> 16 & 0xFF) / 255; + var tintG = (graphics.tint >> 8 & 0xFF) / 255; + var tintB = (graphics.tint & 0xFF)/ 255; + + for (var i = 0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + + var fillColor = data.fillColor | 0; + var lineColor = data.lineColor | 0; + + data._fillTint = (((fillColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((fillColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (fillColor & 0xFF) / 255 * tintB*255); + data._lineTint = (((lineColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((lineColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (lineColor & 0xFF) / 255 * tintB*255); + + } + +}; + /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -42727,16 +39441,6 @@ Phaser.Text.prototype.destroy = function (destroyChildren) { PIXI.CanvasPool.remove(this); - // if (this.canvas && this.canvas.parentNode) - // { - // this.canvas.parentNode.removeChild(this.canvas); - // } - // else - // { - // this.canvas = null; - // this.context = null; - // } - Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren); }; @@ -42889,6 +39593,12 @@ Phaser.Text.prototype.updateText = function () { { // Simple layout (no tabs) var lineWidth = this.context.measureText(lines[i]).width + this.style.strokeThickness + this.padding.x; + + // Adjust for wrapped text + if (this.style.wordWrap) + { + lineWidth -= this.context.measureText(' ').width; + } } else { @@ -42930,9 +39640,7 @@ Phaser.Text.prototype.updateText = function () { maxLineWidth = Math.max(maxLineWidth, lineWidths[i]); } - var width = maxLineWidth + this.style.strokeThickness; - - this.canvas.width = width * this._res; + this.canvas.width = maxLineWidth * this._res; // Calculate text height var lineHeight = fontProperties.fontSize + this.style.strokeThickness + this.padding.y; @@ -45762,9 +42470,11 @@ Object.defineProperty(Phaser.RetroFont.prototype, "smoothed", { */ /** -* A Rope is a Sprite that has a repeating texture. The texture can be scrolled and scaled and will automatically wrap on the edges as it does so. -* Please note that Ropes, as with normal Sprites, have no input handler or physics bodies by default. Both need enabling. -* Example usage: https://github.com/codevinsky/phaser-rope-demo/blob/master/dist/demo.js +* A Rope is a Sprite that has a repeating texture. +* +* The texture will automatically wrap on the edges as it moves. +* +* Please note that Ropes cannot have an input handler. * * @class Phaser.Rope * @constructor @@ -45779,7 +42489,6 @@ Object.defineProperty(Phaser.RetroFont.prototype, "smoothed", { * @extends Phaser.Component.Delta * @extends Phaser.Component.Destroy * @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InputEnabled * @extends Phaser.Component.InWorld * @extends Phaser.Component.LifeSpan * @extends Phaser.Component.LoadTexture @@ -45812,12 +42521,6 @@ Phaser.Rope = function (game, x, y, key, frame, points) { */ this.type = Phaser.ROPE; - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -45837,7 +42540,6 @@ Phaser.Component.Core.install.call(Phaser.Rope.prototype, [ 'Delta', 'Destroy', 'FixedToCamera', - 'InputEnabled', 'InWorld', 'LifeSpan', 'LoadTexture', @@ -45861,16 +42563,6 @@ Phaser.Rope.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; */ Phaser.Rope.prototype.preUpdate = function() { - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) { return false; @@ -45896,7 +42588,7 @@ Phaser.Rope.prototype.update = function() { }; /** -* Resets the Rope. This places the Rope at the given x/y world coordinates, resets the tilePosition and then +* Resets the Rope. This places the Rope at the given x/y world coordinates and then * sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. * If the Rope has a physics body that too is reset. * @@ -45910,15 +42602,12 @@ Phaser.Rope.prototype.reset = function(x, y) { Phaser.Component.Reset.prototype.reset.call(this, x, y); - this.tilePosition.x = 0; - this.tilePosition.y = 0; - return this; }; /** -* A Rope will call it's updateAnimation function on each update loop if it has one +* A Rope will call its updateAnimation function on each update loop if it has one. * * @name Phaser.Rope#updateAnimation * @property {function} updateAnimation - Set to a function if you'd like the rope to animate during the update phase. Set to false or null to remove it. @@ -46258,6 +42947,12 @@ Phaser.Device = function () { */ this.iOS = false; + /** + * @property {number} iOSVersion - If running in iOS this will contain the major version number. + * @default + */ + this.iOSVersion = 0; + /** * @property {boolean} cocoonJS - Is the game running under CocoonJS? * @default @@ -46859,6 +43554,8 @@ Phaser.Device._initialize = function () { else if (/iP[ao]d|iPhone/i.test(ua)) { device.iOS = true; + (navigator.appVersion).match(/OS (\d+)/); + device.iOSVersion = parseInt(RegExp.$1, 10); } else if (/Linux/.test(ua)) { @@ -47522,439 +44219,6 @@ Phaser.Device.isAndroidStockBrowser = function () { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* DOM utility class. -* -* Provides a useful Window and Element functions as well as cross-browser compatibility buffer. -* -* Some code originally derived from {@link https://github.com/ryanve/verge verge}. -* Some parts were inspired by the research of Ryan Van Etten, released under MIT License 2013. -* -* @class Phaser.DOM -* @static -*/ -Phaser.DOM = { - - /** - * Get the [absolute] position of the element relative to the Document. - * - * The value may vary slightly as the page is scrolled due to rounding errors. - * - * @method Phaser.DOM.getOffset - * @param {DOMElement} element - The targeted element that we want to retrieve the offset. - * @param {Phaser.Point} [point] - The point we want to take the x/y values of the offset. - * @return {Phaser.Point} - A point objet with the offsetX and Y as its properties. - */ - getOffset: function (element, point) { - - point = point || new Phaser.Point(); - - var box = element.getBoundingClientRect(); - - var scrollTop = Phaser.DOM.scrollY; - var scrollLeft = Phaser.DOM.scrollX; - var clientTop = document.documentElement.clientTop; - var clientLeft = document.documentElement.clientLeft; - - point.x = box.left + scrollLeft - clientLeft; - point.y = box.top + scrollTop - clientTop; - - return point; - - }, - - /** - * A cross-browser element.getBoundingClientRect method with optional cushion. - * - * Returns a plain object containing the properties `top/bottom/left/right/width/height` with respect to the top-left corner of the current viewport. - * Its properties match the native rectangle. - * The cushion parameter is an amount of pixels (+/-) to cushion the element. - * It adjusts the measurements such that it is possible to detect when an element is near the viewport. - * - * @method Phaser.DOM.getBounds - * @param {DOMElement|Object} element - The element or stack (uses first item) to get the bounds for. - * @param {number} [cushion] - A +/- pixel adjustment amount. - * @return {Object|boolean} A plain object containing the properties `top/bottom/left/right/width/height` or `false` if a non-valid element is given. - */ - getBounds: function (element, cushion) { - - if (cushion === undefined) { cushion = 0; } - - element = element && !element.nodeType ? element[0] : element; - - if (!element || element.nodeType !== 1) - { - return false; - } - else - { - return this.calibrate(element.getBoundingClientRect(), cushion); - } - - }, - - /** - * Calibrates element coordinates for `inLayoutViewport` checks. - * - * @method Phaser.DOM.calibrate - * @private - * @param {object} coords - An object containing the following properties: `{top: number, right: number, bottom: number, left: number}` - * @param {number} [cushion] - A value to adjust the coordinates by. - * @return {object} The calibrated element coordinates - */ - calibrate: function (coords, cushion) { - - cushion = +cushion || 0; - - var output = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }; - - output.width = (output.right = coords.right + cushion) - (output.left = coords.left - cushion); - output.height = (output.bottom = coords.bottom + cushion) - (output.top = coords.top - cushion); - - return output; - - }, - - /** - * Get the Visual viewport aspect ratio (or the aspect ratio of an object or element) - * - * @method Phaser.DOM.getAspectRatio - * @param {(DOMElement|Object)} [object=(visualViewport)] - The object to determine the aspect ratio for. Must have public `width` and `height` properties or methods. - * @return {number} The aspect ratio. - */ - getAspectRatio: function (object) { - - object = null == object ? this.visualBounds : 1 === object.nodeType ? this.getBounds(object) : object; - - var w = object['width']; - var h = object['height']; - - if (typeof w === 'function') - { - w = w.call(object); - } - - if (typeof h === 'function') - { - h = h.call(object); - } - - return w / h; - - }, - - /** - * Tests if the given DOM element is within the Layout viewport. - * - * The optional cushion parameter allows you to specify a distance. - * - * inLayoutViewport(element, 100) is `true` if the element is in the viewport or 100px near it. - * inLayoutViewport(element, -100) is `true` if the element is in the viewport or at least 100px near it. - * - * @method Phaser.DOM.inLayoutViewport - * @param {DOMElement|Object} element - The DOM element to check. If no element is given it defaults to the Phaser game canvas. - * @param {number} [cushion] - The cushion allows you to specify a distance within which the element must be within the viewport. - * @return {boolean} True if the element is within the viewport, or within `cushion` distance from it. - */ - inLayoutViewport: function (element, cushion) { - - var r = this.getBounds(element, cushion); - - return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= this.layoutBounds.width && r.left <= this.layoutBounds.height; - - }, - - /** - * Returns the device screen orientation. - * - * Orientation values: 'portrait-primary', 'landscape-primary', 'portrait-secondary', 'landscape-secondary'. - * - * Order of resolving: - * - Screen Orientation API, or variation of - Future track. Most desktop and mobile browsers. - * - Screen size ratio check - If fallback is 'screen', suited for desktops. - * - Viewport size ratio check - If fallback is 'viewport', suited for mobile. - * - window.orientation - If fallback is 'window.orientation', works iOS and probably most Android; non-recommended track. - * - Media query - * - Viewport size ratio check (probably only IE9 and legacy mobile gets here..) - * - * See - * - https://w3c.github.io/screen-orientation/ (conflicts with mozOrientation/msOrientation) - * - https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation (mozOrientation) - * - http://msdn.microsoft.com/en-us/library/ie/dn342934(v=vs.85).aspx - * - https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries - * - http://stackoverflow.com/questions/4917664/detect-viewport-orientation - * - http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation - * - * @method Phaser.DOM.getScreenOrientation - * @protected - * @param {string} [primaryFallback=(none)] - Specify 'screen', 'viewport', or 'window.orientation'. - */ - getScreenOrientation: function (primaryFallback) { - - var screen = window.screen; - var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation; - - if (orientation && typeof orientation.type === 'string') - { - // Screen Orientation API specification - return orientation.type; - } - else if (typeof orientation === 'string') - { - // moz/ms-orientation are strings - return orientation; - } - - var PORTRAIT = 'portrait-primary'; - var LANDSCAPE = 'landscape-primary'; - - if (primaryFallback === 'screen') - { - return (screen.height > screen.width) ? PORTRAIT : LANDSCAPE; - } - else if (primaryFallback === 'viewport') - { - return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; - } - else if (primaryFallback === 'window.orientation' && typeof window.orientation === 'number') - { - // This may change by device based on "natural" orientation. - return (window.orientation === 0 || window.orientation === 180) ? PORTRAIT : LANDSCAPE; - } - else if (window.matchMedia) - { - if (window.matchMedia("(orientation: portrait)").matches) - { - return PORTRAIT; - } - else if (window.matchMedia("(orientation: landscape)").matches) - { - return LANDSCAPE; - } - } - - return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; - - }, - - /** - * The bounds of the Visual viewport, as discussed in - * {@link http://www.quirksmode.org/mobile/viewports.html A tale of two viewports — part one} - * with one difference: the viewport size _excludes_ scrollbars, as found on some desktop browsers. - * - * Supported mobile: - * iOS/Safari, Android 4, IE10, Firefox OS (maybe not Firefox Android), Opera Mobile 16 - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} x - Scroll, left offset - eg. "scrollX" - * @property {number} y - Scroll, top offset - eg. "scrollY" - * @property {number} width - Viewport width in pixels. - * @property {number} height - Viewport height in pixels. - * @readonly - */ - visualBounds: new Phaser.Rectangle(), - - /** - * The bounds of the Layout viewport, as discussed in - * {@link http://www.quirksmode.org/mobile/viewports2.html A tale of two viewports — part two}; - * but honoring the constraints as specified applicable viewport meta-tag. - * - * The bounds returned are not guaranteed to be fully aligned with CSS media queries (see - * {@link http://www.matanich.com/2013/01/07/viewport-size/ What size is my viewport?}). - * - * This is _not_ representative of the Visual bounds: in particular the non-primary axis will - * generally be significantly larger than the screen height on mobile devices when running with a - * constrained viewport. - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} width - Viewport width in pixels. - * @property {number} height - Viewport height in pixels. - * @readonly - */ - layoutBounds: new Phaser.Rectangle(), - - /** - * The size of the document / Layout viewport. - * - * This incorrectly reports the dimensions in IE. - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} width - Document width in pixels. - * @property {number} height - Document height in pixels. - * @readonly - */ - documentBounds: new Phaser.Rectangle() - -}; - -Phaser.Device.whenReady(function (device) { - - // All target browsers should support page[XY]Offset. - var scrollX = window && ('pageXOffset' in window) ? - function () { return window.pageXOffset; } : - function () { return document.documentElement.scrollLeft; }; - - var scrollY = window && ('pageYOffset' in window) ? - function () { return window.pageYOffset; } : - function () { return document.documentElement.scrollTop; }; - - /** - * A cross-browser window.scrollX. - * - * @name Phaser.DOM.scrollX - * @property {number} scrollX - * @readonly - * @protected - */ - Object.defineProperty(Phaser.DOM, "scrollX", { - get: scrollX - }); - - /** - * A cross-browser window.scrollY. - * - * @name Phaser.DOM.scrollY - * @property {number} scrollY - * @readonly - * @protected - */ - Object.defineProperty(Phaser.DOM, "scrollY", { - get: scrollY - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "x", { - get: scrollX - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "y", { - get: scrollY - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "x", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "y", { - value: 0 - }); - - var treatAsDesktop = device.desktop && - (document.documentElement.clientWidth <= window.innerWidth) && - (document.documentElement.clientHeight <= window.innerHeight); - - // Desktop browsers align the layout viewport with the visual viewport. - // This differs from mobile browsers with their zooming design. - // Ref. http://quirksmode.org/mobile/tableViewport.html - if (treatAsDesktop) - { - - // PST- When scrollbars are not included this causes upstream issues in ScaleManager. - // So reverted to the old "include scrollbars." - var clientWidth = function () { - return Math.max(window.innerWidth, document.documentElement.clientWidth); - }; - var clientHeight = function () { - return Math.max(window.innerHeight, document.documentElement.clientHeight); - }; - - // Interested in area sans-scrollbar - Object.defineProperty(Phaser.DOM.visualBounds, "width", { - get: clientWidth - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "height", { - get: clientHeight - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "width", { - get: clientWidth - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "height", { - get: clientHeight - }); - - } else { - - Object.defineProperty(Phaser.DOM.visualBounds, "width", { - get: function () { - return window.innerWidth; - } - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "height", { - get: function () { - return window.innerHeight; - } - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "width", { - - get: function () { - var a = document.documentElement.clientWidth; - var b = window.innerWidth; - - return a < b ? b : a; // max - } - - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "height", { - - get: function () { - var a = document.documentElement.clientHeight; - var b = window.innerHeight; - - return a < b ? b : a; // max - } - - }); - - } - - // For Phaser.DOM.documentBounds - // Ref. http://www.quirksmode.org/mobile/tableViewport_desktop.html - - Object.defineProperty(Phaser.DOM.documentBounds, "x", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "y", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "width", { - - get: function () { - var d = document.documentElement; - return Math.max(d.clientWidth, d.offsetWidth, d.scrollWidth); - } - - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "height", { - - get: function () { - var d = document.documentElement; - return Math.max(d.clientHeight, d.offsetHeight, d.scrollHeight); - } - - }); - -}, null, true); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * The Canvas class handles everything related to creating the `canvas` DOM tag that Phaser will use, * including styles, offset and aspect ratio. @@ -48007,7 +44271,7 @@ Phaser.Canvas = { * * @method Phaser.Canvas.setBackgroundColor * @param {HTMLCanvasElement} canvas - The canvas to set the background color on. - * @param {string} [color] - The color to set. Can be in the format 'rgb(r,g,b)', or '#RRGGBB' or any valid CSS color. + * @param {string} [color='rgb(0,0,0)'] - The color to set. Can be in the format 'rgb(r,g,b)', or '#RRGGBB' or any valid CSS color. * @return {HTMLCanvasElement} Returns the source canvas. */ setBackgroundColor: function (canvas, color) { @@ -48161,7 +44425,27 @@ Phaser.Canvas = { */ setSmoothingEnabled: function (context, value) { - var vendor = [ 'i', 'mozI', 'oI', 'webkitI', 'msI' ]; + var s = Phaser.Canvas.getSmoothingPrefix(context); + + if (s) + { + context[s] = value; + } + + return context; + + }, + + /** + * Gets the Smoothing Enabled vendor prefix being used on the given context, or null if not set. + * + * @method Phaser.Canvas.getSmoothingPrefix + * @param {CanvasRenderingContext2D} context - The context to enable or disable the image smoothing on. + * @return {string|null} Returns the smoothingEnabled vendor prefix, or null if not set on the context. + */ + getSmoothingPrefix: function (context) { + + var vendor = [ 'i', 'webkitI', 'msI', 'mozI', 'oI' ]; for (var prefix in vendor) { @@ -48169,12 +44453,11 @@ Phaser.Canvas = { if (s in context) { - context[s] = value; - return context; + return s; } } - return context; + return null; }, @@ -48187,7 +44470,12 @@ Phaser.Canvas = { */ getSmoothingEnabled: function (context) { - return (context['imageSmoothingEnabled'] || context['mozImageSmoothingEnabled'] || context['oImageSmoothingEnabled'] || context['webkitImageSmoothingEnabled'] || context['msImageSmoothingEnabled']); + var s = Phaser.Canvas.getSmoothingPrefix(context); + + if (s) + { + return context[s]; + } }, @@ -48201,12 +44489,13 @@ Phaser.Canvas = { */ setImageRenderingCrisp: function (canvas) { - canvas.style['image-rendering'] = 'optimizeSpeed'; - canvas.style['image-rendering'] = 'crisp-edges'; - canvas.style['image-rendering'] = '-moz-crisp-edges'; - canvas.style['image-rendering'] = '-webkit-optimize-contrast'; - canvas.style['image-rendering'] = 'optimize-contrast'; - canvas.style['image-rendering'] = 'pixelated'; + var types = [ 'optimizeSpeed', 'crisp-edges', '-moz-crisp-edges', '-webkit-optimize-contrast', 'optimize-contrast', 'pixelated' ]; + + for (var i = 0; i < types.length; i++) + { + canvas.style['image-rendering'] = types[i]; + } + canvas.style.msInterpolationMode = 'nearest-neighbor'; return canvas; @@ -48430,66 +44719,83 @@ Phaser.Math = { * Two number are fuzzyEqual if their difference is less than epsilon. * * @method Phaser.Math#fuzzyEqual - * @param {number} a - * @param {number} b - * @param {number} [epsilon=(small value)] + * @param {number} a - The first number to compare. + * @param {number} b - The second number to compare. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) * @return {boolean} True if |a-b|b+epsilon */ fuzzyGreaterThan: function (a, b, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return a > b - epsilon; + }, /** + * Applies a fuzzy ceil to the given value. + * * @method Phaser.Math#fuzzyCeil - * - * @param {number} val - * @param {number} [epsilon=(small value)] - * @return {boolean} ceiling(val-epsilon) + * @param {number} val - The value to ceil. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) + * @return {number} ceiling(val-epsilon) */ fuzzyCeil: function (val, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return Math.ceil(val - epsilon); + }, /** + * Applies a fuzzy floor to the given value. + * * @method Phaser.Math#fuzzyFloor - * - * @param {number} val - * @param {number} [epsilon=(small value)] - * @return {boolean} floor(val-epsilon) + * @param {number} val - The value to floor. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) + * @return {number} floor(val+epsilon) */ fuzzyFloor: function (val, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return Math.floor(val + epsilon); + }, /** @@ -48502,12 +44808,14 @@ Phaser.Math = { average: function () { var sum = 0; + var len = arguments.length; - for (var i = 0; i < arguments.length; i++) { + for (var i = 0; i < len; i++) + { sum += (+arguments[i]); } - return sum / arguments.length; + return sum / len; }, @@ -48549,7 +44857,7 @@ Phaser.Math = { /** * Snap a value to nearest grid slice, using floor. * - * Example: if you have an interval gap of 5 and a position of 12... you will snap to 10. + * Example: if you have an interval gap of 5 and a position of 12... you will snap to 10. * As will 14 snap to 10... but 16 will snap to 15. * * @method Phaser.Math#snapToFloor @@ -49450,7 +45758,7 @@ Phaser.Math.radToDeg = function radToDeg (radians) { * * @class Phaser.RandomDataGenerator * @constructor -* @param {any[]} [seeds] - An array of values to use as the seed. +* @param {any[]|string} [seeds] - An array of values to use as the seed, or a generator state (from {#state}). */ Phaser.RandomDataGenerator = function (seeds) { @@ -49480,7 +45788,14 @@ Phaser.RandomDataGenerator = function (seeds) { */ this.s2 = 0; - this.sow(seeds); + if (typeof seeds === 'string') + { + this.state(seeds); + } + else + { + this.sow(seeds); + } }; @@ -49730,6 +46045,39 @@ Phaser.RandomDataGenerator.prototype = { return this.integerInRange(-180, 180); + }, + + /** + * Gets or Sets the state of the generator. This allows you to retain the values + * that the generator is using between games, i.e. in a game save file. + * + * To seed this generator with a previously saved state you can pass it as the + * `seed` value in your game config, or call this method directly after Phaser has booted. + * + * Call this method with no parameters to return the current state. + * + * If providing a state it should match the same format that this method + * returns, which is a string with a header `!rnd` followed by the `c`, + * `s0`, `s1` and `s2` values respectively, each comma-delimited. + * + * @method Phaser.RandomDataGenerator#state + * @param {string} [state] - Generator state to be set. + * @return {string} The current state of the generator. + */ + state: function (state) { + + if (typeof state === 'string' && state.match(/^!rnd/)) + { + state = state.split(','); + + this.c = parseFloat(state[1]); + this.s0 = parseFloat(state[2]); + this.s1 = parseFloat(state[3]); + this.s2 = parseFloat(state[4]); + } + + return ['!rnd', this.c, this.s0, this.s1, this.s2].join(','); + } }; @@ -52687,6 +49035,25 @@ Phaser.Easing.Power4 = Phaser.Easing.Quintic.Out; * * To create a general timed event, use the master {@link Phaser.Timer} accessible through {@link Phaser.Time.events events}. * +* There are different *types* of time in Phaser: +* +* - ***Game time*** always runs at the speed of time in real life. +* +* Unlike wall-clock time, *game time stops when Phaser is paused*. +* +* Game time is used for {@link Phaser.Timer timer events}. +* +* - ***Physics time*** represents the amount of time given to physics calculations. +* +* *When {@link #slowMotion} is in effect physics time runs slower than game time.* +* Like game time, physics time stops when Phaser is paused. +* +* Physics time is used for physics calculations and {@link Phaser.Tween tweens}. +* +* - {@link https://en.wikipedia.org/wiki/Wall-clock_time ***Wall-clock time***} represents the duration between two events in real life time. +* +* This time is independent of Phaser and always progresses, regardless of if Phaser is paused. +* * @class Phaser.Time * @constructor * @param {Phaser.Game} game A reference to the currently running game. @@ -52765,35 +49132,44 @@ Phaser.Time = function (game) { * * @property {number} physicsElapsed */ - this.physicsElapsed = 0; + this.physicsElapsed = 1 / 60; /** * The physics update delta, in milliseconds - equivalent to `physicsElapsed * 1000`. * * @property {number} physicsElapsedMS */ - this.physicsElapsedMS = 0; + this.physicsElapsedMS = (1 / 60) * 1000; + + /** + * The desiredFps multiplier as used by Game.update. + * @property {integer} desiredFpsMult + * @protected + */ + this.desiredFpsMult = 1.0 / 60; /** * The desired frame rate of the game. * * This is used is used to calculate the physic/logic multiplier and how to apply catch-up logic updates. * - * @property {number} desiredFps + * @property {number} _desiredFps + * @private * @default */ - this.desiredFps = 60; + this._desiredFps = 60; /** * The suggested frame rate for your game, based on an averaged real frame rate. * This value is only populated if `Time.advancedTiming` is enabled. * - * _Note:_ This is not available until after a few frames have passed; use it after a few seconds (eg. after the menus) + * _Note:_ This is not available until after a few frames have passed; until then + * it's set to the same value as desiredFps. * * @property {number} suggestedFps * @default */ - this.suggestedFps = null; + this.suggestedFps = this.desiredFps; /** * Scaling factor to make the game move smoothly in slow motion @@ -53003,6 +49379,24 @@ Phaser.Time.prototype = { }, + /** + * Refreshes the Time.time and Time.elapsedMS properties from the system clock. + * + * @method Phaser.Time#refresh + */ + refresh: function () { + + // Set to the old Date.now value + var previousDateNow = this.time; + + // this.time always holds a Date.now value + this.time = Date.now(); + + // Adjust accordingly. + this.elapsedMS = this.time - previousDateNow; + + }, + /** * Updates the game clock and if enabled the advanced timing data. This is called automatically by Phaser.Game. * @@ -53012,13 +49406,32 @@ Phaser.Time.prototype = { */ update: function (time) { + // Set to the old Date.now value + var previousDateNow = this.time; + + // this.time always holds a Date.now value + this.time = Date.now(); + + // Adjust accordingly. + this.elapsedMS = this.time - previousDateNow; + + // 'now' is currently still holding the time of the last call, move it into prevTime + this.prevTime = this.now; + + // update 'now' to hold the current time + // this.now may hold the RAF high resolution time value if RAF is available (otherwise it also holds Date.now) + this.now = time; + + // elapsed time between previous call and now - this could be a high resolution value + this.elapsed = this.now - this.prevTime; + if (this.game.raf._isSetTimeOut) { - this.updateSetTimeout(time); - } - else - { - this.updateRAF(time); + // time to call this function again in ms in case we're using timers instead of RequestAnimationFrame to update the game + this.timeToCall = Math.floor(Math.max(0, (1000.0 / this._desiredFps) - (this.timeExpected - time))); + + // time when the next call is expected if using timers + this.timeExpected = time + this.timeToCall; } if (this.advancedTiming) @@ -53040,82 +49453,6 @@ Phaser.Time.prototype = { }, - /** - * setTimeOut specific time update handler. - * Called automatically by Time.update. - * - * @method Phaser.Time#updateSetTimeout - * @private - * @param {number} time - The current relative timestamp; see {@link Phaser.Time#now now}. - */ - updateSetTimeout: function (time) { - - // Set to the old Date.now value - var previousDateNow = this.time; - - // With SetTimeout the time value is always the same as Date.now, so no need to get it again - this.time = time; - - // Adjust accordingly. - this.elapsedMS = this.time - previousDateNow; - - // 'now' is currently still holding the time of the last call, move it into prevTime - this.prevTime = this.now; - - // update 'now' to hold the current time - this.now = time; - - // elapsed time between previous call and now - this.elapsed = this.now - this.prevTime; - - // time to call this function again in ms in case we're using timers instead of RequestAnimationFrame to update the game - this.timeToCall = Math.floor(Math.max(0, (1000.0 / this.desiredFps) - (this.timeCallExpected - time))); - - // time when the next call is expected if using timers - this.timeCallExpected = time + this.timeToCall; - - // Set the physics elapsed time... this will always be 1 / this.desiredFps because we're using fixed time steps in game.update now - this.physicsElapsed = 1 / this.desiredFps; - - this.physicsElapsedMS = this.physicsElapsed * 1000; - - }, - - /** - * raf specific time update handler. - * Called automatically by Time.update. - * - * @method Phaser.Time#updateRAF - * @private - * @param {number} time - The current relative timestamp; see {@link Phaser.Time#now now}. - */ - updateRAF: function (time) { - - // Set to the old Date.now value - var previousDateNow = this.time; - - // this.time always holds Date.now, this.now may hold the RAF high resolution time value if RAF is available (otherwise it also holds Date.now) - this.time = Date.now(); - - // Adjust accordingly. - this.elapsedMS = this.time - previousDateNow; - - // 'now' is currently still holding the time of the last call, move it into prevTime - this.prevTime = this.now; - - // update 'now' to hold the current time - this.now = time; - - // elapsed time between previous call and now - this.elapsed = this.now - this.prevTime; - - // Set the physics elapsed time... this will always be 1 / this.desiredFps because we're using fixed time steps in game.update now - this.physicsElapsed = 1 / this.desiredFps; - - this.physicsElapsedMS = this.physicsElapsed * 1000; - - }, - /** * Handles the updating of the Phaser.Timers (if any) * Called automatically by Time.update. @@ -53159,7 +49496,7 @@ Phaser.Time.prototype = { this._elapsedAccumulator += this.elapsed; // occasionally recalculate the suggestedFps based on the accumulated elapsed time - if (this._frameCount >= this.desiredFps * 2) + if (this._frameCount >= this._desiredFps * 2) { // this formula calculates suggestedFps in multiples of 5 fps this.suggestedFps = Math.floor(200 / (this._elapsedAccumulator / this._frameCount)) * 5; @@ -53274,6 +49611,38 @@ Phaser.Time.prototype = { }; +/** +* The desired frame rate of the game. +* +* This is used is used to calculate the physic / logic multiplier and how to apply catch-up logic updates. +* +* @name Phaser.Time#desiredFps +* @property {integer} desiredFps - The desired frame rate of the game. Defaults to 60. +*/ +Object.defineProperty(Phaser.Time.prototype, "desiredFps", { + + get: function () { + + return this._desiredFps; + + }, + + set: function (value) { + + this._desiredFps = value; + + // Set the physics elapsed time... this will always be 1 / this.desiredFps + // because we're using fixed time steps in game.update + this.physicsElapsed = 1 / value; + + this.physicsElapsedMS = this.physicsElapsed * 1000; + + this.desiredFpsMult = 1.0 / value; + + } + +}); + Phaser.Time.prototype.constructor = Phaser.Time; /** @@ -53283,13 +49652,13 @@ Phaser.Time.prototype.constructor = Phaser.Time; */ /** -* A Timer is a way to create small re-usable (or disposable) objects that wait for a specific moment in time, -* and then run the specified callbacks. +* A Timer is a way to create and manage {@link Phaser.TimerEvent timer events} that wait for a specific duration and then run a callback. +* Many different timer events, with individual delays, can be added to the same Timer. * -* You can add many events to a Timer, each with their own delays. A Timer uses milliseconds as its unit of time (there are 1000 ms in 1 second). -* So a delay to 250 would fire the event every quarter of a second. +* All Timer delays are in milliseconds (there are 1000 ms in 1 second); so a delay value of 250 represents a quarter of a second. * -* Timers are based on real-world (not physics) time, adjusted for game pause durations. +* Timers are based on real life time, adjusted for game pause durations. +* That is, *timer events are based on elapsed {@link Phaser.Time game time}* and do *not* take physics time or slow motion into account. * * @class Phaser.Timer * @constructor @@ -53468,10 +49837,10 @@ Phaser.Timer.prototype = { * * @method Phaser.Timer#create * @private - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. This value should be an integer, not a float. Math.round() is applied to it by this method. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. * @param {boolean} loop - Should the event loop or not? * @param {number} repeatCount - The number of times the event will repeat. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {any[]} arguments - The values to be sent to your callback function when it is called. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. @@ -53512,15 +49881,15 @@ Phaser.Timer.prototype = { * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#add - * @param {number} delay - The number of milliseconds that should elapse before the callback is invoked. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ add: function (delay, callback, callbackContext) { - return this.create(delay, false, 0, callback, callbackContext, Array.prototype.splice.call(arguments, 3)); + return this.create(delay, false, 0, callback, callbackContext, Array.prototype.slice.call(arguments, 3)); }, @@ -53528,21 +49897,22 @@ Phaser.Timer.prototype = { * Adds a new TimerEvent that will always play through once and then repeat for the given number of iterations. * * The event will fire after the given amount of `delay` in milliseconds has passed, once the Timer has started running. - * The delay is in relation to when the Timer starts, not the time it was added. If the Timer is already running the delay will be calculated based on the timers current time. + * The delay is in relation to when the Timer starts, not the time it was added. + * If the Timer is already running the delay will be calculated based on the timers current time. * * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#repeat - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. * @param {number} repeatCount - The number of times the event will repeat once is has finished playback. A repeatCount of 1 means it will repeat itself once, playing the event twice in total. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ repeat: function (delay, repeatCount, callback, callbackContext) { - return this.create(delay, false, repeatCount, callback, callbackContext, Array.prototype.splice.call(arguments, 4)); + return this.create(delay, false, repeatCount, callback, callbackContext, Array.prototype.slice.call(arguments, 4)); }, @@ -53555,22 +49925,22 @@ Phaser.Timer.prototype = { * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#loop - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ loop: function (delay, callback, callbackContext) { - return this.create(delay, true, 0, callback, callbackContext, Array.prototype.splice.call(arguments, 3)); + return this.create(delay, true, 0, callback, callbackContext, Array.prototype.slice.call(arguments, 3)); }, /** * Starts this Timer running. * @method Phaser.Timer#start - * @param {number} [delay=0] - The number of milliseconds that should elapse before the Timer will start. + * @param {integer} [delay=0] - The number of milliseconds, in {@link Phaser.Time game time}, that should elapse before the Timer will start. */ start: function (delay) { @@ -54832,7 +51202,7 @@ Phaser.Animation = function (game, parent, name, frameData, frames, frameRate, l this.onUpdate = null; /** - * @property {Phaser.Signal} onComplete - This event is dispatched when this Animation completes playback. If the animation is set to loop this is never fired, listen for onAnimationLoop instead. + * @property {Phaser.Signal} onComplete - This event is dispatched when this Animation completes playback. If the animation is set to loop this is never fired, listen for onLoop instead. */ this.onComplete = new Phaser.Signal(); @@ -55458,7 +51828,7 @@ Object.defineProperty(Phaser.Animation.prototype, 'enableUpdate', { * @param {number} start - The number to start sequentially counting from. If your frames are named 'explosion_0001' to 'explosion_0034' the start is 1. * @param {number} stop - The number to count to. If your frames are named 'explosion_0001' to 'explosion_0034' the stop value is 34. * @param {string} [suffix=''] - The end of the filename. If the filename was 'explosion_0001-large' the prefix would be '-large'. -* @param {number} [zeroPad=0] - The number of zeroes to pad the min and max values with. If your frames are named 'explosion_0001' to 'explosion_0034' then the zeroPad is 4. +* @param {number} [zeroPad=0] - The number of zeros to pad the min and max values with. If your frames are named 'explosion_0001' to 'explosion_0034' then the zeroPad is 4. * @return {string[]} An array of framenames. */ Phaser.Animation.generateFrameNames = function (prefix, start, stop, suffix, zeroPad) { @@ -56155,6 +52525,62 @@ Phaser.AnimationParser = { }, + /** + * Parse the JSON data and extract the animation frame data from it. + * + * @method Phaser.AnimationParser.JSONDataPyxel + * @param {Phaser.Game} game - A reference to the currently running game. + * @param {object} json - The JSON data from the Texture Atlas. Must be in Pyxel JSON format. + * @return {Phaser.FrameData} A FrameData object containing the parsed frames. + */ + JSONDataPyxel: function (game, json) { + + // Malformed? There are a few keys to check here. + var signature = ['layers', 'tilewidth','tileheight','tileswide', 'tileshigh']; + + signature.forEach( function(key) { + if (!json[key]) + { + console.warn("Phaser.AnimationParser.JSONDataPyxel: Invalid Pyxel Tilemap JSON given, missing '" + key + "' key."); + console.log(json); + return; + } + }); + + // For this purpose, I only care about parsing tilemaps with a single layer. + if(json['layers'].length != 1) { + console.warn("Phaser.AnimationParser.JSONDataPyxel: Too many layers, this parser only supports flat Tilemaps."); + console.log(json); + return; + } + + var data = new Phaser.FrameData(); + + var tileheight = json['tileheight']; + var tilewidth = json['tilewidth']; + + var frames = json['layers'][0]['tiles']; + var newFrame; + + for (var i = 0; i < frames.length; i++) + { + newFrame = data.addFrame(new Phaser.Frame( + i, + frames[i].x, + frames[i].y, + tilewidth, + tileheight, + "frame_" + i // No names are included in pyxel tilemap data. + )); + + // No trim data is included. + newFrame.setTrim(false); + } + + return data; + + }, + /** * Parse the JSON data and extract the animation frame data from it. * @@ -56248,7 +52674,7 @@ Phaser.AnimationParser = { for (var i = 0; i < frames.length; i++) { frame = frames[i].attributes; - + name = frame.name.value; x = parseInt(frame.x.value, 10); y = parseInt(frame.y.value, 10); @@ -56289,12 +52715,12 @@ Phaser.AnimationParser = { /** * Phaser has one single cache in which it stores all assets. -* +* * The cache is split up into sections, such as images, sounds, video, json, etc. All assets are stored using * a unique string-based key as their identifier. Assets stored in different areas of the cache can have the * same key, for example 'playerWalking' could be used as the key for both a sprite sheet and an audio file, * because they are unique data types. -* +* * The cache is automatically populated by the Phaser.Loader. When you use the loader to pull in external assets * such as images they are automatically placed into their respective cache. Most common Game Objects, such as * Sprites and Videos automatically query the cache to extract the assets they need on instantiation. @@ -56722,6 +53148,7 @@ Phaser.Cache.prototype = { * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. * @param {object} data - Extra font data. * @param {object} atlasData - Texture atlas frames data. + * @param {string} [atlasType='xml'] - The format of the texture atlas ( 'json' or 'xml' ). * @param {number} [xSpacing=0] - If you'd like to add additional horizontal spacing between the characters then set the pixel value here. * @param {number} [ySpacing=0] - If you'd like to add additional vertical spacing between the lines then set the pixel value here. */ @@ -56733,7 +53160,10 @@ Phaser.Cache.prototype = { font: null, base: new PIXI.BaseTexture(data) }; - + + if (xSpacing === undefined) { xSpacing = 0; } + if (ySpacing === undefined) { ySpacing = 0; } + if (atlasType === 'json') { obj.font = Phaser.LoaderParser.jsonBitmapFont(atlasData, obj.base, xSpacing, ySpacing); @@ -56887,6 +53317,10 @@ Phaser.Cache.prototype = { { obj.frameData = Phaser.AnimationParser.XMLData(this.game, atlasData, key); } + else if (format === Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL) + { + obj.frameData = Phaser.AnimationParser.JSONDataPyxel(this.game, atlasData, key); + } else { // Let's just work it out from the frames array @@ -57269,7 +53703,7 @@ Phaser.Cache.prototype = { /** * Get an item from a cache based on the given key and property. - * + * * This method is mostly used internally by other Cache methods such as `getImage` but is exposed * publicly for your own use as well. * @@ -57300,16 +53734,16 @@ Phaser.Cache.prototype = { return this._cacheMap[cache][key][property]; } } - + return null; }, /** * Gets a Canvas object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getCanvas @@ -57324,13 +53758,13 @@ Phaser.Cache.prototype = { /** * Gets a Image object from the cache. This returns a DOM Image object, not a Phaser.Image object. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * Only the Image cache is searched, which covers images loaded via Loader.image, Sprite Sheets and Texture Atlases. - * + * * If you need the image used by a bitmap font or similar then please use those respective 'get' methods. * * @method Phaser.Cache#getImage @@ -57367,7 +53801,7 @@ Phaser.Cache.prototype = { /** * Get a single texture frame by key. - * + * * You'd only do this to get the default Frame created for a non-atlas / spritesheet image. * * @method Phaser.Cache#getTextureFrame @@ -57382,9 +53816,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.Sound object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getSound @@ -57399,9 +53833,9 @@ Phaser.Cache.prototype = { /** * Gets a raw Sound data object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getSoundData @@ -57416,9 +53850,9 @@ Phaser.Cache.prototype = { /** * Gets a Text object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getText @@ -57433,11 +53867,11 @@ Phaser.Cache.prototype = { /** * Gets a Physics Data object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * You can get either the entire data set, a single object or a single fixture of an object from it. * * @method Phaser.Cache#getPhysicsData @@ -57495,9 +53929,9 @@ Phaser.Cache.prototype = { /** * Gets a raw Tilemap data object from the cache. This will be in either CSV or JSON format. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getTilemapData @@ -57512,9 +53946,9 @@ Phaser.Cache.prototype = { /** * Gets a binary object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBinary @@ -57529,9 +53963,9 @@ Phaser.Cache.prototype = { /** * Gets a BitmapData object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBitmapData @@ -57546,9 +53980,9 @@ Phaser.Cache.prototype = { /** * Gets a Bitmap Font object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBitmapFont @@ -57563,11 +53997,11 @@ Phaser.Cache.prototype = { /** * Gets a JSON object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * You can either return the object by reference (the default), or return a clone * of it by setting the `clone` argument to `true`. * @@ -57600,9 +54034,9 @@ Phaser.Cache.prototype = { /** * Gets an XML object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getXML @@ -57617,9 +54051,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.Video object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getVideo @@ -57634,9 +54068,9 @@ Phaser.Cache.prototype = { /** * Gets a fragment shader object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getShader @@ -57651,9 +54085,9 @@ Phaser.Cache.prototype = { /** * Gets a RenderTexture object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getRenderTexture @@ -57727,9 +54161,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.FrameData object from the Image Cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getFrameData @@ -57863,7 +54297,7 @@ Phaser.Cache.prototype = { /** * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * + * * If the texture isn't found in the cache, then it searches the Phaser Image Cache. * * @method Phaser.Cache#getPixiBaseTexture @@ -57967,7 +54401,7 @@ Phaser.Cache.prototype = { /** * Removes an image from the cache. - * + * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere @@ -58378,18 +54812,18 @@ Phaser.Loader = function (game) { /** * The value of `path`, if set, is placed before any _relative_ file path given. For example: - * + * * `load.path = "images/sprites/"; * load.image("ball", "ball.png"); * load.image("tree", "level1/oaktree.png"); * load.image("boom", "http://server.com/explode.png");` * - * Would load the `ball` file from `images/sprites/ball.png` and the tree from - * `images/sprites/level1/oaktree.png` but the file `boom` would load from the URL + * Would load the `ball` file from `images/sprites/ball.png` and the tree from + * `images/sprites/level1/oaktree.png` but the file `boom` would load from the URL * given as it's an absolute URL. * * Please note that the path is added before the filename but *after* the baseURL (if set.) - * + * * The string _must_ end with a "/". * * @property {string} path @@ -58440,11 +54874,11 @@ Phaser.Loader = function (game) { * progress, file key, success?, total loaded files, total files * * Where progress is a number between 1 and 100 (inclusive) representing the percentage of the load. - * + * * @property {Phaser.Signal} onFileComplete */ this.onFileComplete = new Phaser.Signal(); - + /** * This event is dispatched when a file (or pack) errors as a result of the load request. * @@ -58551,7 +54985,7 @@ Phaser.Loader = function (game) { * @private */ this._totalFileCount = 0; - + /** * Total packs loaded - adjusted just prior to `onPackComplete`. * @property {integer} _loadedPackCount @@ -58598,6 +55032,12 @@ Phaser.Loader.PHYSICS_LIME_CORONA_JSON = 3; */ Phaser.Loader.PHYSICS_PHASER_JSON = 4; +/** +* @constant +* @type {number} +*/ +Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL = 5; + Phaser.Loader.prototype = { /** @@ -58786,14 +55226,14 @@ Phaser.Loader.prototype = { * @param {string} key - The unique Cache ID key of this resource. * @param {string} [url] - The URL the asset will be loaded from. * @param {object} [properties=(none)] - Any additional properties needed to load the file. These are added directly to the added file object and overwrite any defaults. - * @param {boolean} [overwrite=false] - If true then this will overwrite a file asset of the same type/key. Otherwise it will will only add a new asset. If overwrite is true, and the asset is already being loaded (or has been loaded), then it is appended instead. + * @param {boolean} [overwrite=false] - If true then this will overwrite a file asset of the same type/key. Otherwise it will only add a new asset. If overwrite is true, and the asset is already being loaded (or has been loaded), then it is appended instead. * @param {string} [extension] - If no URL is given the Loader will sometimes auto-generate the URL based on the key, using this as the extension. * @return {Phaser.Loader} This instance of the Phaser Loader. */ addToFileList: function (type, key, url, properties, overwrite, extension) { if (overwrite === undefined) { overwrite = false; } - + if (key === undefined || key === '') { console.warn("Phaser.Loader: Invalid or no key given of type " + type); @@ -58834,7 +55274,7 @@ Phaser.Loader.prototype = { } var fileIndex = this.getAssetIndex(type, key); - + if (overwrite && fileIndex > -1) { var currentFile = this._fileList[fileIndex]; @@ -58882,10 +55322,10 @@ Phaser.Loader.prototype = { * Please see the example 'loader/asset pack' in the Phaser Examples repository. * * Packs are always put before the first non-pack file that is not loaded / loading. - * + * * This means that all packs added before any loading has started are added to the front * of the file queue, in the order added. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * The URL of the packfile can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. @@ -58930,13 +55370,13 @@ Phaser.Loader.prototype = { { data = JSON.parse(data); } - + pack.data = data || {}; // Already consider 'loaded' pack.loaded = true; } - + // Add before first non-pack/no-loaded ~ last pack from start prior to loading // (Read one past for splice-to-end) for (var i = 0; i < this._fileList.length + 1; i++) @@ -58957,17 +55397,17 @@ Phaser.Loader.prototype = { /** * Adds an Image to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * Phaser can load all common image types: png, jpg, gif and any other format the browser can natively handle. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the image via `Cache.getImage(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -58988,17 +55428,17 @@ Phaser.Loader.prototype = { * Adds an array of images to the current load queue. * * It works by passing each element of the array to the Loader.image method. - * + * * The files are **not** loaded immediately after calling this method. The files are added to the queue ready to be loaded when the loader starts. - * + * * Phaser can load all common image types: png, jpg, gif and any other format the browser can natively handle. - * + * * The keys must be unique Strings. They are used to add the files to the Phaser.Cache upon successful load. * * Retrieve the images via `Cache.getImage(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -59031,15 +55471,15 @@ Phaser.Loader.prototype = { /** * Adds a Text file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getText(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.txt". It will always add `.txt` as the extension. * If you do not desire this action then provide a URL. @@ -59058,16 +55498,16 @@ Phaser.Loader.prototype = { /** * Adds a JSON file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getJSON(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.json". It will always add `.json` as the extension. * If you do not desire this action then provide a URL. @@ -59086,15 +55526,15 @@ Phaser.Loader.prototype = { /** * Adds a fragment shader file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getShader(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "blur" * and no URL is given then the Loader will set the URL to be "blur.frag". It will always add `.frag` as the extension. * If you do not desire this action then provide a URL. @@ -59113,15 +55553,15 @@ Phaser.Loader.prototype = { /** * Adds an XML file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getXML(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.xml". It will always add `.xml` as the extension. * If you do not desire this action then provide a URL. @@ -59140,13 +55580,13 @@ Phaser.Loader.prototype = { /** * Adds a JavaScript file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.js". It will always add `.js` as the extension. * If you do not desire this action then provide a URL. @@ -59175,15 +55615,15 @@ Phaser.Loader.prototype = { /** * Adds a binary file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getBinary(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.bin". It will always add `.bin` as the extension. * If you do not desire this action then provide a URL. @@ -59213,22 +55653,22 @@ Phaser.Loader.prototype = { /** * Adds a Sprite Sheet to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. * * To clarify the terminology that Phaser uses: A Sprite Sheet is an image containing frames, usually of an animation, that are all equal - * dimensions and often in sequence. For example if the frame size is 32x32 then every frame in the sprite sheet will be that size. + * dimensions and often in sequence. For example if the frame size is 32x32 then every frame in the sprite sheet will be that size. * Sometimes (outside of Phaser) the term "sprite sheet" is used to refer to a texture atlas. * A Texture Atlas works by packing together images as best it can, using whatever frame sizes it likes, often with cropping and trimming * the frames in the process. Software such as Texture Packer, Flash CC or Shoebox all generate texture atlases, not sprite sheets. * If you've got an atlas then use `Loader.atlas` instead. - * + * * The key must be a unique String. It is used to add the image to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getImage(key)`. Sprite sheets, being image based, live in the same Cache as all other Images. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -59255,13 +55695,13 @@ Phaser.Loader.prototype = { /** * Adds an audio file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getSound(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * Mobile warning: There are some mobile devices (certain iPad 2 and iPad Mini revisions) that cannot play 48000 Hz audio. @@ -59298,17 +55738,17 @@ Phaser.Loader.prototype = { /** * Adds an audio sprite file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Audio Sprites are a combination of audio files and a JSON configuration. - * + * * The JSON follows the format of that created by https://github.com/tonistiigi/audiosprite - * + * * Retrieve the file via `Cache.getSoundData(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * @method Phaser.Loader#audiosprite @@ -59358,13 +55798,13 @@ Phaser.Loader.prototype = { /** * Adds a video file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getVideo(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * You don't need to preload a video in order to play it in your game. See `Video.createVideoFromURL` for details. @@ -59416,20 +55856,20 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `data` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If a URL is provided the file is **not** loaded immediately after calling this method, but is added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getTilemapData(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified and no data is given then the Loader will take the key and create a filename from that. * For example if the key is "level1" and no URL or data is given then the Loader will set the URL to be "level1.json". * If you set the format to be Tilemap.CSV it will set the URL to be "level1.csv" instead. - * + * * If you do not desire this action then provide a URL or data object. * * @method Phaser.Loader#tilemap @@ -59491,24 +55931,24 @@ Phaser.Loader.prototype = { * Adds a physics data file to the current load queue. * * The data must be in `Lime + Corona` JSON format. [Physics Editor](https://www.codeandweb.com) by code'n'web exports in this format natively. - * + * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `data` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If a URL is provided the file is **not** loaded immediately after calling this method, but is added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getJSON(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified and no data is given then the Loader will take the key and create a filename from that. * For example if the key is "alien" and no URL or data is given then the Loader will set the URL to be "alien.json". * It will always use `.json` as the extension. - * + * * If you do not desire this action then provide a URL or data object. * * @method Phaser.Loader#physics @@ -59550,7 +55990,7 @@ Phaser.Loader.prototype = { /** * Adds Bitmap Font files to the current load queue. - * + * * To create the Bitmap Font files you can use: * * BMFont (Windows, free): http://www.angelcode.com/products/bmfont/ @@ -59560,27 +56000,27 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to an xml file. * Or you can pass in an XML object or String via the `xmlData` parameter. * If you pass a String the data is automatically run through `Loader.parseXML` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getBitmapFont(key)`. XML files are automatically parsed upon load. * If you need to control when the XML is parsed then use `Loader.text` instead and parse the XML file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "megaFont" and textureURL is null then the Loader will set the URL to be "megaFont.png". - * The same is true for the xmlURL. If xmlURL isn't specified and no xmlData has been provided then the Loader will - * set the xmlURL to be the key. For example if the key is "megaFont" the xmlURL will be set to "megaFont.xml". - * + * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will + * set the atlasURL to be the key. For example if the key is "megaFont" the atlasURL will be set to "megaFont.xml". + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#bitmapFont * @param {string} key - Unique asset key of the bitmap font. * @param {string} textureURL - URL of the Bitmap Font texture file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "megaFont" then the URL will be "megaFont.png". - * @param {string} atlasURL - URL of the Bitmap Font atlas file (xml/json). + * @param {string} atlasURL - URL of the Bitmap Font atlas file (xml/json). If undefined or `null` AND `atlasData` is null, the url will be set to `.xml`, i.e. if `key` was "megaFont" then the URL will be "megaFont.xml". * @param {object} atlasData - An optional Bitmap Font atlas in string form (stringified xml/json). * @param {number} [xSpacing=0] - If you'd like to add additional horizontal spacing between the characters then set the pixel value here. * @param {number} [ySpacing=0] - If you'd like to add additional vertical spacing between the lines then set the pixel value here. @@ -59595,6 +56035,12 @@ Phaser.Loader.prototype = { if (atlasURL === undefined) { atlasURL = null; } if (atlasData === undefined) { atlasData = null; } + + if (atlasURL === null && atlasData === null) + { + atlasURL = key + '.xml'; + } + if (xSpacing === undefined) { xSpacing = 0; } if (ySpacing === undefined) { ySpacing = 0; } @@ -59630,39 +56076,40 @@ Phaser.Loader.prototype = { } return this; + }, /** * Adds a Texture Atlas file to the current load queue. * * Unlike `Loader.atlasJSONHash` this call expects the atlas data to be in a JSON Array format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) * [Shoebox](http://renderhjs.net/shoebox/) - * + * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasJSONArray @@ -59682,33 +56129,33 @@ Phaser.Loader.prototype = { * Adds a Texture Atlas file to the current load queue. * * Unlike `Loader.atlas` this call expects the atlas data to be in a JSON Hash format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) * [Shoebox](http://renderhjs.net/shoebox/) - * + * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasJSONHash @@ -59728,7 +56175,7 @@ Phaser.Loader.prototype = { * Adds a Texture Atlas file to the current load queue. * * This call expects the atlas data to be in the Starling XML data format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) @@ -59736,25 +56183,25 @@ Phaser.Loader.prototype = { * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. - * + * * You can choose to either load the data externally, by providing a URL to an xml file. * Or you can pass in an XML object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `Loader.parseXML` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. XML files are automatically parsed upon load. * If you need to control when the XML is parsed then use `Loader.text` instead and parse the XML file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.xml". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasXML @@ -59792,21 +56239,21 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlas @@ -59912,7 +56359,7 @@ Phaser.Loader.prototype = { /** * Add a synchronization point to a specific file/asset in the load queue. * - * This has no effect on already loaded assets. + * This has no effect on already loaded assets. * * @method Phaser.Loader#addSyncPoint * @param {string} type - The type of resource to turn into a sync point (image, audio, xml, etc). @@ -60016,7 +56463,7 @@ Phaser.Loader.prototype = { for (var i = 0; i < this._flightQueue.length; i++) { var file = this._flightQueue[i]; - + if (file.loaded || file.error) { this._flightQueue.splice(i, 1); @@ -60096,7 +56543,7 @@ Phaser.Loader.prototype = { this._flightQueue.push(file); file.loading = true; this.onFileStart.dispatch(this.progress, file.key, file.url); - + this.loadFile(file); } } @@ -60299,7 +56746,8 @@ Phaser.Loader.prototype = { /** * Transforms the asset URL. - * The default implementation prepends the baseURL if the url doesn't being with http or // + * + * The default implementation prepends the baseURL if the url doesn't begin with http or // * * @method Phaser.Loader#transformUrl * @protected @@ -60314,7 +56762,7 @@ Phaser.Loader.prototype = { return false; } - if (url.substr(0, 4) === 'http' || url.substr(0, 2) === '//') + if (url.match(/^(?:blob:|data:|http:\/\/|https:\/\/|\/\/)/)) { return url; } @@ -60446,7 +56894,7 @@ Phaser.Loader.prototype = { { file.data.crossOrigin = this.crossOrigin; } - + file.data.onload = function () { if (file.data.onload) { @@ -60466,7 +56914,7 @@ Phaser.Loader.prototype = { }; file.data.src = this.transformUrl(file.url, file); - + // Image is immediately-available/cached if (file.data.complete && file.data.width && file.data.height) { @@ -60489,7 +56937,7 @@ Phaser.Loader.prototype = { file.data.name = file.key; file.data.controls = false; file.data.autoplay = false; - + var videoLoadEvent = function () { file.data.removeEventListener(file.loadEvent, videoLoadEvent, false); @@ -60505,7 +56953,7 @@ Phaser.Loader.prototype = { file.data.canplay = false; _this.fileError(file); }; - + file.data.addEventListener(file.loadEvent, videoLoadEvent, false); file.data.src = this.transformUrl(file.url, file); @@ -60535,7 +56983,7 @@ Phaser.Loader.prototype = { { file.data = new Audio(); file.data.name = file.key; - + var playThroughEvent = function () { file.data.removeEventListener('canplaythrough', playThroughEvent, false); file.data.onerror = null; @@ -60643,7 +57091,7 @@ Phaser.Loader.prototype = { /** * Starts the xhr loader - using XDomainRequest. * This should _only_ be used with IE 9. Phaser does not support IE 8 and XDR is deprecated in IE 10. - * + * * This is designed specifically to use with asset file processing. * * @method Phaser.Loader#xhrLoad @@ -60864,7 +57312,7 @@ Phaser.Loader.prototype = { switch (file.type) { case 'packfile': - + // Pack data must never be false-ish after it is fetched without error var data = JSON.parse(xhr.responseText); file.data = data || {}; @@ -60891,7 +57339,7 @@ Phaser.Loader.prototype = { // Load the JSON or XML before carrying on with the next file loadNext = false; - if (file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_HASH) + if (file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_HASH || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL) { this.xhrLoad(file, this.transformUrl(file.atlasURL, file), 'text', this.jsonLoadComplete); } @@ -60953,7 +57401,7 @@ Phaser.Loader.prototype = { throw new Error("Phaser.Loader. Unable to parse video file as Blob: " + file.key); } } - + this.cache.addVideo(file.key, file.url, file.data, file.asBlob); break; @@ -61973,6 +58421,7 @@ Phaser.Sound.prototype = { */ onEndedHandler: function () { + this._sound.onended = null; this.isPlaying = false; this.stop(); @@ -62994,7 +59443,15 @@ Phaser.SoundManager.prototype = { */ setTouchLock: function () { - this.game.input.touch.addTouchLockCallback(this.unlock, this); + if (this.game.device.iOSVersion > 8) + { + this.game.input.touch.addTouchLockCallback(this.unlock, this, true); + } + else + { + this.game.input.touch.addTouchLockCallback(this.unlock, this); + } + this.touchLocked = true; }, @@ -63555,6 +60012,2379 @@ Object.defineProperty(Phaser.SoundManager.prototype, "volume", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* @classdesc +* The ScaleManager object handles the the scaling, resizing, and alignment of the +* Game size and the game Display canvas. +* +* The Game size is the logical size of the game; the Display canvas has size as an HTML element. +* +* The calculations of these are heavily influenced by the bounding Parent size which is the computed +* dimensions of the Display canvas's Parent container/element - the _effective CSS rules of the +* canvas's Parent element play an important role_ in the operation of the ScaleManager. +* +* The Display canvas - or Game size, depending {@link #scaleMode} - is updated to best utilize the Parent size. +* When in Fullscreen mode or with {@link #parentIsWindow} the Parent size is that of the visual viewport (see {@link Phaser.ScaleManager#getParentBounds getParentBounds}). +* +* Parent and Display canvas containment guidelines: +* +* - Style the Parent element (of the game canvas) to control the Parent size and +* thus the Display canvas's size and layout. +* +* - The Parent element's CSS styles should _effectively_ apply maximum (and minimum) bounding behavior. +* +* - The Parent element should _not_ apply a padding as this is not accounted for. +* If a padding is required apply it to the Parent's parent or apply a margin to the Parent. +* If you need to add a border, margin or any other CSS around your game container, then use a parent element and +* apply the CSS to this instead, otherwise you'll be constantly resizing the shape of the game container. +* +* - The Display canvas layout CSS styles (i.e. margins, size) should not be altered/specified as +* they may be updated by the ScaleManager. +* +* @description +* Create a new ScaleManager object - this is done automatically by {@link Phaser.Game} +* +* The `width` and `height` constructor parameters can either be a number which represents pixels or a string that represents a percentage: e.g. `800` (for 800 pixels) or `"80%"` for 80%. +* +* @class +* @param {Phaser.Game} game - A reference to the currently running game. +* @param {number|string} width - The width of the game. See above. +* @param {number|string} height - The height of the game. See above. +*/ +Phaser.ScaleManager = function (game, width, height) { + + /** + * A reference to the currently running game. + * @property {Phaser.Game} game + * @protected + * @readonly + */ + this.game = game; + + /** + * Provides access to some cross-device DOM functions. + * @property {Phaser.DOM} dom + * @protected + * @readonly + */ + this.dom = Phaser.DOM; + + /** + * _EXPERIMENTAL:_ A responsive grid on which you can align game objects. + * @property {Phaser.FlexGrid} grid + * @public + */ + this.grid = null; + + /** + * Target width (in pixels) of the Display canvas. + * @property {number} width + * @readonly + */ + this.width = 0; + + /** + * Target height (in pixels) of the Display canvas. + * @property {number} height + * @readonly + */ + this.height = 0; + + /** + * Minimum width the canvas should be scaled to (in pixels). + * Change with {@link #setMinMax}. + * @property {?number} minWidth + * @readonly + * @protected + */ + this.minWidth = null; + + /** + * Maximum width the canvas should be scaled to (in pixels). + * If null it will scale to whatever width the browser can handle. + * Change with {@link #setMinMax}. + * @property {?number} maxWidth + * @readonly + * @protected + */ + this.maxWidth = null; + + /** + * Minimum height the canvas should be scaled to (in pixels). + * Change with {@link #setMinMax}. + * @property {?number} minHeight + * @readonly + * @protected + */ + this.minHeight = null; + + /** + * Maximum height the canvas should be scaled to (in pixels). + * If null it will scale to whatever height the browser can handle. + * Change with {@link #setMinMax}. + * @property {?number} maxHeight + * @readonly + * @protected + */ + this.maxHeight = null; + + /** + * The offset coordinates of the Display canvas from the top-left of the browser window. + * The is used internally by Phaser.Pointer (for Input) and possibly other types. + * @property {Phaser.Point} offset + * @readonly + * @protected + */ + this.offset = new Phaser.Point(); + + /** + * If true, the game should only run in a landscape orientation. + * Change with {@link #forceOrientation}. + * @property {boolean} forceLandscape + * @readonly + * @default + * @protected + */ + this.forceLandscape = false; + + /** + * If true, the game should only run in a portrait + * Change with {@link #forceOrientation}. + * @property {boolean} forcePortrait + * @readonly + * @default + * @protected + */ + this.forcePortrait = false; + + /** + * True if {@link #forceLandscape} or {@link #forcePortrait} are set and do not agree with the browser orientation. + * + * This value is not updated immediately. + * + * @property {boolean} incorrectOrientation + * @readonly + * @protected + */ + this.incorrectOrientation = false; + + /** + * See {@link #pageAlignHorizontally}. + * @property {boolean} _pageAlignHorizontally + * @private + */ + this._pageAlignHorizontally = false; + + /** + * See {@link #pageAlignVertically}. + * @property {boolean} _pageAlignVertically + * @private + */ + this._pageAlignVertically = false; + + /** + * This signal is dispatched when the orientation changes _or_ the validity of the current orientation changes. + * + * The signal is supplied with the following arguments: + * - `scale` - the ScaleManager object + * - `prevOrientation`, a string - The previous orientation as per {@link Phaser.ScaleManager#screenOrientation screenOrientation}. + * - `wasIncorrect`, a boolean - True if the previous orientation was last determined to be incorrect. + * + * Access the current orientation and validity with `scale.screenOrientation` and `scale.incorrectOrientation`. + * Thus the following tests can be done: + * + * // The orientation itself changed: + * scale.screenOrientation !== prevOrientation + * // The orientation just became incorrect: + * scale.incorrectOrientation && !wasIncorrect + * + * It is possible that this signal is triggered after {@link #forceOrientation} so the orientation + * correctness changes even if the orientation itself does not change. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} onOrientationChange + * @public + */ + this.onOrientationChange = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser enters an incorrect orientation, as defined by {@link #forceOrientation}. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} enterIncorrectOrientation + * @public + */ + this.enterIncorrectOrientation = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser leaves an incorrect orientation, as defined by {@link #forceOrientation}. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} leaveIncorrectOrientation + * @public + */ + this.leaveIncorrectOrientation = new Phaser.Signal(); + + /** + * If specified, this is the DOM element on which the Fullscreen API enter request will be invoked. + * The target element must have the correct CSS styling and contain the Display canvas. + * + * The elements style will be modified (ie. the width and height might be set to 100%) + * but it will not be added to, removed from, or repositioned within the DOM. + * An attempt is made to restore relevant style changes when fullscreen mode is left. + * + * For pre-2.2.0 behavior set `game.scale.fullScreenTarget = game.canvas`. + * + * @property {?DOMElement} fullScreenTarget + * @default + */ + this.fullScreenTarget = null; + + /** + * The fullscreen target, as created by {@link #createFullScreenTarget}. + * This is not set if {@link #fullScreenTarget} is used and is cleared when fullscreen mode ends. + * @property {?DOMElement} _createdFullScreenTarget + * @private + */ + this._createdFullScreenTarget = null; + + /** + * This signal is dispatched when fullscreen mode is ready to be initialized but + * before the fullscreen request. + * + * The signal is passed two arguments: `scale` (the ScaleManager), and an object in the form `{targetElement: DOMElement}`. + * + * The `targetElement` is the {@link #fullScreenTarget} element, + * if such is assigned, or a new element created by {@link #createFullScreenTarget}. + * + * Custom CSS styling or resets can be applied to `targetElement` as required. + * + * If `targetElement` is _not_ the same element as {@link #fullScreenTarget}: + * - After initialization the Display canvas is moved onto the `targetElement` for + * the duration of the fullscreen mode, and restored to it's original DOM location when fullscreen is exited. + * - The `targetElement` is moved/re-parented within the DOM and may have its CSS styles updated. + * + * The behavior of a pre-assigned target element is covered in {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget}. + * + * @property {Phaser.Signal} onFullScreenInit + * @public + */ + this.onFullScreenInit = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser enters or leaves fullscreen mode, if supported. + * + * The signal is supplied with a single argument: `scale` (the ScaleManager). Use `scale.isFullScreen` to determine + * if currently running in Fullscreen mode. + * + * @property {Phaser.Signal} onFullScreenChange + * @public + */ + this.onFullScreenChange = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser fails to enter fullscreen mode; + * or if the device does not support fullscreen mode and `startFullScreen` is invoked. + * + * The signal is supplied with a single argument: `scale` (the ScaleManager). + * + * @property {Phaser.Signal} onFullScreenError + * @public + */ + this.onFullScreenError = new Phaser.Signal(); + + /** + * The _last known_ orientation of the screen, as defined in the Window Screen Web API. + * See {@link Phaser.DOM.getScreenOrientation} for possible values. + * + * @property {string} screenOrientation + * @readonly + * @public + */ + this.screenOrientation = this.dom.getScreenOrientation(); + + /** + * The _current_ scale factor based on the game dimensions vs. the scaled dimensions. + * @property {Phaser.Point} scaleFactor + * @readonly + */ + this.scaleFactor = new Phaser.Point(1, 1); + + /** + * The _current_ inversed scale factor. The displayed dimensions divided by the game dimensions. + * @property {Phaser.Point} scaleFactorInversed + * @readonly + * @protected + */ + this.scaleFactorInversed = new Phaser.Point(1, 1); + + /** + * The Display canvas is aligned by adjusting the margins; the last margins are stored here. + * + * @property {Bounds-like} margin + * @readonly + * @protected + */ + this.margin = {left: 0, top: 0, right: 0, bottom: 0, x: 0, y: 0}; + + /** + * The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height. + * @property {Phaser.Rectangle} bounds + * @readonly + */ + this.bounds = new Phaser.Rectangle(); + + /** + * The aspect ratio of the scaled Display canvas. + * @property {number} aspectRatio + * @readonly + */ + this.aspectRatio = 0; + + /** + * The aspect ratio of the original game dimensions. + * @property {number} sourceAspectRatio + * @readonly + */ + this.sourceAspectRatio = 0; + + /** + * The native browser events from Fullscreen API changes. + * @property {any} event + * @readonly + * @private + */ + this.event = null; + + /** + * The edges on which to constrain the game Display/canvas in _addition_ to the restrictions of the parent container. + * + * The properties are strings and can be '', 'visual', 'layout', or 'layout-soft'. + * - If 'visual', the edge will be constrained to the Window / displayed screen area + * - If 'layout', the edge will be constrained to the CSS Layout bounds + * - An invalid value is treated as 'visual' + * + * @member + * @property {string} bottom + * @property {string} right + * @default + */ + this.windowConstraints = { + right: 'layout', + bottom: '' + }; + + /** + * Various compatibility settings. + * A value of "(auto)" indicates the setting is configured based on device and runtime information. + * + * A {@link #refresh} may need to be performed after making changes. + * + * @protected + * + * @property {boolean} [supportsFullscreen=(auto)] - True only if fullscreen support will be used. (Changing to fullscreen still might not work.) + * + * @property {boolean} [orientationFallback=(auto)] - See {@link Phaser.DOM.getScreenOrientation}. + * + * @property {boolean} [noMargins=false] - If true then the Display canvas's margins will not be updated anymore: existing margins must be manually cleared. Disabling margins prevents automatic canvas alignment/centering, possibly in fullscreen. + * + * @property {?Phaser.Point} [scrollTo=(auto)] - If specified the window will be scrolled to this position on every refresh. + * + * @property {boolean} [forceMinimumDocumentHeight=false] - If enabled the document elements minimum height is explicitly set on updates. + * The height set varies by device and may either be the height of the window or the viewport. + * + * @property {boolean} [canExpandParent=true] - If enabled then SHOW_ALL and USER_SCALE modes can try and expand the parent element. It may be necessary for the parent element to impose CSS width/height restrictions. + * + * @property {string} [clickTrampoline=(auto)] - On certain browsers (eg. IE) FullScreen events need to be triggered via 'click' events. + * A value of 'when-not-mouse' uses a click trampoline when a pointer that is not the primary mouse is used. + * Any other string value (including the empty string) prevents using click trampolines. + * For more details on click trampolines see {@link Phaser.Pointer#addClickTrampoline}. + */ + this.compatibility = { + supportsFullScreen: false, + orientationFallback: null, + noMargins: false, + scrollTo: null, + forceMinimumDocumentHeight: false, + canExpandParent: true, + clickTrampoline: '' + }; + + /** + * Scale mode to be used when not in fullscreen. + * @property {number} _scaleMode + * @private + */ + this._scaleMode = Phaser.ScaleManager.NO_SCALE; + + /* + * Scale mode to be used in fullscreen. + * @property {number} _fullScreenScaleMode + * @private + */ + this._fullScreenScaleMode = Phaser.ScaleManager.NO_SCALE; + + /** + * If the parent container of the Game canvas is the browser window itself (i.e. document.body), + * rather than another div, this should set to `true`. + * + * The {@link #parentNode} property is generally ignored while this is in effect. + * + * @property {boolean} parentIsWindow + */ + this.parentIsWindow = false; + + /** + * The _original_ DOM element for the parent of the Display canvas. + * This may be different in fullscreen - see {@link #createFullScreenTarget}. + * + * This should only be changed after moving the Game canvas to a different DOM parent. + * + * @property {?DOMElement} parentNode + */ + this.parentNode = null; + + /** + * The scale of the game in relation to its parent container. + * @property {Phaser.Point} parentScaleFactor + * @readonly + */ + this.parentScaleFactor = new Phaser.Point(1, 1); + + /** + * The maximum time (in ms) between dimension update checks for the Canvas's parent element (or window). + * Update checks normally happen quicker in response to other events. + * + * @property {integer} trackParentInterval + * @default + * @protected + * @see {@link Phaser.ScaleManager#refresh refresh} + */ + this.trackParentInterval = 2000; + + /** + * This signal is dispatched when the size of the Display canvas changes _or_ the size of the Game changes. + * When invoked this is done _after_ the Canvas size/position have been updated. + * + * This signal is _only_ called when a change occurs and a reflow may be required. + * For example, if the canvas does not change sizes because of CSS settings (such as min-width) + * then this signal will _not_ be triggered. + * + * Use this to handle responsive game layout options. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} onSizeChange + * @todo Formalize the arguments, if any, supplied to this signal. + */ + this.onSizeChange = new Phaser.Signal(); + + /** + * The callback that will be called each the parent container resizes. + * @property {function} onResize + * @private + */ + this.onResize = null; + + /** + * The context in which the {@link #onResize} callback will be called. + * @property {object} onResizeContext + * @private + */ + this.onResizeContext = null; + + /** + * @property {integer} _pendingScaleMode - Used to retain the scale mode if set from config before Boot. + * @private + */ + this._pendingScaleMode = null; + + /** + * Information saved when fullscreen mode is started. + * @property {?object} _fullScreenRestore + * @private + */ + this._fullScreenRestore = null; + + /** + * The _actual_ game dimensions, as initially set or set by {@link #setGameSize}. + * @property {Phaser.Rectangle} _gameSize + * @private + */ + this._gameSize = new Phaser.Rectangle(); + + /** + * The user-supplied scale factor, used with the USER_SCALE scaling mode. + * @property {Phaser.Point} _userScaleFactor + * @private + */ + this._userScaleFactor = new Phaser.Point(1, 1); + + /** + * The user-supplied scale trim, used with the USER_SCALE scaling mode. + * @property {Phaser.Point} _userScaleTrim + * @private + */ + this._userScaleTrim = new Phaser.Point(0, 0); + + /** + * The last time the bounds were checked in `preUpdate`. + * @property {number} _lastUpdate + * @private + */ + this._lastUpdate = 0; + + /** + * Size checks updates are delayed according to the throttle. + * The throttle increases to `trackParentInterval` over time and is used to more + * rapidly detect changes in certain browsers (eg. IE) while providing back-off safety. + * @property {integer} _updateThrottle + * @private + */ + this._updateThrottle = 0; + + /** + * The minimum throttle allowed until it has slowed down sufficiently. + * @property {integer} _updateThrottleReset + * @private + */ + this._updateThrottleReset = 100; + + /** + * The cached result of the parent (possibly window) bounds; used to invalidate sizing. + * @property {Phaser.Rectangle} _parentBounds + * @private + */ + this._parentBounds = new Phaser.Rectangle(); + + /** + * Temporary bounds used for internal work to cut down on new objects created. + * @property {Phaser.Rectangle} _parentBounds + * @private + */ + this._tempBounds = new Phaser.Rectangle(); + + /** + * The Canvas size at which the last onSizeChange signal was triggered. + * @property {Phaser.Rectangle} _lastReportedCanvasSize + * @private + */ + this._lastReportedCanvasSize = new Phaser.Rectangle(); + + /** + * The Game size at which the last onSizeChange signal was triggered. + * @property {Phaser.Rectangle} _lastReportedGameSize + * @private + */ + this._lastReportedGameSize = new Phaser.Rectangle(); + + /** + * @property {boolean} _booted - ScaleManager booted state. + * @private + */ + this._booted = false; + + if (game.config) + { + this.parseConfig(game.config); + } + + this.setupScale(width, height); + +}; + +/** +* A scale mode that stretches content to fill all available space - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.EXACT_FIT = 0; + +/** +* A scale mode that prevents any scaling - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.NO_SCALE = 1; + +/** +* A scale mode that shows the entire game while maintaining proportions - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.SHOW_ALL = 2; + +/** +* A scale mode that causes the Game size to change - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.RESIZE = 3; + +/** +* A scale mode that allows a custom scale factor - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.USER_SCALE = 4; + +Phaser.ScaleManager.prototype = { + + /** + * Start the ScaleManager. + * + * @method Phaser.ScaleManager#boot + * @protected + */ + boot: function () { + + // Configure device-dependent compatibility + + var compat = this.compatibility; + + compat.supportsFullScreen = this.game.device.fullscreen && !this.game.device.cocoonJS; + + // We can't do anything about the status bars in iPads, web apps or desktops + if (!this.game.device.iPad && !this.game.device.webApp && !this.game.device.desktop) + { + if (this.game.device.android && !this.game.device.chrome) + { + compat.scrollTo = new Phaser.Point(0, 1); + } + else + { + compat.scrollTo = new Phaser.Point(0, 0); + } + } + + if (this.game.device.desktop) + { + compat.orientationFallback = 'screen'; + compat.clickTrampoline = 'when-not-mouse'; + } + else + { + compat.orientationFallback = ''; + compat.clickTrampoline = ''; + } + + // Configure event listeners + + var _this = this; + + this._orientationChange = function(event) { + return _this.orientationChange(event); + }; + + this._windowResize = function(event) { + return _this.windowResize(event); + }; + + // This does not appear to be on the standards track + window.addEventListener('orientationchange', this._orientationChange, false); + window.addEventListener('resize', this._windowResize, false); + + if (this.compatibility.supportsFullScreen) + { + this._fullScreenChange = function(event) { + return _this.fullScreenChange(event); + }; + + this._fullScreenError = function(event) { + return _this.fullScreenError(event); + }; + + document.addEventListener('webkitfullscreenchange', this._fullScreenChange, false); + document.addEventListener('mozfullscreenchange', this._fullScreenChange, false); + document.addEventListener('MSFullscreenChange', this._fullScreenChange, false); + document.addEventListener('fullscreenchange', this._fullScreenChange, false); + + document.addEventListener('webkitfullscreenerror', this._fullScreenError, false); + document.addEventListener('mozfullscreenerror', this._fullScreenError, false); + document.addEventListener('MSFullscreenError', this._fullScreenError, false); + document.addEventListener('fullscreenerror', this._fullScreenError, false); + } + + this.game.onResume.add(this._gameResumed, this); + + // Initialize core bounds + + this.dom.getOffset(this.game.canvas, this.offset); + + this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); + + this.setGameSize(this.game.width, this.game.height); + + // Don't use updateOrientationState so events are not fired + this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); + + if (Phaser.FlexGrid) + { + this.grid = new Phaser.FlexGrid(this, this.width, this.height); + } + + this._booted = true; + + if (this._pendingScaleMode) + { + this.scaleMode = this._pendingScaleMode; + this._pendingScaleMode = null; + } + + }, + + /** + * Load configuration settings. + * + * @method Phaser.ScaleManager#parseConfig + * @protected + * @param {object} config - The game configuration object. + */ + parseConfig: function (config) { + + if (config['scaleMode']) + { + if (this._booted) + { + this.scaleMode = config['scaleMode']; + } + else + { + this._pendingScaleMode = config['scaleMode']; + } + } + + if (config['fullScreenScaleMode']) + { + this.fullScreenScaleMode = config['fullScreenScaleMode']; + } + + if (config['fullScreenTarget']) + { + this.fullScreenTarget = config['fullScreenTarget']; + } + + }, + + /** + * Calculates and sets the game dimensions based on the given width and height. + * + * This should _not_ be called when in fullscreen mode. + * + * @method Phaser.ScaleManager#setupScale + * @protected + * @param {number|string} width - The width of the game. + * @param {number|string} height - The height of the game. + */ + setupScale: function (width, height) { + + var target; + var rect = new Phaser.Rectangle(); + + if (this.game.parent !== '') + { + if (typeof this.game.parent === 'string') + { + // hopefully an element ID + target = document.getElementById(this.game.parent); + } + else if (this.game.parent && this.game.parent.nodeType === 1) + { + // quick test for a HTMLelement + target = this.game.parent; + } + } + + // Fallback, covers an invalid ID and a non HTMLelement object + if (!target) + { + // Use the full window + this.parentNode = null; + this.parentIsWindow = true; + + rect.width = this.dom.visualBounds.width; + rect.height = this.dom.visualBounds.height; + + this.offset.set(0, 0); + } + else + { + this.parentNode = target; + this.parentIsWindow = false; + + this.getParentBounds(this._parentBounds); + + rect.width = this._parentBounds.width; + rect.height = this._parentBounds.height; + + this.offset.set(this._parentBounds.x, this._parentBounds.y); + } + + var newWidth = 0; + var newHeight = 0; + + if (typeof width === 'number') + { + newWidth = width; + } + else + { + // Percentage based + this.parentScaleFactor.x = parseInt(width, 10) / 100; + newWidth = rect.width * this.parentScaleFactor.x; + } + + if (typeof height === 'number') + { + newHeight = height; + } + else + { + // Percentage based + this.parentScaleFactor.y = parseInt(height, 10) / 100; + newHeight = rect.height * this.parentScaleFactor.y; + } + + this._gameSize.setTo(0, 0, newWidth, newHeight); + + this.updateDimensions(newWidth, newHeight, false); + + }, + + /** + * Invoked when the game is resumed. + * + * @method Phaser.ScaleManager#_gameResumed + * @private + */ + _gameResumed: function () { + + this.queueUpdate(true); + + }, + + /** + * Set the actual Game size. + * Use this instead of directly changing `game.width` or `game.height`. + * + * The actual physical display (Canvas element size) depends on various settings including + * - Scale mode + * - Scaling factor + * - Size of Canvas's parent element or CSS rules such as min-height/max-height; + * - The size of the Window + * + * @method Phaser.ScaleManager#setGameSize + * @public + * @param {integer} width - _Game width_, in pixels. + * @param {integer} height - _Game height_, in pixels. + */ + setGameSize: function (width, height) { + + this._gameSize.setTo(0, 0, width, height); + + if (this.currentScaleMode !== Phaser.ScaleManager.RESIZE) + { + this.updateDimensions(width, height, true); + } + + this.queueUpdate(true); + + }, + + /** + * Set a User scaling factor used in the USER_SCALE scaling mode. + * + * The target canvas size is computed by: + * + * canvas.width = (game.width * hScale) - hTrim + * canvas.height = (game.height * vScale) - vTrim + * + * This method can be used in the {@link Phaser.ScaleManager#setResizeCallback resize callback}. + * + * @method Phaser.ScaleManager#setUserScale + * @param {number} hScale - Horizontal scaling factor. + * @param {numer} vScale - Vertical scaling factor. + * @param {integer} [hTrim=0] - Horizontal trim, applied after scaling. + * @param {integer} [vTrim=0] - Vertical trim, applied after scaling. + */ + setUserScale: function (hScale, vScale, hTrim, vTrim) { + + this._userScaleFactor.setTo(hScale, vScale); + this._userScaleTrim.setTo(hTrim | 0, vTrim | 0); + this.queueUpdate(true); + + }, + + /** + * Sets the callback that will be invoked before sizing calculations. + * + * This is the appropriate place to call {@link #setUserScale} if needing custom dynamic scaling. + * + * The callback is supplied with two arguments `scale` and `parentBounds` where `scale` is the ScaleManager + * and `parentBounds`, a Phaser.Rectangle, is the size of the Parent element. + * + * This callback + * - May be invoked even though the parent container or canvas sizes have not changed + * - Unlike {@link #onSizeChange}, it runs _before_ the canvas is guaranteed to be updated + * - Will be invoked from `preUpdate`, _even when_ the game is paused + * + * See {@link #onSizeChange} for a better way of reacting to layout updates. + * + * @method Phaser.ScaleManager#setResizeCallback + * @public + * @param {function} callback - The callback that will be called each time a window.resize event happens or if set, the parent container resizes. + * @param {object} context - The context in which the callback will be called. + */ + setResizeCallback: function (callback, context) { + + this.onResize = callback; + this.onResizeContext = context; + + }, + + /** + * Signals a resize - IF the canvas or Game size differs from the last signal. + * + * This also triggers updates on {@link #grid} (FlexGrid) and, if in a RESIZE mode, `game.state` (StateManager). + * + * @method Phaser.ScaleManager#signalSizeChange + * @private + */ + signalSizeChange: function () { + + if (!Phaser.Rectangle.sameDimensions(this, this._lastReportedCanvasSize) || + !Phaser.Rectangle.sameDimensions(this.game, this._lastReportedGameSize)) + { + var width = this.width; + var height = this.height; + + this._lastReportedCanvasSize.setTo(0, 0, width, height); + this._lastReportedGameSize.setTo(0, 0, this.game.width, this.game.height); + + if (this.grid) + { + this.grid.onResize(width, height); + } + + this.onSizeChange.dispatch(this, width, height); + + // Per StateManager#onResizeCallback, it only occurs when in RESIZE mode. + if (this.currentScaleMode === Phaser.ScaleManager.RESIZE) + { + this.game.state.resize(width, height); + this.game.load.resize(width, height); + } + } + + }, + + /** + * Set the min and max dimensions for the Display canvas. + * + * _Note:_ The min/max dimensions are only applied in some cases + * - When the device is not in an incorrect orientation; or + * - The scale mode is EXACT_FIT when not in fullscreen + * + * @method Phaser.ScaleManager#setMinMax + * @public + * @param {number} minWidth - The minimum width the game is allowed to scale down to. + * @param {number} minHeight - The minimum height the game is allowed to scale down to. + * @param {number} [maxWidth] - The maximum width the game is allowed to scale up to; only changed if specified. + * @param {number} [maxHeight] - The maximum height the game is allowed to scale up to; only changed if specified. + * @todo These values are only sometimes honored. + */ + setMinMax: function (minWidth, minHeight, maxWidth, maxHeight) { + + this.minWidth = minWidth; + this.minHeight = minHeight; + + if (typeof maxWidth !== 'undefined') + { + this.maxWidth = maxWidth; + } + + if (typeof maxHeight !== 'undefined') + { + this.maxHeight = maxHeight; + } + + }, + + /** + * The ScaleManager.preUpdate is called automatically by the core Game loop. + * + * @method Phaser.ScaleManager#preUpdate + * @protected + */ + preUpdate: function () { + + if (this.game.time.time < (this._lastUpdate + this._updateThrottle)) + { + return; + } + + var prevThrottle = this._updateThrottle; + this._updateThrottleReset = prevThrottle >= 400 ? 0 : 100; + + this.dom.getOffset(this.game.canvas, this.offset); + + var prevWidth = this._parentBounds.width; + var prevHeight = this._parentBounds.height; + var bounds = this.getParentBounds(this._parentBounds); + + var boundsChanged = bounds.width !== prevWidth || bounds.height !== prevHeight; + + // Always invalidate on a newly detected orientation change + var orientationChanged = this.updateOrientationState(); + + if (boundsChanged || orientationChanged) + { + if (this.onResize) + { + this.onResize.call(this.onResizeContext, this, bounds); + } + + this.updateLayout(); + + this.signalSizeChange(); + } + + // Next throttle, eg. 25, 50, 100, 200.. + var throttle = this._updateThrottle * 2; + + // Don't let an update be too eager about resetting the throttle. + if (this._updateThrottle < prevThrottle) + { + throttle = Math.min(prevThrottle, this._updateThrottleReset); + } + + this._updateThrottle = Phaser.Math.clamp(throttle, 25, this.trackParentInterval); + this._lastUpdate = this.game.time.time; + + }, + + /** + * Update method while paused. + * + * @method Phaser.ScaleManager#pauseUpdate + * @private + */ + pauseUpdate: function () { + + this.preUpdate(); + + // Updates at slowest. + this._updateThrottle = this.trackParentInterval; + + }, + + /** + * Update the dimensions taking the parent scaling factor into account. + * + * @method Phaser.ScaleManager#updateDimensions + * @private + * @param {number} width - The new width of the parent container. + * @param {number} height - The new height of the parent container. + * @param {boolean} resize - True if the renderer should be resized, otherwise false to just update the internal vars. + */ + updateDimensions: function (width, height, resize) { + + this.width = width * this.parentScaleFactor.x; + this.height = height * this.parentScaleFactor.y; + + this.game.width = this.width; + this.game.height = this.height; + + this.sourceAspectRatio = this.width / this.height; + this.updateScalingAndBounds(); + + if (resize) + { + // Resize the renderer (which in turn resizes the Display canvas!) + this.game.renderer.resize(this.width, this.height); + + // The Camera can never be smaller than the Game size + this.game.camera.setSize(this.width, this.height); + + // This should only happen if the world is smaller than the new canvas size + this.game.world.resize(this.width, this.height); + } + + }, + + /** + * Update relevant scaling values based on the ScaleManager dimension and game dimensions, + * which should already be set. This does not change {@link #sourceAspectRatio}. + * + * @method Phaser.ScaleManager#updateScalingAndBounds + * @private + */ + updateScalingAndBounds: function () { + + this.scaleFactor.x = this.game.width / this.width; + this.scaleFactor.y = this.game.height / this.height; + + this.scaleFactorInversed.x = this.width / this.game.width; + this.scaleFactorInversed.y = this.height / this.game.height; + + this.aspectRatio = this.width / this.height; + + // This can be invoked in boot pre-canvas + if (this.game.canvas) + { + this.dom.getOffset(this.game.canvas, this.offset); + } + + this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); + + // Can be invoked in boot pre-input + if (this.game.input && this.game.input.scale) + { + this.game.input.scale.setTo(this.scaleFactor.x, this.scaleFactor.y); + } + + }, + + /** + * Force the game to run in only one orientation. + * + * This enables generation of incorrect orientation signals and affects resizing but does not otherwise rotate or lock the orientation. + * + * Orientation checks are performed via the Screen Orientation API, if available in browser. This means it will check your monitor + * orientation on desktop, or your device orientation on mobile, rather than comparing actual game dimensions. If you need to check the + * viewport dimensions instead and bypass the Screen Orientation API then set: `ScaleManager.compatibility.orientationFallback = 'viewport'` + * + * @method Phaser.ScaleManager#forceOrientation + * @public + * @param {boolean} forceLandscape - true if the game should run in landscape mode only. + * @param {boolean} [forcePortrait=false] - true if the game should run in portrait mode only. + */ + forceOrientation: function (forceLandscape, forcePortrait) { + + if (forcePortrait === undefined) { forcePortrait = false; } + + this.forceLandscape = forceLandscape; + this.forcePortrait = forcePortrait; + + this.queueUpdate(true); + + }, + + /** + * Classify the orientation, per `getScreenOrientation`. + * + * @method Phaser.ScaleManager#classifyOrientation + * @private + * @param {string} orientation - The orientation string, e.g. 'portrait-primary'. + * @return {?string} The classified orientation: 'portrait', 'landscape`, or null. + */ + classifyOrientation: function (orientation) { + + if (orientation === 'portrait-primary' || orientation === 'portrait-secondary') + { + return 'portrait'; + } + else if (orientation === 'landscape-primary' || orientation === 'landscape-secondary') + { + return 'landscape'; + } + else + { + return null; + } + + }, + + /** + * Updates the current orientation and dispatches orientation change events. + * + * @method Phaser.ScaleManager#updateOrientationState + * @private + * @return {boolean} True if the orientation state changed which means a forced update is likely required. + */ + updateOrientationState: function () { + + var previousOrientation = this.screenOrientation; + var previouslyIncorrect = this.incorrectOrientation; + + this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); + + this.incorrectOrientation = (this.forceLandscape && !this.isLandscape) || + (this.forcePortrait && !this.isPortrait); + + var changed = previousOrientation !== this.screenOrientation; + var correctnessChanged = previouslyIncorrect !== this.incorrectOrientation; + + if (correctnessChanged) + { + if (this.incorrectOrientation) + { + this.enterIncorrectOrientation.dispatch(); + } + else + { + this.leaveIncorrectOrientation.dispatch(); + } + } + + if (changed || correctnessChanged) + { + this.onOrientationChange.dispatch(this, previousOrientation, previouslyIncorrect); + } + + return changed || correctnessChanged; + + }, + + /** + * window.orientationchange event handler. + * + * @method Phaser.ScaleManager#orientationChange + * @private + * @param {Event} event - The orientationchange event data. + */ + orientationChange: function (event) { + + this.event = event; + + this.queueUpdate(true); + + }, + + /** + * window.resize event handler. + * + * @method Phaser.ScaleManager#windowResize + * @private + * @param {Event} event - The resize event data. + */ + windowResize: function (event) { + + this.event = event; + + this.queueUpdate(true); + + }, + + /** + * Scroll to the top - in some environments. See `compatibility.scrollTo`. + * + * @method Phaser.ScaleManager#scrollTop + * @private + */ + scrollTop: function () { + + var scrollTo = this.compatibility.scrollTo; + + if (scrollTo) + { + window.scrollTo(scrollTo.x, scrollTo.y); + } + + }, + + /** + * The "refresh" methods informs the ScaleManager that a layout refresh is required. + * + * The ScaleManager automatically queues a layout refresh (eg. updates the Game size or Display canvas layout) + * when the browser is resized, the orientation changes, or when there is a detected change + * of the Parent size. Refreshing is also done automatically when public properties, + * such as {@link #scaleMode}, are updated or state-changing methods are invoked. + * + * The "refresh" method _may_ need to be used in a few (rare) situtations when + * + * - a device change event is not correctly detected; or + * - the Parent size changes (and an immediate reflow is desired); or + * - the ScaleManager state is updated by non-standard means; or + * - certain {@link #compatibility} properties are manually changed. + * + * The queued layout refresh is not immediate but will run promptly in an upcoming `preRender`. + * + * @method Phaser.ScaleManager#refresh + * @public + */ + refresh: function () { + + this.scrollTop(); + this.queueUpdate(true); + + }, + + /** + * Updates the game / canvas position and size. + * + * @method Phaser.ScaleManager#updateLayout + * @private + */ + updateLayout: function () { + + var scaleMode = this.currentScaleMode; + + if (scaleMode === Phaser.ScaleManager.RESIZE) + { + this.reflowGame(); + return; + } + + this.scrollTop(); + + if (this.compatibility.forceMinimumDocumentHeight) + { + // (This came from older code, by why is it here?) + // Set minimum height of content to new window height + document.documentElement.style.minHeight = window.innerHeight + 'px'; + } + + if (this.incorrectOrientation) + { + this.setMaximum(); + } + else + { + if (scaleMode === Phaser.ScaleManager.EXACT_FIT) + { + this.setExactFit(); + } + else if (scaleMode === Phaser.ScaleManager.SHOW_ALL) + { + if (!this.isFullScreen && this.boundingParent && + this.compatibility.canExpandParent) + { + // Try to expand parent out, but choosing maximizing dimensions. + // Then select minimize dimensions which should then honor parent + // maximum bound applications. + this.setShowAll(true); + this.resetCanvas(); + this.setShowAll(); + } + else + { + this.setShowAll(); + } + } + else if (scaleMode === Phaser.ScaleManager.NO_SCALE) + { + this.width = this.game.width; + this.height = this.game.height; + } + else if (scaleMode === Phaser.ScaleManager.USER_SCALE) + { + this.width = (this.game.width * this._userScaleFactor.x) - this._userScaleTrim.x; + this.height = (this.game.height * this._userScaleFactor.y) - this._userScaleTrim.y; + } + } + + if (!this.compatibility.canExpandParent && + (scaleMode === Phaser.ScaleManager.SHOW_ALL || scaleMode === Phaser.ScaleManager.USER_SCALE)) + { + var bounds = this.getParentBounds(this._tempBounds); + this.width = Math.min(this.width, bounds.width); + this.height = Math.min(this.height, bounds.height); + } + + // Always truncate / force to integer + this.width = this.width | 0; + this.height = this.height | 0; + + this.reflowCanvas(); + + }, + + /** + * Returns the computed Parent size/bounds that the Display canvas is allowed/expected to fill. + * + * If in fullscreen mode or without parent (see {@link #parentIsWindow}), + * this will be the bounds of the visual viewport itself. + * + * This function takes the {@link #windowConstraints} into consideration - if the parent is partially outside + * the viewport then this function may return a smaller than expected size. + * + * Values are rounded to the nearest pixel. + * + * @method Phaser.ScaleManager#getParentBounds + * @protected + * @param {Phaser.Rectangle} [target=(new Rectangle)] - The rectangle to update; a new one is created as needed. + * @return {Phaser.Rectangle} The established parent bounds. + */ + getParentBounds: function (target) { + + var bounds = target || new Phaser.Rectangle(); + var parentNode = this.boundingParent; + var visualBounds = this.dom.visualBounds; + var layoutBounds = this.dom.layoutBounds; + + if (!parentNode) + { + bounds.setTo(0, 0, visualBounds.width, visualBounds.height); + } + else + { + // Ref. http://msdn.microsoft.com/en-us/library/hh781509(v=vs.85).aspx for getBoundingClientRect + var clientRect = parentNode.getBoundingClientRect(); + var parentRect = (parentNode.offsetParent) ? parentNode.offsetParent.getBoundingClientRect() : parentNode.getBoundingClientRect(); + + bounds.setTo(clientRect.left - parentRect.left, clientRect.top - parentRect.top, clientRect.width, clientRect.height); + + var wc = this.windowConstraints; + + if (wc.right) + { + var windowBounds = wc.right === 'layout' ? layoutBounds : visualBounds; + bounds.right = Math.min(bounds.right, windowBounds.width); + } + + if (wc.bottom) + { + var windowBounds = wc.bottom === 'layout' ? layoutBounds : visualBounds; + bounds.bottom = Math.min(bounds.bottom, windowBounds.height); + } + } + + bounds.setTo( + Math.round(bounds.x), Math.round(bounds.y), + Math.round(bounds.width), Math.round(bounds.height)); + + return bounds; + + }, + + /** + * Update the canvas position/margins - for alignment within the parent container. + * + * The canvas margins _must_ be reset/cleared prior to invoking this. + * + * @method Phaser.ScaleManager#alignCanvas + * @private + * @param {boolean} horizontal - Align horizontally? + * @param {boolean} vertical - Align vertically? + */ + alignCanvas: function (horizontal, vertical) { + + var parentBounds = this.getParentBounds(this._tempBounds); + var canvas = this.game.canvas; + var margin = this.margin; + + if (horizontal) + { + margin.left = margin.right = 0; + + var canvasBounds = canvas.getBoundingClientRect(); + + if (this.width < parentBounds.width && !this.incorrectOrientation) + { + var currentEdge = canvasBounds.left - parentBounds.x; + var targetEdge = (parentBounds.width / 2) - (this.width / 2); + + targetEdge = Math.max(targetEdge, 0); + + var offset = targetEdge - currentEdge; + + margin.left = Math.round(offset); + } + + canvas.style.marginLeft = margin.left + 'px'; + + if (margin.left !== 0) + { + margin.right = -(parentBounds.width - canvasBounds.width - margin.left); + canvas.style.marginRight = margin.right + 'px'; + } + } + + if (vertical) + { + margin.top = margin.bottom = 0; + + var canvasBounds = canvas.getBoundingClientRect(); + + if (this.height < parentBounds.height && !this.incorrectOrientation) + { + var currentEdge = canvasBounds.top - parentBounds.y; + var targetEdge = (parentBounds.height / 2) - (this.height / 2); + + targetEdge = Math.max(targetEdge, 0); + + var offset = targetEdge - currentEdge; + margin.top = Math.round(offset); + } + + canvas.style.marginTop = margin.top + 'px'; + + if (margin.top !== 0) + { + margin.bottom = -(parentBounds.height - canvasBounds.height - margin.top); + canvas.style.marginBottom = margin.bottom + 'px'; + } + } + + // Silly backwards compatibility.. + margin.x = margin.left; + margin.y = margin.top; + + }, + + /** + * Updates the Game state / size. + * + * The canvas margins may always be adjusted, even if alignment is not in effect. + * + * @method Phaser.ScaleManager#reflowGame + * @private + */ + reflowGame: function () { + + this.resetCanvas('', ''); + + var bounds = this.getParentBounds(this._tempBounds); + this.updateDimensions(bounds.width, bounds.height, true); + + }, + + /** + * Updates the Display canvas size. + * + * The canvas margins may always be adjusted, even alignment is not in effect. + * + * @method Phaser.ScaleManager#reflowCanvas + * @private + */ + reflowCanvas: function () { + + if (!this.incorrectOrientation) + { + this.width = Phaser.Math.clamp(this.width, this.minWidth || 0, this.maxWidth || this.width); + this.height = Phaser.Math.clamp(this.height, this.minHeight || 0, this.maxHeight || this.height); + } + + this.resetCanvas(); + + if (!this.compatibility.noMargins) + { + if (this.isFullScreen && this._createdFullScreenTarget) + { + this.alignCanvas(true, true); + } + else + { + this.alignCanvas(this.pageAlignHorizontally, this.pageAlignVertically); + } + } + + this.updateScalingAndBounds(); + + }, + + /** + * "Reset" the Display canvas and set the specified width/height. + * + * @method Phaser.ScaleManager#resetCanvas + * @private + * @param {string} [cssWidth=(current width)] - The css width to set. + * @param {string} [cssHeight=(current height)] - The css height to set. + */ + resetCanvas: function (cssWidth, cssHeight) { + + if (cssWidth === undefined) { cssWidth = this.width + 'px'; } + if (cssHeight === undefined) { cssHeight = this.height + 'px'; } + + var canvas = this.game.canvas; + + if (!this.compatibility.noMargins) + { + canvas.style.marginLeft = ''; + canvas.style.marginTop = ''; + canvas.style.marginRight = ''; + canvas.style.marginBottom = ''; + } + + canvas.style.width = cssWidth; + canvas.style.height = cssHeight; + + }, + + /** + * Queues/marks a size/bounds check as needing to occur (from `preUpdate`). + * + * @method Phaser.ScaleManager#queueUpdate + * @private + * @param {boolean} force - If true resets the parent bounds to ensure the check is dirty. + */ + queueUpdate: function (force) { + + if (force) + { + this._parentBounds.width = 0; + this._parentBounds.height = 0; + } + + this._updateThrottle = this._updateThrottleReset; + + }, + + /** + * Reset internal data/state. + * + * @method Phaser.ScaleManager#reset + * @private + */ + reset: function (clearWorld) { + + if (clearWorld && this.grid) + { + this.grid.reset(); + } + + }, + + /** + * Updates the width/height to that of the window. + * + * @method Phaser.ScaleManager#setMaximum + * @private + */ + setMaximum: function () { + + this.width = this.dom.visualBounds.width; + this.height = this.dom.visualBounds.height; + + }, + + /** + * Updates the width/height such that the game is scaled proportionally. + * + * @method Phaser.ScaleManager#setShowAll + * @private + * @param {boolean} expanding - If true then the maximizing dimension is chosen. + */ + setShowAll: function (expanding) { + + var bounds = this.getParentBounds(this._tempBounds); + var width = bounds.width; + var height = bounds.height; + + var multiplier; + + if (expanding) + { + multiplier = Math.max((height / this.game.height), (width / this.game.width)); + } + else + { + multiplier = Math.min((height / this.game.height), (width / this.game.width)); + } + + this.width = Math.round(this.game.width * multiplier); + this.height = Math.round(this.game.height * multiplier); + + }, + + /** + * Updates the width/height such that the game is stretched to the available size. + * Honors {@link #maxWidth} and {@link #maxHeight} when _not_ in fullscreen. + * + * @method Phaser.ScaleManager#setExactFit + * @private + */ + setExactFit: function () { + + var bounds = this.getParentBounds(this._tempBounds); + + this.width = bounds.width; + this.height = bounds.height; + + if (this.isFullScreen) + { + // Max/min not honored fullscreen + return; + } + + if (this.maxWidth) + { + this.width = Math.min(this.width, this.maxWidth); + } + + if (this.maxHeight) + { + this.height = Math.min(this.height, this.maxHeight); + } + + }, + + /** + * Creates a fullscreen target. This is called automatically as as needed when entering + * fullscreen mode and the resulting element is supplied to {@link #onFullScreenInit}. + * + * Use {@link #onFullScreenInit} to customize the created object. + * + * @method Phaser.ScaleManager#createFullScreenTarget + * @protected + */ + createFullScreenTarget: function () { + + var fsTarget = document.createElement('div'); + + fsTarget.style.margin = '0'; + fsTarget.style.padding = '0'; + fsTarget.style.background = '#000'; + + return fsTarget; + + }, + + /** + * Start the browsers fullscreen mode - this _must_ be called from a user input Pointer or Mouse event. + * + * The Fullscreen API must be supported by the browser for this to work - it is not the same as setting + * the game size to fill the browser window. See {@link Phaser.ScaleManager#compatibility compatibility.supportsFullScreen} to check if the current + * device is reported to support fullscreen mode. + * + * The {@link #fullScreenFailed} signal will be dispatched if the fullscreen change request failed or the game does not support the Fullscreen API. + * + * @method Phaser.ScaleManager#startFullScreen + * @public + * @param {boolean} [antialias] - Changes the anti-alias feature of the canvas before jumping in to fullscreen (false = retain pixel art, true = smooth art). If not specified then no change is made. Only works in CANVAS mode. + * @param {boolean} [allowTrampoline=undefined] - Internal argument. If `false` click trampolining is suppressed. + * @return {boolean} Returns true if the device supports fullscreen mode and fullscreen mode was attempted to be started. (It might not actually start, wait for the signals.) + */ + startFullScreen: function (antialias, allowTrampoline) { + + if (this.isFullScreen) + { + return false; + } + + if (!this.compatibility.supportsFullScreen) + { + // Error is called in timeout to emulate the real fullscreenerror event better + var _this = this; + setTimeout(function () { + _this.fullScreenError(); + }, 10); + return; + } + + if (this.compatibility.clickTrampoline === 'when-not-mouse') + { + var input = this.game.input; + + if (input.activePointer && + input.activePointer !== input.mousePointer && + (allowTrampoline || allowTrampoline !== false)) + { + input.activePointer.addClickTrampoline("startFullScreen", this.startFullScreen, this, [antialias, false]); + return; + } + } + + if (typeof antialias !== 'undefined' && this.game.renderType === Phaser.CANVAS) + { + this.game.stage.smoothed = antialias; + } + + var fsTarget = this.fullScreenTarget; + + if (!fsTarget) + { + this.cleanupCreatedTarget(); + + this._createdFullScreenTarget = this.createFullScreenTarget(); + fsTarget = this._createdFullScreenTarget; + } + + var initData = { + targetElement: fsTarget + }; + + this.onFullScreenInit.dispatch(this, initData); + + if (this._createdFullScreenTarget) + { + // Move the Display canvas inside of the target and add the target to the DOM + // (The target has to be added for the Fullscreen API to work.) + var canvas = this.game.canvas; + var parent = canvas.parentNode; + parent.insertBefore(fsTarget, canvas); + fsTarget.appendChild(canvas); + } + + if (this.game.device.fullscreenKeyboard) + { + fsTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); + } + else + { + fsTarget[this.game.device.requestFullscreen](); + } + + return true; + + }, + + /** + * Stops / exits fullscreen mode, if active. + * + * @method Phaser.ScaleManager#stopFullScreen + * @public + * @return {boolean} Returns true if the browser supports fullscreen mode and fullscreen mode will be exited. + */ + stopFullScreen: function () { + + if (!this.isFullScreen || !this.compatibility.supportsFullScreen) + { + return false; + } + + document[this.game.device.cancelFullscreen](); + + return true; + + }, + + /** + * Cleans up the previous fullscreen target, if such was automatically created. + * This ensures the canvas is restored to its former parent, assuming the target didn't move. + * + * @method Phaser.ScaleManager#cleanupCreatedTarget + * @private + */ + cleanupCreatedTarget: function () { + + var fsTarget = this._createdFullScreenTarget; + + if (fsTarget && fsTarget.parentNode) + { + // Make sure to cleanup synthetic target for sure; + // swap the canvas back to the parent. + var parent = fsTarget.parentNode; + parent.insertBefore(this.game.canvas, fsTarget); + parent.removeChild(fsTarget); + } + + this._createdFullScreenTarget = null; + + }, + + /** + * Used to prepare/restore extra fullscreen mode settings. + * (This does move any elements within the DOM tree.) + * + * @method Phaser.ScaleManager#prepScreenMode + * @private + * @param {boolean} enteringFullscreen - True if _entering_ fullscreen, false if _leaving_. + */ + prepScreenMode: function (enteringFullscreen) { + + var createdTarget = !!this._createdFullScreenTarget; + var fsTarget = this._createdFullScreenTarget || this.fullScreenTarget; + + if (enteringFullscreen) + { + if (createdTarget || this.fullScreenScaleMode === Phaser.ScaleManager.EXACT_FIT) + { + // Resize target, as long as it's not the canvas + if (fsTarget !== this.game.canvas) + { + this._fullScreenRestore = { + targetWidth: fsTarget.style.width, + targetHeight: fsTarget.style.height + }; + + fsTarget.style.width = '100%'; + fsTarget.style.height = '100%'; + } + } + } + else + { + // Have restore information + if (this._fullScreenRestore) + { + fsTarget.style.width = this._fullScreenRestore.targetWidth; + fsTarget.style.height = this._fullScreenRestore.targetHeight; + + this._fullScreenRestore = null; + } + + // Always reset to game size + this.updateDimensions(this._gameSize.width, this._gameSize.height, true); + this.resetCanvas(); + } + + }, + + /** + * Called automatically when the browser enters of leaves fullscreen mode. + * + * @method Phaser.ScaleManager#fullScreenChange + * @private + * @param {Event} [event=undefined] - The fullscreenchange event + */ + fullScreenChange: function (event) { + + this.event = event; + + if (this.isFullScreen) + { + this.prepScreenMode(true); + + this.updateLayout(); + this.queueUpdate(true); + } + else + { + this.prepScreenMode(false); + + this.cleanupCreatedTarget(); + + this.updateLayout(); + this.queueUpdate(true); + } + + this.onFullScreenChange.dispatch(this, this.width, this.height); + + }, + + /** + * Called automatically when the browser fullscreen request fails; + * or called when a fullscreen request is made on a device for which it is not supported. + * + * @method Phaser.ScaleManager#fullScreenError + * @private + * @param {Event} [event=undefined] - The fullscreenerror event; undefined if invoked on a device that does not support the Fullscreen API. + */ + fullScreenError: function (event) { + + this.event = event; + + this.cleanupCreatedTarget(); + + console.warn('Phaser.ScaleManager: requestFullscreen failed or device does not support the Fullscreen API'); + + this.onFullScreenError.dispatch(this); + + }, + + /** + * Takes a Sprite or Image object and scales it to fit the given dimensions. + * Scaling happens proportionally without distortion to the sprites texture. + * The letterBox parameter controls if scaling will produce a letter-box effect or zoom the + * sprite until it fills the given values. Note that with letterBox set to false the scaled sprite may spill out over either + * the horizontal or vertical sides of the target dimensions. If you wish to stop this you can crop the Sprite. + * + * @method Phaser.ScaleManager#scaleSprite + * @protected + * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite we want to scale. + * @param {integer} [width] - The target width that we want to fit the sprite in to. If not given it defaults to ScaleManager.width. + * @param {integer} [height] - The target height that we want to fit the sprite in to. If not given it defaults to ScaleManager.height. + * @param {boolean} [letterBox=false] - True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. + * @return {Phaser.Sprite|Phaser.Image} The scaled sprite. + */ + scaleSprite: function (sprite, width, height, letterBox) { + + if (width === undefined) { width = this.width; } + if (height === undefined) { height = this.height; } + if (letterBox === undefined) { letterBox = false; } + + if (!sprite || !sprite['scale']) + { + return sprite; + } + + sprite.scale.x = 1; + sprite.scale.y = 1; + + if ((sprite.width <= 0) || (sprite.height <= 0) || (width <= 0) || (height <= 0)) + { + return sprite; + } + + var scaleX1 = width; + var scaleY1 = (sprite.height * width) / sprite.width; + + var scaleX2 = (sprite.width * height) / sprite.height; + var scaleY2 = height; + + var scaleOnWidth = (scaleX2 > width); + + if (scaleOnWidth) + { + scaleOnWidth = letterBox; + } + else + { + scaleOnWidth = !letterBox; + } + + if (scaleOnWidth) + { + sprite.width = Math.floor(scaleX1); + sprite.height = Math.floor(scaleY1); + } + else + { + sprite.width = Math.floor(scaleX2); + sprite.height = Math.floor(scaleY2); + } + + // Enable at some point? + // sprite.x = Math.floor((width - sprite.width) / 2); + // sprite.y = Math.floor((height - sprite.height) / 2); + + return sprite; + + }, + + /** + * Destroys the ScaleManager and removes any event listeners. + * This should probably only be called when the game is destroyed. + * + * @method Phaser.ScaleManager#destroy + * @protected + */ + destroy: function () { + + this.game.onResume.remove(this._gameResumed, this); + + window.removeEventListener('orientationchange', this._orientationChange, false); + window.removeEventListener('resize', this._windowResize, false); + + if (this.compatibility.supportsFullScreen) + { + document.removeEventListener('webkitfullscreenchange', this._fullScreenChange, false); + document.removeEventListener('mozfullscreenchange', this._fullScreenChange, false); + document.removeEventListener('MSFullscreenChange', this._fullScreenChange, false); + document.removeEventListener('fullscreenchange', this._fullScreenChange, false); + + document.removeEventListener('webkitfullscreenerror', this._fullScreenError, false); + document.removeEventListener('mozfullscreenerror', this._fullScreenError, false); + document.removeEventListener('MSFullscreenError', this._fullScreenError, false); + document.removeEventListener('fullscreenerror', this._fullScreenError, false); + } + + } + +}; + +Phaser.ScaleManager.prototype.constructor = Phaser.ScaleManager; + +/** +* The DOM element that is considered the Parent bounding element, if any. +* +* This `null` if {@link #parentIsWindow} is true or if fullscreen mode is entered and {@link #fullScreenTarget} is specified. +* It will also be null if there is no game canvas or if the game canvas has no parent. +* +* @name Phaser.ScaleManager#boundingParent +* @property {?DOMElement} boundingParent +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "boundingParent", { + + get: function () { + if (this.parentIsWindow || + (this.isFullScreen && !this._createdFullScreenTarget)) + { + return null; + } + + var parentNode = this.game.canvas && this.game.canvas.parentNode; + return parentNode || null; + } + +}); + +/** +* The scaling method used by the ScaleManager when not in fullscreen. +* +*
+*
{@link Phaser.ScaleManager.NO_SCALE}
+*
+* The Game display area will not be scaled - even if it is too large for the canvas/screen. +* This mode _ignores_ any applied scaling factor and displays the canvas at the Game size. +*
+*
{@link Phaser.ScaleManager.EXACT_FIT}
+*
+* The Game display area will be _stretched_ to fill the entire size of the canvas's parent element and/or screen. +* Proportions are not maintained. +*
+*
{@link Phaser.ScaleManager.SHOW_ALL}
+*
+* Show the entire game display area while _maintaining_ the original aspect ratio. +*
+*
{@link Phaser.ScaleManager.RESIZE}
+*
+* The dimensions of the game display area are changed to match the size of the parent container. +* That is, this mode _changes the Game size_ to match the display size. +*

+* Any manually set Game size (see {@link #setGameSize}) is ignored while in effect. +*

+*
{@link Phaser.ScaleManager.USER_SCALE}
+*
+* The game Display is scaled according to the user-specified scale set by {@link Phaser.ScaleManager#setUserScale setUserScale}. +*

+* This scale can be adjusted in the {@link Phaser.ScaleManager#setResizeCallback resize callback} +* for flexible custom-sizing needs. +*

+*
+* +* @name Phaser.ScaleManager#scaleMode +* @property {integer} scaleMode +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "scaleMode", { + + get: function () { + + return this._scaleMode; + + }, + + set: function (value) { + + if (value !== this._scaleMode) + { + if (!this.isFullScreen) + { + this.updateDimensions(this._gameSize.width, this._gameSize.height, true); + this.queueUpdate(true); + } + + this._scaleMode = value; + } + + return this._scaleMode; + + } + +}); + +/** +* The scaling method used by the ScaleManager when in fullscreen. +* +* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. +* +* @name Phaser.ScaleManager#fullScreenScaleMode +* @property {integer} fullScreenScaleMode +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "fullScreenScaleMode", { + + get: function () { + + return this._fullScreenScaleMode; + + }, + + set: function (value) { + + if (value !== this._fullScreenScaleMode) + { + // If in fullscreen then need a wee bit more work + if (this.isFullScreen) + { + this.prepScreenMode(false); + this._fullScreenScaleMode = value; + this.prepScreenMode(true); + + this.queueUpdate(true); + } + else + { + this._fullScreenScaleMode = value; + } + } + + return this._fullScreenScaleMode; + + } + +}); + +/** +* Returns the current scale mode - for normal or fullscreen operation. +* +* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. +* +* @name Phaser.ScaleManager#currentScaleMode +* @property {number} currentScaleMode +* @protected +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "currentScaleMode", { + + get: function () { + + return this.isFullScreen ? this._fullScreenScaleMode : this._scaleMode; + + } + +}); + +/** +* When enabled the Display canvas will be horizontally-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). +* +* To align horizontally across the page the Display canvas should be added directly to page; +* or the parent container should itself be horizontally aligned. +* +* Horizontal alignment is not applicable with the {@link .RESIZE} scaling mode. +* +* @name Phaser.ScaleManager#pageAlignHorizontally +* @property {boolean} pageAlignHorizontally +* @default false +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignHorizontally", { + + get: function () { + + return this._pageAlignHorizontally; + + }, + + set: function (value) { + + if (value !== this._pageAlignHorizontally) + { + this._pageAlignHorizontally = value; + this.queueUpdate(true); + } + + } + +}); + +/** +* When enabled the Display canvas will be vertically-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). +* +* To align vertically the Parent element should have a _non-collapsible_ height, such that it will maintain +* a height _larger_ than the height of the contained Game canvas - the game canvas will then be scaled vertically +* _within_ the remaining available height dictated by the Parent element. +* +* One way to prevent the parent from collapsing is to add an absolute "min-height" CSS property to the parent element. +* If specifying a relative "min-height/height" or adjusting margins, the Parent height must still be non-collapsible (see note). +* +* _Note_: In version 2.2 the minimum document height is _not_ automatically set to the viewport/window height. +* To automatically update the minimum document height set {@link Phaser.ScaleManager#compatibility compatibility.forceMinimumDocumentHeight} to true. +* +* Vertical alignment is not applicable with the {@link .RESIZE} scaling mode. +* +* @name Phaser.ScaleManager#pageAlignVertically +* @property {boolean} pageAlignVertically +* @default false +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignVertically", { + + get: function () { + + return this._pageAlignVertically; + + }, + + set: function (value) { + + if (value !== this._pageAlignVertically) + { + this._pageAlignVertically = value; + this.queueUpdate(true); + } + + } + +}); + +/** +* Returns true if the browser is in fullscreen mode, otherwise false. +* @name Phaser.ScaleManager#isFullScreen +* @property {boolean} isFullScreen +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isFullScreen", { + + get: function () { + return !!(document['fullscreenElement'] || + document['webkitFullscreenElement'] || + document['mozFullScreenElement'] || + document['msFullscreenElement']); + } + +}); + +/** +* Returns true if the screen orientation is in portrait mode. +* +* @name Phaser.ScaleManager#isPortrait +* @property {boolean} isPortrait +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isPortrait", { + + get: function () { + return this.classifyOrientation(this.screenOrientation) === 'portrait'; + } + +}); + +/** +* Returns true if the screen orientation is in landscape mode. +* +* @name Phaser.ScaleManager#isLandscape +* @property {boolean} isLandscape +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isLandscape", { + + get: function () { + return this.classifyOrientation(this.screenOrientation) === 'landscape'; + } + +}); + +/** +* Returns true if the game dimensions are portrait (height > width). +* This is especially useful to check when using the RESIZE scale mode +* but wanting to maintain game orientation on desktop browsers, +* where typically the screen orientation will always be landscape regardless of the browser viewport. +* +* @name Phaser.ScaleManager#isGamePortrait +* @property {boolean} isGamePortrait +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isGamePortrait", { + + get: function () { + return (this.height > this.width); + } + +}); + +/** +* Returns true if the game dimensions are landscape (width > height). +* This is especially useful to check when using the RESIZE scale mode +* but wanting to maintain game orientation on desktop browsers, +* where typically the screen orientation will always be landscape regardless of the browser viewport. +* +* @name Phaser.ScaleManager#isGameLandscape +* @property {boolean} isGameLandscape +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { + + get: function () { + return (this.width > this.height); + } + +}); + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * A collection of methods for displaying debug information about game objects. * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture @@ -64386,6 +63216,439 @@ Phaser.Utils.Debug.prototype.constructor = Phaser.Utils.Debug; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* DOM utility class. +* +* Provides a useful Window and Element functions as well as cross-browser compatibility buffer. +* +* Some code originally derived from {@link https://github.com/ryanve/verge verge}. +* Some parts were inspired by the research of Ryan Van Etten, released under MIT License 2013. +* +* @class Phaser.DOM +* @static +*/ +Phaser.DOM = { + + /** + * Get the [absolute] position of the element relative to the Document. + * + * The value may vary slightly as the page is scrolled due to rounding errors. + * + * @method Phaser.DOM.getOffset + * @param {DOMElement} element - The targeted element that we want to retrieve the offset. + * @param {Phaser.Point} [point] - The point we want to take the x/y values of the offset. + * @return {Phaser.Point} - A point objet with the offsetX and Y as its properties. + */ + getOffset: function (element, point) { + + point = point || new Phaser.Point(); + + var box = element.getBoundingClientRect(); + + var scrollTop = Phaser.DOM.scrollY; + var scrollLeft = Phaser.DOM.scrollX; + var clientTop = document.documentElement.clientTop; + var clientLeft = document.documentElement.clientLeft; + + point.x = box.left + scrollLeft - clientLeft; + point.y = box.top + scrollTop - clientTop; + + return point; + + }, + + /** + * A cross-browser element.getBoundingClientRect method with optional cushion. + * + * Returns a plain object containing the properties `top/bottom/left/right/width/height` with respect to the top-left corner of the current viewport. + * Its properties match the native rectangle. + * The cushion parameter is an amount of pixels (+/-) to cushion the element. + * It adjusts the measurements such that it is possible to detect when an element is near the viewport. + * + * @method Phaser.DOM.getBounds + * @param {DOMElement|Object} element - The element or stack (uses first item) to get the bounds for. + * @param {number} [cushion] - A +/- pixel adjustment amount. + * @return {Object|boolean} A plain object containing the properties `top/bottom/left/right/width/height` or `false` if a non-valid element is given. + */ + getBounds: function (element, cushion) { + + if (cushion === undefined) { cushion = 0; } + + element = element && !element.nodeType ? element[0] : element; + + if (!element || element.nodeType !== 1) + { + return false; + } + else + { + return this.calibrate(element.getBoundingClientRect(), cushion); + } + + }, + + /** + * Calibrates element coordinates for `inLayoutViewport` checks. + * + * @method Phaser.DOM.calibrate + * @private + * @param {object} coords - An object containing the following properties: `{top: number, right: number, bottom: number, left: number}` + * @param {number} [cushion] - A value to adjust the coordinates by. + * @return {object} The calibrated element coordinates + */ + calibrate: function (coords, cushion) { + + cushion = +cushion || 0; + + var output = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }; + + output.width = (output.right = coords.right + cushion) - (output.left = coords.left - cushion); + output.height = (output.bottom = coords.bottom + cushion) - (output.top = coords.top - cushion); + + return output; + + }, + + /** + * Get the Visual viewport aspect ratio (or the aspect ratio of an object or element) + * + * @method Phaser.DOM.getAspectRatio + * @param {(DOMElement|Object)} [object=(visualViewport)] - The object to determine the aspect ratio for. Must have public `width` and `height` properties or methods. + * @return {number} The aspect ratio. + */ + getAspectRatio: function (object) { + + object = null == object ? this.visualBounds : 1 === object.nodeType ? this.getBounds(object) : object; + + var w = object['width']; + var h = object['height']; + + if (typeof w === 'function') + { + w = w.call(object); + } + + if (typeof h === 'function') + { + h = h.call(object); + } + + return w / h; + + }, + + /** + * Tests if the given DOM element is within the Layout viewport. + * + * The optional cushion parameter allows you to specify a distance. + * + * inLayoutViewport(element, 100) is `true` if the element is in the viewport or 100px near it. + * inLayoutViewport(element, -100) is `true` if the element is in the viewport or at least 100px near it. + * + * @method Phaser.DOM.inLayoutViewport + * @param {DOMElement|Object} element - The DOM element to check. If no element is given it defaults to the Phaser game canvas. + * @param {number} [cushion] - The cushion allows you to specify a distance within which the element must be within the viewport. + * @return {boolean} True if the element is within the viewport, or within `cushion` distance from it. + */ + inLayoutViewport: function (element, cushion) { + + var r = this.getBounds(element, cushion); + + return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= this.layoutBounds.width && r.left <= this.layoutBounds.height; + + }, + + /** + * Returns the device screen orientation. + * + * Orientation values: 'portrait-primary', 'landscape-primary', 'portrait-secondary', 'landscape-secondary'. + * + * Order of resolving: + * - Screen Orientation API, or variation of - Future track. Most desktop and mobile browsers. + * - Screen size ratio check - If fallback is 'screen', suited for desktops. + * - Viewport size ratio check - If fallback is 'viewport', suited for mobile. + * - window.orientation - If fallback is 'window.orientation', works iOS and probably most Android; non-recommended track. + * - Media query + * - Viewport size ratio check (probably only IE9 and legacy mobile gets here..) + * + * See + * - https://w3c.github.io/screen-orientation/ (conflicts with mozOrientation/msOrientation) + * - https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation (mozOrientation) + * - http://msdn.microsoft.com/en-us/library/ie/dn342934(v=vs.85).aspx + * - https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries + * - http://stackoverflow.com/questions/4917664/detect-viewport-orientation + * - http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation + * + * @method Phaser.DOM.getScreenOrientation + * @protected + * @param {string} [primaryFallback=(none)] - Specify 'screen', 'viewport', or 'window.orientation'. + */ + getScreenOrientation: function (primaryFallback) { + + var screen = window.screen; + var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation; + + if (orientation && typeof orientation.type === 'string') + { + // Screen Orientation API specification + return orientation.type; + } + else if (typeof orientation === 'string') + { + // moz/ms-orientation are strings + return orientation; + } + + var PORTRAIT = 'portrait-primary'; + var LANDSCAPE = 'landscape-primary'; + + if (primaryFallback === 'screen') + { + return (screen.height > screen.width) ? PORTRAIT : LANDSCAPE; + } + else if (primaryFallback === 'viewport') + { + return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; + } + else if (primaryFallback === 'window.orientation' && typeof window.orientation === 'number') + { + // This may change by device based on "natural" orientation. + return (window.orientation === 0 || window.orientation === 180) ? PORTRAIT : LANDSCAPE; + } + else if (window.matchMedia) + { + if (window.matchMedia("(orientation: portrait)").matches) + { + return PORTRAIT; + } + else if (window.matchMedia("(orientation: landscape)").matches) + { + return LANDSCAPE; + } + } + + return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; + + }, + + /** + * The bounds of the Visual viewport, as discussed in + * {@link http://www.quirksmode.org/mobile/viewports.html A tale of two viewports — part one} + * with one difference: the viewport size _excludes_ scrollbars, as found on some desktop browsers. + * + * Supported mobile: + * iOS/Safari, Android 4, IE10, Firefox OS (maybe not Firefox Android), Opera Mobile 16 + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} x - Scroll, left offset - eg. "scrollX" + * @property {number} y - Scroll, top offset - eg. "scrollY" + * @property {number} width - Viewport width in pixels. + * @property {number} height - Viewport height in pixels. + * @readonly + */ + visualBounds: new Phaser.Rectangle(), + + /** + * The bounds of the Layout viewport, as discussed in + * {@link http://www.quirksmode.org/mobile/viewports2.html A tale of two viewports — part two}; + * but honoring the constraints as specified applicable viewport meta-tag. + * + * The bounds returned are not guaranteed to be fully aligned with CSS media queries (see + * {@link http://www.matanich.com/2013/01/07/viewport-size/ What size is my viewport?}). + * + * This is _not_ representative of the Visual bounds: in particular the non-primary axis will + * generally be significantly larger than the screen height on mobile devices when running with a + * constrained viewport. + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} width - Viewport width in pixels. + * @property {number} height - Viewport height in pixels. + * @readonly + */ + layoutBounds: new Phaser.Rectangle(), + + /** + * The size of the document / Layout viewport. + * + * This incorrectly reports the dimensions in IE. + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} width - Document width in pixels. + * @property {number} height - Document height in pixels. + * @readonly + */ + documentBounds: new Phaser.Rectangle() + +}; + +Phaser.Device.whenReady(function (device) { + + // All target browsers should support page[XY]Offset. + var scrollX = window && ('pageXOffset' in window) ? + function () { return window.pageXOffset; } : + function () { return document.documentElement.scrollLeft; }; + + var scrollY = window && ('pageYOffset' in window) ? + function () { return window.pageYOffset; } : + function () { return document.documentElement.scrollTop; }; + + /** + * A cross-browser window.scrollX. + * + * @name Phaser.DOM.scrollX + * @property {number} scrollX + * @readonly + * @protected + */ + Object.defineProperty(Phaser.DOM, "scrollX", { + get: scrollX + }); + + /** + * A cross-browser window.scrollY. + * + * @name Phaser.DOM.scrollY + * @property {number} scrollY + * @readonly + * @protected + */ + Object.defineProperty(Phaser.DOM, "scrollY", { + get: scrollY + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "x", { + get: scrollX + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "y", { + get: scrollY + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "x", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "y", { + value: 0 + }); + + var treatAsDesktop = device.desktop && + (document.documentElement.clientWidth <= window.innerWidth) && + (document.documentElement.clientHeight <= window.innerHeight); + + // Desktop browsers align the layout viewport with the visual viewport. + // This differs from mobile browsers with their zooming design. + // Ref. http://quirksmode.org/mobile/tableViewport.html + if (treatAsDesktop) + { + + // PST- When scrollbars are not included this causes upstream issues in ScaleManager. + // So reverted to the old "include scrollbars." + var clientWidth = function () { + return Math.max(window.innerWidth, document.documentElement.clientWidth); + }; + var clientHeight = function () { + return Math.max(window.innerHeight, document.documentElement.clientHeight); + }; + + // Interested in area sans-scrollbar + Object.defineProperty(Phaser.DOM.visualBounds, "width", { + get: clientWidth + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "height", { + get: clientHeight + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "width", { + get: clientWidth + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "height", { + get: clientHeight + }); + + } else { + + Object.defineProperty(Phaser.DOM.visualBounds, "width", { + get: function () { + return window.innerWidth; + } + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "height", { + get: function () { + return window.innerHeight; + } + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "width", { + + get: function () { + var a = document.documentElement.clientWidth; + var b = window.innerWidth; + + return a < b ? b : a; // max + } + + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "height", { + + get: function () { + var a = document.documentElement.clientHeight; + var b = window.innerHeight; + + return a < b ? b : a; // max + } + + }); + + } + + // For Phaser.DOM.documentBounds + // Ref. http://www.quirksmode.org/mobile/tableViewport_desktop.html + + Object.defineProperty(Phaser.DOM.documentBounds, "x", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "y", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "width", { + + get: function () { + var d = document.documentElement; + return Math.max(d.clientWidth, d.offsetWidth, d.scrollWidth); + } + + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "height", { + + get: function () { + var d = document.documentElement; + return Math.max(d.clientHeight, d.offsetHeight, d.scrollHeight); + } + + }); + +}, null, true); + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * ArraySet is a Set data structure (items must be unique within the set) that also maintains order. * This allows specific items to be easily added or removed from the Set. @@ -64550,7 +63813,7 @@ Phaser.ArraySet.prototype = { */ callAll: function (key) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var i = this.list.length; @@ -64961,6 +64224,844 @@ Phaser.ArrayUtils = { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* A basic Linked List data structure. +* +* This implementation _modifies_ the `prev` and `next` properties of each item added: +* - The `prev` and `next` properties must be writable and should not be used for any other purpose. +* - Items _cannot_ be added to multiple LinkedLists at the same time. +* - Only objects can be added. +* +* @class Phaser.LinkedList +* @constructor +*/ +Phaser.LinkedList = function () { + + /** + * Next element in the list. + * @property {object} next + * @default + */ + this.next = null; + + /** + * Previous element in the list. + * @property {object} prev + * @default + */ + this.prev = null; + + /** + * First element in the list. + * @property {object} first + * @default + */ + this.first = null; + + /** + * Last element in the list. + * @property {object} last + * @default + */ + this.last = null; + + /** + * Number of elements in the list. + * @property {integer} total + * @default + */ + this.total = 0; + +}; + +Phaser.LinkedList.prototype = { + + /** + * Adds a new element to this linked list. + * + * @method Phaser.LinkedList#add + * @param {object} item - The element to add to this list. Can be a Phaser.Sprite or any other object you need to quickly iterate through. + * @return {object} The item that was added. + */ + add: function (item) { + + // If the list is empty + if (this.total === 0 && this.first === null && this.last === null) + { + this.first = item; + this.last = item; + this.next = item; + item.prev = this; + this.total++; + return item; + } + + // Gets appended to the end of the list, regardless of anything, and it won't have any children of its own (non-nested list) + this.last.next = item; + + item.prev = this.last; + + this.last = item; + + this.total++; + + return item; + + }, + + /** + * Resets the first, last, next and previous node pointers in this list. + * + * @method Phaser.LinkedList#reset + */ + reset: function () { + + this.first = null; + this.last = null; + this.next = null; + this.prev = null; + this.total = 0; + + }, + + /** + * Removes the given element from this linked list if it exists. + * + * @method Phaser.LinkedList#remove + * @param {object} item - The item to be removed from the list. + */ + remove: function (item) { + + if (this.total === 1) + { + this.reset(); + item.next = item.prev = null; + return; + } + + if (item === this.first) + { + // It was 'first', make 'first' point to first.next + this.first = this.first.next; + } + else if (item === this.last) + { + // It was 'last', make 'last' point to last.prev + this.last = this.last.prev; + } + + if (item.prev) + { + // make item.prev.next point to childs.next instead of item + item.prev.next = item.next; + } + + if (item.next) + { + // make item.next.prev point to item.prev instead of item + item.next.prev = item.prev; + } + + item.next = item.prev = null; + + if (this.first === null ) + { + this.last = null; + } + + this.total--; + + }, + + /** + * Calls a function on all members of this list, using the member as the context for the callback. + * The function must exist on the member. + * + * @method Phaser.LinkedList#callAll + * @param {function} callback - The function to call. + */ + callAll: function (callback) { + + if (!this.first || !this.last) + { + return; + } + + var entity = this.first; + + do + { + if (entity && entity[callback]) + { + entity[callback].call(entity); + } + + entity = entity.next; + + } + while(entity != this.last.next); + + } + +}; + +Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content +* quickly and easily, without the need for any external files. You can create textures for sprites and in +* coming releases we'll add dynamic sound effect generation support as well (like sfxr). +* +* Access this via `State.create` (or `this.create` from within a State object) +* +* @class Phaser.Create +* @constructor +* @param {Phaser.Game} game - Game reference to the currently running game. + */ +Phaser.Create = function (game) { + + /** + * @property {Phaser.Game} game - A reference to the currently running Game. + */ + this.game = game; + + /** + * @property {Phaser.BitmapData} bmd - The internal BitmapData Create uses to generate textures from. + */ + this.bmd = null; + + /** + * @property {HTMLCanvasElement} canvas - The canvas the BitmapData uses. + */ + this.canvas = null; + + /** + * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. + */ + this.ctx = null; + + /** + * @property {array} palettes - A range of 16 color palettes for use with sprite generation. + */ + this.palettes = [ + { 0: '#000', 1: '#9D9D9D', 2: '#FFF', 3: '#BE2633', 4: '#E06F8B', 5: '#493C2B', 6: '#A46422', 7: '#EB8931', 8: '#F7E26B', 9: '#2F484E', A: '#44891A', B: '#A3CE27', C: '#1B2632', D: '#005784', E: '#31A2F2', F: '#B2DCEF' }, + { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#f5f4eb' }, + { 0: '#000', 1: '#2234d1', 2: '#0c7e45', 3: '#44aacc', 4: '#8a3622', 5: '#5c2e78', 6: '#aa5c3d', 7: '#b5b5b5', 8: '#5e606e', 9: '#4c81fb', A: '#6cd947', B: '#7be2f9', C: '#eb8a60', D: '#e23d69', E: '#ffd93f', F: '#fff' }, + { 0: '#000', 1: '#fff', 2: '#8b4131', 3: '#7bbdc5', 4: '#8b41ac', 5: '#6aac41', 6: '#3931a4', 7: '#d5de73', 8: '#945a20', 9: '#5a4100', A: '#bd736a', B: '#525252', C: '#838383', D: '#acee8b', E: '#7b73de', F: '#acacac' }, + { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#fff' } + ]; + +}; + +/** +* A 16 color palette by [Arne](http://androidarts.com/palette/16pal.htm) +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_ARNE = 0; + +/** +* A 16 color JMP inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_JMP = 1; + +/** +* A 16 color CGA inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_CGA = 2; + +/** +* A 16 color C64 inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_C64 = 3; + +/** +* A 16 color palette inspired by Japanese computers like the MSX. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_JAPANESE_MACHINE = 4; + +Phaser.Create.prototype = { + + /** + * Generates a new PIXI.Texture from the given data, which can be applied to a Sprite. + * + * This allows you to create game graphics quickly and easily, with no external files but that use actual proper images + * rather than Phaser.Graphics objects, which are expensive to render and limited in scope. + * + * Each element of the array is a string holding the pixel color values, as mapped to one of the Phaser.Create PALETTE consts. + * + * For example: + * + * `var data = [ + * ' 333 ', + * ' 777 ', + * 'E333E', + * ' 333 ', + * ' 3 3 ' + * ];` + * + * `game.create.texture('bob', data);` + * + * The above will create a new texture called `bob`, which will look like a little man wearing a hat. You can then use it + * for sprites the same way you use any other texture: `game.add.sprite(0, 0, 'bob');` + * + * @method Phaser.Create#texture + * @param {string} key - The key used to store this texture in the Phaser Cache. + * @param {array} data - An array of pixel data. + * @param {integer} [pixelWidth=8] - The width of each pixel. + * @param {integer} [pixelHeight=8] - The height of each pixel. + * @param {integer} [palette=0] - The palette to use when rendering the texture. One of the Phaser.Create.PALETTE consts. + * @return {PIXI.Texture} The newly generated texture. + */ + texture: function (key, data, pixelWidth, pixelHeight, palette) { + + if (pixelWidth === undefined) { pixelWidth = 8; } + if (pixelHeight === undefined) { pixelHeight = pixelWidth; } + if (palette === undefined) { palette = 0; } + + var w = data[0].length * pixelWidth; + var h = data.length * pixelHeight; + + // No bmd? Let's make one + if (this.bmd === null) + { + this.bmd = this.game.make.bitmapData(); + this.canvas = this.bmd.canvas; + this.ctx = this.bmd.context; + } + + this.bmd.resize(w, h); + this.bmd.clear(); + + // Draw it + for (var y = 0; y < data.length; y++) + { + var row = data[y]; + + for (var x = 0; x < row.length; x++) + { + var d = row[x]; + + if (d !== '.' && d !== ' ') + { + this.ctx.fillStyle = this.palettes[palette][d]; + this.ctx.fillRect(x * pixelWidth, y * pixelHeight, pixelWidth, pixelHeight); + } + } + } + + return this.bmd.generateTexture(key); + + }, + + /** + * Creates a grid texture based on the given dimensions. + * + * @method Phaser.Create#grid + * @param {string} key - The key used to store this texture in the Phaser Cache. + * @param {integer} width - The width of the grid in pixels. + * @param {integer} height - The height of the grid in pixels. + * @param {integer} cellWidth - The width of the grid cells in pixels. + * @param {integer} cellHeight - The height of the grid cells in pixels. + * @param {string} color - The color to draw the grid lines in. Should be a Canvas supported color string like `#ff5500` or `rgba(200,50,3,0.5)`. + * @return {PIXI.Texture} The newly generated texture. + */ + grid: function (key, width, height, cellWidth, cellHeight, color) { + + // No bmd? Let's make one + if (this.bmd === null) + { + this.bmd = this.game.make.bitmapData(); + this.canvas = this.bmd.canvas; + this.ctx = this.bmd.context; + } + + this.bmd.resize(width, height); + + this.ctx.fillStyle = color; + + for (var y = 0; y < height; y += cellHeight) + { + this.ctx.fillRect(0, y, width, 1); + } + + for (var x = 0; x < width; x += cellWidth) + { + this.ctx.fillRect(x, 0, 1, height); + } + + return this.bmd.generateTexture(key); + + } + +}; + +Phaser.Create.prototype.constructor = Phaser.Create; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. +* Please try to avoid using in production games with a long time to build. +* This is also why the documentation is incomplete. +* +* FlexGrid is a a responsive grid manager that works in conjunction with the ScaleManager RESIZE scaling mode and FlexLayers +* to provide for game object positioning in a responsive manner. +* +* @class Phaser.FlexGrid +* @constructor +* @param {Phaser.ScaleManager} manager - The ScaleManager. +* @param {number} width - The width of the game. +* @param {number} height - The height of the game. +*/ +Phaser.FlexGrid = function (manager, width, height) { + + /** + * @property {Phaser.Game} game - A reference to the currently running Game. + */ + this.game = manager.game; + + /** + * @property {Phaser.ScaleManager} manager - A reference to the ScaleManager. + */ + this.manager = manager; + + // The perfect dimensions on which everything else is based + this.width = width; + this.height = height; + + this.boundsCustom = new Phaser.Rectangle(0, 0, width, height); + this.boundsFluid = new Phaser.Rectangle(0, 0, width, height); + this.boundsFull = new Phaser.Rectangle(0, 0, width, height); + this.boundsNone = new Phaser.Rectangle(0, 0, width, height); + + /** + * @property {Phaser.Point} position - + * @readonly + */ + this.positionCustom = new Phaser.Point(0, 0); + this.positionFluid = new Phaser.Point(0, 0); + this.positionFull = new Phaser.Point(0, 0); + this.positionNone = new Phaser.Point(0, 0); + + /** + * @property {Phaser.Point} scaleFactor - The scale factor based on the game dimensions vs. the scaled dimensions. + * @readonly + */ + this.scaleCustom = new Phaser.Point(1, 1); + this.scaleFluid = new Phaser.Point(1, 1); + this.scaleFluidInversed = new Phaser.Point(1, 1); + this.scaleFull = new Phaser.Point(1, 1); + this.scaleNone = new Phaser.Point(1, 1); + + this.customWidth = 0; + this.customHeight = 0; + this.customOffsetX = 0; + this.customOffsetY = 0; + + this.ratioH = width / height; + this.ratioV = height / width; + + this.multiplier = 0; + + this.layers = []; + +}; + +Phaser.FlexGrid.prototype = { + + /** + * Sets the core game size. This resets the w/h parameters and bounds. + * + * @method Phaser.FlexGrid#setSize + * @param {number} width - The new dimensions. + * @param {number} height - The new dimensions. + */ + setSize: function (width, height) { + + // These are locked and don't change until setSize is called again + this.width = width; + this.height = height; + + this.ratioH = width / height; + this.ratioV = height / width; + + this.scaleNone = new Phaser.Point(1, 1); + + this.boundsNone.width = this.width; + this.boundsNone.height = this.height; + + this.refresh(); + + }, + + // Need ability to create your own layers with custom scaling, etc. + + /** + * A custom layer is centered on the game and maintains its aspect ratio as it scales up and down. + * + * @method Phaser.FlexGrid#createCustomLayer + * @param {number} width - Width of this layer in pixels. + * @param {number} height - Height of this layer in pixels. + * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createCustomLayer: function (width, height, children, addToWorld) { + + if (addToWorld === undefined) { addToWorld = true; } + + this.customWidth = width; + this.customHeight = height; + + this.boundsCustom.width = width; + this.boundsCustom.height = height; + + var layer = new Phaser.FlexLayer(this, this.positionCustom, this.boundsCustom, this.scaleCustom); + + if (addToWorld) + { + this.game.world.add(layer); + } + + this.layers.push(layer); + + if (typeof children !== 'undefined' && typeof children !== null) + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A fluid layer is centered on the game and maintains its aspect ratio as it scales up and down. + * + * @method Phaser.FlexGrid#createFluidLayer + * @param {array} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFluidLayer: function (children, addToWorld) { + + if (addToWorld === undefined) { addToWorld = true; } + + var layer = new Phaser.FlexLayer(this, this.positionFluid, this.boundsFluid, this.scaleFluid); + + if (addToWorld) + { + this.game.world.add(layer); + } + + this.layers.push(layer); + + if (typeof children !== 'undefined' && typeof children !== null) + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A full layer is placed at 0,0 and extends to the full size of the game. Children are scaled according to the fluid ratios. + * + * @method Phaser.FlexGrid#createFullLayer + * @param {array} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFullLayer: function (children) { + + var layer = new Phaser.FlexLayer(this, this.positionFull, this.boundsFull, this.scaleFluid); + + this.game.world.add(layer); + + this.layers.push(layer); + + if (typeof children !== 'undefined') + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A fixed layer is centered on the game and is the size of the required dimensions and is never scaled. + * + * @method Phaser.FlexGrid#createFixedLayer + * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFixedLayer: function (children) { + + var layer = new Phaser.FlexLayer(this, this.positionNone, this.boundsNone, this.scaleNone); + + this.game.world.add(layer); + + this.layers.push(layer); + + if (typeof children !== 'undefined') + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * Resets the layer children references + * + * @method Phaser.FlexGrid#reset + */ + reset: function () { + + var i = this.layers.length; + + while (i--) + { + if (!this.layers[i].persist) + { + // Remove references to this class + this.layers[i].position = null; + this.layers[i].scale = null; + this.layers.slice(i, 1); + } + } + + }, + + /** + * Called when the game container changes dimensions. + * + * @method Phaser.FlexGrid#onResize + * @param {number} width - The new width of the game container. + * @param {number} height - The new height of the game container. + */ + onResize: function (width, height) { + + this.ratioH = width / height; + this.ratioV = height / width; + + this.refresh(width, height); + + }, + + /** + * Updates all internal vars such as the bounds and scale values. + * + * @method Phaser.FlexGrid#refresh + */ + refresh: function () { + + this.multiplier = Math.min((this.manager.height / this.height), (this.manager.width / this.width)); + + this.boundsFluid.width = Math.round(this.width * this.multiplier); + this.boundsFluid.height = Math.round(this.height * this.multiplier); + + this.scaleFluid.set(this.boundsFluid.width / this.width, this.boundsFluid.height / this.height); + this.scaleFluidInversed.set(this.width / this.boundsFluid.width, this.height / this.boundsFluid.height); + + this.scaleFull.set(this.boundsFull.width / this.width, this.boundsFull.height / this.height); + + this.boundsFull.width = Math.round(this.manager.width * this.scaleFluidInversed.x); + this.boundsFull.height = Math.round(this.manager.height * this.scaleFluidInversed.y); + + this.boundsFluid.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); + this.boundsNone.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); + + this.positionFluid.set(this.boundsFluid.x, this.boundsFluid.y); + this.positionNone.set(this.boundsNone.x, this.boundsNone.y); + + }, + + /** + * Fits a sprites width to the bounds. + * + * @method Phaser.FlexGrid#fitSprite + * @param {Phaser.Sprite} sprite - The Sprite to fit. + */ + fitSprite: function (sprite) { + + this.manager.scaleSprite(sprite); + + sprite.x = this.manager.bounds.centerX; + sprite.y = this.manager.bounds.centerY; + + }, + + /** + * Call in the render function to output the bounds rects. + * + * @method Phaser.FlexGrid#debug + */ + debug: function () { + + // for (var i = 0; i < this.layers.length; i++) + // { + // this.layers[i].debug(); + // } + + // this.game.debug.text(this.boundsFull.width + ' x ' + this.boundsFull.height, this.boundsFull.x + 4, this.boundsFull.y + 16); + // this.game.debug.geom(this.boundsFull, 'rgba(0,0,255,0.9', false); + + this.game.debug.text(this.boundsFluid.width + ' x ' + this.boundsFluid.height, this.boundsFluid.x + 4, this.boundsFluid.y + 16); + this.game.debug.geom(this.boundsFluid, 'rgba(255,0,0,0.9', false); + + // this.game.debug.text(this.boundsNone.width + ' x ' + this.boundsNone.height, this.boundsNone.x + 4, this.boundsNone.y + 16); + // this.game.debug.geom(this.boundsNone, 'rgba(0,255,0,0.9', false); + + // this.game.debug.text(this.boundsCustom.width + ' x ' + this.boundsCustom.height, this.boundsCustom.x + 4, this.boundsCustom.y + 16); + // this.game.debug.geom(this.boundsCustom, 'rgba(255,255,0,0.9', false); + + } + +}; + +Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. +* Please try to avoid using in production games with a long time to build. +* This is also why the documentation is incomplete. +* +* A responsive grid layer. +* +* @class Phaser.FlexLayer +* @extends Phaser.Group +* @constructor +* @param {Phaser.FlexGrid} manager - The FlexGrid that owns this FlexLayer. +* @param {Phaser.Point} position - A reference to the Point object used for positioning. +* @param {Phaser.Rectangle} bounds - A reference to the Rectangle used for the layer bounds. +* @param {Phaser.Point} scale - A reference to the Point object used for layer scaling. +*/ +Phaser.FlexLayer = function (manager, position, bounds, scale) { + + Phaser.Group.call(this, manager.game, null, '__flexLayer' + manager.game.rnd.uuid(), false); + + /** + * @property {Phaser.ScaleManager} scale - A reference to the ScaleManager. + */ + this.manager = manager.manager; + + /** + * @property {Phaser.FlexGrid} grid - A reference to the FlexGrid that owns this layer. + */ + this.grid = manager; + + /** + * Should the FlexLayer remain through a State swap? + * + * @type {boolean} + */ + this.persist = false; + + /** + * @property {Phaser.Point} position + */ + this.position = position; + + /** + * @property {Phaser.Rectangle} bounds + */ + this.bounds = bounds; + + /** + * @property {Phaser.Point} scale + */ + this.scale = scale; + + /** + * @property {Phaser.Point} topLeft + */ + this.topLeft = bounds.topLeft; + + /** + * @property {Phaser.Point} topMiddle + */ + this.topMiddle = new Phaser.Point(bounds.halfWidth, 0); + + /** + * @property {Phaser.Point} topRight + */ + this.topRight = bounds.topRight; + + /** + * @property {Phaser.Point} bottomLeft + */ + this.bottomLeft = bounds.bottomLeft; + + /** + * @property {Phaser.Point} bottomMiddle + */ + this.bottomMiddle = new Phaser.Point(bounds.halfWidth, bounds.bottom); + + /** + * @property {Phaser.Point} bottomRight + */ + this.bottomRight = bounds.bottomRight; + +}; + +Phaser.FlexLayer.prototype = Object.create(Phaser.Group.prototype); +Phaser.FlexLayer.prototype.constructor = Phaser.FlexLayer; + +/** + * Resize. + * + * @method Phaser.FlexLayer#resize + */ +Phaser.FlexLayer.prototype.resize = function () { +}; + +/** + * Debug. + * + * @method Phaser.FlexLayer#debug + */ +Phaser.FlexLayer.prototype.debug = function () { + + this.game.debug.text(this.bounds.width + ' x ' + this.bounds.height, this.bounds.x + 4, this.bounds.y + 16); + this.game.debug.geom(this.bounds, 'rgba(0,0,255,0.9', false); + + this.game.debug.geom(this.topLeft, 'rgba(255,255,255,0.9'); + this.game.debug.geom(this.topMiddle, 'rgba(255,255,255,0.9'); + this.game.debug.geom(this.topRight, 'rgba(255,255,255,0.9'); + +}; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * The Phaser.Color class is a set of static methods that assist in color manipulation and conversion. * @@ -65777,9 +65878,9 @@ Phaser.Color = { * * @method Phaser.Color.getRandomColor * @static - * @param {number} min - The lowest value to use for the color. - * @param {number} max - The highest value to use for the color. - * @param {number} alpha - The alpha value of the returning color (default 255 = fully opaque). + * @param {number} [min=0] - The lowest value to use for the color. + * @param {number} [max=255] - The highest value to use for the color. + * @param {number} [alpha=255] - The alpha value of the returning color (default 255 = fully opaque). * @returns {number} 32-bit color value with alpha. */ getRandomColor: function (min, max, alpha) { @@ -66301,195 +66402,6 @@ Phaser.Color = { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* A basic Linked List data structure. -* -* This implementation _modifies_ the `prev` and `next` properties of each item added: -* - The `prev` and `next` properties must be writable and should not be used for any other purpose. -* - Items _cannot_ be added to multiple LinkedLists at the same time. -* - Only objects can be added. -* -* @class Phaser.LinkedList -* @constructor -*/ -Phaser.LinkedList = function () { - - /** - * Next element in the list. - * @property {object} next - * @default - */ - this.next = null; - - /** - * Previous element in the list. - * @property {object} prev - * @default - */ - this.prev = null; - - /** - * First element in the list. - * @property {object} first - * @default - */ - this.first = null; - - /** - * Last element in the list. - * @property {object} last - * @default - */ - this.last = null; - - /** - * Number of elements in the list. - * @property {integer} total - * @default - */ - this.total = 0; - -}; - -Phaser.LinkedList.prototype = { - - /** - * Adds a new element to this linked list. - * - * @method Phaser.LinkedList#add - * @param {object} item - The element to add to this list. Can be a Phaser.Sprite or any other object you need to quickly iterate through. - * @return {object} The item that was added. - */ - add: function (item) { - - // If the list is empty - if (this.total === 0 && this.first === null && this.last === null) - { - this.first = item; - this.last = item; - this.next = item; - item.prev = this; - this.total++; - return item; - } - - // Gets appended to the end of the list, regardless of anything, and it won't have any children of its own (non-nested list) - this.last.next = item; - - item.prev = this.last; - - this.last = item; - - this.total++; - - return item; - - }, - - /** - * Resets the first, last, next and previous node pointers in this list. - * - * @method Phaser.LinkedList#reset - */ - reset: function () { - - this.first = null; - this.last = null; - this.next = null; - this.prev = null; - this.total = 0; - - }, - - /** - * Removes the given element from this linked list if it exists. - * - * @method Phaser.LinkedList#remove - * @param {object} item - The item to be removed from the list. - */ - remove: function (item) { - - if (this.total === 1) - { - this.reset(); - item.next = item.prev = null; - return; - } - - if (item === this.first) - { - // It was 'first', make 'first' point to first.next - this.first = this.first.next; - } - else if (item === this.last) - { - // It was 'last', make 'last' point to last.prev - this.last = this.last.prev; - } - - if (item.prev) - { - // make item.prev.next point to childs.next instead of item - item.prev.next = item.next; - } - - if (item.next) - { - // make item.next.prev point to item.prev instead of item - item.next.prev = item.prev; - } - - item.next = item.prev = null; - - if (this.first === null ) - { - this.last = null; - } - - this.total--; - - }, - - /** - * Calls a function on all members of this list, using the member as the context for the callback. - * The function must exist on the member. - * - * @method Phaser.LinkedList#callAll - * @param {function} callback - The function to call. - */ - callAll: function (callback) { - - if (!this.first || !this.last) - { - return; - } - - var entity = this.first; - - do - { - if (entity && entity[callback]) - { - entity[callback].call(entity); - } - - entity = entity.next; - - } - while(entity != this.last.next); - - } - -}; - -Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * The Physics Manager is responsible for looking after all of the running physics systems. * Phaser supports 4 physics systems: Arcade Physics, P2, Ninja Physics and Box2D via a commercial plugin. @@ -68404,7 +68316,7 @@ if (PIXI.RenderTexture.tempMatrix === undefined) PIXI.RenderTexture.tempMatrix = new PIXI.Matrix(); } -if (PIXI.Graphics.POLY === undefined) +if (PIXI.Graphics && PIXI.Graphics.POLY === undefined) { PIXI.Graphics.POLY = Phaser.POLYGON; PIXI.Graphics.RECT = Phaser.RECTANGLE; diff --git a/build/custom/phaser-no-physics.map b/build/custom/phaser-no-physics.map index 58ac68d3f..74d45f868 100644 --- a/build/custom/phaser-no-physics.map +++ b/build/custom/phaser-no-physics.map @@ -1 +1 @@ -{"version":3,"file":"phaser-no-physics.min.js","sources":["phaser-no-physics.js"],"names":["root","this","PIXI","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","defaultRenderOptions","view","transparent","antialias","preserveDrawingBuffer","resolution","clearBeforeRender","autoResize","DisplayObject","position","Point","scale","transformCallback","transformCallbackContext","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","game","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","call","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","valid","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","Stage","backgroundColor","setBackgroundColor","backgroundColorSplit","hex2rgb","hex","toString","substr","backgroundColorString","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","PolyK","Triangulate","sign","n","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","u","v","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","WebGLGraphics","renderGraphics","graphics","webGLData","projection","offset","primitiveShader","updateGraphics","webGL","_webGL","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","toArray","uniform1f","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","buffer","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","clearDirty","graphicsData","reset","graphicsDataPool","Graphics","POLY","points","shape","slice","closed","fill","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","lineWidth","buildLine","RECT","buildRectangle","CIRC","ELIP","buildCircle","RREC","buildRoundedRectangle","upload","pop","WebGLGraphicsData","rectData","fillColor","fillAlpha","r","g","verts","vertPos","tempPoints","rrectData","radius","recPoints","concat","quadraticBezierCurve","vecPos","triangles","fromX","fromY","cpX","cpY","toX","toY","getPt","n1","n2","perc","diff","xa","ya","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","a1","b1","c1","a2","b2","c2","denom","pdist","dist","indexCount","indexStart","lineColor","lineAlpha","abs","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","glContexts","WebGLRenderer","options","defaultRenderer","_contextOptions","premultipliedAlpha","stencil","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","__stage","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","clear","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","stencilStack","reverse","count","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","EQUAL","DECR","INCR","_currentGraphics","complexPrimitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","temp","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","navigator","isCocoonJS","screencanvas","removeView","updateGraphicsTint","_fillTint","_lineTint","beginPath","moveTo","lineTo","closePath","strokeStyle","stroke","strokeRect","arc","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","rx","ry","maxRadius","min","quadraticCurveTo","len","rect","tintR","tintG","tintB","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","Phaser","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","updateFrame","rawX","rawY","Rope","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","trunc","ceil","floor","Function","bind","thisArg","bound","args","boundArgs","arguments","TypeError","F","proto","arg","forEach","fun","t","CheapArray","assert","warn","Utils","getProperty","obj","prop","parts","split","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","uc","ua","ub","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","empty","inflatePoint","containsRaw","rw","rh","containsPoint","volume","sameDimensions","aabb","MIN_VALUE","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","_targetPosition","_edge","_position","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","unfollow","focusOn","setPosition","focusOnXY","update","updateTarget","checkBounds","setBoundsToWorld","setSize","Create","bmd","make","bitmapData","ctx","palettes",1,2,3,4,5,6,7,8,9,"A","B","C","D","E","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","row","grid","cellWidth","cellHeight","State","camera","cache","input","load","math","sound","time","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","Signal","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","state","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","dispatch","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","disableVisibilityChange","exists","currentRenderOrderID","_hiddenVar","_onChange","_backgroundColor","config","parseConfig","DOM","getOffset","Canvas","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","getColor","RGBtoString","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","addToHash","events","onAddedToGroup$dispatch","removeFromHash","addMultiple","moveAll","addAt","updateZ","getAt","createMultiple","quantity","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","oldChild","newChild","hasProperty","operation","force","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","getFirstAlive","getFirstDead","getTop","getBottom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","horizontal","vertical","between","FlexGrid","manager","boundsCustom","boundsFluid","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFluidInversed","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","multiplier","layers","createCustomLayer","addToWorld","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","onResize","fitSprite","scaleSprite","text","geom","uuid","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","ScaleManager","dom","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","margin","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentNode","parentScaleFactor","trackParentInterval","onSizeChange","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","fullscreen","cocoonJS","iPad","webApp","desktop","android","chrome","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","fullScreenScaleMode","getElementById","getParentBounds","visualBounds","newWidth","newHeight","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","documentElement","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","setTimeout","activePointer","mousePointer","addClickTrampoline","smoothed","cleanupCreatedTarget","initData","targetElement","insertBefore","appendChild","fullscreenKeyboard","requestFullscreen","Element","ALLOW_KEYBOARD_INPUT","stopFullScreen","cancelFullscreen","prepScreenMode","enteringFullscreen","createdTarget","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","webAudio","contextRestored","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFps","updateRender","slowMotion","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","addMoveCallback","deleteMoveCallback","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","duration","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","leftButton","middleButton","rightButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","removeTouchLockCallback","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","scaleLayer","dragOffset","dragFromCenter","dragStartPoint","snapPoint","_dragPoint","_dragPhase","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","_draggedPointerID","updateDrag","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","startDrag","onInputUp$dispatch","stopDrag","globalToLocalX","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_rawPad","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","processKeyPress","clearCaptures","String","fromCharCode","charCode","charCodeAt","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","loadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","heal","InCamera","InputEnabled","inputEnabled","InWorld","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","img","base","frameData","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","checkTransform","scaleMin","scaleMax","setScaleMinMax","Smoothed","existing","object","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","Tilemap","addToCache","addRenderTexture","video","url","addBitmapData","Tween","align","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_scroll","def","physicsElapsed","autoScroll","stopScroll","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","segments","difference","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","imageData","textureFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","HSLtoRGB","shiftHSL","limitValue","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","direction","scan","anchorX","anchorY","op","copyRect","drawGroup","drawFull","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","drawShape","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","beginFill","endFill","drawRect","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","updateCachedSpriteTexture","_prevTint","updateLocalBounds","tempPoint","cachedSprite","destroyCachedSprite","GraphicsData","drawTriangle","cull","triangle","cameraToFace","ab","cb","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","spaceLeft","words","wordWidth","wordWidthWithSpace","updateFont","match","fontFamily","setText","parseList","list","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","exec","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","prevCharCode","test","charAt","charData","kerning","xAdvance","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","FrameData","currentX","currentY","addFrame","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","deviceReadyAt","initialized","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","silk","audioData","ogg","opus","mp3","wav","m4a","webm","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","pixelRatio","littleEndian","support32bit","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","_initialize","_checkOS","vita","kindle","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","_checkBrowser","RegExp","$1","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","PORTRAIT","LANDSCAPE","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","skipPool","display","msTouchAction","overflowHidden","overflow","vendor","prefix","setImageRenderingCrisp","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","sum","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","frac","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","re","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","removeFrom","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","elapsedMS","fps","blob","reversed","asin","prevTime","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","updateAdvancedTiming","updateTimers","previousDateNow","timeCallExpected","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","spacing","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","audiosprite","jsonURL","jsonData","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","Blob","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","onFadeComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","onended","noteGrainOn","muted","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","mute","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","columnWidth","renderShadow","currentAlpha","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","POSITIVE_INFINITY","numberArray","numberArrayStep","rgba","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","q","hueToColor","updateColor","HSVtoRGB","color32","getColor32","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","LinkedList","entity","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","emitters","ID","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"phaser-no-physics.min.js","sources":["phaser-no-physics.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","transformCallback","call","transformCallbackContext","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","valid","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","trunc","ceil","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","warn","Utils","getProperty","obj","prop","parts","split","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","MIN_VALUE","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","_targetPosition","_edge","_position","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","unfollow","focusOn","setPosition","focusOnXY","update","updateTarget","checkBounds","setBoundsToWorld","setSize","reset","State","make","camera","cache","input","load","math","sound","time","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","Signal","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","state","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","dispatch","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","exists","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","addToHash","events","onAddedToGroup$dispatch","removeFromHash","addMultiple","moveAll","addAt","updateZ","getAt","createMultiple","quantity","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","oldChild","newChild","hasProperty","operation","force","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","horizontal","vertical","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","Graphics","graphicsData","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","duration","justReleased","pointerMode","CONTACT","leftButton","middleButton","rightButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","scaleLayer","dragOffset","dragFromCenter","dragStartPoint","snapPoint","_dragPoint","_dragPhase","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","_draggedPointerID","updateDrag","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","startDrag","onInputUp$dispatch","stopDrag","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_rawPad","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","rect","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","heal","InCamera","InputEnabled","inputEnabled","InWorld","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","img","base","frameData","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","object","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","Tilemap","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","align","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","ctx","imageData","textureFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","HSLtoRGB","shiftHSL","limitValue","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","direction","scan","newWidth","newHeight","op","copyRect","drawGroup","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","beginFill","fillColor","endFill","drawRect","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","updateCachedSpriteTexture","_prevTint","updateLocalBounds","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","triangles","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","spaceLeft","words","wordWidth","wordWidthWithSpace","updateFont","fontFamily","setText","parseList","list","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","exec","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","FrameData","currentX","currentY","addFrame","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","segments","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","sum","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","frac","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","re","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","removeFrom","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","elapsedMS","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","audiosprite","jsonURL","jsonData","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","Blob","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","onFadeComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","mute","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","PORTRAIT","LANDSCAPE","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","POSITIVE_INFINITY","numberArray","numberArrayStep","LinkedList","entity","palettes",1,2,3,4,5,6,7,8,9,"PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","cellWidth","cellHeight","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","q","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","emitters","ID","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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"} \ No newline at end of file diff --git a/build/custom/phaser-no-physics.min.js b/build/custom/phaser-no-physics.min.js index 67bef7a91..6a07028ce 100644 --- a/build/custom/phaser-no-physics.min.js +++ b/build/custom/phaser-no-physics.min.js @@ -1,20 +1,19 @@ -/* Phaser v2.4.3 - http://phaser.io - @photonstorm - (c) 2015 Photon Storm Ltd. */ +/* Phaser v2.4.4 - http://phaser.io - @photonstorm - (c) 2015 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.8",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.defaultRenderOptions={view:null,transparent:!1,antialias:!1,preserveDrawingBuffer:!1,resolution:1,clearBeforeRender:!0,autoResize:!1},b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.transformCallback=null,this.transformCallbackContext=null,this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.transformCallback=null,this.transformCallbackContext=null,this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gj;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a;for(var b=0;bi&&(i*=-1),0>l&&(l*=-1),q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n;else{var s=i*e+k*g+m,t=l*g+j*e+n,u=i*d+k*g+m,v=l*g+j*d+n,w=i*d+k*f+m,x=l*f+j*d+n,y=i*e+k*f+m,z=l*f+j*e+n;q=q>s?s:q,q=q>u?u:q,q=q>w?w:q,q=q>y?y:q,r=r>t?t:r,r=r>v?v:r,r=r>x?x:r,r=r>z?z:r,o=s>o?s:o,o=u>o?u:o,o=w>o?w:o,o=y>o?y:o,p=t>p?t:p,p=v>p?v:p,p=x>p?x:p,p=z>p?z:p}var A=this._bounds;return A.x=q,A.width=o-q,A.y=r,A.height=p-r,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return null;for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;c=6)if(h.points.length<12){g=b.WebGLGraphics.switchMode(d,0);var i=b.WebGLGraphics.buildPoly(h,g);i||(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g))}else g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g);h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))}else g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g);d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d);if(!m)return!1;var n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i);return!0}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new b.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new b.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},b.glContexts=[],b.instances=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)void 0===d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.autoResize=d.autoResize||!1,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,b.instances[this.glContextId]=this,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(this.__stage=a),a.updateTransform();var b=this.gl;b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d,e){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.flipY=d?-1:1,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession,e),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.autoResize&&(this.view.style.width=this.width/this.resolution+"px",this.view.style.height=this.height/this.resolution+"px"),this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a.mipmap&&b.isPowerOfTwo(a.width,a.height)?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR_MIPMAP_LINEAR:c.NEAREST_MIPMAP_NEAREST),c.generateMipmap(c.TEXTURE_2D)):c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.destroy=function(){b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null,b.CanvasPool.remove(this),b.instances[this.glContextId]=null,b.WebGLRenderer.glContextId--},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniform1f(e.flipY,d.flipY),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform1f(e.flipY,d.flipY),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g -},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(f.fillColor||0===f.fillColor)&&(c.globalAlpha=f.fillAlpha*d,c.fillStyle="#"+("00000"+(0|h).toString(16)).substr(-6),c.fill()),f.lineWidth&&(c.globalAlpha=f.lineAlpha*d,c.strokeStyle="#"+("00000"+(0|i).toString(16)).substr(-6),c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){c.beginPath();for(var e=0;d>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iz?z:y,c.moveTo(u,v+y),c.lineTo(u,v+x-y),c.quadraticCurveTo(u,v+x,u+y,v+x),c.lineTo(u+w-y,v+x),c.quadraticCurveTo(u+w,v+x,u+w,v+x-y),c.lineTo(u+w,v+y),c.quadraticCurveTo(u+w,v,u+w-y,v),c.lineTo(u+y,v),c.quadraticCurveTo(u,v,u,v+y),c.closePath()}}}},b.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this.mipmap=!1,this._dirty=[!0,!0,!0,!0],a&&((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height&&(this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty()),this.imageUrl=null,this._powerOf2=!1)},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.forceLoaded=function(a,b){this.hasLoaded=!0,this.width=a,this.height=b,this.dirty()},b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,navigator.isCocoonJS||(this.source.src="")):this.source&&this.source._pixiId&&(b.CanvasPool.removeByCanvas(this.source),delete b.BaseTextureCache[this.source._pixiId]),this.source=null,this.unloadFromGPU()},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;a=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|d.tx,0|d.ty):c.setTransform(d.a,d.b,d.c,d.d,d.tx,d.ty),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-1/0,k=-1/0,l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-1/0||1/0===k)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh() -},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){this.canvasBuffer.destroy(),b.Sprite.prototype.destroy.call(this),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.4.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*Math.PI*this._radius},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},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){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.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(c.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(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,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},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){a=a||1,b=b||0,d=d||0,e=e||1,f=f||0,g=g||0,this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return 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},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.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},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,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)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(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 c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.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(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width -}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.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(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.prototype={preUpdate:function(){this.totalInView=0},follow:function(a,b){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(b){case c.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new c.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case c.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=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.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target),this.target.parent&&this._targetPosition.multiply(this.target.parent.worldTransform.a,this.target.parent.worldTransform.d),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),c.Create=function(a){this.game=a,this.bmd=a.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.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.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},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.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);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){if(!this._bindings)return-1;void 0===b&&(b=null);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){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e){void 0===e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.events&&f.events.onAddedToGroup$dispatch(f,this),null===this.cursor&&(this.cursor=f),f},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.resetCursor=function(a){return void 0===a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0 -},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.replace=function(a,b){var d=this.getIndex(a);return-1!==d?(b.parent&&(b.parent instanceof c.Group?b.parent.remove(b):b.parent.removeChild(b)),this.remove(a),this.addAt(b,d),a):void 0},c.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},c.Group.prototype.setProperty=function(a,b,c,d,e){if(void 0===e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?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===f?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===f?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===f&&(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)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b){if(void 0===a&&(a=!1),void 0===b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);this.removeFromHash(c),a&&c&&c.destroy(!0)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){a=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Game=function(a,b,d,e,f,g,h,i){return this.id=c.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.resolution=1,this._width=800,this._height=600,this.transparent=!1,this.antialias=!0,this.preserveDrawingBuffer=!1,this.renderer=null,this.renderType=c.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.plugins=null,this.rnd=null,this.device=c.Device,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.create=null,this.lockRender=!1,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,this.currentUpdateID=0,this.updatesThisFrame=1,this._deltaTime=0,this._lastCount=0,this._spiraling=0,this._kickstart=!0,this.fpsProblemNotifier=new c.Signal,this.forceSingleUpdate=!1,this._nextFpsNotification=0,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):(this.config={enableDebug:!0},"undefined"!=typeof a&&(this._width=a),"undefined"!=typeof b&&(this._height=b),"undefined"!=typeof d&&(this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new c.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new c.StateManager(this,f)),this.device.whenReady(this.boot,this),this},c.Game.prototype={parseConfig:function(a){this.config=a,void 0===a.enableDebug&&(this.config.enableDebug=!0),a.width&&(this._width=a.width),a.height&&(this._height=a.height),a.renderer&&(this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.resolution&&(this.resolution=a.resolution),a.preserveDrawingBuffer&&(this.preserveDrawingBuffer=a.preserveDrawingBuffer),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var b=[(Date.now()*Math.random()).toString()];a.seed&&(b=a.seed),this.rnd=new c.RandomDataGenerator(b);var d=null;a.state&&(d=a.state),this.state=new c.StateManager(this,d)},boot:function(){this.isBooted||(this.onPause=new c.Signal,this.onResume=new c.Signal,this.onBlur=new c.Signal,this.onFocus=new c.Signal,this.isBooted=!0,this.math=c.Math,this.scale=new c.ScaleManager(this,this._width,this._height),this.stage=new c.Stage(this),this.setUpRenderer(),this.world=new c.World(this),this.add=new c.GameObjectFactory(this),this.make=new c.GameObjectCreator(this),this.cache=new c.Cache(this),this.load=new c.Loader(this),this.time=new c.Time(this),this.tweens=new c.TweenManager(this),this.input=new c.Input(this),this.sound=new c.SoundManager(this),this.physics=new c.Physics(this,this.physicsConfig),this.particles=new c.Particles(this),this.create=new c.Create(this),this.plugins=new c.PluginManager(this),this.net=new c.Net(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.scale.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.config.enableDebug?(this.debug=new c.Utils.Debug(this),this.debug.boot()):this.debug={preUpdate:function(){},update:function(){},reset:function(){}},this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new c.RequestAnimationFrame(this,this.config.forceSetTimeOut):new c.RequestAnimationFrame(this,!1),this._kickstart=!0,window.focus&&(!window.PhaserGlobal||window.PhaserGlobal&&!window.PhaserGlobal.stopFocus)&&window.focus(),this.raf.start())},showDebugHeader:function(){if(!window.PhaserGlobal||!window.PhaserGlobal.hideBanner){var a=c.VERSION,b="Canvas",d="HTML Audio",e=1;if(this.renderType===c.WEBGL?(b="WebGL",e++):this.renderType==c.HEADLESS&&(b="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" %c %c %c http://phaser.io %c♥%c♥%c♥","background: #9854d8","background: #6c2ca7","color: #ffffff; background: #450f78;","background: #6c2ca7","background: #9854d8","background: #ffffff"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===c.AUTO&&(this.renderType=c.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:this.resolution,clearBeforeRender:!0}),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:this.resolution,antialias:this.antialias,preserveDrawingBuffer:this.preserveDrawingBuffer}),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(1/this.time.desiredFps),this.stage.updateTransform(),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(1/this.time.desiredFps),this.stage.updateTransform(),c++,!this.forceSingleUpdate||1!==c););c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],b,d))return!0;return!1},onClickTrampoline:function(){this.activePointer.processClickTrampolines()}},c.Input.prototype.constructor=c.Input,Object.defineProperty(c.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.duration=0,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),a.ctrlKey&&this.leftButton.isDown&&this.rightButton.start(a),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&(this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.x,this.y),this.game.input.onDown.dispatch(this,a),this.game.input.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){this.active&&(this.dirty&&(this.game.input.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=this.game.input.holdRate&&((this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+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,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),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.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){for(var b=Number.MAX_VALUE,c=-1,d=null,e=this.game.input.interactiveItems.first;e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e)),e=this.game.input.interactiveItems.next;for(var e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e),e=this.game.input.interactiveItems.next;return null===d?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=d,d._pointerOverHandler(this)):this.targetObject===d?d.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=d,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&(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=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!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.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderIDb;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];(b.isOver===!1||a.dirty)&&(b.isOver=!0,b.isOut=!1,b.timeOver=this.game.time.time,b.x=a.x-this.sprite.x,b.y=a.y-this.sprite.y,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a))}},_pointerOutHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];b.isOver=!1,b.isOut=!0,b.timeOut=this.game.time.time,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut$dispatch(this.sprite,a)}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown$dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var c=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.sprite.events.onInputUp$dispatch(this.sprite,a,c),c&&(c=this.checkPointerOver(a))),b.isOver=c,!c&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y))):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))),this.sprite.events.onDragUpdate.dispatch(this.sprite,a,b,c,this.snapPoint),!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){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if((this.autoCull||this.checkWorldBounds)&&(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull&&(this.game.world.camera.view.intersects(this._bounds)?(this.renderable=!0,this.game.world.camera.totalInView++):this.renderable=!1),this.checkWorldBounds))if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1;return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,"number"==typeof this.health&&(this.health=a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),e.hasFrameData(a.key,c.Cache.BITMAPDATA)&&(f=!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b));else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:this.checkTransform,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e)) -},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.splice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.splice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.TileSprite=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||256,f=f||256,g=g||null,h=h||null,this.type=c.TILESPRITE,this.physicsType=c.SPRITE,this._scroll=new c.Point;var i=a.cache.getImage("__default",!0);PIXI.TilingSprite.call(this,new PIXI.Texture(i.base),e,f),c.Component.Core.init.call(this,a,b,d,g,h)},c.TileSprite.prototype=Object.create(PIXI.TilingSprite.prototype),c.TileSprite.prototype.constructor=c.TileSprite,c.Component.Core.install.call(c.TileSprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","Smoothed"]),c.TileSprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.TileSprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.TileSprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.TileSprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TileSprite.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},c.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},c.TileSprite.prototype.destroy=function(a){c.Component.Destroy.prototype.destroy.call(this,a),PIXI.TilingSprite.prototype.destroy.call(this)},c.TileSprite.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,this._scroll=new c.Point,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;ka){a=Math.abs(a);var f=this.width-a;c.drawImage(e,0,0,a,d,f,0,a,d),c.drawImage(e,a,0,f,d,0,0,f,d)}else{var f=this.width-a;c.drawImage(e,f,0,a,d,0,0,a,d),c.drawImage(e,0,0,f,d,a,0,f,d)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a){var b=this._swapCanvas,c=b.getContext("2d"),d=this.width,e=this.canvas;if(c.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var f=this.height-a;c.drawImage(e,0,0,d,a,0,f,d,a),c.drawImage(e,0,a,d,f,0,0,d,f)}else{var f=this.height-a;c.drawImage(e,0,f,d,a,0,0,d,a),c.drawImage(e,0,0,d,f,0,a,d,f)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){if((void 0===a||null===a)&&(a=!1),(void 0===b||null===b)&&(b=!1),(void 0===d||null===d)&&(d=!1),a||b||d){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var f=c.Color.createColor(),g=e.y;g=0&&a<=this.width&&b>=0&&b<=this.height&&(this.pixels[b*this.width+a]=c.Device.LITTLE_ENDIAN?g<<24|f<<16|e<<8|d:d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.copy,this,null,null,null,null,null,null,null,null,null,null,null,null,null,null,b,c),this},drawFull:function(a,b,d){if(a.worldVisible===!1||0===a.worldAlpha||a.hasOwnProperty("exists")&&a.exists===!1)return this;if(a.type!==c.GROUP&&a.type!==c.EMITTER&&a.type!==c.BITMAPTEXT)if(a.type===c.GRAPHICS){var e=a.getBounds();this.ctx.save(),this.ctx.translate(e.x,e.y),PIXI.CanvasGraphics.renderGraphics(a,this.ctx),this.ctx.restore()}else this.copy(a,null,null,null,null,a.worldPosition.x,a.worldPosition.y,null,null,a.worldRotation,null,null,a.worldScale.x,a.worldScale.y,a.worldAlpha,b,d);if(a.children)for(var f=0;fb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i) -}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){if(d===e)return this;void 0===f&&(f=!1),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var g=f?-1*(d-e):e-d,h=40*Math.ceil(Math.abs(g)/(2*Math.PI));if(0===g)return this;var i=a+Math.cos(d)*c,j=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(i,j);for(var k=this.currentPath.shape.points,l=g/(2*h),m=2*l,n=Math.cos(l),o=Math.sin(l),p=h-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);k.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():(this.destroyCachedSprite(),this.dirty=!0)}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&(j+=c[k-1]),h=j+l}else for(var k=0;kq&&Math.abs(q)>o&&(q=-o),0!==q){var m=q*(b.length-1);p+=m}this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,g=0;g0&&(s+=q*g),"right"===this.style.align?r+=e-d[g]:"center"===this.style.align&&(r+=(e-d[g])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[g],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[g],r,s):this.renderTabLine(b[g],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[g],r,s):this.renderTabLine(b[g],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.runWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f,this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=null,h=this._maxWidth>0?this._maxWidth:null,i=[],j=0;j=h&&f>-1)return{width:e,text:c.substr(0,j-(j-f)),end:k,chars:i};e+=m.xAdvance*b,i.push(d+m.xOffset*b),d+=m.xAdvance*b,g=l}}return{width:e,text:c,end:k,chars:i}},c.BitmapText.prototype.updateText=function(){var a=this._data.font;if(a){var b=this.text,c=this._fontSize/a.size,d=[],e=0;this.textWidth=0;do{var f=this.scanLine(a,c,b);f.y=e,d.push(f),f.width>this.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText()) -}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){this._data.base.scaleMode=a?0:1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,this._scroll=new c.Point,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c0&&"none"!==a}var l=this;a(),g(),f(),e(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.DOM={getOffset:function(a,b){b=b||new c.Point;var d=a.getBoundingClientRect(),e=c.DOM.scrollY,f=c.DOM.scrollX,g=document.documentElement.clientTop,h=document.documentElement.clientLeft;return b.x=d.left+f-h,b.y=d.top+e-g,b},getBounds:function(a,b){return void 0===b&&(b=0),a=a&&!a.nodeType?a[0]:a,a&&1===a.nodeType?this.calibrate(a.getBoundingClientRect(),b):!1},calibrate:function(a,b){b=+b||0;var c={width:0,height:0,left:0,right:0,top:0,bottom:0};return c.width=(c.right=a.right+b)-(c.left=a.left-b),c.height=(c.bottom=a.bottom+b)-(c.top=a.top-b),c},getAspectRatio:function(a){a=null==a?this.visualBounds:1===a.nodeType?this.getBounds(a):a;var b=a.width,c=a.height;return"function"==typeof b&&(b=b.call(a)),"function"==typeof c&&(c=c.call(a)),b/c},inLayoutViewport:function(a,b){var c=this.getBounds(a,b);return!!c&&c.bottom>=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},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 void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var c=["i","mozI","oI","webkitI","msI"];for(var d in c){var e=c[d]+"mageSmoothingEnabled";if(e in a)return a[e]=b,a}return a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},c.RequestAnimationFrame=function(a,b){void 0===b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=0;b=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},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},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},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)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return 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)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===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}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,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 a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var j=Math.PI/180,k=180/Math.PI;return c.Math.degToRad=function(a){return a*j},c.Math.radToDeg=function(a){return a*k},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this) -},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),a?this.repeatAll(-1):this.repeatCounter=0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?!1:!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];this.parent.target[d]=Array.isArray(f)?this.interpolationFunction.call(this.interpolationContext,f,this.value):e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.dt=this.parent.reverse?this.duration:0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];e[f]=Array.isArray(h)?this.interpolationFunction(h,this.value):g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter)return c.TweenData.COMPLETE;this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.dt=this.parent.reverse?this.duration:0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.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 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.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*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=0,this.physicsElapsedMS=0,this.desiredFps=60,this.suggestedFps=null,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this.desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=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=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.splice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.splice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.splice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===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){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this) -},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.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,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(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)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break -}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.reset(),this.game.state.loadComplete())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayVideo(c))return a[b]}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayAudio(c))return a[b]}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=new Blob([new Uint8Array(b.response)])}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.data=a.callback?a.callback.call(a.callbackContext,a.key,b.response):b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio)if(this._sound.disconnect(this.externalNode?this.externalNode:this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if(this._sound.disconnect(this.externalNode?this.externalNode:this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.pendingPlayback=!1,this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(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(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,this.masterGain=void 0===this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.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 c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.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)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(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),void 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)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter&&this.matter.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.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()}},c.Particles.prototype.constructor=c.Particles,c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(PIXI.TextureCache.__default.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this.video.addEventListener("ended",this.complete.bind(this),!0),this.video.loop=a?"loop":"",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):this.video.addEventListener("playing",this.playHandler.bind(this),!0)),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this.playHandler.bind(this)),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this.complete.bind(this),!0),this.video.removeEventListener("playing",this.playHandler.bind(this),!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c -}()):b.Phaser=c,c}.call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gj;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a;for(var b=0;bi){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|d.tx,0|d.ty):c.setTransform(d.a,d.b,d.c,d.d,d.tx,d.ty),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.4.4-RC1",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},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){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.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(c.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(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,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},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){a=a||1,b=b||0,d=d||0,e=e||1,f=f||0,g=g||0,this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return 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},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.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},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,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)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(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 c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.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(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.prototype={preUpdate:function(){this.totalInView=0},follow:function(a,b){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(b){case c.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new c.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case c.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=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.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target),this.target.parent&&this._targetPosition.multiply(this.target.parent.worldTransform.a,this.target.parent.worldTransform.d),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.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.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},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.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null, +this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);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){if(!this._bindings)return-1;void 0===b&&(b=null);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){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e){void 0===e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.events&&f.events.onAddedToGroup$dispatch(f,this),null===this.cursor&&(this.cursor=f),f},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.resetCursor=function(a){return void 0===a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.replace=function(a,b){var d=this.getIndex(a);return-1!==d?(b.parent&&(b.parent instanceof c.Group?b.parent.remove(b):b.parent.removeChild(b)),this.remove(a),this.addAt(b,d),a):void 0},c.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},c.Group.prototype.setProperty=function(a,b,c,d,e){if(void 0===e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?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===f?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===f?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===f&&(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)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b){if(void 0===a&&(a=!1),void 0===b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);this.removeFromHash(c),a&&c&&c.destroy(!0)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.stage.updateTransform(),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),this.stage.updateTransform(),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],b,d))return!0;return!1},onClickTrampoline:function(){this.activePointer.processClickTrampolines()}},c.Input.prototype.constructor=c.Input,Object.defineProperty(c.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),a.ctrlKey&&this.leftButton.isDown&&this.rightButton.start(a),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),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.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b), +this}},processInteractiveObjects:function(a){for(var b=Number.MAX_VALUE,c=-1,d=null,e=this.game.input.interactiveItems.first;e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e)),e=this.game.input.interactiveItems.next;for(var e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e),e=this.game.input.interactiveItems.next;return null===d?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=d,d._pointerOverHandler(this)):this.targetObject===d?d.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=d,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!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.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderIDb;b++)if(this._pointerData[b].isOver)return!0},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];(b.isOver===!1||a.dirty)&&(b.isOver=!0,b.isOut=!1,b.timeOver=this.game.time.time,b.x=a.x-this.sprite.x,b.y=a.y-this.sprite.y,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a))}},_pointerOutHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];b.isOver=!1,b.isOut=!0,b.timeOut=this.game.time.time,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut$dispatch(this.sprite,a)}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown$dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var c=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.sprite.events.onInputUp$dispatch(this.sprite,a,c),c&&(c=this.checkPointerOver(a))),b.isOver=c,!c&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y))):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))),this.sprite.events.onDragUpdate.dispatch(this.sprite,a,b,c,this.snapPoint),!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){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if((this.autoCull||this.checkWorldBounds)&&(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull&&(this.game.world.camera.view.intersects(this._bounds)?(this.renderable=!0,this.game.world.camera.totalInView++):this.renderable=!1),this.checkWorldBounds))if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1;return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.heal&&this.heal(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),e.hasFrameData(a.key,c.Cache.BITMAPDATA)&&(f=!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b));else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e), +!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),(!this.onOverMouseOnly||b.isMouse)&&(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){(void 0===b||null===b)&&(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,c.Group.prototype,PIXI.SpriteBatch.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e){(void 0===d||0===d)&&(d=256),(void 0===e||0===e)&&(e=256),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=PIXI.CanvasPool.create(this,d,e),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,d,e,"bitmapData"),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=PIXI.CanvasPool.create(this,d,e)},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0);var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0);var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){if((void 0===a||null===a)&&(a=!1),(void 0===b||null===b)&&(b=!1),(void 0===d||null===d)&&(d=!1),a||b||d){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var f=c.Color.createColor(),g=e.y;g=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.copy,this,null,null,null,null,null,null,null,null,null,null,null,null,null,null,b,c),this},drawFull:function(a,b,d){if(a.worldVisible===!1||0===a.worldAlpha||a.hasOwnProperty("exists")&&a.exists===!1)return this;if(a.type!==c.GROUP&&a.type!==c.EMITTER&&a.type!==c.BITMAPTEXT)if(a.type===c.GRAPHICS){var e=a.getBounds();this.ctx.save(),this.ctx.translate(e.x,e.y),PIXI.CanvasGraphics.renderGraphics(a,this.ctx),this.ctx.restore()}else this.copy(a,null,null,null,null,a.worldPosition.x,a.worldPosition.y,null,null,a.worldRotation,null,null,a.worldScale.x,a.worldScale.y,a.worldAlpha,b,d);if(a.children)for(var f=0;fb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){if(d===e)return this;void 0===f&&(f=!1),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var g=f?-1*(d-e):e-d,h=40*Math.ceil(Math.abs(g)/(2*Math.PI));if(0===g)return this;var i=a+Math.cos(d)*c,j=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(i,j);for(var k=this.currentPath.shape.points,l=g/(2*h),m=2*l,n=Math.cos(l),o=Math.sin(l),p=h-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);k.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():(this.destroyCachedSprite(),this.dirty=!0)}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.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},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=6)if(g.points.length<12){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+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)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-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(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[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),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.PolyK.Triangulate(c);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&(j+=c[k-1]),h=j+l}else for(var k=0;kp&&Math.abs(p)>n&&(p=-n),0!==p){var m=p*(b.length-1);o+=m}this.canvas.height=o*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var q,r;for(this._charCount=0,g=0;g0&&(r+=p*g),"right"===this.style.align?q+=e-d[g]:"center"===this.style.align&&(q+=(e-d[g])/2),this.autoRound&&(q=Math.round(q),r=Math.round(r)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[g],q,r):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[g],q,r):this.renderTabLine(b[g],q,r,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[g],q,r):this.renderTabLine(b[g],q,r,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.runWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f,this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=null,h=this._maxWidth>0?this._maxWidth:null,i=[],j=0;j=h&&f>-1)return{width:e,text:c.substr(0,j-(j-f)),end:k,chars:i};e+=m.xAdvance*b,i.push(d+m.xOffset*b),d+=m.xAdvance*b,g=l}}return{width:e,text:c,end:k,chars:i}},c.BitmapText.prototype.updateText=function(){var a=this._data.font;if(a){var b=this.text,c=this._fontSize/a.size,d=[],e=0;this.textWidth=0;do{var f=this.scanLine(a,c,b);f.y=e,d.push(f),f.width>this.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c0&&"none"!==a}var l=this;a(),g(),f(),e(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},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 void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},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},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},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)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return 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)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===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}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,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 a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){ +return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),a?this.repeatAll(-1):this.repeatCounter=0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter)return c.TweenData.COMPLETE;this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.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 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.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)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.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*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=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=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===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){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame), +this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.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,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(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)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.reset(),this.game.state.loadComplete())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayVideo(c))return a[b]}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayAudio(c))return a[b]}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=new Blob([new Uint8Array(b.response)])}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio)if(this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this.onPause.dispatch(this),this.stop())},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.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if(this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.pendingPlayback=!1,this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(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(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=this.game.make.bitmapData(this.game.width,this.game.height),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.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)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(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),void 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)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.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 c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter&&this.matter.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.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()}},c.Particles.prototype.constructor=c.Particles,c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(PIXI.TextureCache.__default.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this.video.addEventListener("ended",this.complete.bind(this),!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):this.video.addEventListener("playing",this.playHandler.bind(this),!0)),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this.playHandler.bind(this)),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this.complete.bind(this),!0),this.video.removeEventListener("playing",this.playHandler.bind(this),!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser-no-physics.map \ No newline at end of file diff --git a/build/phaser.js b/build/phaser.js index 4e5f44edc..af2124342 100644 --- a/build/phaser.js +++ b/build/phaser.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.4.3 "Coramen" - Built: Mon Aug 24 2015 13:54:08 +* v2.4.4 "Amador" - Built: Tue Oct 13 2015 14:09:50 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -13669,6 +13669,13 @@ World.prototype.raycast = function(result, ray){ */ var PIXI = PIXI || {}; +/** + * A reference to the Phaser Game instance that owns this Pixi renderer. + * @property {Phaser.Game} game + * @static + */ +PIXI.game = null; + /** * @property {Number} WEBGL_RENDERER * @protected @@ -13688,7 +13695,7 @@ PIXI.CANVAS_RENDERER = 1; * @property {String} VERSION * @static */ -PIXI.VERSION = "v2.2.8"; +PIXI.VERSION = "v2.2.9"; // used to create uids for various pixi objects. PIXI._UID = 0; @@ -13750,7 +13757,6 @@ PIXI.RETINA_PREFIX = "@2x"; * @property {Boolean} defaultRenderOptions.clearBeforeRender=true * @property {Boolean} defaultRenderOptions.autoResize=false * @static - */ PIXI.defaultRenderOptions = { view: null, transparent: false, @@ -13760,6 +13766,7 @@ PIXI.defaultRenderOptions = { clearBeforeRender: true, autoResize: false }; + */ /** * @author Mat Groves http://matgroves.com/ @Doormat23 @@ -13790,25 +13797,6 @@ PIXI.DisplayObject = function() */ this.scale = new PIXI.Point(1, 1); - /** - * The transform callback is an optional callback that if set will be called at the end of the updateTransform method and sent two parameters: - * This Display Objects worldTransform matrix and its parents transform matrix. Both are PIXI.Matrix object types. - * The matrix are passed by reference and can be modified directly without needing to return them. - * This ability allows you to check any of the matrix values and perform actions such as clamping scale or limiting rotation, regardless of the parent transforms. - * - * @property transformCallback - * @type Function - */ - this.transformCallback = null; - - /** - * The context under which the transformCallback is invoked. - * - * @property transformCallbackContext - * @type Object - */ - this.transformCallbackContext = null; - /** * The pivot point of the displayObject that it rotates around * @@ -14022,8 +14010,6 @@ PIXI.DisplayObject.prototype.destroy = function() this.children = []; } - this.transformCallback = null; - this.transformCallbackContext = null; this.hitArea = null; this.parent = null; this.stage = null; @@ -15046,6 +15032,7 @@ PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession) { renderSession.maskManager.popMask(renderSession); } + }; /** @@ -15274,8 +15261,21 @@ PIXI.Sprite.prototype.getBounds = function(matrix) if (b === 0 && c === 0) { // scale may be negative! - if (a < 0) a *= -1; - if (d < 0) d *= -1; + if (a < 0) + { + a *= -1; + var temp = w0; + w0 = -w1; + w1 = -temp; + } + + if (d < 0) + { + d *= -1; + var temp = h0; + h0 = -h1; + h1 = -temp; + } // this means there is no rotation going on right? RIGHT? // if thats the case then we can avoid checking the bound values! yay @@ -15414,7 +15414,7 @@ PIXI.Sprite.prototype._renderWebGL = function(renderSession, matrix) PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) { // If the sprite is not visible or the alpha is 0 then no need to render this element - if (this.visible === false || this.alpha === 0 || this.renderable === false || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) + if (!this.visible || this.alpha === 0 || !this.renderable || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) { return; } @@ -15722,82 +15722,6 @@ PIXI.SpriteBatch.prototype._renderCanvas = function(renderSession) }; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A Stage represents the root of the display tree. Everything connected to the stage is rendered - * - * @class Stage - * @extends DisplayObjectContainer - * @constructor - * @param backgroundColor {Number} the background color of the stage, you have to pass this in is in hex format - * like: 0xFFFFFF for white - * - * Creating a stage is a mandatory process when you use Pixi, which is as simple as this : - * var stage = new PIXI.Stage(0xFFFFFF); - * where the parameter given is the background colour of the stage, in hex - * you will use this stage instance to add your sprites to it and therefore to the renderer - * Here is how to add a sprite to the stage : - * stage.addChild(sprite); - */ -PIXI.Stage = function(backgroundColor) -{ - PIXI.DisplayObjectContainer.call( this ); - - /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ - this.worldTransform = new PIXI.Matrix(); - - //the stage is its own stage - this.stage = this; - - this.setBackgroundColor(backgroundColor); -}; - -// constructor -PIXI.Stage.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Stage.prototype.constructor = PIXI.Stage; - -/* - * Updates the object transform for rendering - * - * @method updateTransform - * @private - */ -PIXI.Stage.prototype.updateTransform = function() -{ - this.worldAlpha = 1; - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } -}; - -/** - * Sets the background color for the stage - * - * @method setBackgroundColor - * @param backgroundColor {Number} the color of the background, easiest way to pass this in is in hex format - * like: 0xFFFFFF for white - */ -PIXI.Stage.prototype.setBackgroundColor = function(backgroundColor) -{ - this.backgroundColor = backgroundColor || 0x000000; - this.backgroundColorSplit = PIXI.hex2rgb(this.backgroundColor); - var hex = this.backgroundColor.toString(16); - hex = '000000'.substr(0, 6 - hex.length) + hex; - this.backgroundColorString = '#' + hex; -}; - /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -15893,175 +15817,6 @@ PIXI.isPowerOfTwo = function(width, height) }; -/* - PolyK library - url: http://polyk.ivank.net - Released under MIT licence. - - Copyright (c) 2012 Ivan Kuckir - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - - This is an amazing lib! - - Slightly modified by Mat Groves (matgroves.com); -*/ - -/** - * Based on the Polyk library http://polyk.ivank.net released under MIT licence. - * This is an amazing lib! - * Slightly modified by Mat Groves (matgroves.com); - * @class PolyK - */ -PIXI.PolyK = {}; - -/** - * Triangulates shapes for webGL graphic fills. - * - * @method Triangulate - */ -PIXI.PolyK.Triangulate = function(p) -{ - var sign = true; - - var n = p.length >> 1; - if(n < 3) return []; - - var tgs = []; - var avl = []; - for(var i = 0; i < n; i++) avl.push(i); - - i = 0; - var al = n; - while(al > 3) - { - var i0 = avl[(i+0)%al]; - var i1 = avl[(i+1)%al]; - var i2 = avl[(i+2)%al]; - - var ax = p[2*i0], ay = p[2*i0+1]; - var bx = p[2*i1], by = p[2*i1+1]; - var cx = p[2*i2], cy = p[2*i2+1]; - - var earFound = false; - if(PIXI.PolyK._convex(ax, ay, bx, by, cx, cy, sign)) - { - earFound = true; - for(var j = 0; j < al; j++) - { - var vi = avl[j]; - if(vi === i0 || vi === i1 || vi === i2) continue; - - if(PIXI.PolyK._PointInTriangle(p[2*vi], p[2*vi+1], ax, ay, bx, by, cx, cy)) { - earFound = false; - break; - } - } - } - - if(earFound) - { - tgs.push(i0, i1, i2); - avl.splice((i+1)%al, 1); - al--; - i = 0; - } - else if(i++ > 3*al) - { - // need to flip flip reverse it! - // reset! - if(sign) - { - tgs = []; - avl = []; - for(i = 0; i < n; i++) avl.push(i); - - i = 0; - al = n; - - sign = false; - } - else - { - // window.console.log("PIXI Warning: shape too complex to fill"); - return null; - } - } - } - - tgs.push(avl[0], avl[1], avl[2]); - return tgs; -}; - -/** - * Checks whether a point is within a triangle - * - * @method _PointInTriangle - * @param px {Number} x coordinate of the point to test - * @param py {Number} y coordinate of the point to test - * @param ax {Number} x coordinate of the a point of the triangle - * @param ay {Number} y coordinate of the a point of the triangle - * @param bx {Number} x coordinate of the b point of the triangle - * @param by {Number} y coordinate of the b point of the triangle - * @param cx {Number} x coordinate of the c point of the triangle - * @param cy {Number} y coordinate of the c point of the triangle - * @private - * @return {Boolean} - */ -PIXI.PolyK._PointInTriangle = function(px, py, ax, ay, bx, by, cx, cy) -{ - var v0x = cx-ax; - var v0y = cy-ay; - var v1x = bx-ax; - var v1y = by-ay; - var v2x = px-ax; - var v2y = py-ay; - - var dot00 = v0x*v0x+v0y*v0y; - var dot01 = v0x*v1x+v0y*v1y; - var dot02 = v0x*v2x+v0y*v2y; - var dot11 = v1x*v1x+v1y*v1y; - var dot12 = v1x*v2x+v1y*v2y; - - var invDenom = 1 / (dot00 * dot11 - dot01 * dot01); - var u = (dot11 * dot02 - dot01 * dot12) * invDenom; - var v = (dot00 * dot12 - dot01 * dot02) * invDenom; - - // Check if point is in triangle - return (u >= 0) && (v >= 0) && (u + v < 1); -}; - -/** - * Checks whether a shape is convex - * - * @method _convex - * @private - * @return {Boolean} - */ -PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) -{ - return ((ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0) === sign; -}; - /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -16069,21 +15824,21 @@ PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) */ /** -* The CanvasPool is a global static object that allows Pixi and Phaser to pool +* The CanvasPool is a global static object that allows Pixi and Phaser to pool canvas DOM elements. * -* @class PIXI.CanvasPool +* @class CanvasPool * @static */ PIXI.CanvasPool = { /** + * Creates a new Canvas DOM element, or pulls one from the pool if free. * - * - * @method PIXI.CanvasPool.create + * @method create * @static - * @param {any} parent - The parent of the canvas element. - * @param {number} width - The width of the canvas element. - * @param {number} height - The height of the canvas element. + * @param parent {any} The parent of the canvas element. + * @param width {number} The width of the canvas element. + * @param height {number} The height of the canvas element. * @return {HTMLCanvasElement} The canvas element. */ create: function (parent, width, height) { @@ -16101,16 +15856,12 @@ PIXI.CanvasPool = { PIXI.CanvasPool.pool.push(container); canvas = container.canvas; - - // console.log('CanvasPool created', PIXI.CanvasPool.pool.length); } else { PIXI.CanvasPool.pool[idx].parent = parent; canvas = PIXI.CanvasPool.pool[idx].canvas; - - // console.log('CanvasPool recycled', idx); } if (width !== undefined) @@ -16123,6 +15874,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the first free canvas index from the pool. + * + * @method getFirst + * @static + * @return {number} + */ getFirst: function () { var pool = PIXI.CanvasPool.pool; @@ -16139,6 +15897,13 @@ PIXI.CanvasPool = { }, + /** + * Removes the parent from a canvas element from the pool, freeing it up for re-use. + * + * @method remove + * @param parent {any} The parent of the canvas element. + * @static + */ remove: function (parent) { var pool = PIXI.CanvasPool.pool; @@ -16148,13 +15913,18 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; - - // console.log('CanvasPool removed', i); } } }, + /** + * Removes the parent from a canvas element from the pool, freeing it up for re-use. + * + * @method removeByCanvas + * @param canvas {HTMLCanvasElement} The canvas element to remove + * @static + */ removeByCanvas: function (canvas) { var pool = PIXI.CanvasPool.pool; @@ -16169,6 +15939,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the total number of used canvas elements in the pool. + * + * @method getTotal + * @static + * @return {number} The number of in-use (parented) canvas elements in the pool. + */ getTotal: function () { var pool = PIXI.CanvasPool.pool; @@ -16186,6 +15963,13 @@ PIXI.CanvasPool = { }, + /** + * Gets the total number of free canvas elements in the pool. + * + * @method getFree + * @static + * @return {number} The number of free (un-parented) canvas elements in the pool. + */ getFree: function () { var pool = PIXI.CanvasPool.pool; @@ -16205,6 +15989,13 @@ PIXI.CanvasPool = { }; +/** + * The pool into which the canvas dom elements are placed. + * + * @property pool + * @type Array + * @static + */ PIXI.CanvasPool.pool = []; /** @@ -17212,903 +17003,6 @@ PIXI.ComplexPrimitiveShader.prototype.destroy = function() this.attribute = null; }; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A set of functions used by the webGL renderer to draw the primitive graphics data - * - * @class WebGLGraphics - * @private - * @static - */ -PIXI.WebGLGraphics = function() -{ -}; - -/** - * Renders the graphics object - * - * @static - * @private - * @method renderGraphics - * @param graphics {Graphics} - * @param renderSession {Object} - */ -PIXI.WebGLGraphics.renderGraphics = function(graphics, renderSession)//projection, offset) -{ - var gl = renderSession.gl; - var projection = renderSession.projection, - offset = renderSession.offset, - shader = renderSession.shaderManager.primitiveShader, - webGLData; - - if(graphics.dirty) - { - PIXI.WebGLGraphics.updateGraphics(graphics, gl); - } - - var webGL = graphics._webGL[gl.id]; - - // This could be speeded up for sure! - - for (var i = 0; i < webGL.data.length; i++) - { - if(webGL.data[i].mode === 1) - { - webGLData = webGL.data[i]; - - renderSession.stencilManager.pushStencil(graphics, webGLData, renderSession); - - // render quad.. - gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); - - renderSession.stencilManager.popStencil(graphics, webGLData, renderSession); - } - else - { - webGLData = webGL.data[i]; - - - renderSession.shaderManager.setShader( shader );//activatePrimitiveShader(); - shader = renderSession.shaderManager.primitiveShader; - gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); - - gl.uniform1f(shader.flipY, 1); - - gl.uniform2f(shader.projectionVector, projection.x, -projection.y); - gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); - - gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); - - gl.uniform1f(shader.alpha, graphics.worldAlpha); - - - gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); - - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); - gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); - - // set the index buffer! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); - gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); - } - } -}; - -/** - * Updates the graphics object - * - * @static - * @private - * @method updateGraphics - * @param graphicsData {Graphics} The graphics object to update - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.WebGLGraphics.updateGraphics = function(graphics, gl) -{ - // get the contexts graphics object - var webGL = graphics._webGL[gl.id]; - // if the graphics object does not exist in the webGL context time to create it! - if(!webGL)webGL = graphics._webGL[gl.id] = {lastIndex:0, data:[], gl:gl}; - - // flag the graphics as not dirty as we are about to update it... - graphics.dirty = false; - - var i; - - // if the user cleared the graphics object we will need to clear every object - if(graphics.clearDirty) - { - graphics.clearDirty = false; - - // lop through and return all the webGLDatas to the object pool so than can be reused later on - for (i = 0; i < webGL.data.length; i++) - { - var graphicsData = webGL.data[i]; - graphicsData.reset(); - PIXI.WebGLGraphics.graphicsDataPool.push( graphicsData ); - } - - // clear the array and reset the index.. - webGL.data = []; - webGL.lastIndex = 0; - } - - var webGLData; - - // loop through the graphics datas and construct each one.. - // if the object is a complex fill then the new stencil buffer technique will be used - // other wise graphics objects will be pushed into a batch.. - for (i = webGL.lastIndex; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - - if(data.type === PIXI.Graphics.POLY) - { - // need to add the points the the graphics object.. - data.points = data.shape.points.slice(); - if(data.shape.closed) - { - // close the poly if the value is true! - if(data.points[0] !== data.points[data.points.length-2] || data.points[1] !== data.points[data.points.length-1]) - { - data.points.push(data.points[0], data.points[1]); - } - } - - // MAKE SURE WE HAVE THE CORRECT TYPE.. - if(data.fill) - { - if(data.points.length >= 6) - { - if(data.points.length < 6 * 2) - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - - var canDrawUsingSimple = PIXI.WebGLGraphics.buildPoly(data, webGLData); - // console.log(canDrawUsingSimple); - - if(!canDrawUsingSimple) - { - // console.log("<>>>") - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); - PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); - } - - } - else - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); - PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); - } - } - } - - if(data.lineWidth > 0) - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - PIXI.WebGLGraphics.buildLine(data, webGLData); - - } - } - else - { - webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); - - if(data.type === PIXI.Graphics.RECT) - { - PIXI.WebGLGraphics.buildRectangle(data, webGLData); - } - else if(data.type === PIXI.Graphics.CIRC || data.type === PIXI.Graphics.ELIP) - { - PIXI.WebGLGraphics.buildCircle(data, webGLData); - } - else if(data.type === PIXI.Graphics.RREC) - { - PIXI.WebGLGraphics.buildRoundedRectangle(data, webGLData); - } - } - - webGL.lastIndex++; - } - - // upload all the dirty data... - for (i = 0; i < webGL.data.length; i++) - { - webGLData = webGL.data[i]; - if(webGLData.dirty)webGLData.upload(); - } -}; - -/** - * @static - * @private - * @method switchMode - * @param webGL {WebGLContext} - * @param type {Number} - */ -PIXI.WebGLGraphics.switchMode = function(webGL, type) -{ - var webGLData; - - if(!webGL.data.length) - { - webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); - webGLData.mode = type; - webGL.data.push(webGLData); - } - else - { - webGLData = webGL.data[webGL.data.length-1]; - - if(webGLData.mode !== type || type === 1) - { - webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); - webGLData.mode = type; - webGL.data.push(webGLData); - } - } - - webGLData.dirty = true; - - return webGLData; -}; - -/** - * Builds a rectangle to draw - * - * @static - * @private - * @method buildRectangle - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) -{ - // --- // - // need to convert points to a nice regular data - // - var rectData = graphicsData.shape; - var x = rectData.x; - var y = rectData.y; - var width = rectData.width; - var height = rectData.height; - - if(graphicsData.fill) - { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vertPos = verts.length/6; - - // start - verts.push(x, y); - verts.push(r, g, b, alpha); - - verts.push(x + width, y); - verts.push(r, g, b, alpha); - - verts.push(x , y + height); - verts.push(r, g, b, alpha); - - verts.push(x + width, y + height); - verts.push(r, g, b, alpha); - - // insert 2 dead triangles.. - indices.push(vertPos, vertPos, vertPos+1, vertPos+2, vertPos+3, vertPos+3); - } - - if(graphicsData.lineWidth) - { - var tempPoints = graphicsData.points; - - graphicsData.points = [x, y, - x + width, y, - x + width, y + height, - x, y + height, - x, y]; - - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Builds a rounded rectangle to draw - * - * @static - * @private - * @method buildRoundedRectangle - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildRoundedRectangle = function(graphicsData, webGLData) -{ - var rrectData = graphicsData.shape; - var x = rrectData.x; - var y = rrectData.y; - var width = rrectData.width; - var height = rrectData.height; - - var radius = rrectData.radius; - - var recPoints = []; - recPoints.push(x, y + radius); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x, y + height - radius, x, y + height, x + radius, y + height)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width - radius, y + height, x + width, y + height, x + width, y + height - radius)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width, y + radius, x + width, y, x + width - radius, y)); - recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + radius, y, x, y, x, y + radius)); - - if (graphicsData.fill) { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vecPos = verts.length/6; - - var triangles = PIXI.PolyK.Triangulate(recPoints); - - // - - var i = 0; - for (i = 0; i < triangles.length; i+=3) - { - indices.push(triangles[i] + vecPos); - indices.push(triangles[i] + vecPos); - indices.push(triangles[i+1] + vecPos); - indices.push(triangles[i+2] + vecPos); - indices.push(triangles[i+2] + vecPos); - } - - - for (i = 0; i < recPoints.length; i++) - { - verts.push(recPoints[i], recPoints[++i], r, g, b, alpha); - } - } - - if (graphicsData.lineWidth) { - var tempPoints = graphicsData.points; - - graphicsData.points = recPoints; - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Calculate the points for a quadratic bezier curve. (helper function..) - * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c - * - * @static - * @private - * @method quadraticBezierCurve - * @param fromX {Number} Origin point x - * @param fromY {Number} Origin point x - * @param cpX {Number} Control point x - * @param cpY {Number} Control point y - * @param toX {Number} Destination point x - * @param toY {Number} Destination point y - * @return {Array(Number)} - */ -PIXI.WebGLGraphics.quadraticBezierCurve = function(fromX, fromY, cpX, cpY, toX, toY) { - - var xa, - ya, - xb, - yb, - x, - y, - n = 20, - points = []; - - function getPt(n1 , n2, perc) { - var diff = n2 - n1; - - return n1 + ( diff * perc ); - } - - var j = 0; - for (var i = 0; i <= n; i++ ) - { - j = i / n; - - // The Green Line - xa = getPt( fromX , cpX , j ); - ya = getPt( fromY , cpY , j ); - xb = getPt( cpX , toX , j ); - yb = getPt( cpY , toY , j ); - - // The Black Dot - x = getPt( xa , xb , j ); - y = getPt( ya , yb , j ); - - points.push(x, y); - } - return points; -}; - -/** - * Builds a circle to draw - * - * @static - * @private - * @method buildCircle - * @param graphicsData {Graphics} The graphics object to draw - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) -{ - // need to convert points to a nice regular data - var circleData = graphicsData.shape; - var x = circleData.x; - var y = circleData.y; - var width; - var height; - - // TODO - bit hacky?? - if(graphicsData.type === PIXI.Graphics.CIRC) - { - width = circleData.radius; - height = circleData.radius; - } - else - { - width = circleData.width; - height = circleData.height; - } - - var totalSegs = 40; - var seg = (Math.PI * 2) / totalSegs ; - - var i = 0; - - if(graphicsData.fill) - { - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var verts = webGLData.points; - var indices = webGLData.indices; - - var vecPos = verts.length/6; - - indices.push(vecPos); - - for (i = 0; i < totalSegs + 1 ; i++) - { - verts.push(x,y, r, g, b, alpha); - - verts.push(x + Math.sin(seg * i) * width, - y + Math.cos(seg * i) * height, - r, g, b, alpha); - - indices.push(vecPos++, vecPos++); - } - - indices.push(vecPos-1); - } - - if(graphicsData.lineWidth) - { - var tempPoints = graphicsData.points; - - graphicsData.points = []; - - for (i = 0; i < totalSegs + 1; i++) - { - graphicsData.points.push(x + Math.sin(seg * i) * width, - y + Math.cos(seg * i) * height); - } - - PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); - - graphicsData.points = tempPoints; - } -}; - -/** - * Builds a line to draw - * - * @static - * @private - * @method buildLine - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) -{ - // TODO OPTIMISE! - var i = 0; - var points = graphicsData.points; - if(points.length === 0)return; - - // if the line width is an odd number add 0.5 to align to a whole pixel - if(graphicsData.lineWidth%2) - { - for (i = 0; i < points.length; i++) { - points[i] += 0.5; - } - } - - // get first and last point.. figure out the middle! - var firstPoint = new PIXI.Point( points[0], points[1] ); - var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); - - // if the first point is the last point - gonna have issues :) - if(firstPoint.x === lastPoint.x && firstPoint.y === lastPoint.y) - { - // need to clone as we are going to slightly modify the shape.. - points = points.slice(); - - points.pop(); - points.pop(); - - lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); - - var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; - var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; - - points.unshift(midPointX, midPointY); - points.push(midPointX, midPointY); - } - - var verts = webGLData.points; - var indices = webGLData.indices; - var length = points.length / 2; - var indexCount = points.length; - var indexStart = verts.length/6; - - // DRAW the Line - var width = graphicsData.lineWidth / 2; - - // sort color - var color = PIXI.hex2rgb(graphicsData.lineColor); - var alpha = graphicsData.lineAlpha; - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var px, py, p1x, p1y, p2x, p2y, p3x, p3y; - var perpx, perpy, perp2x, perp2y, perp3x, perp3y; - var a1, b1, c1, a2, b2, c2; - var denom, pdist, dist; - - p1x = points[0]; - p1y = points[1]; - - p2x = points[2]; - p2y = points[3]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - // start - verts.push(p1x - perpx , p1y - perpy, - r, g, b, alpha); - - verts.push(p1x + perpx , p1y + perpy, - r, g, b, alpha); - - for (i = 1; i < length-1; i++) - { - p1x = points[(i-1)*2]; - p1y = points[(i-1)*2 + 1]; - - p2x = points[(i)*2]; - p2y = points[(i)*2 + 1]; - - p3x = points[(i+1)*2]; - p3y = points[(i+1)*2 + 1]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - perp2x = -(p2y - p3y); - perp2y = p2x - p3x; - - dist = Math.sqrt(perp2x*perp2x + perp2y*perp2y); - perp2x /= dist; - perp2y /= dist; - perp2x *= width; - perp2y *= width; - - a1 = (-perpy + p1y) - (-perpy + p2y); - b1 = (-perpx + p2x) - (-perpx + p1x); - c1 = (-perpx + p1x) * (-perpy + p2y) - (-perpx + p2x) * (-perpy + p1y); - a2 = (-perp2y + p3y) - (-perp2y + p2y); - b2 = (-perp2x + p2x) - (-perp2x + p3x); - c2 = (-perp2x + p3x) * (-perp2y + p2y) - (-perp2x + p2x) * (-perp2y + p3y); - - denom = a1*b2 - a2*b1; - - if(Math.abs(denom) < 0.1 ) - { - - denom+=10.1; - verts.push(p2x - perpx , p2y - perpy, - r, g, b, alpha); - - verts.push(p2x + perpx , p2y + perpy, - r, g, b, alpha); - - continue; - } - - px = (b1*c2 - b2*c1)/denom; - py = (a2*c1 - a1*c2)/denom; - - - pdist = (px -p2x) * (px -p2x) + (py -p2y) + (py -p2y); - - - if(pdist > 140 * 140) - { - perp3x = perpx - perp2x; - perp3y = perpy - perp2y; - - dist = Math.sqrt(perp3x*perp3x + perp3y*perp3y); - perp3x /= dist; - perp3y /= dist; - perp3x *= width; - perp3y *= width; - - verts.push(p2x - perp3x, p2y -perp3y); - verts.push(r, g, b, alpha); - - verts.push(p2x + perp3x, p2y +perp3y); - verts.push(r, g, b, alpha); - - verts.push(p2x - perp3x, p2y -perp3y); - verts.push(r, g, b, alpha); - - indexCount++; - } - else - { - - verts.push(px , py); - verts.push(r, g, b, alpha); - - verts.push(p2x - (px-p2x), p2y - (py - p2y)); - verts.push(r, g, b, alpha); - } - } - - p1x = points[(length-2)*2]; - p1y = points[(length-2)*2 + 1]; - - p2x = points[(length-1)*2]; - p2y = points[(length-1)*2 + 1]; - - perpx = -(p1y - p2y); - perpy = p1x - p2x; - - dist = Math.sqrt(perpx*perpx + perpy*perpy); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - verts.push(p2x - perpx , p2y - perpy); - verts.push(r, g, b, alpha); - - verts.push(p2x + perpx , p2y + perpy); - verts.push(r, g, b, alpha); - - indices.push(indexStart); - - for (i = 0; i < indexCount; i++) - { - indices.push(indexStart++); - } - - indices.push(indexStart-1); -}; - -/** - * Builds a complex polygon to draw - * - * @static - * @private - * @method buildComplexPoly - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildComplexPoly = function(graphicsData, webGLData) -{ - //TODO - no need to copy this as it gets turned into a FLoat32Array anyways.. - var points = graphicsData.points.slice(); - if(points.length < 6)return; - - // get first and last point.. figure out the middle! - var indices = webGLData.indices; - webGLData.points = points; - webGLData.alpha = graphicsData.fillAlpha; - webGLData.color = PIXI.hex2rgb(graphicsData.fillColor); - - /* - calclate the bounds.. - */ - var minX = Infinity; - var maxX = -Infinity; - - var minY = Infinity; - var maxY = -Infinity; - - var x,y; - - // get size.. - for (var i = 0; i < points.length; i+=2) - { - x = points[i]; - y = points[i+1]; - - minX = x < minX ? x : minX; - maxX = x > maxX ? x : maxX; - - minY = y < minY ? y : minY; - maxY = y > maxY ? y : maxY; - } - - // add a quad to the end cos there is no point making another buffer! - points.push(minX, minY, - maxX, minY, - maxX, maxY, - minX, maxY); - - // push a quad onto the end.. - - //TODO - this aint needed! - var length = points.length / 2; - for (i = 0; i < length; i++) - { - indices.push( i ); - } - -}; - -/** - * Builds a polygon to draw - * - * @static - * @private - * @method buildPoly - * @param graphicsData {Graphics} The graphics object containing all the necessary properties - * @param webGLData {Object} - */ -PIXI.WebGLGraphics.buildPoly = function(graphicsData, webGLData) -{ - var points = graphicsData.points; - - if(points.length < 6)return; - // get first and last point.. figure out the middle! - var verts = webGLData.points; - var indices = webGLData.indices; - - var length = points.length / 2; - - // sort color - var color = PIXI.hex2rgb(graphicsData.fillColor); - var alpha = graphicsData.fillAlpha; - var r = color[0] * alpha; - var g = color[1] * alpha; - var b = color[2] * alpha; - - var triangles = PIXI.PolyK.Triangulate(points); - - if(!triangles)return false; - - var vertPos = verts.length / 6; - - var i = 0; - - for (i = 0; i < triangles.length; i+=3) - { - indices.push(triangles[i] + vertPos); - indices.push(triangles[i] + vertPos); - indices.push(triangles[i+1] + vertPos); - indices.push(triangles[i+2] +vertPos); - indices.push(triangles[i+2] + vertPos); - } - - for (i = 0; i < length; i++) - { - verts.push(points[i * 2], points[i * 2 + 1], - r, g, b, alpha); - } - - return true; -}; - -PIXI.WebGLGraphics.graphicsDataPool = []; - -/** - * @class WebGLGraphicsData - * @private - * @static - */ -PIXI.WebGLGraphicsData = function(gl) -{ - this.gl = gl; - - //TODO does this need to be split before uploding?? - this.color = [0,0,0]; // color split! - this.points = []; - this.indices = []; - this.buffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - this.mode = 1; - this.alpha = 1; - this.dirty = true; -}; - -/** - * @method reset - */ -PIXI.WebGLGraphicsData.prototype.reset = function() -{ - this.points = []; - this.indices = []; -}; - -/** - * @method upload - */ -PIXI.WebGLGraphicsData.prototype.upload = function() -{ - var gl = this.gl; - -// this.lastIndex = graphics.graphicsData.length; - this.glPoints = new PIXI.Float32Array(this.points); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.glPoints, gl.STATIC_DRAW); - - this.glIndicies = new PIXI.Uint16Array(this.indices); - - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.glIndicies, gl.STATIC_DRAW); - - this.dirty = false; -}; - /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -18124,31 +17018,16 @@ PIXI.instances = []; * * @class WebGLRenderer * @constructor - * @param [width=0] {Number} the width of the canvas view - * @param [height=0] {Number} the height of the canvas view - * @param [options] {Object} The optional renderer parameters - * @param [options.view] {HTMLCanvasElement} the canvas to use as a view, optional - * @param [options.transparent=false] {Boolean} If the render view is transparent, default false - * @param [options.autoResize=false] {Boolean} If the render view is automatically resized, default false - * @param [options.antialias=false] {Boolean} sets antialias (only applicable in chrome at the moment) - * @param [options.preserveDrawingBuffer=false] {Boolean} enables drawing buffer preservation, enable this if you need to call toDataUrl on the webgl context - * @param [options.resolution=1] {Number} the resolution of the renderer retina would be 2 + * @param game {Phaser.Game} A reference to the Phaser Game instance */ -PIXI.WebGLRenderer = function(width, height, options) -{ - if(options) - { - for (var i in PIXI.defaultRenderOptions) - { - if (options[i] === undefined) options[i] = PIXI.defaultRenderOptions[i]; - } - } - else - { - options = PIXI.defaultRenderOptions; - } +PIXI.WebGLRenderer = function(game) { - if(!PIXI.defaultRenderer) + /** + * @property {Phaser.Game} game - A reference to the Phaser Game instance. + */ + this.game = game; + + if (!PIXI.defaultRenderer) { PIXI.defaultRenderer = this; } @@ -18166,9 +17045,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @type Number * @default 1 */ - this.resolution = options.resolution; - - // do a catch.. only 1 webGL renderer.. + this.resolution = game.resolution; /** * Whether the render view is transparent @@ -18176,7 +17053,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property transparent * @type Boolean */ - this.transparent = options.transparent; + this.transparent = game.transparent; /** * Whether the render view should be resized automatically @@ -18184,7 +17061,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property autoResize * @type Boolean */ - this.autoResize = options.autoResize || false; + this.autoResize = false; /** * The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. @@ -18192,7 +17069,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property preserveDrawingBuffer * @type Boolean */ - this.preserveDrawingBuffer = options.preserveDrawingBuffer; + this.preserveDrawingBuffer = game.preserveDrawingBuffer; /** * This sets if the WebGLRenderer will clear the context texture or not before the new render pass. If true: @@ -18204,25 +17081,23 @@ PIXI.WebGLRenderer = function(width, height, options) * @type Boolean * @default */ - this.clearBeforeRender = options.clearBeforeRender; + this.clearBeforeRender = game.clearBeforeRender; /** * The width of the canvas view * * @property width * @type Number - * @default 800 */ - this.width = width || 800; + this.width = game.width; /** * The height of the canvas view * * @property height * @type Number - * @default 600 */ - this.height = height || 600; + this.height = game.height; /** * The canvas element that everything is drawn to @@ -18230,7 +17105,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property view * @type HTMLCanvasElement */ - this.view = options.view || document.createElement('canvas'); + this.view = game.canvas; /** * @property _contextOptions @@ -18239,10 +17114,10 @@ PIXI.WebGLRenderer = function(width, height, options) */ this._contextOptions = { alpha: this.transparent, - antialias: options.antialias, // SPEED UP?? + antialias: game.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - preserveDrawingBuffer: options.preserveDrawingBuffer + preserveDrawingBuffer: this.preserveDrawingBuffer }; /** @@ -18255,7 +17130,7 @@ PIXI.WebGLRenderer = function(width, height, options) * @property offset * @type Point */ - this.offset = new PIXI.Point(0, 0); + this.offset = new PIXI.Point(); // time to create the render managers! each one focuses on managing a state in webGL @@ -18302,11 +17177,13 @@ PIXI.WebGLRenderer = function(width, height, options) this.blendModeManager = new PIXI.WebGLBlendModeManager(); /** - * TODO remove * @property renderSession * @type Object */ this.renderSession = {}; + + // Needed? + this.renderSession.game = this.game; this.renderSession.gl = this.gl; this.renderSession.drawCount = 0; this.renderSession.shaderManager = this.shaderManager; @@ -18323,6 +17200,7 @@ PIXI.WebGLRenderer = function(width, height, options) // map some webGL blend modes.. this.mapBlendModes(); + }; // constructor @@ -18334,6 +17212,7 @@ PIXI.WebGLRenderer.prototype.constructor = PIXI.WebGLRenderer; PIXI.WebGLRenderer.prototype.initContext = function() { var gl = this.view.getContext('webgl', this._contextOptions) || this.view.getContext('experimental-webgl', this._contextOptions); + this.gl = gl; if (!gl) { @@ -18375,14 +17254,9 @@ PIXI.WebGLRenderer.prototype.initContext = function() PIXI.WebGLRenderer.prototype.render = function(stage) { // no point rendering if our context has been blown up! - if (this.contextLost) return; - - // if rendering a new stage clear the batches.. - if (this.__stage !== stage) + if (this.contextLost) { - // TODO make this work - // dont think this is needed any more? - this.__stage = stage; + return; } // update the scene graph @@ -18396,21 +17270,14 @@ PIXI.WebGLRenderer.prototype.render = function(stage) // make sure we are bound to the main frame buffer gl.bindFramebuffer(gl.FRAMEBUFFER, null); - if (this.clearBeforeRender) + if (this.game.clearBeforeRender) { - if (this.transparent) - { - gl.clearColor(0, 0, 0, 0); - } - else - { - gl.clearColor(stage.backgroundColorSplit[0],stage.backgroundColorSplit[1],stage.backgroundColorSplit[2], 1); - } + gl.clearColor(stage._bgColor.r, stage._bgColor.g, stage._bgColor.b, stage._bgColor.a); - gl.clear (gl.COLOR_BUFFER_BIT); + gl.clear(gl.COLOR_BUFFER_BIT); } - this.renderDisplayObject( stage, this.projection ); + this.renderDisplayObject(stage, this.projection); }; /** @@ -18481,12 +17348,13 @@ PIXI.WebGLRenderer.prototype.resize = function(width, height) * * @method updateTexture * @param texture {Texture} the texture to update + * @return {boolean} True if the texture was successfully bound, otherwise false. */ PIXI.WebGLRenderer.prototype.updateTexture = function(texture) { if (!texture.hasLoaded) { - return; + return false; } var gl = this.gl; @@ -18527,7 +17395,8 @@ PIXI.WebGLRenderer.prototype.updateTexture = function(texture) texture._dirty[gl.id] = false; - return texture._glTextures[gl.id]; + // return texture._glTextures[gl.id]; + return true; }; @@ -18574,25 +17443,28 @@ PIXI.WebGLRenderer.prototype.mapBlendModes = function() if (!PIXI.blendModesWebGL) { - PIXI.blendModesWebGL = []; + var b = []; + var modes = PIXI.blendModes; - PIXI.blendModesWebGL[PIXI.blendModes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; - PIXI.blendModesWebGL[PIXI.blendModes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - PIXI.blendModesWebGL[PIXI.blendModes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; + b[modes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; + b[modes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + + PIXI.blendModesWebGL = b; } }; @@ -18642,7 +17514,11 @@ PIXI.WebGLBlendModeManager.prototype.setBlendMode = function(blendMode) this.currentBlendMode = blendMode; var blendModeWebGL = PIXI.blendModesWebGL[this.currentBlendMode]; - this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); + + if (blendModeWebGL) + { + this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); + } return true; }; @@ -19803,7 +18679,11 @@ PIXI.WebGLSpriteBatch.prototype.renderBatch = function(texture, size, startIndex // check if a texture is dirty.. if (texture._dirty[gl.id]) { - this.renderSession.renderer.updateTexture(texture); + if (!this.renderSession.renderer.updateTexture(texture)) + { + // If updateTexture returns false then we cannot render it, so bail out now + return; + } } else { @@ -20953,8 +19833,8 @@ PIXI.CanvasMaskManager.prototype.constructor = PIXI.CanvasMaskManager; * @param maskData {Object} the maskData that will be pushed * @param renderSession {Object} The renderSession whose context will be used for this mask manager. */ -PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) -{ +PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) { + var context = renderSession.context; context.save(); @@ -21171,28 +20051,14 @@ PIXI.CanvasTinter.tintMethod = PIXI.CanvasTinter.canUseMultiply ? PIXI.CanvasTin * * @class CanvasRenderer * @constructor - * @param [width=800] {Number} the width of the canvas view - * @param [height=600] {Number} the height of the canvas view - * @param [options] {Object} The optional renderer parameters - * @param [options.view] {HTMLCanvasElement} the canvas to use as a view, optional - * @param [options.transparent=false] {Boolean} If the render view is transparent, default false - * @param [options.autoResize=false] {Boolean} If the render view is automatically resized, default false - * @param [options.resolution=1] {Number} the resolution of the renderer retina would be 2 - * @param [options.clearBeforeRender=true] {Boolean} This sets if the CanvasRenderer will clear the canvas or not before the new render pass. + * @param game {Phaser.Game} A reference to the Phaser Game instance */ -PIXI.CanvasRenderer = function(width, height, options) -{ - if (options) - { - for (var i in PIXI.defaultRenderOptions) - { - if (options[i] === undefined) options[i] = PIXI.defaultRenderOptions[i]; - } - } - else - { - options = PIXI.defaultRenderOptions; - } +PIXI.CanvasRenderer = function (game) { + + /** + * @property {Phaser.Game} game - A reference to the Phaser Game instance. + */ + this.game = game; if (!PIXI.defaultRenderer) { @@ -21213,7 +20079,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property resolution * @type Number */ - this.resolution = options.resolution; + this.resolution = game.resolution; /** * This sets if the CanvasRenderer will clear the canvas or not before the new render pass. @@ -21225,7 +20091,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Boolean * @default */ - this.clearBeforeRender = options.clearBeforeRender; + this.clearBeforeRender = game.clearBeforeRender; /** * Whether the render view is transparent @@ -21233,7 +20099,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property transparent * @type Boolean */ - this.transparent = options.transparent; + this.transparent = game.transparent; /** * Whether the render view should be resized automatically @@ -21241,7 +20107,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property autoResize * @type Boolean */ - this.autoResize = options.autoResize || false; + this.autoResize = false; /** * The width of the canvas view @@ -21250,7 +20116,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Number * @default 800 */ - this.width = width || 800; + this.width = game.width * this.resolution; /** * The height of the canvas view @@ -21259,10 +20125,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @type Number * @default 600 */ - this.height = height || 600; - - this.width *= this.resolution; - this.height *= this.resolution; + this.height = game.height * this.resolution; /** * The canvas element that everything is drawn to. @@ -21270,7 +20133,7 @@ PIXI.CanvasRenderer = function(width, height, options) * @property view * @type HTMLCanvasElement */ - this.view = options.view || PIXI.CanvasPool.create(this, this.width, this.height); + this.view = game.canvas; /** * The canvas 2d context that everything is drawn with @@ -21287,8 +20150,9 @@ PIXI.CanvasRenderer = function(width, height, options) */ this.refresh = true; - this.view.width = this.width * this.resolution; - this.view.height = this.height * this.resolution; + // This is already done in the Game.setUpRenderer method. + // this.view.width = this.width * this.resolution; + // this.view.height = this.height * this.resolution; /** * Internal var. @@ -21314,7 +20178,8 @@ PIXI.CanvasRenderer = function(width, height, options) context: this.context, maskManager: this.maskManager, scaleMode: null, - smoothProperty: null, + smoothProperty: Phaser.Canvas.getSmoothingPrefix(this.context), + /** * If true Pixi will Math.floor() x/y values when rendering, stopping pixel interpolation. * Handy for crisp pixel art and speed on legacy devices. @@ -21324,18 +20189,8 @@ PIXI.CanvasRenderer = function(width, height, options) this.mapBlendModes(); - this.resize(width, height); + this.resize(this.width, this.height); - if("imageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "imageSmoothingEnabled"; - else if("webkitImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "webkitImageSmoothingEnabled"; - else if("mozImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "mozImageSmoothingEnabled"; - else if("oImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "oImageSmoothingEnabled"; - else if ("msImageSmoothingEnabled" in this.context) - this.renderSession.smoothProperty = "msImageSmoothingEnabled"; }; // constructor @@ -21347,16 +20202,16 @@ PIXI.CanvasRenderer.prototype.constructor = PIXI.CanvasRenderer; * @method render * @param stage {Stage} the Stage element to be rendered */ -PIXI.CanvasRenderer.prototype.render = function(stage) -{ +PIXI.CanvasRenderer.prototype.render = function (stage) { + stage.updateTransform(); - this.context.setTransform(1,0,0,1,0,0); + this.context.setTransform(1, 0, 0, 1, 0, 0); this.context.globalAlpha = 1; - this.renderSession.currentBlendMode = PIXI.blendModes.NORMAL; - this.context.globalCompositeOperation = PIXI.blendModesCanvas[PIXI.blendModes.NORMAL]; + this.renderSession.currentBlendMode = 0; + this.context.globalCompositeOperation = 'source-over'; if (navigator.isCocoonJS && this.view.screencanvas) { @@ -21372,7 +20227,7 @@ PIXI.CanvasRenderer.prototype.render = function(stage) } else { - this.context.fillStyle = stage.backgroundColorString; + this.context.fillStyle = stage._bgColor.rgba; this.context.fillRect(0, 0, this.width , this.height); } } @@ -21418,7 +20273,8 @@ PIXI.CanvasRenderer.prototype.resize = function(width, height) this.view.width = this.width; this.view.height = this.height; - if (this.autoResize) { + if (this.autoResize) + { this.view.style.width = this.width / this.resolution + "px"; this.view.style.height = this.height / this.resolution + "px"; } @@ -21433,11 +20289,12 @@ PIXI.CanvasRenderer.prototype.resize = function(width, height) * @param [matrix] {Matrix} Optional matrix to apply to the display object before rendering. * @private */ -PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject, context, matrix) -{ +PIXI.CanvasRenderer.prototype.renderDisplayObject = function (displayObject, context, matrix) { + this.renderSession.context = context || this.context; this.renderSession.resolution = this.resolution; displayObject._renderCanvas(this.renderSession, matrix); + }; /** @@ -21446,407 +20303,35 @@ PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject, cont * @method mapBlendModes * @private */ -PIXI.CanvasRenderer.prototype.mapBlendModes = function() -{ - if(!PIXI.blendModesCanvas) +PIXI.CanvasRenderer.prototype.mapBlendModes = function () { + + if (!PIXI.blendModesCanvas) { - PIXI.blendModesCanvas = []; + var b = []; + var modes = PIXI.blendModes; + var useNew = PIXI.canUseNewCanvasBlendModes(); - if(PIXI.canUseNewCanvasBlendModes()) - { - PIXI.blendModesCanvas[PIXI.blendModes.NORMAL] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.ADD] = "lighter"; //IS THIS OK??? - PIXI.blendModesCanvas[PIXI.blendModes.MULTIPLY] = "multiply"; - PIXI.blendModesCanvas[PIXI.blendModes.SCREEN] = "screen"; - PIXI.blendModesCanvas[PIXI.blendModes.OVERLAY] = "overlay"; - PIXI.blendModesCanvas[PIXI.blendModes.DARKEN] = "darken"; - PIXI.blendModesCanvas[PIXI.blendModes.LIGHTEN] = "lighten"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_DODGE] = "color-dodge"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_BURN] = "color-burn"; - PIXI.blendModesCanvas[PIXI.blendModes.HARD_LIGHT] = "hard-light"; - PIXI.blendModesCanvas[PIXI.blendModes.SOFT_LIGHT] = "soft-light"; - PIXI.blendModesCanvas[PIXI.blendModes.DIFFERENCE] = "difference"; - PIXI.blendModesCanvas[PIXI.blendModes.EXCLUSION] = "exclusion"; - PIXI.blendModesCanvas[PIXI.blendModes.HUE] = "hue"; - PIXI.blendModesCanvas[PIXI.blendModes.SATURATION] = "saturation"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR] = "color"; - PIXI.blendModesCanvas[PIXI.blendModes.LUMINOSITY] = "luminosity"; - } - else - { - // this means that the browser does not support the cool new blend modes in canvas "cough" ie "cough" - PIXI.blendModesCanvas[PIXI.blendModes.NORMAL] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.ADD] = "lighter"; //IS THIS OK??? - PIXI.blendModesCanvas[PIXI.blendModes.MULTIPLY] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SCREEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.OVERLAY] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.DARKEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.LIGHTEN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_DODGE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR_BURN] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.HARD_LIGHT] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SOFT_LIGHT] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.DIFFERENCE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.EXCLUSION] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.HUE] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.SATURATION] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.COLOR] = "source-over"; - PIXI.blendModesCanvas[PIXI.blendModes.LUMINOSITY] = "source-over"; - } - } -}; + b[modes.NORMAL] = 'source-over'; + b[modes.ADD] = 'lighter'; + b[modes.MULTIPLY] = (useNew) ? 'multiply' : 'source-over'; + b[modes.SCREEN] = (useNew) ? 'screen' : 'source-over'; + b[modes.OVERLAY] = (useNew) ? 'overlay' : 'source-over'; + b[modes.DARKEN] = (useNew) ? 'darken' : 'source-over'; + b[modes.LIGHTEN] = (useNew) ? 'lighten' : 'source-over'; + b[modes.COLOR_DODGE] = (useNew) ? 'color-dodge' : 'source-over'; + b[modes.COLOR_BURN] = (useNew) ? 'color-burn' : 'source-over'; + b[modes.HARD_LIGHT] = (useNew) ? 'hard-light' : 'source-over'; + b[modes.SOFT_LIGHT] = (useNew) ? 'soft-light' : 'source-over'; + b[modes.DIFFERENCE] = (useNew) ? 'difference' : 'source-over'; + b[modes.EXCLUSION] = (useNew) ? 'exclusion' : 'source-over'; + b[modes.HUE] = (useNew) ? 'hue' : 'source-over'; + b[modes.SATURATION] = (useNew) ? 'saturation' : 'source-over'; + b[modes.COLOR] = (useNew) ? 'color' : 'source-over'; + b[modes.LUMINOSITY] = (useNew) ? 'luminosity' : 'source-over'; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - - -/** - * A set of functions used by the canvas renderer to draw the primitive graphics data. - * - * @class CanvasGraphics - * @static - */ -PIXI.CanvasGraphics = function() -{ -}; - -/* - * Renders a PIXI.Graphics object to a canvas. - * - * @method renderGraphics - * @static - * @param graphics {Graphics} the actual graphics object to render - * @param context {CanvasRenderingContext2D} the 2d drawing method of the canvas - */ -PIXI.CanvasGraphics.renderGraphics = function(graphics, context) -{ - var worldAlpha = graphics.worldAlpha; - - if (graphics.dirty) - { - this.updateGraphicsTint(graphics); - graphics.dirty = false; + PIXI.blendModesCanvas = b; } - for (var i = 0; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - var shape = data.shape; - - var fillColor = data._fillTint; - var lineColor = data._lineTint; - - context.lineWidth = data.lineWidth; - - if (data.type === PIXI.Graphics.POLY) - { - context.beginPath(); - - var points = shape.points; - - context.moveTo(points[0], points[1]); - - for (var j=1; j < points.length/2; j++) - { - context.lineTo(points[j * 2], points[j * 2 + 1]); - } - - if (shape.closed) - { - context.lineTo(points[0], points[1]); - } - - // if the first and last point are the same close the path - much neater :) - if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) - { - context.closePath(); - } - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.RECT) - { - if (data.fillColor || data.fillColor === 0) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fillRect(shape.x, shape.y, shape.width, shape.height); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.strokeRect(shape.x, shape.y, shape.width, shape.height); - } - } - else if (data.type === PIXI.Graphics.CIRC) - { - // TODO - need to be Undefined! - context.beginPath(); - context.arc(shape.x, shape.y, shape.radius,0,2*Math.PI); - context.closePath(); - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.ELIP) - { - // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - - var w = shape.width * 2; - var h = shape.height * 2; - - var x = shape.x - w/2; - var y = shape.y - h/2; - - context.beginPath(); - - var kappa = 0.5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - context.moveTo(x, ym); - context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - - context.closePath(); - - if (data.fill) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - else if (data.type === PIXI.Graphics.RREC) - { - var rx = shape.x; - var ry = shape.y; - var width = shape.width; - var height = shape.height; - var radius = shape.radius; - - var maxRadius = Math.min(width, height) / 2 | 0; - radius = radius > maxRadius ? maxRadius : radius; - - context.beginPath(); - context.moveTo(rx, ry + radius); - context.lineTo(rx, ry + height - radius); - context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); - context.lineTo(rx + width - radius, ry + height); - context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); - context.lineTo(rx + width, ry + radius); - context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); - context.lineTo(rx + radius, ry); - context.quadraticCurveTo(rx, ry, rx, ry + radius); - context.closePath(); - - if (data.fillColor || data.fillColor === 0) - { - context.globalAlpha = data.fillAlpha * worldAlpha; - context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); - context.fill(); - } - - if (data.lineWidth) - { - context.globalAlpha = data.lineAlpha * worldAlpha; - context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); - context.stroke(); - } - } - } -}; - -/* - * Renders a graphics mask - * - * @static - * @private - * @method renderGraphicsMask - * @param graphics {Graphics} the graphics which will be used as a mask - * @param context {CanvasRenderingContext2D} the context 2d method of the canvas - */ -PIXI.CanvasGraphics.renderGraphicsMask = function(graphics, context) -{ - var len = graphics.graphicsData.length; - - if (len === 0) - { - return; - } - - context.beginPath(); - - for (var i = 0; i < len; i++) - { - var data = graphics.graphicsData[i]; - var shape = data.shape; - - if (data.type === PIXI.Graphics.POLY) - { - - var points = shape.points; - - context.moveTo(points[0], points[1]); - - for (var j=1; j < points.length/2; j++) - { - context.lineTo(points[j * 2], points[j * 2 + 1]); - } - - // if the first and last point are the same close the path - much neater :) - if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) - { - context.closePath(); - } - - } - else if (data.type === PIXI.Graphics.RECT) - { - context.rect(shape.x, shape.y, shape.width, shape.height); - context.closePath(); - } - else if (data.type === PIXI.Graphics.CIRC) - { - // TODO - need to be Undefined! - context.arc(shape.x, shape.y, shape.radius, 0, 2 * Math.PI); - context.closePath(); - } - else if (data.type === PIXI.Graphics.ELIP) - { - - // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - - var w = shape.width * 2; - var h = shape.height * 2; - - var x = shape.x - w/2; - var y = shape.y - h/2; - - var kappa = 0.5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - context.moveTo(x, ym); - context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - context.closePath(); - } - else if (data.type === PIXI.Graphics.RREC) - { - - var rx = shape.x; - var ry = shape.y; - var width = shape.width; - var height = shape.height; - var radius = shape.radius; - - var maxRadius = Math.min(width, height) / 2 | 0; - radius = radius > maxRadius ? maxRadius : radius; - - context.moveTo(rx, ry + radius); - context.lineTo(rx, ry + height - radius); - context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); - context.lineTo(rx + width - radius, ry + height); - context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); - context.lineTo(rx + width, ry + radius); - context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); - context.lineTo(rx + radius, ry); - context.quadraticCurveTo(rx, ry, rx, ry + radius); - context.closePath(); - } - } -}; - -PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) -{ - if (graphics.tint === 0xFFFFFF) - { - return; - } - - var tintR = (graphics.tint >> 16 & 0xFF) / 255; - var tintG = (graphics.tint >> 8 & 0xFF) / 255; - var tintB = (graphics.tint & 0xFF)/ 255; - - for (var i = 0; i < graphics.graphicsData.length; i++) - { - var data = graphics.graphicsData[i]; - - var fillColor = data.fillColor | 0; - var lineColor = data.lineColor | 0; - - /* - var colorR = (fillColor >> 16 & 0xFF) / 255; - var colorG = (fillColor >> 8 & 0xFF) / 255; - var colorB = (fillColor & 0xFF) / 255; - - colorR *= tintR; - colorG *= tintG; - colorB *= tintB; - - fillColor = ((colorR*255 << 16) + (colorG*255 << 8) + colorB*255); - - colorR = (lineColor >> 16 & 0xFF) / 255; - colorG = (lineColor >> 8 & 0xFF) / 255; - colorB = (lineColor & 0xFF) / 255; - - colorR *= tintR; - colorG *= tintG; - colorB *= tintB; - - lineColor = ((colorR*255 << 16) + (colorG*255 << 8) + colorB*255); - */ - - data._fillTint = (((fillColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((fillColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (fillColor & 0xFF) / 255 * tintB*255); - data._lineTint = (((lineColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((lineColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (lineColor & 0xFF) / 255 * tintB*255); - - } }; /** @@ -23771,7 +22256,7 @@ PIXI.TilingSprite.prototype._renderWebGL = function(renderSession) if (this.refreshTexture) { - this.generateTilingTexture(true); + this.generateTilingTexture(true, renderSession); if (this.tilingTexture) { @@ -23840,7 +22325,7 @@ PIXI.TilingSprite.prototype._renderCanvas = function(renderSession) if (this.refreshTexture) { - this.generateTilingTexture(false); + this.generateTilingTexture(false, renderSession); if (this.tilingTexture) { @@ -23929,8 +22414,9 @@ PIXI.TilingSprite.prototype.onTextureUpdate = function() * @method generateTilingTexture * * @param forcePowerOfTwo {Boolean} Whether we want to force the texture to be a power of two +* @param renderSession {RenderSession} */ -PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo) +PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo, renderSession) { if (!this.texture.baseTexture.hasLoaded) { @@ -23969,7 +22455,6 @@ PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo) { this.canvasBuffer = new PIXI.CanvasBuffer(targetWidth, targetHeight); this.tilingTexture = PIXI.Texture.fromCanvas(this.canvasBuffer.canvas); - this.tilingTexture = PIXI.Texture.fromCanvas(this.canvasBuffer.canvas); this.tilingTexture.isTiling = true; this.tilingTexture.needsUpdate = true; } @@ -24089,10 +22574,14 @@ PIXI.TilingSprite.prototype.getBounds = function() PIXI.TilingSprite.prototype.destroy = function () { - this.canvasBuffer.destroy(); - PIXI.Sprite.prototype.destroy.call(this); + if (this.canvasBuffer) + { + this.canvasBuffer.destroy(); + this.canvasBuffer = null; + } + this.tileScale = null; this.tileScaleOffset = null; this.tilePosition = null; @@ -24185,7 +22674,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.4.3', + VERSION: '2.4.4-RC1', /** * An array of Phaser game instances. @@ -29659,7 +28148,10 @@ Phaser.Camera.prototype = { */ setBoundsToWorld: function () { - this.bounds.copyFrom(this.game.world.bounds); + if (this.bounds) + { + this.bounds.copyFrom(this.game.world.bounds); + } }, @@ -29861,195 +28353,6 @@ Object.defineProperty(Phaser.Camera.prototype, "height", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content -* quickly and easily, without the need for any external files. You can create textures for sprites and in -* coming releases we'll add dynamic sound effect generation support as well (like sfxr). -* -* Access this via `State.create` (or `this.create` from within a State object) -* -* @class Phaser.Create -* @constructor -* @param {Phaser.Game} game - Game reference to the currently running game. - */ -Phaser.Create = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = game; - - /** - * @property {Phaser.BitmapData} bmd - The internal BitmapData Create uses to generate textures from. - */ - this.bmd = game.make.bitmapData(); - - /** - * @property {HTMLCanvasElement} canvas - The canvas the BitmapData uses. - */ - this.canvas = this.bmd.canvas; - - /** - * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. - */ - this.ctx = this.bmd.context; - - /** - * @property {array} palettes - A range of 16 color palettes for use with sprite generation. - */ - this.palettes = [ - { 0: '#000', 1: '#9D9D9D', 2: '#FFF', 3: '#BE2633', 4: '#E06F8B', 5: '#493C2B', 6: '#A46422', 7: '#EB8931', 8: '#F7E26B', 9: '#2F484E', A: '#44891A', B: '#A3CE27', C: '#1B2632', D: '#005784', E: '#31A2F2', F: '#B2DCEF' }, - { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#f5f4eb' }, - { 0: '#000', 1: '#2234d1', 2: '#0c7e45', 3: '#44aacc', 4: '#8a3622', 5: '#5c2e78', 6: '#aa5c3d', 7: '#b5b5b5', 8: '#5e606e', 9: '#4c81fb', A: '#6cd947', B: '#7be2f9', C: '#eb8a60', D: '#e23d69', E: '#ffd93f', F: '#fff' }, - { 0: '#000', 1: '#fff', 2: '#8b4131', 3: '#7bbdc5', 4: '#8b41ac', 5: '#6aac41', 6: '#3931a4', 7: '#d5de73', 8: '#945a20', 9: '#5a4100', A: '#bd736a', B: '#525252', C: '#838383', D: '#acee8b', E: '#7b73de', F: '#acacac' }, - { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#fff' } - ]; - -}; - -/** -* A 16 color palette by [Arne](http://androidarts.com/palette/16pal.htm) -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_ARNE = 0; - -/** -* A 16 color JMP inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_JMP = 1; - -/** -* A 16 color CGA inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_CGA = 2; - -/** -* A 16 color C64 inspired palette. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_C64 = 3; - -/** -* A 16 color palette inspired by Japanese computers like the MSX. -* @constant -* @type {number} -*/ -Phaser.Create.PALETTE_JAPANESE_MACHINE = 4; - -Phaser.Create.prototype = { - - /** - * Generates a new PIXI.Texture from the given data, which can be applied to a Sprite. - * - * This allows you to create game graphics quickly and easily, with no external files but that use actual proper images - * rather than Phaser.Graphics objects, which are expensive to render and limited in scope. - * - * Each element of the array is a string holding the pixel color values, as mapped to one of the Phaser.Create PALETTE consts. - * - * For example: - * - * `var data = [ - * ' 333 ', - * ' 777 ', - * 'E333E', - * ' 333 ', - * ' 3 3 ' - * ];` - * - * `game.create.texture('bob', data);` - * - * The above will create a new texture called `bob`, which will look like a little man wearing a hat. You can then use it - * for sprites the same way you use any other texture: `game.add.sprite(0, 0, 'bob');` - * - * @method Phaser.Create#texture - * @param {string} key - The key used to store this texture in the Phaser Cache. - * @param {array} data - An array of pixel data. - * @param {integer} [pixelWidth=8] - The width of each pixel. - * @param {integer} [pixelHeight=8] - The height of each pixel. - * @param {integer} [palette=0] - The palette to use when rendering the texture. One of the Phaser.Create.PALETTE consts. - * @return {PIXI.Texture} The newly generated texture. - */ - texture: function (key, data, pixelWidth, pixelHeight, palette) { - - if (pixelWidth === undefined) { pixelWidth = 8; } - if (pixelHeight === undefined) { pixelHeight = pixelWidth; } - if (palette === undefined) { palette = 0; } - - var w = data[0].length * pixelWidth; - var h = data.length * pixelHeight; - - this.bmd.resize(w, h); - this.bmd.clear(); - - // Draw it - for (var y = 0; y < data.length; y++) - { - var row = data[y]; - - for (var x = 0; x < row.length; x++) - { - var d = row[x]; - - if (d !== '.' && d !== ' ') - { - this.ctx.fillStyle = this.palettes[palette][d]; - this.ctx.fillRect(x * pixelWidth, y * pixelHeight, pixelWidth, pixelHeight); - } - } - } - - return this.bmd.generateTexture(key); - - }, - - /** - * Creates a grid texture based on the given dimensions. - * - * @method Phaser.Create#grid - * @param {string} key - The key used to store this texture in the Phaser Cache. - * @param {integer} width - The width of the grid in pixels. - * @param {integer} height - The height of the grid in pixels. - * @param {integer} cellWidth - The width of the grid cells in pixels. - * @param {integer} cellHeight - The height of the grid cells in pixels. - * @param {string} color - The color to draw the grid lines in. Should be a Canvas supported color string like `#ff5500` or `rgba(200,50,3,0.5)`. - * @return {PIXI.Texture} The newly generated texture. - */ - grid: function (key, width, height, cellWidth, cellHeight, color) { - - this.bmd.resize(width, height); - - this.ctx.fillStyle = color; - - for (var y = 0; y < height; y += cellHeight) - { - this.ctx.fillRect(0, y, width, 1); - } - - for (var x = 0; x < width; x += cellWidth) - { - this.ctx.fillRect(x, 0, 1, height); - } - - return this.bmd.generateTexture(key); - - } - -}; - -Phaser.Create.prototype.constructor = Phaser.Create; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * This is a base State class which can be extended if you are creating your own game. * It provides quick access to common functions such as the camera, cache, input, match, sound and more. @@ -30581,7 +28884,7 @@ Phaser.StateManager.prototype = { if (arguments.length > 2) { - this._args = Array.prototype.splice.call(arguments, 2); + this._args = Array.prototype.slice.call(arguments, 2); } }, @@ -31055,6 +29358,10 @@ Object.defineProperty(Phaser.StateManager.prototype, "created", { }); +/** +* "It's like nailing jelly to a kitten" - Gary Penn +*/ + /** * @author Miller Medeiros http://millermedeiros.github.com/js-signals/ * @author Richard Davey @@ -31863,6 +30170,60 @@ Phaser.Filter.prototype = { }, + /** + * Creates a new Phaser.Image object using a blank texture and assigns + * this Filter to it. The image is then added to the world. + * + * If you don't provide width and height values then Filter.width and Filter.height are used. + * + * If you do provide width and height values then this filter will be resized to match those + * values. + * + * @method Phaser.Filter#addToWorld + * @param {number} [x=0] - The x coordinate to place the Image at. + * @param {number} [y=0] - The y coordinate to place the Image at. + * @param {number} [width] - The width of the Image. If not specified (or null) it will use Filter.width. If specified Filter.width will be set to this value. + * @param {number} [height] - The height of the Image. If not specified (or null) it will use Filter.height. If specified Filter.height will be set to this value. + * @param {number} [anchorX=0] - Set the x anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. + * @param {number} [anchorY=0] - Set the y anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. + * @return {Phaser.Image} The newly added Image object. + */ + addToWorld: function (x, y, width, height, anchorX, anchorY) { + + if (anchorX === undefined) { anchorX = 0; } + if (anchorY === undefined) { anchorY = 0; } + + if (width !== undefined && width !== null) + { + this.width = width; + } + else + { + width = this.width; + } + + if (height !== undefined && height !== null) + { + this.height = height; + } + else + { + height = this.height; + } + + var image = this.game.add.image(x, y, '__default'); + + image.width = width; + image.height = height; + + image.anchor.set(anchorX, anchorY); + + image.filters = [ this ]; + + return image; + + }, + /** * Clear down this Filter and null out references * @method Phaser.Filter#destroy @@ -32086,7 +30447,7 @@ Phaser.PluginManager.prototype = { */ add: function (plugin) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var result = false; // Prototype? @@ -32331,7 +30692,7 @@ Phaser.PluginManager.prototype.constructor = Phaser.PluginManager; * It also handles browser visibility handling and the pausing due to loss of focus. * * @class Phaser.Stage -* @extends PIXI.Stage +* @extends PIXI.DisplayObjectContainer * @constructor * @param {Phaser.Game} game - Game reference to the currently running game. */ @@ -32342,7 +30703,7 @@ Phaser.Stage = function (game) { */ this.game = game; - PIXI.Stage.call(this, 0x000000); + PIXI.DisplayObjectContainer.call(this); /** * @property {string} name - The name of this object. @@ -32362,6 +30723,20 @@ Phaser.Stage = function (game) { */ this.exists = true; + /** + * @property {PIXI.Matrix} worldTransform - Current transform of the object based on world (parent) factors + * @private + * @readOnly + */ + this.worldTransform = new PIXI.Matrix(); + + /** + * @property {Phaser.Stage} stage - The stage reference (the Stage is its own stage) + * @private + * @readOnly + */ + this.stage = this; + /** * @property {number} currentRenderOrderID - Reset each frame, keeps a count of the total number of objects updated. */ @@ -32380,10 +30755,16 @@ Phaser.Stage = function (game) { this._onChange = null; /** - * @property {number} _backgroundColor - Stage background color. + * @property {number} _bgColor - Stage background color object. Populated by setBackgroundColor. * @private */ - this._backgroundColor = 0x000000; + this._bgColor = { r: 0, g: 0, b: 0, a: 0, color: 0, rgba: '#000000' }; + + if (!this.game.transparent) + { + // transparent = 0,0,0,0 - otherwise r,g,b,1 + this._bgColor.a = 1; + } if (game.config) { @@ -32392,7 +30773,7 @@ Phaser.Stage = function (game) { }; -Phaser.Stage.prototype = Object.create(PIXI.Stage.prototype); +Phaser.Stage.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); Phaser.Stage.prototype.constructor = Phaser.Stage; /** @@ -32411,7 +30792,7 @@ Phaser.Stage.prototype.parseConfig = function (config) { if (config['backgroundColor']) { - this.backgroundColor = config['backgroundColor']; + this.setBackgroundColor(config['backgroundColor']); } }; @@ -32628,16 +31009,23 @@ Phaser.Stage.prototype.visibilityChange = function (event) { * * An alpha channel is _not_ supported and will be ignored. * +* If you've set your game to be transparent then calls to setBackgroundColor are ignored. +* * @method Phaser.Stage#setBackgroundColor -* @param {number|string} backgroundColor - The color of the background. +* @param {number|string} color - The color of the background. */ -Phaser.Stage.prototype.setBackgroundColor = function(backgroundColor) -{ - var rgb = Phaser.Color.valueToColor(backgroundColor); - this._backgroundColor = Phaser.Color.getColor(rgb.r, rgb.g, rgb.b); +Phaser.Stage.prototype.setBackgroundColor = function (color) { - this.backgroundColorSplit = [ rgb.r / 255, rgb.g / 255, rgb.b / 255 ]; - this.backgroundColorString = Phaser.Color.RGBtoString(rgb.r, rgb.g, rgb.b, 255, '#'); + if (this.game.transparent) { return; } + + Phaser.Color.valueToColor(color, this._bgColor); + Phaser.Color.updateColor(this._bgColor); + + // For gl.clearColor (canvas uses _bgColor.rgba) + this._bgColor.r /= 255; + this._bgColor.g /= 255; + this._bgColor.b /= 255; + this._bgColor.a = 1; }; @@ -32669,16 +31057,13 @@ Object.defineProperty(Phaser.Stage.prototype, "backgroundColor", { get: function () { - return this._backgroundColor; + return this._bgColor.color; }, set: function (color) { - if (!this.game.transparent) - { - this.setBackgroundColor(color); - } + this.setBackgroundColor(color); } @@ -32766,6 +31151,7 @@ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBody * The z-depth value of this object within its parent container/Group - the World is a Group as well. * This value must be unique for each child in a Group. * @property {integer} z + * @readOnly */ this.z = 0; @@ -32870,7 +31256,7 @@ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBody /** * If {@link #enableBody} is true this is the type of physics body that is created on new Sprites. * - * The valid values are {@link Phaser.Physics.ARCADE}, {@link Phaser.Physics.P2}, {@link Phaser.Physics.NINJA}, etc. + * The valid values are {@link Phaser.Physics.ARCADE}, {@link Phaser.Physics.P2JS}, {@link Phaser.Physics.NINJA}, etc. * @property {integer} physicsBodyType */ this.physicsBodyType = physicsBodyType; @@ -33179,13 +31565,13 @@ Phaser.Group.prototype.getAt = function (index) { /** * Creates a new Phaser.Sprite object and adds it to the top of this group. * -* Use {@link #classType} to change the type of object creaded. +* Use {@link #classType} to change the type of object created. * * @method Phaser.Group#create * @param {number} x - The x coordinate to display the newly created Sprite at. The value is in relation to the group.x point. * @param {number} y - The y coordinate to display the newly created Sprite at. The value is in relation to the group.y point. -* @param {string} key - The Game.cache key of the image that this Sprite will use. -* @param {integer|string} [frame] - If the Sprite image contains multiple frames you can specify which one to use here. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @param {boolean} [exists=true] - The default exists state of the Sprite. * @return {DisplayObject} The child that was created: will be a {@link Phaser.Sprite} unless {@link #classType} has been changed. */ @@ -34487,47 +32873,134 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal /** * Get the first display object that exists, or doesn't exist. +* +* You can use the optional argument `createIfNull` to create a new Game Object if none matching your exists argument were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstExists * @param {boolean} [exists=true] - If true, find the first existing child; otherwise find the first non-existing child. -* @return {any} The first child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no alive children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The first child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstExists = function (exists) { +Phaser.Group.prototype.getFirstExists = function (exists, createIfNull, x, y, key, frame) { + + if (createIfNull === undefined) { createIfNull = false; } if (typeof exists !== 'boolean') { exists = true; } - return this.iterate('exists', exists, Phaser.Group.RETURN_CHILD); + var child = this.iterate('exists', exists, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); }; /** * Get the first child that is alive (`child.alive === true`). * -* This is handy for checking if everything has been wiped out, or choosing a squad leader, etc. +* This is handy for choosing a squad leader, etc. +* +* You can use the optional argument `createIfNull` to create a new Game Object if no alive ones were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstAlive -* @return {any} The first alive child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no alive children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The alive dead child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstAlive = function () { +Phaser.Group.prototype.getFirstAlive = function (createIfNull, x, y, key, frame) { - return this.iterate('alive', true, Phaser.Group.RETURN_CHILD); + if (createIfNull === undefined) { createIfNull = false; } + + var child = this.iterate('alive', true, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); }; /** * Get the first child that is dead (`child.alive === false`). * -* This is handy for checking if everything has been wiped out, or choosing a squad leader, etc. +* This is handy for checking if everything has been wiped out and adding to the pool as needed. +* +* You can use the optional argument `createIfNull` to create a new Game Object if no dead ones were found in this Group. +* +* It works by calling `Group.create` passing it the parameters given to this method, and returning the new child. +* +* If a child *was* found , `createIfNull` is `false` and you provided the additional arguments then the child +* will be reset and/or have a new texture loaded on it. This is handled by `Group.resetChild`. * * @method Phaser.Group#getFirstDead -* @return {any} The first dead child, or null if none found. +* @param {boolean} [createIfNull=false] - If `true` and no dead children are found a new one is created. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The first dead child, or `null` if none found and `createIfNull` was false. */ -Phaser.Group.prototype.getFirstDead = function () { +Phaser.Group.prototype.getFirstDead = function (createIfNull, x, y, key, frame) { - return this.iterate('alive', false, Phaser.Group.RETURN_CHILD); + if (createIfNull === undefined) { createIfNull = false; } + + var child = this.iterate('alive', false, Phaser.Group.RETURN_CHILD); + + return (child === null && createIfNull) ? this.create(x, y, key, frame) : this.resetChild(child, x, y, key, frame); + +}; + +/** +* Takes a child and if the `x` and `y` arguments are given it calls `child.reset(x, y)` on it. +* +* If the `key` and optionally the `frame` arguments are given, it calls `child.loadTexture(key, frame)` on it. +* +* The two operations are separate. For example if you just wish to load a new texture then pass `null` as the x and y values. +* +* @method Phaser.Group#resetChild +* @param {DisplayObject} child - The child to reset and/or load the texture on. +* @param {number} [x] - The x coordinate to reset the child to. The value is in relation to the group.x point. +* @param {number} [y] - The y coordinate to reset the child to. The value is in relation to the group.y point. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +* @return {DisplayObject} The child that was reset: usually a {@link Phaser.Sprite}. +*/ +Phaser.Group.prototype.resetChild = function (child, x, y, key, frame) { + + if (child === null) + { + return null; + } + + if (x === undefined) { x = null; } + if (y === undefined) { y = null; } + + if (x !== null && y !== null) + { + child.reset(x, y); + } + + if (key !== undefined) + { + child.loadTexture(key, frame); + } + + return child; }; @@ -35299,2816 +33772,6 @@ Object.defineProperty(Phaser.World.prototype, "randomY", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. -* Please try to avoid using in production games with a long time to build. -* This is also why the documentation is incomplete. -* -* FlexGrid is a a responsive grid manager that works in conjunction with the ScaleManager RESIZE scaling mode and FlexLayers -* to provide for game object positioning in a responsive manner. -* -* @class Phaser.FlexGrid -* @constructor -* @param {Phaser.ScaleManager} manager - The ScaleManager. -* @param {number} width - The width of the game. -* @param {number} height - The height of the game. -*/ -Phaser.FlexGrid = function (manager, width, height) { - - /** - * @property {Phaser.Game} game - A reference to the currently running Game. - */ - this.game = manager.game; - - /** - * @property {Phaser.ScaleManager} manager - A reference to the ScaleManager. - */ - this.manager = manager; - - // The perfect dimensions on which everything else is based - this.width = width; - this.height = height; - - this.boundsCustom = new Phaser.Rectangle(0, 0, width, height); - this.boundsFluid = new Phaser.Rectangle(0, 0, width, height); - this.boundsFull = new Phaser.Rectangle(0, 0, width, height); - this.boundsNone = new Phaser.Rectangle(0, 0, width, height); - - /** - * @property {Phaser.Point} position - - * @readonly - */ - this.positionCustom = new Phaser.Point(0, 0); - this.positionFluid = new Phaser.Point(0, 0); - this.positionFull = new Phaser.Point(0, 0); - this.positionNone = new Phaser.Point(0, 0); - - /** - * @property {Phaser.Point} scaleFactor - The scale factor based on the game dimensions vs. the scaled dimensions. - * @readonly - */ - this.scaleCustom = new Phaser.Point(1, 1); - this.scaleFluid = new Phaser.Point(1, 1); - this.scaleFluidInversed = new Phaser.Point(1, 1); - this.scaleFull = new Phaser.Point(1, 1); - this.scaleNone = new Phaser.Point(1, 1); - - this.customWidth = 0; - this.customHeight = 0; - this.customOffsetX = 0; - this.customOffsetY = 0; - - this.ratioH = width / height; - this.ratioV = height / width; - - this.multiplier = 0; - - this.layers = []; - -}; - -Phaser.FlexGrid.prototype = { - - /** - * Sets the core game size. This resets the w/h parameters and bounds. - * - * @method Phaser.FlexGrid#setSize - * @param {number} width - The new dimensions. - * @param {number} height - The new dimensions. - */ - setSize: function (width, height) { - - // These are locked and don't change until setSize is called again - this.width = width; - this.height = height; - - this.ratioH = width / height; - this.ratioV = height / width; - - this.scaleNone = new Phaser.Point(1, 1); - - this.boundsNone.width = this.width; - this.boundsNone.height = this.height; - - this.refresh(); - - }, - - // Need ability to create your own layers with custom scaling, etc. - - /** - * A custom layer is centered on the game and maintains its aspect ratio as it scales up and down. - * - * @method Phaser.FlexGrid#createCustomLayer - * @param {number} width - Width of this layer in pixels. - * @param {number} height - Height of this layer in pixels. - * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createCustomLayer: function (width, height, children, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - this.customWidth = width; - this.customHeight = height; - - this.boundsCustom.width = width; - this.boundsCustom.height = height; - - var layer = new Phaser.FlexLayer(this, this.positionCustom, this.boundsCustom, this.scaleCustom); - - if (addToWorld) - { - this.game.world.add(layer); - } - - this.layers.push(layer); - - if (typeof children !== 'undefined' && typeof children !== null) - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A fluid layer is centered on the game and maintains its aspect ratio as it scales up and down. - * - * @method Phaser.FlexGrid#createFluidLayer - * @param {array} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFluidLayer: function (children, addToWorld) { - - if (addToWorld === undefined) { addToWorld = true; } - - var layer = new Phaser.FlexLayer(this, this.positionFluid, this.boundsFluid, this.scaleFluid); - - if (addToWorld) - { - this.game.world.add(layer); - } - - this.layers.push(layer); - - if (typeof children !== 'undefined' && typeof children !== null) - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A full layer is placed at 0,0 and extends to the full size of the game. Children are scaled according to the fluid ratios. - * - * @method Phaser.FlexGrid#createFullLayer - * @param {array} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFullLayer: function (children) { - - var layer = new Phaser.FlexLayer(this, this.positionFull, this.boundsFull, this.scaleFluid); - - this.game.world.add(layer); - - this.layers.push(layer); - - if (typeof children !== 'undefined') - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * A fixed layer is centered on the game and is the size of the required dimensions and is never scaled. - * - * @method Phaser.FlexGrid#createFixedLayer - * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. - * @return {Phaser.FlexLayer} The Layer object. - */ - createFixedLayer: function (children) { - - var layer = new Phaser.FlexLayer(this, this.positionNone, this.boundsNone, this.scaleNone); - - this.game.world.add(layer); - - this.layers.push(layer); - - if (typeof children !== 'undefined') - { - layer.addMultiple(children); - } - - return layer; - - }, - - /** - * Resets the layer children references - * - * @method Phaser.FlexGrid#reset - */ - reset: function () { - - var i = this.layers.length; - - while (i--) - { - if (!this.layers[i].persist) - { - // Remove references to this class - this.layers[i].position = null; - this.layers[i].scale = null; - this.layers.slice(i, 1); - } - } - - }, - - /** - * Called when the game container changes dimensions. - * - * @method Phaser.FlexGrid#onResize - * @param {number} width - The new width of the game container. - * @param {number} height - The new height of the game container. - */ - onResize: function (width, height) { - - this.ratioH = width / height; - this.ratioV = height / width; - - this.refresh(width, height); - - }, - - /** - * Updates all internal vars such as the bounds and scale values. - * - * @method Phaser.FlexGrid#refresh - */ - refresh: function () { - - this.multiplier = Math.min((this.manager.height / this.height), (this.manager.width / this.width)); - - this.boundsFluid.width = Math.round(this.width * this.multiplier); - this.boundsFluid.height = Math.round(this.height * this.multiplier); - - this.scaleFluid.set(this.boundsFluid.width / this.width, this.boundsFluid.height / this.height); - this.scaleFluidInversed.set(this.width / this.boundsFluid.width, this.height / this.boundsFluid.height); - - this.scaleFull.set(this.boundsFull.width / this.width, this.boundsFull.height / this.height); - - this.boundsFull.width = Math.round(this.manager.width * this.scaleFluidInversed.x); - this.boundsFull.height = Math.round(this.manager.height * this.scaleFluidInversed.y); - - this.boundsFluid.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); - this.boundsNone.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); - - this.positionFluid.set(this.boundsFluid.x, this.boundsFluid.y); - this.positionNone.set(this.boundsNone.x, this.boundsNone.y); - - }, - - /** - * Fits a sprites width to the bounds. - * - * @method Phaser.FlexGrid#fitSprite - * @param {Phaser.Sprite} sprite - The Sprite to fit. - */ - fitSprite: function (sprite) { - - this.manager.scaleSprite(sprite); - - sprite.x = this.manager.bounds.centerX; - sprite.y = this.manager.bounds.centerY; - - }, - - /** - * Call in the render function to output the bounds rects. - * - * @method Phaser.FlexGrid#debug - */ - debug: function () { - - // for (var i = 0; i < this.layers.length; i++) - // { - // this.layers[i].debug(); - // } - - // this.game.debug.text(this.boundsFull.width + ' x ' + this.boundsFull.height, this.boundsFull.x + 4, this.boundsFull.y + 16); - // this.game.debug.geom(this.boundsFull, 'rgba(0,0,255,0.9', false); - - this.game.debug.text(this.boundsFluid.width + ' x ' + this.boundsFluid.height, this.boundsFluid.x + 4, this.boundsFluid.y + 16); - this.game.debug.geom(this.boundsFluid, 'rgba(255,0,0,0.9', false); - - // this.game.debug.text(this.boundsNone.width + ' x ' + this.boundsNone.height, this.boundsNone.x + 4, this.boundsNone.y + 16); - // this.game.debug.geom(this.boundsNone, 'rgba(0,255,0,0.9', false); - - // this.game.debug.text(this.boundsCustom.width + ' x ' + this.boundsCustom.height, this.boundsCustom.x + 4, this.boundsCustom.y + 16); - // this.game.debug.geom(this.boundsCustom, 'rgba(255,255,0,0.9', false); - - } - -}; - -Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. -* Please try to avoid using in production games with a long time to build. -* This is also why the documentation is incomplete. -* -* A responsive grid layer. -* -* @class Phaser.FlexLayer -* @extends Phaser.Group -* @constructor -* @param {Phaser.FlexGrid} manager - The FlexGrid that owns this FlexLayer. -* @param {Phaser.Point} position - A reference to the Point object used for positioning. -* @param {Phaser.Rectangle} bounds - A reference to the Rectangle used for the layer bounds. -* @param {Phaser.Point} scale - A reference to the Point object used for layer scaling. -*/ -Phaser.FlexLayer = function (manager, position, bounds, scale) { - - Phaser.Group.call(this, manager.game, null, '__flexLayer' + manager.game.rnd.uuid(), false); - - /** - * @property {Phaser.ScaleManager} scale - A reference to the ScaleManager. - */ - this.manager = manager.manager; - - /** - * @property {Phaser.FlexGrid} grid - A reference to the FlexGrid that owns this layer. - */ - this.grid = manager; - - /** - * Should the FlexLayer remain through a State swap? - * - * @type {boolean} - */ - this.persist = false; - - /** - * @property {Phaser.Point} position - */ - this.position = position; - - /** - * @property {Phaser.Rectangle} bounds - */ - this.bounds = bounds; - - /** - * @property {Phaser.Point} scale - */ - this.scale = scale; - - /** - * @property {Phaser.Point} topLeft - */ - this.topLeft = bounds.topLeft; - - /** - * @property {Phaser.Point} topMiddle - */ - this.topMiddle = new Phaser.Point(bounds.halfWidth, 0); - - /** - * @property {Phaser.Point} topRight - */ - this.topRight = bounds.topRight; - - /** - * @property {Phaser.Point} bottomLeft - */ - this.bottomLeft = bounds.bottomLeft; - - /** - * @property {Phaser.Point} bottomMiddle - */ - this.bottomMiddle = new Phaser.Point(bounds.halfWidth, bounds.bottom); - - /** - * @property {Phaser.Point} bottomRight - */ - this.bottomRight = bounds.bottomRight; - -}; - -Phaser.FlexLayer.prototype = Object.create(Phaser.Group.prototype); -Phaser.FlexLayer.prototype.constructor = Phaser.FlexLayer; - -/** - * Resize. - * - * @method Phaser.FlexLayer#resize - */ -Phaser.FlexLayer.prototype.resize = function () { -}; - -/** - * Debug. - * - * @method Phaser.FlexLayer#debug - */ -Phaser.FlexLayer.prototype.debug = function () { - - this.game.debug.text(this.bounds.width + ' x ' + this.bounds.height, this.bounds.x + 4, this.bounds.y + 16); - this.game.debug.geom(this.bounds, 'rgba(0,0,255,0.9', false); - - this.game.debug.geom(this.topLeft, 'rgba(255,255,255,0.9'); - this.game.debug.geom(this.topMiddle, 'rgba(255,255,255,0.9'); - this.game.debug.geom(this.topRight, 'rgba(255,255,255,0.9'); - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* @classdesc -* The ScaleManager object handles the the scaling, resizing, and alignment of the -* Game size and the game Display canvas. -* -* The Game size is the logical size of the game; the Display canvas has size as an HTML element. -* -* The calculations of these are heavily influenced by the bounding Parent size which is the computed -* dimensions of the Display canvas's Parent container/element - the _effective CSS rules of the -* canvas's Parent element play an important role_ in the operation of the ScaleManager. -* -* The Display canvas - or Game size, depending {@link #scaleMode} - is updated to best utilize the Parent size. -* When in Fullscreen mode or with {@link #parentIsWindow} the Parent size is that of the visual viewport (see {@link Phaser.ScaleManager#getParentBounds getParentBounds}). -* -* Parent and Display canvas containment guidelines: -* -* - Style the Parent element (of the game canvas) to control the Parent size and -* thus the Display canvas's size and layout. -* -* - The Parent element's CSS styles should _effectively_ apply maximum (and minimum) bounding behavior. -* -* - The Parent element should _not_ apply a padding as this is not accounted for. -* If a padding is required apply it to the Parent's parent or apply a margin to the Parent. -* If you need to add a border, margin or any other CSS around your game container, then use a parent element and -* apply the CSS to this instead, otherwise you'll be constantly resizing the shape of the game container. -* -* - The Display canvas layout CSS styles (i.e. margins, size) should not be altered/specified as -* they may be updated by the ScaleManager. -* -* @description -* Create a new ScaleManager object - this is done automatically by {@link Phaser.Game} -* -* The `width` and `height` constructor parameters can either be a number which represents pixels or a string that represents a percentage: e.g. `800` (for 800 pixels) or `"80%"` for 80%. -* -* @class -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number|string} width - The width of the game. See above. -* @param {number|string} height - The height of the game. See above. -*/ -Phaser.ScaleManager = function (game, width, height) { - - /** - * A reference to the currently running game. - * @property {Phaser.Game} game - * @protected - * @readonly - */ - this.game = game; - - /** - * Provides access to some cross-device DOM functions. - * @property {Phaser.DOM} dom - * @protected - * @readonly - */ - this.dom = Phaser.DOM; - - /** - * _EXPERIMENTAL:_ A responsive grid on which you can align game objects. - * @property {Phaser.FlexGrid} grid - * @public - */ - this.grid = null; - - /** - * Target width (in pixels) of the Display canvas. - * @property {number} width - * @readonly - */ - this.width = 0; - - /** - * Target height (in pixels) of the Display canvas. - * @property {number} height - * @readonly - */ - this.height = 0; - - /** - * Minimum width the canvas should be scaled to (in pixels). - * Change with {@link #setMinMax}. - * @property {?number} minWidth - * @readonly - * @protected - */ - this.minWidth = null; - - /** - * Maximum width the canvas should be scaled to (in pixels). - * If null it will scale to whatever width the browser can handle. - * Change with {@link #setMinMax}. - * @property {?number} maxWidth - * @readonly - * @protected - */ - this.maxWidth = null; - - /** - * Minimum height the canvas should be scaled to (in pixels). - * Change with {@link #setMinMax}. - * @property {?number} minHeight - * @readonly - * @protected - */ - this.minHeight = null; - - /** - * Maximum height the canvas should be scaled to (in pixels). - * If null it will scale to whatever height the browser can handle. - * Change with {@link #setMinMax}. - * @property {?number} maxHeight - * @readonly - * @protected - */ - this.maxHeight = null; - - /** - * The offset coordinates of the Display canvas from the top-left of the browser window. - * The is used internally by Phaser.Pointer (for Input) and possibly other types. - * @property {Phaser.Point} offset - * @readonly - * @protected - */ - this.offset = new Phaser.Point(); - - /** - * If true, the game should only run in a landscape orientation. - * Change with {@link #forceOrientation}. - * @property {boolean} forceLandscape - * @readonly - * @default - * @protected - */ - this.forceLandscape = false; - - /** - * If true, the game should only run in a portrait - * Change with {@link #forceOrientation}. - * @property {boolean} forcePortrait - * @readonly - * @default - * @protected - */ - this.forcePortrait = false; - - /** - * True if {@link #forceLandscape} or {@link #forcePortrait} are set and do not agree with the browser orientation. - * - * This value is not updated immediately. - * - * @property {boolean} incorrectOrientation - * @readonly - * @protected - */ - this.incorrectOrientation = false; - - /** - * See {@link #pageAlignHorizontally}. - * @property {boolean} _pageAlignHorizontally - * @private - */ - this._pageAlignHorizontally = false; - - /** - * See {@link #pageAlignVertically}. - * @property {boolean} _pageAlignVertically - * @private - */ - this._pageAlignVertically = false; - - /** - * This signal is dispatched when the orientation changes _or_ the validity of the current orientation changes. - * - * The signal is supplied with the following arguments: - * - `scale` - the ScaleManager object - * - `prevOrientation`, a string - The previous orientation as per {@link Phaser.ScaleManager#screenOrientation screenOrientation}. - * - `wasIncorrect`, a boolean - True if the previous orientation was last determined to be incorrect. - * - * Access the current orientation and validity with `scale.screenOrientation` and `scale.incorrectOrientation`. - * Thus the following tests can be done: - * - * // The orientation itself changed: - * scale.screenOrientation !== prevOrientation - * // The orientation just became incorrect: - * scale.incorrectOrientation && !wasIncorrect - * - * It is possible that this signal is triggered after {@link #forceOrientation} so the orientation - * correctness changes even if the orientation itself does not change. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} onOrientationChange - * @public - */ - this.onOrientationChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser enters an incorrect orientation, as defined by {@link #forceOrientation}. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} enterIncorrectOrientation - * @public - */ - this.enterIncorrectOrientation = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser leaves an incorrect orientation, as defined by {@link #forceOrientation}. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} leaveIncorrectOrientation - * @public - */ - this.leaveIncorrectOrientation = new Phaser.Signal(); - - /** - * If specified, this is the DOM element on which the Fullscreen API enter request will be invoked. - * The target element must have the correct CSS styling and contain the Display canvas. - * - * The elements style will be modified (ie. the width and height might be set to 100%) - * but it will not be added to, removed from, or repositioned within the DOM. - * An attempt is made to restore relevant style changes when fullscreen mode is left. - * - * For pre-2.2.0 behavior set `game.scale.fullScreenTarget = game.canvas`. - * - * @property {?DOMElement} fullScreenTarget - * @default - */ - this.fullScreenTarget = null; - - /** - * The fullscreen target, as created by {@link #createFullScreenTarget}. - * This is not set if {@link #fullScreenTarget} is used and is cleared when fullscreen mode ends. - * @property {?DOMElement} _createdFullScreenTarget - * @private - */ - this._createdFullScreenTarget = null; - - /** - * This signal is dispatched when fullscreen mode is ready to be initialized but - * before the fullscreen request. - * - * The signal is passed two arguments: `scale` (the ScaleManager), and an object in the form `{targetElement: DOMElement}`. - * - * The `targetElement` is the {@link #fullScreenTarget} element, - * if such is assigned, or a new element created by {@link #createFullScreenTarget}. - * - * Custom CSS styling or resets can be applied to `targetElement` as required. - * - * If `targetElement` is _not_ the same element as {@link #fullScreenTarget}: - * - After initialization the Display canvas is moved onto the `targetElement` for - * the duration of the fullscreen mode, and restored to it's original DOM location when fullscreen is exited. - * - The `targetElement` is moved/re-parented within the DOM and may have its CSS styles updated. - * - * The behavior of a pre-assigned target element is covered in {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget}. - * - * @property {Phaser.Signal} onFullScreenInit - * @public - */ - this.onFullScreenInit = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser enters or leaves fullscreen mode, if supported. - * - * The signal is supplied with a single argument: `scale` (the ScaleManager). Use `scale.isFullScreen` to determine - * if currently running in Fullscreen mode. - * - * @property {Phaser.Signal} onFullScreenChange - * @public - */ - this.onFullScreenChange = new Phaser.Signal(); - - /** - * This signal is dispatched when the browser fails to enter fullscreen mode; - * or if the device does not support fullscreen mode and `startFullScreen` is invoked. - * - * The signal is supplied with a single argument: `scale` (the ScaleManager). - * - * @property {Phaser.Signal} onFullScreenError - * @public - */ - this.onFullScreenError = new Phaser.Signal(); - - /** - * The _last known_ orientation of the screen, as defined in the Window Screen Web API. - * See {@link Phaser.DOM.getScreenOrientation} for possible values. - * - * @property {string} screenOrientation - * @readonly - * @public - */ - this.screenOrientation = this.dom.getScreenOrientation(); - - /** - * The _current_ scale factor based on the game dimensions vs. the scaled dimensions. - * @property {Phaser.Point} scaleFactor - * @readonly - */ - this.scaleFactor = new Phaser.Point(1, 1); - - /** - * The _current_ inversed scale factor. The displayed dimensions divided by the game dimensions. - * @property {Phaser.Point} scaleFactorInversed - * @readonly - * @protected - */ - this.scaleFactorInversed = new Phaser.Point(1, 1); - - /** - * The Display canvas is aligned by adjusting the margins; the last margins are stored here. - * - * @property {Bounds-like} margin - * @readonly - * @protected - */ - this.margin = {left: 0, top: 0, right: 0, bottom: 0, x: 0, y: 0}; - - /** - * The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height. - * @property {Phaser.Rectangle} bounds - * @readonly - */ - this.bounds = new Phaser.Rectangle(); - - /** - * The aspect ratio of the scaled Display canvas. - * @property {number} aspectRatio - * @readonly - */ - this.aspectRatio = 0; - - /** - * The aspect ratio of the original game dimensions. - * @property {number} sourceAspectRatio - * @readonly - */ - this.sourceAspectRatio = 0; - - /** - * The native browser events from Fullscreen API changes. - * @property {any} event - * @readonly - * @private - */ - this.event = null; - - /** - * The edges on which to constrain the game Display/canvas in _addition_ to the restrictions of the parent container. - * - * The properties are strings and can be '', 'visual', 'layout', or 'layout-soft'. - * - If 'visual', the edge will be constrained to the Window / displayed screen area - * - If 'layout', the edge will be constrained to the CSS Layout bounds - * - An invalid value is treated as 'visual' - * - * @member - * @property {string} bottom - * @property {string} right - * @default - */ - this.windowConstraints = { - right: 'layout', - bottom: '' - }; - - /** - * Various compatibility settings. - * A value of "(auto)" indicates the setting is configured based on device and runtime information. - * - * A {@link #refresh} may need to be performed after making changes. - * - * @protected - * - * @property {boolean} [supportsFullscreen=(auto)] - True only if fullscreen support will be used. (Changing to fullscreen still might not work.) - * - * @property {boolean} [orientationFallback=(auto)] - See {@link Phaser.DOM.getScreenOrientation}. - * - * @property {boolean} [noMargins=false] - If true then the Display canvas's margins will not be updated anymore: existing margins must be manually cleared. Disabling margins prevents automatic canvas alignment/centering, possibly in fullscreen. - * - * @property {?Phaser.Point} [scrollTo=(auto)] - If specified the window will be scrolled to this position on every refresh. - * - * @property {boolean} [forceMinimumDocumentHeight=false] - If enabled the document elements minimum height is explicitly set on updates. - * The height set varies by device and may either be the height of the window or the viewport. - * - * @property {boolean} [canExpandParent=true] - If enabled then SHOW_ALL and USER_SCALE modes can try and expand the parent element. It may be necessary for the parent element to impose CSS width/height restrictions. - * - * @property {string} [clickTrampoline=(auto)] - On certain browsers (eg. IE) FullScreen events need to be triggered via 'click' events. - * A value of 'when-not-mouse' uses a click trampoline when a pointer that is not the primary mouse is used. - * Any other string value (including the empty string) prevents using click trampolines. - * For more details on click trampolines see {@link Phaser.Pointer#addClickTrampoline}. - */ - this.compatibility = { - supportsFullScreen: false, - orientationFallback: null, - noMargins: false, - scrollTo: null, - forceMinimumDocumentHeight: false, - canExpandParent: true, - clickTrampoline: '' - }; - - /** - * Scale mode to be used when not in fullscreen. - * @property {number} _scaleMode - * @private - */ - this._scaleMode = Phaser.ScaleManager.NO_SCALE; - - /* - * Scale mode to be used in fullscreen. - * @property {number} _fullScreenScaleMode - * @private - */ - this._fullScreenScaleMode = Phaser.ScaleManager.NO_SCALE; - - /** - * If the parent container of the Game canvas is the browser window itself (i.e. document.body), - * rather than another div, this should set to `true`. - * - * The {@link #parentNode} property is generally ignored while this is in effect. - * - * @property {boolean} parentIsWindow - */ - this.parentIsWindow = false; - - /** - * The _original_ DOM element for the parent of the Display canvas. - * This may be different in fullscreen - see {@link #createFullScreenTarget}. - * - * This should only be changed after moving the Game canvas to a different DOM parent. - * - * @property {?DOMElement} parentNode - */ - this.parentNode = null; - - /** - * The scale of the game in relation to its parent container. - * @property {Phaser.Point} parentScaleFactor - * @readonly - */ - this.parentScaleFactor = new Phaser.Point(1, 1); - - /** - * The maximum time (in ms) between dimension update checks for the Canvas's parent element (or window). - * Update checks normally happen quicker in response to other events. - * - * @property {integer} trackParentInterval - * @default - * @protected - * @see {@link Phaser.ScaleManager#refresh refresh} - */ - this.trackParentInterval = 2000; - - /** - * This signal is dispatched when the size of the Display canvas changes _or_ the size of the Game changes. - * When invoked this is done _after_ the Canvas size/position have been updated. - * - * This signal is _only_ called when a change occurs and a reflow may be required. - * For example, if the canvas does not change sizes because of CSS settings (such as min-width) - * then this signal will _not_ be triggered. - * - * Use this to handle responsive game layout options. - * - * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. - * - * @property {Phaser.Signal} onSizeChange - * @todo Formalize the arguments, if any, supplied to this signal. - */ - this.onSizeChange = new Phaser.Signal(); - - /** - * The callback that will be called each the parent container resizes. - * @property {function} onResize - * @private - */ - this.onResize = null; - - /** - * The context in which the {@link #onResize} callback will be called. - * @property {object} onResizeContext - * @private - */ - this.onResizeContext = null; - - /** - * @property {integer} _pendingScaleMode - Used to retain the scale mode if set from config before Boot. - * @private - */ - this._pendingScaleMode = null; - - /** - * Information saved when fullscreen mode is started. - * @property {?object} _fullScreenRestore - * @private - */ - this._fullScreenRestore = null; - - /** - * The _actual_ game dimensions, as initially set or set by {@link #setGameSize}. - * @property {Phaser.Rectangle} _gameSize - * @private - */ - this._gameSize = new Phaser.Rectangle(); - - /** - * The user-supplied scale factor, used with the USER_SCALE scaling mode. - * @property {Phaser.Point} _userScaleFactor - * @private - */ - this._userScaleFactor = new Phaser.Point(1, 1); - - /** - * The user-supplied scale trim, used with the USER_SCALE scaling mode. - * @property {Phaser.Point} _userScaleTrim - * @private - */ - this._userScaleTrim = new Phaser.Point(0, 0); - - /** - * The last time the bounds were checked in `preUpdate`. - * @property {number} _lastUpdate - * @private - */ - this._lastUpdate = 0; - - /** - * Size checks updates are delayed according to the throttle. - * The throttle increases to `trackParentInterval` over time and is used to more - * rapidly detect changes in certain browsers (eg. IE) while providing back-off safety. - * @property {integer} _updateThrottle - * @private - */ - this._updateThrottle = 0; - - /** - * The minimum throttle allowed until it has slowed down sufficiently. - * @property {integer} _updateThrottleReset - * @private - */ - this._updateThrottleReset = 100; - - /** - * The cached result of the parent (possibly window) bounds; used to invalidate sizing. - * @property {Phaser.Rectangle} _parentBounds - * @private - */ - this._parentBounds = new Phaser.Rectangle(); - - /** - * Temporary bounds used for internal work to cut down on new objects created. - * @property {Phaser.Rectangle} _parentBounds - * @private - */ - this._tempBounds = new Phaser.Rectangle(); - - /** - * The Canvas size at which the last onSizeChange signal was triggered. - * @property {Phaser.Rectangle} _lastReportedCanvasSize - * @private - */ - this._lastReportedCanvasSize = new Phaser.Rectangle(); - - /** - * The Game size at which the last onSizeChange signal was triggered. - * @property {Phaser.Rectangle} _lastReportedGameSize - * @private - */ - this._lastReportedGameSize = new Phaser.Rectangle(); - - /** - * @property {boolean} _booted - ScaleManager booted state. - * @private - */ - this._booted = false; - - if (game.config) - { - this.parseConfig(game.config); - } - - this.setupScale(width, height); - -}; - -/** -* A scale mode that stretches content to fill all available space - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.EXACT_FIT = 0; - -/** -* A scale mode that prevents any scaling - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.NO_SCALE = 1; - -/** -* A scale mode that shows the entire game while maintaining proportions - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.SHOW_ALL = 2; - -/** -* A scale mode that causes the Game size to change - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.RESIZE = 3; - -/** -* A scale mode that allows a custom scale factor - see {@link Phaser.ScaleManager#scaleMode scaleMode}. -* -* @constant -* @type {integer} -*/ -Phaser.ScaleManager.USER_SCALE = 4; - -Phaser.ScaleManager.prototype = { - - /** - * Start the ScaleManager. - * - * @method Phaser.ScaleManager#boot - * @protected - */ - boot: function () { - - // Configure device-dependent compatibility - - var compat = this.compatibility; - - compat.supportsFullScreen = this.game.device.fullscreen && !this.game.device.cocoonJS; - - // We can't do anything about the status bars in iPads, web apps or desktops - if (!this.game.device.iPad && !this.game.device.webApp && !this.game.device.desktop) - { - if (this.game.device.android && !this.game.device.chrome) - { - compat.scrollTo = new Phaser.Point(0, 1); - } - else - { - compat.scrollTo = new Phaser.Point(0, 0); - } - } - - if (this.game.device.desktop) - { - compat.orientationFallback = 'screen'; - compat.clickTrampoline = 'when-not-mouse'; - } - else - { - compat.orientationFallback = ''; - compat.clickTrampoline = ''; - } - - // Configure event listeners - - var _this = this; - - this._orientationChange = function(event) { - return _this.orientationChange(event); - }; - - this._windowResize = function(event) { - return _this.windowResize(event); - }; - - // This does not appear to be on the standards track - window.addEventListener('orientationchange', this._orientationChange, false); - window.addEventListener('resize', this._windowResize, false); - - if (this.compatibility.supportsFullScreen) - { - this._fullScreenChange = function(event) { - return _this.fullScreenChange(event); - }; - - this._fullScreenError = function(event) { - return _this.fullScreenError(event); - }; - - document.addEventListener('webkitfullscreenchange', this._fullScreenChange, false); - document.addEventListener('mozfullscreenchange', this._fullScreenChange, false); - document.addEventListener('MSFullscreenChange', this._fullScreenChange, false); - document.addEventListener('fullscreenchange', this._fullScreenChange, false); - - document.addEventListener('webkitfullscreenerror', this._fullScreenError, false); - document.addEventListener('mozfullscreenerror', this._fullScreenError, false); - document.addEventListener('MSFullscreenError', this._fullScreenError, false); - document.addEventListener('fullscreenerror', this._fullScreenError, false); - } - - this.game.onResume.add(this._gameResumed, this); - - // Initialize core bounds - - this.dom.getOffset(this.game.canvas, this.offset); - - this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); - - this.setGameSize(this.game.width, this.game.height); - - // Don't use updateOrientationState so events are not fired - this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); - - this.grid = new Phaser.FlexGrid(this, this.width, this.height); - - this._booted = true; - - if (this._pendingScaleMode) - { - this.scaleMode = this._pendingScaleMode; - this._pendingScaleMode = null; - } - - }, - - /** - * Load configuration settings. - * - * @method Phaser.ScaleManager#parseConfig - * @protected - * @param {object} config - The game configuration object. - */ - parseConfig: function (config) { - - if (config['scaleMode']) - { - if (this._booted) - { - this.scaleMode = config['scaleMode']; - } - else - { - this._pendingScaleMode = config['scaleMode']; - } - } - - if (config['fullScreenScaleMode']) - { - this.fullScreenScaleMode = config['fullScreenScaleMode']; - } - - if (config['fullScreenTarget']) - { - this.fullScreenTarget = config['fullScreenTarget']; - } - - }, - - /** - * Calculates and sets the game dimensions based on the given width and height. - * - * This should _not_ be called when in fullscreen mode. - * - * @method Phaser.ScaleManager#setupScale - * @protected - * @param {number|string} width - The width of the game. - * @param {number|string} height - The height of the game. - */ - setupScale: function (width, height) { - - var target; - var rect = new Phaser.Rectangle(); - - if (this.game.parent !== '') - { - if (typeof this.game.parent === 'string') - { - // hopefully an element ID - target = document.getElementById(this.game.parent); - } - else if (this.game.parent && this.game.parent.nodeType === 1) - { - // quick test for a HTMLelement - target = this.game.parent; - } - } - - // Fallback, covers an invalid ID and a non HTMLelement object - if (!target) - { - // Use the full window - this.parentNode = null; - this.parentIsWindow = true; - - rect.width = this.dom.visualBounds.width; - rect.height = this.dom.visualBounds.height; - - this.offset.set(0, 0); - } - else - { - this.parentNode = target; - this.parentIsWindow = false; - - this.getParentBounds(this._parentBounds); - - rect.width = this._parentBounds.width; - rect.height = this._parentBounds.height; - - this.offset.set(this._parentBounds.x, this._parentBounds.y); - } - - var newWidth = 0; - var newHeight = 0; - - if (typeof width === 'number') - { - newWidth = width; - } - else - { - // Percentage based - this.parentScaleFactor.x = parseInt(width, 10) / 100; - newWidth = rect.width * this.parentScaleFactor.x; - } - - if (typeof height === 'number') - { - newHeight = height; - } - else - { - // Percentage based - this.parentScaleFactor.y = parseInt(height, 10) / 100; - newHeight = rect.height * this.parentScaleFactor.y; - } - - this._gameSize.setTo(0, 0, newWidth, newHeight); - - this.updateDimensions(newWidth, newHeight, false); - - }, - - /** - * Invoked when the game is resumed. - * - * @method Phaser.ScaleManager#_gameResumed - * @private - */ - _gameResumed: function () { - - this.queueUpdate(true); - - }, - - /** - * Set the actual Game size. - * Use this instead of directly changing `game.width` or `game.height`. - * - * The actual physical display (Canvas element size) depends on various settings including - * - Scale mode - * - Scaling factor - * - Size of Canvas's parent element or CSS rules such as min-height/max-height; - * - The size of the Window - * - * @method Phaser.ScaleManager#setGameSize - * @public - * @param {integer} width - _Game width_, in pixels. - * @param {integer} height - _Game height_, in pixels. - */ - setGameSize: function (width, height) { - - this._gameSize.setTo(0, 0, width, height); - - if (this.currentScaleMode !== Phaser.ScaleManager.RESIZE) - { - this.updateDimensions(width, height, true); - } - - this.queueUpdate(true); - - }, - - /** - * Set a User scaling factor used in the USER_SCALE scaling mode. - * - * The target canvas size is computed by: - * - * canvas.width = (game.width * hScale) - hTrim - * canvas.height = (game.height * vScale) - vTrim - * - * This method can be used in the {@link Phaser.ScaleManager#setResizeCallback resize callback}. - * - * @method Phaser.ScaleManager#setUserScale - * @param {number} hScale - Horizontal scaling factor. - * @param {numer} vScale - Vertical scaling factor. - * @param {integer} [hTrim=0] - Horizontal trim, applied after scaling. - * @param {integer} [vTrim=0] - Vertical trim, applied after scaling. - */ - setUserScale: function (hScale, vScale, hTrim, vTrim) { - - this._userScaleFactor.setTo(hScale, vScale); - this._userScaleTrim.setTo(hTrim | 0, vTrim | 0); - this.queueUpdate(true); - - }, - - /** - * Sets the callback that will be invoked before sizing calculations. - * - * This is the appropriate place to call {@link #setUserScale} if needing custom dynamic scaling. - * - * The callback is supplied with two arguments `scale` and `parentBounds` where `scale` is the ScaleManager - * and `parentBounds`, a Phaser.Rectangle, is the size of the Parent element. - * - * This callback - * - May be invoked even though the parent container or canvas sizes have not changed - * - Unlike {@link #onSizeChange}, it runs _before_ the canvas is guaranteed to be updated - * - Will be invoked from `preUpdate`, _even when_ the game is paused - * - * See {@link #onSizeChange} for a better way of reacting to layout updates. - * - * @method Phaser.ScaleManager#setResizeCallback - * @public - * @param {function} callback - The callback that will be called each time a window.resize event happens or if set, the parent container resizes. - * @param {object} context - The context in which the callback will be called. - */ - setResizeCallback: function (callback, context) { - - this.onResize = callback; - this.onResizeContext = context; - - }, - - /** - * Signals a resize - IF the canvas or Game size differs from the last signal. - * - * This also triggers updates on {@link #grid} (FlexGrid) and, if in a RESIZE mode, `game.state` (StateManager). - * - * @method Phaser.ScaleManager#signalSizeChange - * @private - */ - signalSizeChange: function () { - - if (!Phaser.Rectangle.sameDimensions(this, this._lastReportedCanvasSize) || - !Phaser.Rectangle.sameDimensions(this.game, this._lastReportedGameSize)) - { - var width = this.width; - var height = this.height; - - this._lastReportedCanvasSize.setTo(0, 0, width, height); - this._lastReportedGameSize.setTo(0, 0, this.game.width, this.game.height); - - this.grid.onResize(width, height); - - this.onSizeChange.dispatch(this, width, height); - - // Per StateManager#onResizeCallback, it only occurs when in RESIZE mode. - if (this.currentScaleMode === Phaser.ScaleManager.RESIZE) - { - this.game.state.resize(width, height); - this.game.load.resize(width, height); - } - } - - }, - - /** - * Set the min and max dimensions for the Display canvas. - * - * _Note:_ The min/max dimensions are only applied in some cases - * - When the device is not in an incorrect orientation; or - * - The scale mode is EXACT_FIT when not in fullscreen - * - * @method Phaser.ScaleManager#setMinMax - * @public - * @param {number} minWidth - The minimum width the game is allowed to scale down to. - * @param {number} minHeight - The minimum height the game is allowed to scale down to. - * @param {number} [maxWidth] - The maximum width the game is allowed to scale up to; only changed if specified. - * @param {number} [maxHeight] - The maximum height the game is allowed to scale up to; only changed if specified. - * @todo These values are only sometimes honored. - */ - setMinMax: function (minWidth, minHeight, maxWidth, maxHeight) { - - this.minWidth = minWidth; - this.minHeight = minHeight; - - if (typeof maxWidth !== 'undefined') - { - this.maxWidth = maxWidth; - } - - if (typeof maxHeight !== 'undefined') - { - this.maxHeight = maxHeight; - } - - }, - - /** - * The ScaleManager.preUpdate is called automatically by the core Game loop. - * - * @method Phaser.ScaleManager#preUpdate - * @protected - */ - preUpdate: function () { - - if (this.game.time.time < (this._lastUpdate + this._updateThrottle)) - { - return; - } - - var prevThrottle = this._updateThrottle; - this._updateThrottleReset = prevThrottle >= 400 ? 0 : 100; - - this.dom.getOffset(this.game.canvas, this.offset); - - var prevWidth = this._parentBounds.width; - var prevHeight = this._parentBounds.height; - var bounds = this.getParentBounds(this._parentBounds); - - var boundsChanged = bounds.width !== prevWidth || bounds.height !== prevHeight; - - // Always invalidate on a newly detected orientation change - var orientationChanged = this.updateOrientationState(); - - if (boundsChanged || orientationChanged) - { - if (this.onResize) - { - this.onResize.call(this.onResizeContext, this, bounds); - } - - this.updateLayout(); - - this.signalSizeChange(); - } - - // Next throttle, eg. 25, 50, 100, 200.. - var throttle = this._updateThrottle * 2; - - // Don't let an update be too eager about resetting the throttle. - if (this._updateThrottle < prevThrottle) - { - throttle = Math.min(prevThrottle, this._updateThrottleReset); - } - - this._updateThrottle = Phaser.Math.clamp(throttle, 25, this.trackParentInterval); - this._lastUpdate = this.game.time.time; - - }, - - /** - * Update method while paused. - * - * @method Phaser.ScaleManager#pauseUpdate - * @private - */ - pauseUpdate: function () { - - this.preUpdate(); - - // Updates at slowest. - this._updateThrottle = this.trackParentInterval; - - }, - - /** - * Update the dimensions taking the parent scaling factor into account. - * - * @method Phaser.ScaleManager#updateDimensions - * @private - * @param {number} width - The new width of the parent container. - * @param {number} height - The new height of the parent container. - * @param {boolean} resize - True if the renderer should be resized, otherwise false to just update the internal vars. - */ - updateDimensions: function (width, height, resize) { - - this.width = width * this.parentScaleFactor.x; - this.height = height * this.parentScaleFactor.y; - - this.game.width = this.width; - this.game.height = this.height; - - this.sourceAspectRatio = this.width / this.height; - this.updateScalingAndBounds(); - - if (resize) - { - // Resize the renderer (which in turn resizes the Display canvas!) - this.game.renderer.resize(this.width, this.height); - - // The Camera can never be smaller than the Game size - this.game.camera.setSize(this.width, this.height); - - // This should only happen if the world is smaller than the new canvas size - this.game.world.resize(this.width, this.height); - } - - }, - - /** - * Update relevant scaling values based on the ScaleManager dimension and game dimensions, - * which should already be set. This does not change {@link #sourceAspectRatio}. - * - * @method Phaser.ScaleManager#updateScalingAndBounds - * @private - */ - updateScalingAndBounds: function () { - - this.scaleFactor.x = this.game.width / this.width; - this.scaleFactor.y = this.game.height / this.height; - - this.scaleFactorInversed.x = this.width / this.game.width; - this.scaleFactorInversed.y = this.height / this.game.height; - - this.aspectRatio = this.width / this.height; - - // This can be invoked in boot pre-canvas - if (this.game.canvas) - { - this.dom.getOffset(this.game.canvas, this.offset); - } - - this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); - - // Can be invoked in boot pre-input - if (this.game.input && this.game.input.scale) - { - this.game.input.scale.setTo(this.scaleFactor.x, this.scaleFactor.y); - } - - }, - - /** - * Force the game to run in only one orientation. - * - * This enables generation of incorrect orientation signals and affects resizing but does not otherwise rotate or lock the orientation. - * - * Orientation checks are performed via the Screen Orientation API, if available in browser. This means it will check your monitor - * orientation on desktop, or your device orientation on mobile, rather than comparing actual game dimensions. If you need to check the - * viewport dimensions instead and bypass the Screen Orientation API then set: `ScaleManager.compatibility.orientationFallback = 'viewport'` - * - * @method Phaser.ScaleManager#forceOrientation - * @public - * @param {boolean} forceLandscape - true if the game should run in landscape mode only. - * @param {boolean} [forcePortrait=false] - true if the game should run in portrait mode only. - */ - forceOrientation: function (forceLandscape, forcePortrait) { - - if (forcePortrait === undefined) { forcePortrait = false; } - - this.forceLandscape = forceLandscape; - this.forcePortrait = forcePortrait; - - this.queueUpdate(true); - - }, - - /** - * Classify the orientation, per `getScreenOrientation`. - * - * @method Phaser.ScaleManager#classifyOrientation - * @private - * @param {string} orientation - The orientation string, e.g. 'portrait-primary'. - * @return {?string} The classified orientation: 'portrait', 'landscape`, or null. - */ - classifyOrientation: function (orientation) { - - if (orientation === 'portrait-primary' || orientation === 'portrait-secondary') - { - return 'portrait'; - } - else if (orientation === 'landscape-primary' || orientation === 'landscape-secondary') - { - return 'landscape'; - } - else - { - return null; - } - - }, - - /** - * Updates the current orientation and dispatches orientation change events. - * - * @method Phaser.ScaleManager#updateOrientationState - * @private - * @return {boolean} True if the orientation state changed which means a forced update is likely required. - */ - updateOrientationState: function () { - - var previousOrientation = this.screenOrientation; - var previouslyIncorrect = this.incorrectOrientation; - - this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); - - this.incorrectOrientation = (this.forceLandscape && !this.isLandscape) || - (this.forcePortrait && !this.isPortrait); - - var changed = previousOrientation !== this.screenOrientation; - var correctnessChanged = previouslyIncorrect !== this.incorrectOrientation; - - if (correctnessChanged) - { - if (this.incorrectOrientation) - { - this.enterIncorrectOrientation.dispatch(); - } - else - { - this.leaveIncorrectOrientation.dispatch(); - } - } - - if (changed || correctnessChanged) - { - this.onOrientationChange.dispatch(this, previousOrientation, previouslyIncorrect); - } - - return changed || correctnessChanged; - - }, - - /** - * window.orientationchange event handler. - * - * @method Phaser.ScaleManager#orientationChange - * @private - * @param {Event} event - The orientationchange event data. - */ - orientationChange: function (event) { - - this.event = event; - - this.queueUpdate(true); - - }, - - /** - * window.resize event handler. - * - * @method Phaser.ScaleManager#windowResize - * @private - * @param {Event} event - The resize event data. - */ - windowResize: function (event) { - - this.event = event; - - this.queueUpdate(true); - - }, - - /** - * Scroll to the top - in some environments. See `compatibility.scrollTo`. - * - * @method Phaser.ScaleManager#scrollTop - * @private - */ - scrollTop: function () { - - var scrollTo = this.compatibility.scrollTo; - - if (scrollTo) - { - window.scrollTo(scrollTo.x, scrollTo.y); - } - - }, - - /** - * The "refresh" methods informs the ScaleManager that a layout refresh is required. - * - * The ScaleManager automatically queues a layout refresh (eg. updates the Game size or Display canvas layout) - * when the browser is resized, the orientation changes, or when there is a detected change - * of the Parent size. Refreshing is also done automatically when public properties, - * such as {@link #scaleMode}, are updated or state-changing methods are invoked. - * - * The "refresh" method _may_ need to be used in a few (rare) situtations when - * - * - a device change event is not correctly detected; or - * - the Parent size changes (and an immediate reflow is desired); or - * - the ScaleManager state is updated by non-standard means; or - * - certain {@link #compatibility} properties are manually changed. - * - * The queued layout refresh is not immediate but will run promptly in an upcoming `preRender`. - * - * @method Phaser.ScaleManager#refresh - * @public - */ - refresh: function () { - - this.scrollTop(); - this.queueUpdate(true); - - }, - - /** - * Updates the game / canvas position and size. - * - * @method Phaser.ScaleManager#updateLayout - * @private - */ - updateLayout: function () { - - var scaleMode = this.currentScaleMode; - - if (scaleMode === Phaser.ScaleManager.RESIZE) - { - this.reflowGame(); - return; - } - - this.scrollTop(); - - if (this.compatibility.forceMinimumDocumentHeight) - { - // (This came from older code, by why is it here?) - // Set minimum height of content to new window height - document.documentElement.style.minHeight = window.innerHeight + 'px'; - } - - if (this.incorrectOrientation) - { - this.setMaximum(); - } - else - { - if (scaleMode === Phaser.ScaleManager.EXACT_FIT) - { - this.setExactFit(); - } - else if (scaleMode === Phaser.ScaleManager.SHOW_ALL) - { - if (!this.isFullScreen && this.boundingParent && - this.compatibility.canExpandParent) - { - // Try to expand parent out, but choosing maximizing dimensions. - // Then select minimize dimensions which should then honor parent - // maximum bound applications. - this.setShowAll(true); - this.resetCanvas(); - this.setShowAll(); - } - else - { - this.setShowAll(); - } - } - else if (scaleMode === Phaser.ScaleManager.NO_SCALE) - { - this.width = this.game.width; - this.height = this.game.height; - } - else if (scaleMode === Phaser.ScaleManager.USER_SCALE) - { - this.width = (this.game.width * this._userScaleFactor.x) - this._userScaleTrim.x; - this.height = (this.game.height * this._userScaleFactor.y) - this._userScaleTrim.y; - } - } - - if (!this.compatibility.canExpandParent && - (scaleMode === Phaser.ScaleManager.SHOW_ALL || scaleMode === Phaser.ScaleManager.USER_SCALE)) - { - var bounds = this.getParentBounds(this._tempBounds); - this.width = Math.min(this.width, bounds.width); - this.height = Math.min(this.height, bounds.height); - } - - // Always truncate / force to integer - this.width = this.width | 0; - this.height = this.height | 0; - - this.reflowCanvas(); - - }, - - /** - * Returns the computed Parent size/bounds that the Display canvas is allowed/expected to fill. - * - * If in fullscreen mode or without parent (see {@link #parentIsWindow}), - * this will be the bounds of the visual viewport itself. - * - * This function takes the {@link #windowConstraints} into consideration - if the parent is partially outside - * the viewport then this function may return a smaller than expected size. - * - * Values are rounded to the nearest pixel. - * - * @method Phaser.ScaleManager#getParentBounds - * @protected - * @param {Phaser.Rectangle} [target=(new Rectangle)] - The rectangle to update; a new one is created as needed. - * @return {Phaser.Rectangle} The established parent bounds. - */ - getParentBounds: function (target) { - - var bounds = target || new Phaser.Rectangle(); - var parentNode = this.boundingParent; - var visualBounds = this.dom.visualBounds; - var layoutBounds = this.dom.layoutBounds; - - if (!parentNode) - { - bounds.setTo(0, 0, visualBounds.width, visualBounds.height); - } - else - { - // Ref. http://msdn.microsoft.com/en-us/library/hh781509(v=vs.85).aspx for getBoundingClientRect - var clientRect = parentNode.getBoundingClientRect(); - - bounds.setTo(clientRect.left, clientRect.top, clientRect.width, clientRect.height); - - var wc = this.windowConstraints; - - if (wc.right) - { - var windowBounds = wc.right === 'layout' ? layoutBounds : visualBounds; - bounds.right = Math.min(bounds.right, windowBounds.width); - } - - if (wc.bottom) - { - var windowBounds = wc.bottom === 'layout' ? layoutBounds : visualBounds; - bounds.bottom = Math.min(bounds.bottom, windowBounds.height); - } - } - - bounds.setTo( - Math.round(bounds.x), Math.round(bounds.y), - Math.round(bounds.width), Math.round(bounds.height)); - - return bounds; - - }, - - /** - * Update the canvas position/margins - for alignment within the parent container. - * - * The canvas margins _must_ be reset/cleared prior to invoking this. - * - * @method Phaser.ScaleManager#alignCanvas - * @private - * @param {boolean} horizontal - Align horizontally? - * @param {boolean} vertical - Align vertically? - */ - alignCanvas: function (horizontal, vertical) { - - var parentBounds = this.getParentBounds(this._tempBounds); - var canvas = this.game.canvas; - var margin = this.margin; - - if (horizontal) - { - margin.left = margin.right = 0; - - var canvasBounds = canvas.getBoundingClientRect(); - - if (this.width < parentBounds.width && !this.incorrectOrientation) - { - var currentEdge = canvasBounds.left - parentBounds.x; - var targetEdge = (parentBounds.width / 2) - (this.width / 2); - - targetEdge = Math.max(targetEdge, 0); - - var offset = targetEdge - currentEdge; - - margin.left = Math.round(offset); - } - - canvas.style.marginLeft = margin.left + 'px'; - - if (margin.left !== 0) - { - margin.right = -(parentBounds.width - canvasBounds.width - margin.left); - canvas.style.marginRight = margin.right + 'px'; - } - } - - if (vertical) - { - margin.top = margin.bottom = 0; - - var canvasBounds = canvas.getBoundingClientRect(); - - if (this.height < parentBounds.height && !this.incorrectOrientation) - { - var currentEdge = canvasBounds.top - parentBounds.y; - var targetEdge = (parentBounds.height / 2) - (this.height / 2); - - targetEdge = Math.max(targetEdge, 0); - - var offset = targetEdge - currentEdge; - margin.top = Math.round(offset); - } - - canvas.style.marginTop = margin.top + 'px'; - - if (margin.top !== 0) - { - margin.bottom = -(parentBounds.height - canvasBounds.height - margin.top); - canvas.style.marginBottom = margin.bottom + 'px'; - } - } - - // Silly backwards compatibility.. - margin.x = margin.left; - margin.y = margin.top; - - }, - - /** - * Updates the Game state / size. - * - * The canvas margins may always be adjusted, even if alignment is not in effect. - * - * @method Phaser.ScaleManager#reflowGame - * @private - */ - reflowGame: function () { - - this.resetCanvas('', ''); - - var bounds = this.getParentBounds(this._tempBounds); - this.updateDimensions(bounds.width, bounds.height, true); - - }, - - /** - * Updates the Display canvas size. - * - * The canvas margins may always be adjusted, even alignment is not in effect. - * - * @method Phaser.ScaleManager#reflowCanvas - * @private - */ - reflowCanvas: function () { - - if (!this.incorrectOrientation) - { - this.width = Phaser.Math.clamp(this.width, this.minWidth || 0, this.maxWidth || this.width); - this.height = Phaser.Math.clamp(this.height, this.minHeight || 0, this.maxHeight || this.height); - } - - this.resetCanvas(); - - if (!this.compatibility.noMargins) - { - if (this.isFullScreen && this._createdFullScreenTarget) - { - this.alignCanvas(true, true); - } - else - { - this.alignCanvas(this.pageAlignHorizontally, this.pageAlignVertically); - } - } - - this.updateScalingAndBounds(); - - }, - - /** - * "Reset" the Display canvas and set the specified width/height. - * - * @method Phaser.ScaleManager#resetCanvas - * @private - * @param {string} [cssWidth=(current width)] - The css width to set. - * @param {string} [cssHeight=(current height)] - The css height to set. - */ - resetCanvas: function (cssWidth, cssHeight) { - - if (cssWidth === undefined) { cssWidth = this.width + 'px'; } - if (cssHeight === undefined) { cssHeight = this.height + 'px'; } - - var canvas = this.game.canvas; - - if (!this.compatibility.noMargins) - { - canvas.style.marginLeft = ''; - canvas.style.marginTop = ''; - canvas.style.marginRight = ''; - canvas.style.marginBottom = ''; - } - - canvas.style.width = cssWidth; - canvas.style.height = cssHeight; - - }, - - /** - * Queues/marks a size/bounds check as needing to occur (from `preUpdate`). - * - * @method Phaser.ScaleManager#queueUpdate - * @private - * @param {boolean} force - If true resets the parent bounds to ensure the check is dirty. - */ - queueUpdate: function (force) { - - if (force) - { - this._parentBounds.width = 0; - this._parentBounds.height = 0; - } - - this._updateThrottle = this._updateThrottleReset; - - }, - - /** - * Reset internal data/state. - * - * @method Phaser.ScaleManager#reset - * @private - */ - reset: function (clearWorld) { - - if (clearWorld) - { - this.grid.reset(); - } - - }, - - /** - * Updates the width/height to that of the window. - * - * @method Phaser.ScaleManager#setMaximum - * @private - */ - setMaximum: function () { - - this.width = this.dom.visualBounds.width; - this.height = this.dom.visualBounds.height; - - }, - - /** - * Updates the width/height such that the game is scaled proportionally. - * - * @method Phaser.ScaleManager#setShowAll - * @private - * @param {boolean} expanding - If true then the maximizing dimension is chosen. - */ - setShowAll: function (expanding) { - - var bounds = this.getParentBounds(this._tempBounds); - var width = bounds.width; - var height = bounds.height; - - var multiplier; - - if (expanding) - { - multiplier = Math.max((height / this.game.height), (width / this.game.width)); - } - else - { - multiplier = Math.min((height / this.game.height), (width / this.game.width)); - } - - this.width = Math.round(this.game.width * multiplier); - this.height = Math.round(this.game.height * multiplier); - - }, - - /** - * Updates the width/height such that the game is stretched to the available size. - * Honors {@link #maxWidth} and {@link #maxHeight} when _not_ in fullscreen. - * - * @method Phaser.ScaleManager#setExactFit - * @private - */ - setExactFit: function () { - - var bounds = this.getParentBounds(this._tempBounds); - - this.width = bounds.width; - this.height = bounds.height; - - if (this.isFullScreen) - { - // Max/min not honored fullscreen - return; - } - - if (this.maxWidth) - { - this.width = Math.min(this.width, this.maxWidth); - } - - if (this.maxHeight) - { - this.height = Math.min(this.height, this.maxHeight); - } - - }, - - /** - * Creates a fullscreen target. This is called automatically as as needed when entering - * fullscreen mode and the resulting element is supplied to {@link #onFullScreenInit}. - * - * Use {@link #onFullScreenInit} to customize the created object. - * - * @method Phaser.ScaleManager#createFullScreenTarget - * @protected - */ - createFullScreenTarget: function () { - - var fsTarget = document.createElement('div'); - - fsTarget.style.margin = '0'; - fsTarget.style.padding = '0'; - fsTarget.style.background = '#000'; - - return fsTarget; - - }, - - /** - * Start the browsers fullscreen mode - this _must_ be called from a user input Pointer or Mouse event. - * - * The Fullscreen API must be supported by the browser for this to work - it is not the same as setting - * the game size to fill the browser window. See {@link Phaser.ScaleManager#compatibility compatibility.supportsFullScreen} to check if the current - * device is reported to support fullscreen mode. - * - * The {@link #fullScreenFailed} signal will be dispatched if the fullscreen change request failed or the game does not support the Fullscreen API. - * - * @method Phaser.ScaleManager#startFullScreen - * @public - * @param {boolean} [antialias] - Changes the anti-alias feature of the canvas before jumping in to fullscreen (false = retain pixel art, true = smooth art). If not specified then no change is made. Only works in CANVAS mode. - * @param {boolean} [allowTrampoline=undefined] - Internal argument. If `false` click trampolining is suppressed. - * @return {boolean} Returns true if the device supports fullscreen mode and fullscreen mode was attempted to be started. (It might not actually start, wait for the signals.) - */ - startFullScreen: function (antialias, allowTrampoline) { - - if (this.isFullScreen) - { - return false; - } - - if (!this.compatibility.supportsFullScreen) - { - // Error is called in timeout to emulate the real fullscreenerror event better - var _this = this; - setTimeout(function () { - _this.fullScreenError(); - }, 10); - return; - } - - if (this.compatibility.clickTrampoline === 'when-not-mouse') - { - var input = this.game.input; - - if (input.activePointer && - input.activePointer !== input.mousePointer && - (allowTrampoline || allowTrampoline !== false)) - { - input.activePointer.addClickTrampoline("startFullScreen", this.startFullScreen, this, [antialias, false]); - return; - } - } - - if (typeof antialias !== 'undefined' && this.game.renderType === Phaser.CANVAS) - { - this.game.stage.smoothed = antialias; - } - - var fsTarget = this.fullScreenTarget; - - if (!fsTarget) - { - this.cleanupCreatedTarget(); - - this._createdFullScreenTarget = this.createFullScreenTarget(); - fsTarget = this._createdFullScreenTarget; - } - - var initData = { - targetElement: fsTarget - }; - - this.onFullScreenInit.dispatch(this, initData); - - if (this._createdFullScreenTarget) - { - // Move the Display canvas inside of the target and add the target to the DOM - // (The target has to be added for the Fullscreen API to work.) - var canvas = this.game.canvas; - var parent = canvas.parentNode; - parent.insertBefore(fsTarget, canvas); - fsTarget.appendChild(canvas); - } - - if (this.game.device.fullscreenKeyboard) - { - fsTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); - } - else - { - fsTarget[this.game.device.requestFullscreen](); - } - - return true; - - }, - - /** - * Stops / exits fullscreen mode, if active. - * - * @method Phaser.ScaleManager#stopFullScreen - * @public - * @return {boolean} Returns true if the browser supports fullscreen mode and fullscreen mode will be exited. - */ - stopFullScreen: function () { - - if (!this.isFullScreen || !this.compatibility.supportsFullScreen) - { - return false; - } - - document[this.game.device.cancelFullscreen](); - - return true; - - }, - - /** - * Cleans up the previous fullscreen target, if such was automatically created. - * This ensures the canvas is restored to its former parent, assuming the target didn't move. - * - * @method Phaser.ScaleManager#cleanupCreatedTarget - * @private - */ - cleanupCreatedTarget: function () { - - var fsTarget = this._createdFullScreenTarget; - - if (fsTarget && fsTarget.parentNode) - { - // Make sure to cleanup synthetic target for sure; - // swap the canvas back to the parent. - var parent = fsTarget.parentNode; - parent.insertBefore(this.game.canvas, fsTarget); - parent.removeChild(fsTarget); - } - - this._createdFullScreenTarget = null; - - }, - - /** - * Used to prepare/restore extra fullscreen mode settings. - * (This does move any elements within the DOM tree.) - * - * @method Phaser.ScaleManager#prepScreenMode - * @private - * @param {boolean} enteringFullscreen - True if _entering_ fullscreen, false if _leaving_. - */ - prepScreenMode: function (enteringFullscreen) { - - var createdTarget = !!this._createdFullScreenTarget; - var fsTarget = this._createdFullScreenTarget || this.fullScreenTarget; - - if (enteringFullscreen) - { - if (createdTarget || this.fullScreenScaleMode === Phaser.ScaleManager.EXACT_FIT) - { - // Resize target, as long as it's not the canvas - if (fsTarget !== this.game.canvas) - { - this._fullScreenRestore = { - targetWidth: fsTarget.style.width, - targetHeight: fsTarget.style.height - }; - - fsTarget.style.width = '100%'; - fsTarget.style.height = '100%'; - } - } - } - else - { - // Have restore information - if (this._fullScreenRestore) - { - fsTarget.style.width = this._fullScreenRestore.targetWidth; - fsTarget.style.height = this._fullScreenRestore.targetHeight; - - this._fullScreenRestore = null; - } - - // Always reset to game size - this.updateDimensions(this._gameSize.width, this._gameSize.height, true); - this.resetCanvas(); - } - - }, - - /** - * Called automatically when the browser enters of leaves fullscreen mode. - * - * @method Phaser.ScaleManager#fullScreenChange - * @private - * @param {Event} [event=undefined] - The fullscreenchange event - */ - fullScreenChange: function (event) { - - this.event = event; - - if (this.isFullScreen) - { - this.prepScreenMode(true); - - this.updateLayout(); - this.queueUpdate(true); - } - else - { - this.prepScreenMode(false); - - this.cleanupCreatedTarget(); - - this.updateLayout(); - this.queueUpdate(true); - } - - this.onFullScreenChange.dispatch(this, this.width, this.height); - - }, - - /** - * Called automatically when the browser fullscreen request fails; - * or called when a fullscreen request is made on a device for which it is not supported. - * - * @method Phaser.ScaleManager#fullScreenError - * @private - * @param {Event} [event=undefined] - The fullscreenerror event; undefined if invoked on a device that does not support the Fullscreen API. - */ - fullScreenError: function (event) { - - this.event = event; - - this.cleanupCreatedTarget(); - - console.warn('Phaser.ScaleManager: requestFullscreen failed or device does not support the Fullscreen API'); - - this.onFullScreenError.dispatch(this); - - }, - - /** - * Takes a Sprite or Image object and scales it to fit the given dimensions. - * Scaling happens proportionally without distortion to the sprites texture. - * The letterBox parameter controls if scaling will produce a letter-box effect or zoom the - * sprite until it fills the given values. Note that with letterBox set to false the scaled sprite may spill out over either - * the horizontal or vertical sides of the target dimensions. If you wish to stop this you can crop the Sprite. - * - * @method Phaser.ScaleManager#scaleSprite - * @protected - * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite we want to scale. - * @param {integer} [width] - The target width that we want to fit the sprite in to. If not given it defaults to ScaleManager.width. - * @param {integer} [height] - The target height that we want to fit the sprite in to. If not given it defaults to ScaleManager.height. - * @param {boolean} [letterBox=false] - True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. - * @return {Phaser.Sprite|Phaser.Image} The scaled sprite. - */ - scaleSprite: function (sprite, width, height, letterBox) { - - if (width === undefined) { width = this.width; } - if (height === undefined) { height = this.height; } - if (letterBox === undefined) { letterBox = false; } - - if (!sprite || !sprite['scale']) - { - return sprite; - } - - sprite.scale.x = 1; - sprite.scale.y = 1; - - if ((sprite.width <= 0) || (sprite.height <= 0) || (width <= 0) || (height <= 0)) - { - return sprite; - } - - var scaleX1 = width; - var scaleY1 = (sprite.height * width) / sprite.width; - - var scaleX2 = (sprite.width * height) / sprite.height; - var scaleY2 = height; - - var scaleOnWidth = (scaleX2 > width); - - if (scaleOnWidth) - { - scaleOnWidth = letterBox; - } - else - { - scaleOnWidth = !letterBox; - } - - if (scaleOnWidth) - { - sprite.width = Math.floor(scaleX1); - sprite.height = Math.floor(scaleY1); - } - else - { - sprite.width = Math.floor(scaleX2); - sprite.height = Math.floor(scaleY2); - } - - // Enable at some point? - // sprite.x = Math.floor((width - sprite.width) / 2); - // sprite.y = Math.floor((height - sprite.height) / 2); - - return sprite; - - }, - - /** - * Destroys the ScaleManager and removes any event listeners. - * This should probably only be called when the game is destroyed. - * - * @method Phaser.ScaleManager#destroy - * @protected - */ - destroy: function () { - - this.game.onResume.remove(this._gameResumed, this); - - window.removeEventListener('orientationchange', this._orientationChange, false); - window.removeEventListener('resize', this._windowResize, false); - - if (this.compatibility.supportsFullScreen) - { - document.removeEventListener('webkitfullscreenchange', this._fullScreenChange, false); - document.removeEventListener('mozfullscreenchange', this._fullScreenChange, false); - document.removeEventListener('MSFullscreenChange', this._fullScreenChange, false); - document.removeEventListener('fullscreenchange', this._fullScreenChange, false); - - document.removeEventListener('webkitfullscreenerror', this._fullScreenError, false); - document.removeEventListener('mozfullscreenerror', this._fullScreenError, false); - document.removeEventListener('MSFullscreenError', this._fullScreenError, false); - document.removeEventListener('fullscreenerror', this._fullScreenError, false); - } - - } - -}; - -Phaser.ScaleManager.prototype.constructor = Phaser.ScaleManager; - -/** -* The DOM element that is considered the Parent bounding element, if any. -* -* This `null` if {@link #parentIsWindow} is true or if fullscreen mode is entered and {@link #fullScreenTarget} is specified. -* It will also be null if there is no game canvas or if the game canvas has no parent. -* -* @name Phaser.ScaleManager#boundingParent -* @property {?DOMElement} boundingParent -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "boundingParent", { - - get: function () { - if (this.parentIsWindow || - (this.isFullScreen && !this._createdFullScreenTarget)) - { - return null; - } - - var parentNode = this.game.canvas && this.game.canvas.parentNode; - return parentNode || null; - } - -}); - -/** -* The scaling method used by the ScaleManager when not in fullscreen. -* -*
-*
{@link Phaser.ScaleManager.NO_SCALE}
-*
-* The Game display area will not be scaled - even if it is too large for the canvas/screen. -* This mode _ignores_ any applied scaling factor and displays the canvas at the Game size. -*
-*
{@link Phaser.ScaleManager.EXACT_FIT}
-*
-* The Game display area will be _stretched_ to fill the entire size of the canvas's parent element and/or screen. -* Proportions are not mainted. -*
-*
{@link Phaser.ScaleManager.SHOW_ALL}
-*
-* Show the entire game display area while _maintaining_ the original aspect ratio. -*
-*
{@link Phaser.ScaleManager.RESIZE}
-*
-* The dimensions of the game display area are changed to match the size of the parent container. -* That is, this mode _changes the Game size_ to match the display size. -*

-* Any manually set Game size (see {@link #setGameSize}) is ignored while in effect. -*

-*
{@link Phaser.ScaleManager.USER_SCALE}
-*
-* The game Display is scaled according to the user-specified scale set by {@link Phaser.ScaleManager#setUserScale setUserScale}. -*

-* This scale can be adjusted in the {@link Phaser.ScaleManager#setResizeCallback resize callback} -* for flexible custom-sizing needs. -*

-*
-* -* @name Phaser.ScaleManager#scaleMode -* @property {integer} scaleMode -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "scaleMode", { - - get: function () { - - return this._scaleMode; - - }, - - set: function (value) { - - if (value !== this._scaleMode) - { - if (!this.isFullScreen) - { - this.updateDimensions(this._gameSize.width, this._gameSize.height, true); - this.queueUpdate(true); - } - - this._scaleMode = value; - } - - return this._scaleMode; - - } - -}); - -/** -* The scaling method used by the ScaleManager when in fullscreen. -* -* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. -* -* @name Phaser.ScaleManager#fullScreenScaleMode -* @property {integer} fullScreenScaleMode -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "fullScreenScaleMode", { - - get: function () { - - return this._fullScreenScaleMode; - - }, - - set: function (value) { - - if (value !== this._fullScreenScaleMode) - { - // If in fullscreen then need a wee bit more work - if (this.isFullScreen) - { - this.prepScreenMode(false); - this._fullScreenScaleMode = value; - this.prepScreenMode(true); - - this.queueUpdate(true); - } - else - { - this._fullScreenScaleMode = value; - } - } - - return this._fullScreenScaleMode; - - } - -}); - -/** -* Returns the current scale mode - for normal or fullscreen operation. -* -* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. -* -* @name Phaser.ScaleManager#currentScaleMode -* @property {number} currentScaleMode -* @protected -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "currentScaleMode", { - - get: function () { - - return this.isFullScreen ? this._fullScreenScaleMode : this._scaleMode; - - } - -}); - -/** -* When enabled the Display canvas will be horizontally-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). -* -* To align horizontally across the page the Display canvas should be added directly to page; -* or the parent container should itself be horizontally aligned. -* -* Horizontal alignment is not applicable with the {@link .RESIZE} scaling mode. -* -* @name Phaser.ScaleManager#pageAlignHorizontally -* @property {boolean} pageAlignHorizontally -* @default false -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignHorizontally", { - - get: function () { - - return this._pageAlignHorizontally; - - }, - - set: function (value) { - - if (value !== this._pageAlignHorizontally) - { - this._pageAlignHorizontally = value; - this.queueUpdate(true); - } - - } - -}); - -/** -* When enabled the Display canvas will be vertically-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). -* -* To align vertically the Parent element should have a _non-collapsible_ height, such that it will maintain -* a height _larger_ than the height of the contained Game canvas - the game canvas will then be scaled vertically -* _within_ the remaining available height dictated by the Parent element. -* -* One way to prevent the parent from collapsing is to add an absolute "min-height" CSS property to the parent element. -* If specifying a relative "min-height/height" or adjusting margins, the Parent height must still be non-collapsible (see note). -* -* _Note_: In version 2.2 the minimum document height is _not_ automatically set to the viewport/window height. -* To automatically update the minimum document height set {@link Phaser.ScaleManager#compatibility compatibility.forceMinimumDocumentHeight} to true. -* -* Vertical alignment is not applicable with the {@link .RESIZE} scaling mode. -* -* @name Phaser.ScaleManager#pageAlignVertically -* @property {boolean} pageAlignVertically -* @default false -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignVertically", { - - get: function () { - - return this._pageAlignVertically; - - }, - - set: function (value) { - - if (value !== this._pageAlignVertically) - { - this._pageAlignVertically = value; - this.queueUpdate(true); - } - - } - -}); - -/** -* Returns true if the browser is in fullscreen mode, otherwise false. -* @name Phaser.ScaleManager#isFullScreen -* @property {boolean} isFullScreen -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isFullScreen", { - - get: function () { - return !!(document['fullscreenElement'] || - document['webkitFullscreenElement'] || - document['mozFullScreenElement'] || - document['msFullscreenElement']); - } - -}); - -/** -* Returns true if the screen orientation is in portrait mode. -* -* @name Phaser.ScaleManager#isPortrait -* @property {boolean} isPortrait -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isPortrait", { - - get: function () { - return this.classifyOrientation(this.screenOrientation) === 'portrait'; - } - -}); - -/** -* Returns true if the screen orientation is in landscape mode. -* -* @name Phaser.ScaleManager#isLandscape -* @property {boolean} isLandscape -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isLandscape", { - - get: function () { - return this.classifyOrientation(this.screenOrientation) === 'landscape'; - } - -}); - -/** -* Returns true if the game dimensions are portrait (height > width). -* This is especially useful to check when using the RESIZE scale mode -* but wanting to maintain game orientation on desktop browsers, -* where typically the screen orientation will always be landscape regardless of the browser viewport. -* -* @name Phaser.ScaleManager#isGamePortrait -* @property {boolean} isGamePortrait -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isGamePortrait", { - - get: function () { - return (this.height > this.width); - } - -}); - -/** -* Returns true if the game dimensions are landscape (width > height). -* This is especially useful to check when using the RESIZE scale mode -* but wanting to maintain game orientation on desktop browsers, -* where typically the screen orientation will always be landscape regardless of the browser viewport. -* -* @name Phaser.ScaleManager#isGameLandscape -* @property {boolean} isGameLandscape -* @readonly -*/ -Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { - - get: function () { - return (this.width > this.height); - } - -}); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * This is where the magic happens. The Game object is the heart of your game, * providing quick access to common functions and handling the boot process. @@ -38212,6 +33875,14 @@ Phaser.Game = function (width, height, renderer, parent, state, transparent, ant */ this.preserveDrawingBuffer = false; + /** + * Clear the Canvas each frame before rendering the display list. + * You can set this to `false` to gain some performance if your game always contains a background that completely fills the display. + * @property {boolean} clearBeforeRender + * @default + */ + this.clearBeforeRender = true; + /** * @property {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The Pixi Renderer. * @protected @@ -38634,6 +34305,8 @@ Phaser.Game.prototype = { this.isBooted = true; + PIXI.game = this; + this.math = Phaser.Math; this.scale = new Phaser.ScaleManager(this, this._width, this._height); @@ -38787,37 +34460,20 @@ Phaser.Game.prototype = { this.canvas.style['-webkit-full-screen'] = 'width: 100%; height: 100%'; } - if (this.device.cocoonJS) - { - if (this.renderType === Phaser.CANVAS) - { - this.canvas.screencanvas = true; - } - else - { - // Some issue related to scaling arise with Cocoon using screencanvas and webgl renderer. - this.canvas.screencanvas = false; - } - } - - if (this.renderType === Phaser.HEADLESS || this.renderType === Phaser.CANVAS || (this.renderType === Phaser.AUTO && this.device.webGL === false)) + if (this.renderType === Phaser.HEADLESS || this.renderType === Phaser.CANVAS || (this.renderType === Phaser.AUTO && !this.device.webGL)) { if (this.device.canvas) { - if (this.renderType === Phaser.AUTO) - { - this.renderType = Phaser.CANVAS; - } + // They requested Canvas and their browser supports it + this.renderType = Phaser.CANVAS; + + this.renderer = new PIXI.CanvasRenderer(this); - this.renderer = new PIXI.CanvasRenderer(this.width, this.height, { "view": this.canvas, - "transparent": this.transparent, - "resolution": this.resolution, - "clearBeforeRender": true }); this.context = this.renderer.context; } else { - throw new Error('Phaser.Game - cannot create Canvas or WebGL context, aborting.'); + throw new Error('Phaser.Game - Cannot create Canvas or WebGL context, aborting.'); } } else @@ -38825,17 +34481,19 @@ Phaser.Game.prototype = { // They requested WebGL and their browser supports it this.renderType = Phaser.WEBGL; - this.renderer = new PIXI.WebGLRenderer(this.width, this.height, { "view": this.canvas, - "transparent": this.transparent, - "resolution": this.resolution, - "antialias": this.antialias, - "preserveDrawingBuffer": this.preserveDrawingBuffer }); + this.renderer = new PIXI.WebGLRenderer(this); + this.context = null; this.canvas.addEventListener('webglcontextlost', this.contextLost.bind(this), false); this.canvas.addEventListener('webglcontextrestored', this.contextRestored.bind(this), false); } + if (this.device.cocoonJS) + { + this.canvas.screencanvas = (this.renderType === Phaser.CANVAS) ? true : false; + } + if (this.renderType !== Phaser.HEADLESS) { this.stage.smoothed = this.antialias; @@ -38890,7 +34548,7 @@ Phaser.Game.prototype = { if (this._kickstart) { - this.updateLogic(1.0 / this.time.desiredFps); + this.updateLogic(this.time.desiredFpsMult); // Sync the scene graph after _every_ logic update to account for moved game objects this.stage.updateTransform(); @@ -38910,7 +34568,7 @@ Phaser.Game.prototype = { if (this.time.time > this._nextFpsNotification) { // only permit one fps notification per 10 seconds - this._nextFpsNotification = this.time.time + 1000 * 10; + this._nextFpsNotification = this.time.time + 10000; // dispatch the notification signal this.fpsProblemNotifier.dispatch(); @@ -38947,7 +34605,7 @@ Phaser.Game.prototype = { this._deltaTime -= slowStep; this.currentUpdateID = count; - this.updateLogic(1.0 / this.time.desiredFps); + this.updateLogic(this.time.desiredFpsMult); // Sync the scene graph after _every_ logic update to account for moved game objects this.stage.updateTransform(); @@ -38958,6 +34616,10 @@ Phaser.Game.prototype = { { break; } + else + { + this.time.refresh(); + } } // detect spiraling (if the catch-up loop isn't fast enough, the number of iterations will increase constantly) @@ -39005,7 +34667,7 @@ Phaser.Game.prototype = { this.state.update(); this.stage.update(); - this.tweens.update(timeStep); + this.tweens.update(); this.sound.update(); this.input.update(); this.physics.update(); @@ -39048,10 +34710,13 @@ Phaser.Game.prototype = { } this.state.preRender(elapsedTime); + this.renderer.render(this.stage); this.plugins.render(elapsedTime); + this.state.render(elapsedTime); + this.plugins.postRender(elapsedTime); }, @@ -39648,7 +35313,7 @@ Phaser.Input.prototype = { */ boot: function () { - this.mousePointer = new Phaser.Pointer(this.game, 0); + this.mousePointer = new Phaser.Pointer(this.game, 0, Phaser.PointerMode.CURSOR); this.addPointer(); this.addPointer(); @@ -39791,7 +35456,7 @@ Phaser.Input.prototype = { } var id = this.pointers.length + 1; - var pointer = new Phaser.Pointer(this.game, id); + var pointer = new Phaser.Pointer(this.game, id, Phaser.PointerMode.TOUCH); this.pointers.push(pointer); this['pointer' + id] = pointer; @@ -41465,20 +37130,23 @@ Phaser.MSPointer.prototype = { var canvas = this.game.canvas; - canvas.removeEventListener('MSPointerDown', this._onMSPointerDown); - canvas.removeEventListener('MSPointerMove', this._onMSPointerMove); - canvas.removeEventListener('MSPointerUp', this._onMSPointerUp); - canvas.removeEventListener('MSPointerOver', this._onMSPointerOver); - canvas.removeEventListener('MSPointerOut', this._onMSPointerOut); + canvas.removeEventListener('MSPointerDown', this._onMSPointerDown, false); + canvas.removeEventListener('MSPointerMove', this._onMSPointerMove, false); + canvas.removeEventListener('MSPointerUp', this._onMSPointerUp, false); - canvas.removeEventListener('pointerdown', this._onMSPointerDown); - canvas.removeEventListener('pointermove', this._onMSPointerMove); - canvas.removeEventListener('pointerup', this._onMSPointerUp); - canvas.removeEventListener('pointerover', this._onMSPointerOver); - canvas.removeEventListener('pointerout', this._onMSPointerOut); + // IE11+ uses non-prefix events + canvas.removeEventListener('pointerdown', this._onMSPointerDown, false); + canvas.removeEventListener('pointermove', this._onMSPointerMove, false); + canvas.removeEventListener('pointerup', this._onMSPointerUp, false); - window.removeEventListener('MSPointerUp', this._onMSPointerUpGlobal); - window.removeEventListener('pointerup', this._onMSPointerUpGlobal); + window.removeEventListener('MSPointerUp', this._onMSPointerUpGlobal, true); + canvas.removeEventListener('MSPointerOver', this._onMSPointerOver, true); + canvas.removeEventListener('MSPointerOut', this._onMSPointerOut, true); + + // IE11+ uses non-prefix events + window.removeEventListener('pointerup', this._onMSPointerUpGlobal, true); + canvas.removeEventListener('pointerover', this._onMSPointerOver, true); + canvas.removeEventListener('pointerout', this._onMSPointerOut, true); } @@ -41552,15 +37220,6 @@ Phaser.DeviceButton = function (parent, buttonCode) { */ this.timeDown = 0; - /** - * If the button is down this value holds the duration of that button press and is constantly updated. - * If the button is up it holds the duration of the previous down session. - * The value is stored in milliseconds. - * @property {number} duration - * @default - */ - this.duration = 0; - /** * @property {number} timeUp - The timestamp when the button was last released. * @default @@ -41657,7 +37316,6 @@ Phaser.DeviceButton.prototype = { this.isDown = true; this.isUp = false; this.timeDown = this.game.time.time; - this.duration = 0; this.repeats = 0; this.event = event; @@ -41766,7 +37424,6 @@ Phaser.DeviceButton.prototype = { this.isUp = true; this.timeDown = this.game.time.time; - this.duration = 0; this.repeats = 0; this.altKey = false; @@ -41797,7 +37454,7 @@ Phaser.DeviceButton.prototype = { Phaser.DeviceButton.prototype.constructor = Phaser.DeviceButton; /** -* How long the button has been held down. +* How long the button has been held down for in milliseconds. * If not currently down it returns -1. * * @name Phaser.DeviceButton#duration @@ -41832,8 +37489,9 @@ Object.defineProperty(Phaser.DeviceButton.prototype, "duration", { * @constructor * @param {Phaser.Game} game - A reference to the currently running game. * @param {number} id - The ID of the Pointer object within the game. Each game can have up to 10 active pointers. +* @param {Phaser.PointerMode} pointerMode=(CURSOR|CONTACT) - The operational mode of this pointer, eg. CURSOR or TOUCH. */ -Phaser.Pointer = function (game, id) { +Phaser.Pointer = function (game, id, pointerMode) { /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -41869,6 +37527,11 @@ Phaser.Pointer = function (game, id) { */ this.pointerId = null; + /** + * @property {Phaser.PointerMode} pointerMode - The operational mode of this pointer. + */ + this.pointerMode = pointerMode || (Phaser.PointerMode.CURSOR | Phaser.PointerMode.CONTACT); + /** * @property {any} target - The target property of the Pointer as set by the DOM event when this Pointer is started. * @default @@ -42393,6 +38056,8 @@ Phaser.Pointer.prototype = { */ start: function (event) { + var input = this.game.input; + if (event['pointerId']) { this.pointerId = event.pointerId; @@ -42430,18 +38095,19 @@ Phaser.Pointer.prototype = { // x and y are the old values here? this.positionDown.setTo(this.x, this.y); - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.x = this.x; - this.game.input.y = this.y; - this.game.input.position.setTo(this.x, this.y); - this.game.input.onDown.dispatch(this, event); - this.game.input.resetSpeed(this.x, this.y); + input.x = this.x; + input.y = this.y; + input.position.setTo(this.x, this.y); + input.onDown.dispatch(this, event); + input.resetSpeed(this.x, this.y); } this._stateReset = false; + this.totalTouches++; if (this.targetObject !== null) @@ -42459,12 +38125,14 @@ Phaser.Pointer.prototype = { */ update: function () { + var input = this.game.input; + if (this.active) { // Force a check? if (this.dirty) { - if (this.game.input.interactiveItems.total > 0) + if (input.interactiveItems.total > 0) { this.processInteractiveObjects(false); } @@ -42472,29 +38140,29 @@ Phaser.Pointer.prototype = { this.dirty = false; } - if (this._holdSent === false && this.duration >= this.game.input.holdRate) + if (this._holdSent === false && this.duration >= input.holdRate) { - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.onHold.dispatch(this); + input.onHold.dispatch(this); } this._holdSent = true; } // Update the droppings history - if (this.game.input.recordPointerHistory && this.game.time.time >= this._nextDrop) + if (input.recordPointerHistory && this.game.time.time >= this._nextDrop) { - this._nextDrop = this.game.time.time + this.game.input.recordRate; + this._nextDrop = this.game.time.time + input.recordRate; this._history.push({ x: this.position.x, y: this.position.y }); - if (this._history.length > this.game.input.recordLimit) + if (this._history.length > input.recordLimit) { this._history.shift(); } @@ -42648,7 +38316,7 @@ Phaser.Pointer.prototype = { var currentNode = this.game.input.interactiveItems.first; - while(currentNode) + while (currentNode) { if (!currentNode.checked && currentNode.validForInput(highestInputPriorityID, highestRenderOrderID, true)) @@ -42731,6 +38399,8 @@ Phaser.Pointer.prototype = { */ stop: function (event) { + var input = this.game.input; + if (this._stateReset && this.withinGame) { event.preventDefault(); @@ -42739,25 +38409,25 @@ Phaser.Pointer.prototype = { this.timeUp = this.game.time.time; - if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || - this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || - (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.totalActivePointers === 0)) + if (input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || + input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || + (input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && input.totalActivePointers === 0)) { - this.game.input.onUp.dispatch(this, event); + input.onUp.dispatch(this, event); // Was it a tap? - if (this.duration >= 0 && this.duration <= this.game.input.tapRate) + if (this.duration >= 0 && this.duration <= input.tapRate) { // Was it a double-tap? - if (this.timeUp - this.previousTapTime < this.game.input.doubleTapRate) + if (this.timeUp - this.previousTapTime < input.doubleTapRate) { // Yes, let's dispatch the signal then with the 2nd parameter set to true - this.game.input.onTap.dispatch(this, true); + input.onTap.dispatch(this, true); } else { // Wasn't a double-tap, so dispatch a single tap signal - this.game.input.onTap.dispatch(this, false); + input.onTap.dispatch(this, false); } this.previousTapTime = this.timeUp; @@ -42788,10 +38458,10 @@ Phaser.Pointer.prototype = { if (this.isMouse === false) { - this.game.input.currentPointers--; + input.currentPointers--; } - this.game.input.interactiveItems.callAll('_releasedHandler', this); + input.interactiveItems.callAll('_releasedHandler', this); if (this._clickTrampolines) { @@ -43011,6 +38681,35 @@ Object.defineProperty(Phaser.Pointer.prototype, "worldY", { }); +/** +* Enumeration categorizing operational modes of pointers. +* +* PointerType values represent valid bitmasks. +* For example, a value representing both Mouse and Touch devices +* can be expressed as `PointerMode.CURSOR | PointerMode.CONTACT`. +* +* Values may be added for future mode categorizations. +* @class Phaser.PointerMode +*/ +Phaser.PointerMode = { + + /** + * A 'CURSOR' is a pointer with a *passive cursor* such as a mouse, touchpad, watcom stylus, or even TV-control arrow-pad. + * + * It has the property that a cursor is passively moved without activating the input. + * This currently corresponds with {@link Phaser.Pointer#isMouse} property. + * @constant + */ + CURSOR: 1 << 0, + + /** + * A 'CONTACT' pointer has an *active cursor* that only tracks movement when actived; notably this is a touch-style input. + * @constant + */ + CONTACT: 1 << 1 + +}; + /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -43041,7 +38740,7 @@ Phaser.Touch = function (game) { this.enabled = true; /** - * An array of callbacks that will be fired every time a native touch start event is received from the browser. + * An array of callbacks that will be fired every time a native touch start or touch end event is received from the browser. * This is used internally to handle audio and video unlocking on mobile devices. * To add a callback to this array please use `Touch.addTouchLockCallback`. * @property {array} touchLockCallbacks @@ -43211,7 +38910,7 @@ Phaser.Touch.prototype = { }, /** - * Adds a callback that is fired when a browser touchstart event is received. + * Adds a callback that is fired when a browser touchstart or touchend event is received. * * This is used internally to handle audio and video unlocking on mobile devices. * @@ -43222,10 +38921,13 @@ Phaser.Touch.prototype = { * @method Phaser.Touch#addTouchLockCallback * @param {function} callback - The callback that will be called when a touchstart event is received. * @param {object} context - The context in which the callback will be called. + * @param {boolean} [onEnd=false] - Will the callback fire on a touchstart (default) or touchend event? */ - addTouchLockCallback: function (callback, context) { + addTouchLockCallback: function (callback, context, onEnd) { - this.touchLockCallbacks.push({ callback: callback, context: context }); + if (onEnd === undefined) { onEnd = false; } + + this.touchLockCallbacks.push({ callback: callback, context: context, onEnd: onEnd }); }, @@ -43265,7 +38967,9 @@ Phaser.Touch.prototype = { while (i--) { - if (this.touchLockCallbacks[i].callback.call(this.touchLockCallbacks[i].context, this, event)) + var cb = this.touchLockCallbacks[i]; + + if (!cb.onEnd && cb.callback.call(cb.context, this, event)) { this.touchLockCallbacks.splice(i, 1); } @@ -43414,6 +39118,18 @@ Phaser.Touch.prototype = { */ onTouchEnd: function (event) { + var i = this.touchLockCallbacks.length; + + while (i--) + { + var cb = this.touchLockCallbacks[i]; + + if (cb.onEnd && cb.callback.call(cb.context, this, event)) + { + this.touchLockCallbacks.splice(i, 1); + } + } + this.event = event; if (this.touchEndCallback) @@ -43898,7 +39614,7 @@ Phaser.InputHandler.prototype = { if (includePixelPerfect === undefined) { includePixelPerfect = true; } - if (this.sprite.scale.x === 0 || this.sprite.scale.y === 0 || this.priorityID < this.game.input.minPriorityID) + if (!this.enabled || this.sprite.scale.x === 0 || this.sprite.scale.y === 0 || this.priorityID < this.game.input.minPriorityID) { return false; } @@ -43935,14 +39651,14 @@ Phaser.InputHandler.prototype = { * This value is only set when the pointer is over this Sprite. * * @method Phaser.InputHandler#pointerX - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {number} The x coordinate of the Input pointer. */ - pointerX: function (pointer) { + pointerX: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].x; + return this._pointerData[pointerId].x; }, @@ -43951,44 +39667,46 @@ Phaser.InputHandler.prototype = { * This value is only set when the pointer is over this Sprite. * * @method Phaser.InputHandler#pointerY - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {number} The y coordinate of the Input pointer. */ - pointerY: function (pointer) { + pointerY: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].y; + return this._pointerData[pointerId].y; }, /** - * If the Pointer is down this returns true. Please note that it only checks if the Pointer is down, not if it's down over any specific Sprite. + * If the Pointer is down this returns true. + * This *only* checks if the Pointer is down, not if it's down over any specific Sprite. * * @method Phaser.InputHandler#pointerDown - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {boolean} - True if the given pointer is down, otherwise false. */ - pointerDown: function (pointer) { + pointerDown: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isDown; + return this._pointerData[pointerId].isDown; }, /** - * If the Pointer is up this returns true. Please note that it only checks if the Pointer is up, not if it's up over any specific Sprite. + * If the Pointer is up this returns true. + * This *only* checks if the Pointer is up, not if it's up over any specific Sprite. * * @method Phaser.InputHandler#pointerUp - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=0] * @return {boolean} - True if the given pointer is up, otherwise false. */ - pointerUp: function (pointer) { + pointerUp: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isUp; + return this._pointerData[pointerId].isUp; }, @@ -43996,28 +39714,29 @@ Phaser.InputHandler.prototype = { * A timestamp representing when the Pointer first touched the touchscreen. * * @method Phaser.InputHandler#pointerTimeDown - * @param {number} pointer - The index of the pointer to check. You can get this from Phaser.Pointer.id. + * @param {integer} [pointerId=(check all)] * @return {number} */ - pointerTimeDown: function (pointer) { + pointerTimeDown: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeDown; + return this._pointerData[pointerId].timeDown; }, /** * A timestamp representing when the Pointer left the touchscreen. + * * @method Phaser.InputHandler#pointerTimeUp - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeUp: function (pointer) { + pointerTimeUp: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeUp; + return this._pointerData[pointerId].timeUp; }, @@ -44025,102 +39744,106 @@ Phaser.InputHandler.prototype = { * Is the Pointer over this Sprite? * * @method Phaser.InputHandler#pointerOver - * @param {number} [index] - The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. + * @param {integer} [pointerId=(check all)] The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. * @return {boolean} - True if the given pointer (if a index was given, or any pointer if not) is over this object. */ - pointerOver: function (index) { + pointerOver: function (pointerId) { - if (this.enabled) + if (!this.enabled) { - if (index === undefined) - { - for (var i = 0; i < 10; i++) - { - if (this._pointerData[i].isOver) - { - return true; - } - } - } - else - { - return this._pointerData[index].isOver; - } + return false; } - return false; + if (pointerId === undefined) + { + for (var i = 0; i < 10; i++) + { + if (this._pointerData[i].isOver) + { + return true; + } + } + } + else + { + return this._pointerData[pointerId].isOver; + } }, /** * Is the Pointer outside of this Sprite? + * * @method Phaser.InputHandler#pointerOut - * @param {number} [index] - The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. + * @param {integer} [pointerId=(check all)] The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. * @return {boolean} True if the given pointer (if a index was given, or any pointer if not) is out of this object. */ - pointerOut: function (index) { + pointerOut: function (pointerId) { - if (this.enabled) + if (!this.enabled) { - if (index === undefined) - { - for (var i = 0; i < 10; i++) - { - if (this._pointerData[i].isOut) - { - return true; - } - } - } - else - { - return this._pointerData[index].isOut; - } + return false; } - return false; + if (pointerId === undefined) + { + for (var i = 0; i < 10; i++) + { + if (this._pointerData[i].isOut) + { + return true; + } + } + } + else + { + return this._pointerData[pointerId].isOut; + } }, /** * A timestamp representing when the Pointer first touched the touchscreen. + * * @method Phaser.InputHandler#pointerTimeOver - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeOver: function (pointer) { + pointerTimeOver: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeOver; + return this._pointerData[pointerId].timeOver; }, /** * A timestamp representing when the Pointer left the touchscreen. + * * @method Phaser.InputHandler#pointerTimeOut - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} */ - pointerTimeOut: function (pointer) { + pointerTimeOut: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].timeOut; + return this._pointerData[pointerId].timeOut; }, /** * Is this sprite being dragged by the mouse or not? + * * @method Phaser.InputHandler#pointerDragged - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {boolean} True if the pointer is dragging an object, otherwise false. */ - pointerDragged: function (pointer) { + pointerDragged: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - return this._pointerData[pointer].isDragged; + return this._pointerData[pointerId].isDragged; }, @@ -44203,6 +39926,7 @@ Phaser.InputHandler.prototype = { /** * Runs a pixel perfect check against the given x/y coordinates of the Sprite this InputHandler is bound to. * It compares the alpha value of the pixel and if >= InputHandler.pixelPerfectAlpha it returns true. + * * @method Phaser.InputHandler#checkPixel * @param {number} x - The x coordinate to check. * @param {number} y - The y coordinate to check. @@ -44577,81 +40301,86 @@ Phaser.InputHandler.prototype = { /** * Returns true if the pointer has entered the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justOver - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just over. * @return {boolean} */ - justOver: function (pointer, delay) { + justOver: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isOver && this.overDuration(pointer) < delay); + return (this._pointerData[pointerId].isOver && this.overDuration(pointerId) < delay); }, /** * Returns true if the pointer has left the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justOut - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just out. * @return {boolean} */ - justOut: function (pointer, delay) { + justOut: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isOut && (this.game.time.time - this._pointerData[pointer].timeOut < delay)); + return (this._pointerData[pointerId].isOut && (this.game.time.time - this._pointerData[pointerId].timeOut < delay)); }, /** * Returns true if the pointer has touched or clicked on the Sprite within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justPressed - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just over. * @return {boolean} */ - justPressed: function (pointer, delay) { + justPressed: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isDown && this.downDuration(pointer) < delay); + return (this._pointerData[pointerId].isDown && this.downDuration(pointerId) < delay); }, /** * Returns true if the pointer was touching this Sprite, but has been released within the specified delay time (defaults to 500ms, half a second) + * * @method Phaser.InputHandler#justReleased - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @param {number} delay - The time below which the pointer is considered as just out. * @return {boolean} */ - justReleased: function (pointer, delay) { + justReleased: function (pointerId, delay) { - pointer = pointer || 0; + pointerId = pointerId || 0; delay = delay || 500; - return (this._pointerData[pointer].isUp && (this.game.time.time - this._pointerData[pointer].timeUp < delay)); + return (this._pointerData[pointerId].isUp && (this.game.time.time - this._pointerData[pointerId].timeUp < delay)); }, /** * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. + * * @method Phaser.InputHandler#overDuration - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} The number of milliseconds the pointer has been over the Sprite, or -1 if not over. */ - overDuration: function (pointer) { + overDuration: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - if (this._pointerData[pointer].isOver) + if (this._pointerData[pointerId].isOver) { - return this.game.time.time - this._pointerData[pointer].timeOver; + return this.game.time.time - this._pointerData[pointerId].timeOver; } return -1; @@ -44660,17 +40389,18 @@ Phaser.InputHandler.prototype = { /** * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. + * * @method Phaser.InputHandler#downDuration - * @param {Phaser.Pointer} pointer + * @param {integer} [pointerId=0] * @return {number} The number of milliseconds the pointer has been pressed down on the Sprite, or -1 if not over. */ - downDuration: function (pointer) { + downDuration: function (pointerId) { - pointer = pointer || 0; + pointerId = pointerId || 0; - if (this._pointerData[pointer].isDown) + if (this._pointerData[pointerId].isDown) { - return this.game.time.time - this._pointerData[pointer].timeDown; + return this.game.time.time - this._pointerData[pointerId].timeDown; } return -1; @@ -44726,7 +40456,9 @@ Phaser.InputHandler.prototype = { }, /** - * Stops this sprite from being able to be dragged. If it is currently the target of an active drag it will be stopped immediately. Also disables any set callbacks. + * Stops this sprite from being able to be dragged. + * If it is currently the target of an active drag it will be stopped immediately; also disables any set callbacks. + * * @method Phaser.InputHandler#disableDrag */ disableDrag: function () { @@ -44747,6 +40479,7 @@ Phaser.InputHandler.prototype = { /** * Called by Pointer when drag starts on this Sprite. Should not usually be called directly. + * * @method Phaser.InputHandler#startDrag * @param {Phaser.Pointer} pointer */ @@ -44799,6 +40532,7 @@ Phaser.InputHandler.prototype = { /** * Warning: EXPERIMENTAL + * * @method Phaser.InputHandler#globalToLocalX * @param {number} x */ @@ -44816,6 +40550,7 @@ Phaser.InputHandler.prototype = { /** * Warning: EXPERIMENTAL + * * @method Phaser.InputHandler#globalToLocalY * @param {number} y */ @@ -44833,6 +40568,7 @@ Phaser.InputHandler.prototype = { /** * Called by Pointer when drag is stopped on this Sprite. Should not usually be called directly. + * * @method Phaser.InputHandler#stopDrag * @param {Phaser.Pointer} pointer */ @@ -44868,6 +40604,7 @@ Phaser.InputHandler.prototype = { /** * Restricts this sprite to drag movement only on the given axis. Note: If both are set to false the sprite will never move! + * * @method Phaser.InputHandler#setDragLock * @param {boolean} [allowHorizontal=true] - To enable the sprite to be dragged horizontally set to true, otherwise false. * @param {boolean} [allowVertical=true] - To enable the sprite to be dragged vertically set to true, otherwise false. @@ -44885,6 +40622,7 @@ Phaser.InputHandler.prototype = { /** * Make this Sprite snap to the given grid either during drag or when it's released. * For example 16x16 as the snapX and snapY would make the sprite snap to every 16 pixels. + * * @method Phaser.InputHandler#enableSnap * @param {number} snapX - The width of the grid cell to snap to. * @param {number} snapY - The height of the grid cell to snap to. @@ -44911,6 +40649,7 @@ Phaser.InputHandler.prototype = { /** * Stops the sprite from snapping to a grid during drag or release. + * * @method Phaser.InputHandler#disableSnap */ disableSnap: function () { @@ -44923,6 +40662,7 @@ Phaser.InputHandler.prototype = { /** * Bounds Rect check for the sprite drag + * * @method Phaser.InputHandler#checkBoundsRect */ checkBoundsRect: function () { @@ -44972,6 +40712,7 @@ Phaser.InputHandler.prototype = { /** * Parent Sprite Bounds check for the sprite drag. + * * @method Phaser.InputHandler#checkBoundsSprite */ checkBoundsSprite: function () { @@ -46270,7 +42011,7 @@ Phaser.SinglePad.prototype.constructor = Phaser.SinglePad; * @class Phaser.Key * @constructor * @param {Phaser.Game} game - Current game instance. -* @param {number} keycode - The key code this Key is responsible for. +* @param {integer} keycode - The key code this Key is responsible for. See {@link Phaser.KeyCode}. */ Phaser.Key = function (game, keycode) { @@ -46632,8 +42373,8 @@ Phaser.Key.prototype.constructor = Phaser.Key; /** * The Keyboard class monitors keyboard input and dispatches keyboard events. * -* _Be aware_ that many keyboards are unable to process certain combinations of keys due to hardware -* limitations known as ghosting. Full details here: http://www.html5gamedevs.com/topic/4876-impossible-to-use-more-than-2-keyboard-input-buttons-at-the-same-time/ +* _Note_: many keyboards are unable to process certain combinations of keys due to hardware limitations known as ghosting. +* See http://www.html5gamedevs.com/topic/4876-impossible-to-use-more-than-2-keyboard-input-buttons-at-the-same-time/ for more details. * * @class Phaser.Keyboard * @constructor @@ -46745,17 +42486,17 @@ Phaser.Keyboard.prototype = { this.callbackContext = context; - if (typeof onDown !== 'undefined') + if (onDown !== undefined && onDown !== null) { this.onDownCallback = onDown; } - if (typeof onUp !== 'undefined') + if (onUp !== undefined && onUp !== null) { this.onUpCallback = onUp; } - if (typeof onPress !== 'undefined') + if (onPress !== undefined && onPress !== null) { this.onPressCallback = onPress; } @@ -46767,7 +42508,7 @@ Phaser.Keyboard.prototype = { * The Key object can then be polled, have events attached to it, etc. * * @method Phaser.Keyboard#addKey - * @param {number} keycode - The keycode of the key, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key. * @return {Phaser.Key} The Key object which you can store locally and reference directly. */ addKey: function (keycode) { @@ -46786,13 +42527,15 @@ Phaser.Keyboard.prototype = { /** * A practical way to create an object containing user selected hotkeys. * - * For example: `addKeys( { 'up': Phaser.Keyboard.W, 'down': Phaser.Keyboard.S, 'left': Phaser.Keyboard.A, 'right': Phaser.Keyboard.D } );` + * For example, * - * Would return an object containing the properties `up`, `down`, `left` and `right` that you could poll just like a Phaser.Key object. + * addKeys( { 'up': Phaser.KeyCode.W, 'down': Phaser.KeyCode.S, 'left': Phaser.KeyCode.A, 'right': Phaser.KeyCode.D } ); + * + * would return an object containing properties (`up`, `down`, `left` and `right`) referring to {@link Phaser.Key} object. * * @method Phaser.Keyboard#addKeys - * @param {object} keys - A key mapping object, i.e. `{ 'up': Phaser.Keyboard.W, 'down': Phaser.Keyboard.S }` or `{ 'up': 52, 'down': 53 }`. - * @return {object} An object containing user selected properties + * @param {object} keys - A key mapping object, i.e. `{ 'up': Phaser.KeyCode.W, 'down': Phaser.KeyCode.S }` or `{ 'up': 52, 'down': 53 }`. + * @return {object} An object containing the properties mapped to {@link Phaser.Key} values. */ addKeys: function (keys) { @@ -46811,7 +42554,7 @@ Phaser.Keyboard.prototype = { * Removes a Key object from the Keyboard manager. * * @method Phaser.Keyboard#removeKey - * @param {number} keycode - The keycode of the key to remove, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to remove. */ removeKey: function (keycode) { @@ -46828,11 +42571,11 @@ Phaser.Keyboard.prototype = { * Creates and returns an object containing 4 hotkeys for Up, Down, Left and Right. * * @method Phaser.Keyboard#createCursorKeys - * @return {object} An object containing properties: up, down, left and right. Which can be polled like any other Phaser.Key object. + * @return {object} An object containing properties: `up`, `down`, `left` and `right` of {@link Phaser.Key} objects. */ createCursorKeys: function () { - return this.addKeys({ 'up': Phaser.Keyboard.UP, 'down': Phaser.Keyboard.DOWN, 'left': Phaser.Keyboard.LEFT, 'right': Phaser.Keyboard.RIGHT }); + return this.addKeys({ 'up': Phaser.KeyCode.UP, 'down': Phaser.KeyCode.DOWN, 'left': Phaser.KeyCode.LEFT, 'right': Phaser.KeyCode.RIGHT }); }, @@ -46841,6 +42584,7 @@ Phaser.Keyboard.prototype = { * This is called automatically by Phaser.Input and should not normally be invoked directly. * * @method Phaser.Keyboard#start + * @protected */ start: function () { @@ -46912,11 +42656,14 @@ Phaser.Keyboard.prototype = { /** * By default when a key is pressed Phaser will not stop the event from propagating up to the browser. * There are some keys this can be annoying for, like the arrow keys or space bar, which make the browser window scroll. - * You can use addKeyCapture to consume the keyboard event for specific keys so it doesn't bubble up to the the browser. + * + * The `addKeyCapture` method enables consuming keyboard event for specific keys so it doesn't bubble up to the the browser + * and cause the default browser behavior. + * * Pass in either a single keycode or an array/hash of keycodes. * * @method Phaser.Keyboard#addKeyCapture - * @param {number|array|object} keycode - Either a single numeric keycode or an array/hash of keycodes: [65, 67, 68]. + * @param {integer|integer[]|object} keycode - Either a single {@link Phaser.KeyCode keycode} or an array/hash of keycodes such as `[65, 67, 68]`. */ addKeyCapture: function (keycode) { @@ -46937,7 +42684,7 @@ Phaser.Keyboard.prototype = { * Removes an existing key capture. * * @method Phaser.Keyboard#removeKeyCapture - * @param {number} keycode + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} to remove capturing of. */ removeKeyCapture: function (keycode) { @@ -47100,7 +42847,7 @@ Phaser.Keyboard.prototype = { * or was pressed down longer ago than then given duration. * * @method Phaser.Keyboard#downDuration - * @param {number} keycode - The keycode of the key to check, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to check: i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. * @param {number} [duration=50] - The duration within which the key is considered as being just pressed. Given in ms. * @return {boolean} True if the key was pressed down within the given duration, false if not or null if the Key wasn't found. */ @@ -47122,7 +42869,7 @@ Phaser.Keyboard.prototype = { * or was pressed down longer ago than then given duration. * * @method Phaser.Keyboard#upDuration - * @param {number} keycode - The keycode of the key to check, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {Phaser.KeyCode|integer} keycode - The keycode of the key to check, i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. * @param {number} [duration=50] - The duration within which the key is considered as being just released. Given in ms. * @return {boolean} True if the key was released within the given duration, false if not or null if the Key wasn't found. */ @@ -47143,7 +42890,7 @@ Phaser.Keyboard.prototype = { * Returns true of the key is currently pressed down. Note that it can only detect key presses on the web browser. * * @method Phaser.Keyboard#isDown - * @param {number} keycode - The keycode of the key to check, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR + * @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key to check: i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. * @return {boolean} True if the key is currently down, false if not or null if the Key wasn't found. */ isDown: function (keycode) { @@ -47202,108 +42949,234 @@ Object.defineProperty(Phaser.Keyboard.prototype, "lastKey", { Phaser.Keyboard.prototype.constructor = Phaser.Keyboard; -Phaser.Keyboard.A = "A".charCodeAt(0); -Phaser.Keyboard.B = "B".charCodeAt(0); -Phaser.Keyboard.C = "C".charCodeAt(0); -Phaser.Keyboard.D = "D".charCodeAt(0); -Phaser.Keyboard.E = "E".charCodeAt(0); -Phaser.Keyboard.F = "F".charCodeAt(0); -Phaser.Keyboard.G = "G".charCodeAt(0); -Phaser.Keyboard.H = "H".charCodeAt(0); -Phaser.Keyboard.I = "I".charCodeAt(0); -Phaser.Keyboard.J = "J".charCodeAt(0); -Phaser.Keyboard.K = "K".charCodeAt(0); -Phaser.Keyboard.L = "L".charCodeAt(0); -Phaser.Keyboard.M = "M".charCodeAt(0); -Phaser.Keyboard.N = "N".charCodeAt(0); -Phaser.Keyboard.O = "O".charCodeAt(0); -Phaser.Keyboard.P = "P".charCodeAt(0); -Phaser.Keyboard.Q = "Q".charCodeAt(0); -Phaser.Keyboard.R = "R".charCodeAt(0); -Phaser.Keyboard.S = "S".charCodeAt(0); -Phaser.Keyboard.T = "T".charCodeAt(0); -Phaser.Keyboard.U = "U".charCodeAt(0); -Phaser.Keyboard.V = "V".charCodeAt(0); -Phaser.Keyboard.W = "W".charCodeAt(0); -Phaser.Keyboard.X = "X".charCodeAt(0); -Phaser.Keyboard.Y = "Y".charCodeAt(0); -Phaser.Keyboard.Z = "Z".charCodeAt(0); -Phaser.Keyboard.ZERO = "0".charCodeAt(0); -Phaser.Keyboard.ONE = "1".charCodeAt(0); -Phaser.Keyboard.TWO = "2".charCodeAt(0); -Phaser.Keyboard.THREE = "3".charCodeAt(0); -Phaser.Keyboard.FOUR = "4".charCodeAt(0); -Phaser.Keyboard.FIVE = "5".charCodeAt(0); -Phaser.Keyboard.SIX = "6".charCodeAt(0); -Phaser.Keyboard.SEVEN = "7".charCodeAt(0); -Phaser.Keyboard.EIGHT = "8".charCodeAt(0); -Phaser.Keyboard.NINE = "9".charCodeAt(0); -Phaser.Keyboard.NUMPAD_0 = 96; -Phaser.Keyboard.NUMPAD_1 = 97; -Phaser.Keyboard.NUMPAD_2 = 98; -Phaser.Keyboard.NUMPAD_3 = 99; -Phaser.Keyboard.NUMPAD_4 = 100; -Phaser.Keyboard.NUMPAD_5 = 101; -Phaser.Keyboard.NUMPAD_6 = 102; -Phaser.Keyboard.NUMPAD_7 = 103; -Phaser.Keyboard.NUMPAD_8 = 104; -Phaser.Keyboard.NUMPAD_9 = 105; -Phaser.Keyboard.NUMPAD_MULTIPLY = 106; -Phaser.Keyboard.NUMPAD_ADD = 107; -Phaser.Keyboard.NUMPAD_ENTER = 108; -Phaser.Keyboard.NUMPAD_SUBTRACT = 109; -Phaser.Keyboard.NUMPAD_DECIMAL = 110; -Phaser.Keyboard.NUMPAD_DIVIDE = 111; -Phaser.Keyboard.F1 = 112; -Phaser.Keyboard.F2 = 113; -Phaser.Keyboard.F3 = 114; -Phaser.Keyboard.F4 = 115; -Phaser.Keyboard.F5 = 116; -Phaser.Keyboard.F6 = 117; -Phaser.Keyboard.F7 = 118; -Phaser.Keyboard.F8 = 119; -Phaser.Keyboard.F9 = 120; -Phaser.Keyboard.F10 = 121; -Phaser.Keyboard.F11 = 122; -Phaser.Keyboard.F12 = 123; -Phaser.Keyboard.F13 = 124; -Phaser.Keyboard.F14 = 125; -Phaser.Keyboard.F15 = 126; -Phaser.Keyboard.COLON = 186; -Phaser.Keyboard.EQUALS = 187; -Phaser.Keyboard.COMMA = 188; -Phaser.Keyboard.UNDERSCORE = 189; -Phaser.Keyboard.PERIOD = 190; -Phaser.Keyboard.QUESTION_MARK = 191; -Phaser.Keyboard.TILDE = 192; -Phaser.Keyboard.OPEN_BRACKET = 219; -Phaser.Keyboard.BACKWARD_SLASH = 220; -Phaser.Keyboard.CLOSED_BRACKET = 221; -Phaser.Keyboard.QUOTES = 222; -Phaser.Keyboard.BACKSPACE = 8; -Phaser.Keyboard.TAB = 9; -Phaser.Keyboard.CLEAR = 12; -Phaser.Keyboard.ENTER = 13; -Phaser.Keyboard.SHIFT = 16; -Phaser.Keyboard.CONTROL = 17; -Phaser.Keyboard.ALT = 18; -Phaser.Keyboard.CAPS_LOCK = 20; -Phaser.Keyboard.ESC = 27; -Phaser.Keyboard.SPACEBAR = 32; -Phaser.Keyboard.PAGE_UP = 33; -Phaser.Keyboard.PAGE_DOWN = 34; -Phaser.Keyboard.END = 35; -Phaser.Keyboard.HOME = 36; -Phaser.Keyboard.LEFT = 37; -Phaser.Keyboard.UP = 38; -Phaser.Keyboard.RIGHT = 39; -Phaser.Keyboard.DOWN = 40; -Phaser.Keyboard.PLUS = 43; -Phaser.Keyboard.MINUS = 44; -Phaser.Keyboard.INSERT = 45; -Phaser.Keyboard.DELETE = 46; -Phaser.Keyboard.HELP = 47; -Phaser.Keyboard.NUM_LOCK = 144; +/** +* A key code represents a physical key on a keyboard. +* +* The KeyCode class contains commonly supported keyboard key codes which can be used +* as keycode`-parameters in several {@link Phaser.Keyboard} and {@link Phaser.Key} methods. +* +* _Note_: These values should only be used indirectly, eg. as `Phaser.KeyCode.KEY`. +* Future versions may replace the actual values, such that they remain compatible with `keycode`-parameters. +* The current implementation maps to the {@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode KeyboardEvent.keyCode} property. +* +* _Note_: Use `Phaser.KeyCode.KEY` instead of `Phaser.Keyboard.KEY` to refer to a key code; +* the latter approach is supported for compatibility. +* +* @namespace +*/ +Phaser.KeyCode = { + /** @static */ + A: "A".charCodeAt(0), + /** @static */ + B: "B".charCodeAt(0), + /** @static */ + C: "C".charCodeAt(0), + /** @static */ + D: "D".charCodeAt(0), + /** @static */ + E: "E".charCodeAt(0), + /** @static */ + F: "F".charCodeAt(0), + /** @static */ + G: "G".charCodeAt(0), + /** @static */ + H: "H".charCodeAt(0), + /** @static */ + I: "I".charCodeAt(0), + /** @static */ + J: "J".charCodeAt(0), + /** @static */ + K: "K".charCodeAt(0), + /** @static */ + L: "L".charCodeAt(0), + /** @static */ + M: "M".charCodeAt(0), + /** @static */ + N: "N".charCodeAt(0), + /** @static */ + O: "O".charCodeAt(0), + /** @static */ + P: "P".charCodeAt(0), + /** @static */ + Q: "Q".charCodeAt(0), + /** @static */ + R: "R".charCodeAt(0), + /** @static */ + S: "S".charCodeAt(0), + /** @static */ + T: "T".charCodeAt(0), + /** @static */ + U: "U".charCodeAt(0), + /** @static */ + V: "V".charCodeAt(0), + /** @static */ + W: "W".charCodeAt(0), + /** @static */ + X: "X".charCodeAt(0), + /** @static */ + Y: "Y".charCodeAt(0), + /** @static */ + Z: "Z".charCodeAt(0), + /** @static */ + ZERO: "0".charCodeAt(0), + /** @static */ + ONE: "1".charCodeAt(0), + /** @static */ + TWO: "2".charCodeAt(0), + /** @static */ + THREE: "3".charCodeAt(0), + /** @static */ + FOUR: "4".charCodeAt(0), + /** @static */ + FIVE: "5".charCodeAt(0), + /** @static */ + SIX: "6".charCodeAt(0), + /** @static */ + SEVEN: "7".charCodeAt(0), + /** @static */ + EIGHT: "8".charCodeAt(0), + /** @static */ + NINE: "9".charCodeAt(0), + /** @static */ + NUMPAD_0: 96, + /** @static */ + NUMPAD_1: 97, + /** @static */ + NUMPAD_2: 98, + /** @static */ + NUMPAD_3: 99, + /** @static */ + NUMPAD_4: 100, + /** @static */ + NUMPAD_5: 101, + /** @static */ + NUMPAD_6: 102, + /** @static */ + NUMPAD_7: 103, + /** @static */ + NUMPAD_8: 104, + /** @static */ + NUMPAD_9: 105, + /** @static */ + NUMPAD_MULTIPLY: 106, + /** @static */ + NUMPAD_ADD: 107, + /** @static */ + NUMPAD_ENTER: 108, + /** @static */ + NUMPAD_SUBTRACT: 109, + /** @static */ + NUMPAD_DECIMAL: 110, + /** @static */ + NUMPAD_DIVIDE: 111, + /** @static */ + F1: 112, + /** @static */ + F2: 113, + /** @static */ + F3: 114, + /** @static */ + F4: 115, + /** @static */ + F5: 116, + /** @static */ + F6: 117, + /** @static */ + F7: 118, + /** @static */ + F8: 119, + /** @static */ + F9: 120, + /** @static */ + F10: 121, + /** @static */ + F11: 122, + /** @static */ + F12: 123, + /** @static */ + F13: 124, + /** @static */ + F14: 125, + /** @static */ + F15: 126, + /** @static */ + COLON: 186, + /** @static */ + EQUALS: 187, + /** @static */ + COMMA: 188, + /** @static */ + UNDERSCORE: 189, + /** @static */ + PERIOD: 190, + /** @static */ + QUESTION_MARK: 191, + /** @static */ + TILDE: 192, + /** @static */ + OPEN_BRACKET: 219, + /** @static */ + BACKWARD_SLASH: 220, + /** @static */ + CLOSED_BRACKET: 221, + /** @static */ + QUOTES: 222, + /** @static */ + BACKSPACE: 8, + /** @static */ + TAB: 9, + /** @static */ + CLEAR: 12, + /** @static */ + ENTER: 13, + /** @static */ + SHIFT: 16, + /** @static */ + CONTROL: 17, + /** @static */ + ALT: 18, + /** @static */ + CAPS_LOCK: 20, + /** @static */ + ESC: 27, + /** @static */ + SPACEBAR: 32, + /** @static */ + PAGE_UP: 33, + /** @static */ + PAGE_DOWN: 34, + /** @static */ + END: 35, + /** @static */ + HOME: 36, + /** @static */ + LEFT: 37, + /** @static */ + UP: 38, + /** @static */ + RIGHT: 39, + /** @static */ + DOWN: 40, + /** @static */ + PLUS: 43, + /** @static */ + MINUS: 44, + /** @static */ + INSERT: 45, + /** @static */ + DELETE: 46, + /** @static */ + HELP: 47, + /** @static */ + NUM_LOCK: 144 +}; + +// Duplicate Phaser.KeyCode values in Phaser.Keyboard for compatibility +for (var key in Phaser.KeyCode) { + if (Phaser.KeyCode.hasOwnProperty(key) && !key.match(/[a-z]/)) { + Phaser.Keyboard[key] = Phaser.KeyCode[key]; + } +} /** * @author Richard Davey @@ -47838,7 +43711,9 @@ Phaser.Component.Core.prototype = { * The z depth of this Game Object within its parent Group. * No two objects in a Group can have the same z value. * This value is adjusted automatically whenever the Group hierarchy changes. + * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. * @property {number} z + * @readOnly */ z: 0, @@ -48339,9 +44214,13 @@ Phaser.Component.Destroy.prototype = { // In case Pixi is still going to try and render it even though destroyed this.renderable = false; + if (this.transformCallback) + { + this.transformCallback = null; + this.transformCallbackContext = null; + } + // Pixi level DisplayObject destroy - this.transformCallback = null; - this.transformCallbackContext = null; this.hitArea = null; this.parent = null; this.stage = null; @@ -48351,8 +44230,6 @@ Phaser.Component.Destroy.prototype = { this._currentBounds = null; this._mask = null; - - this._destroyCachedSprite(); this.destroyPhase = false; @@ -49006,10 +44883,10 @@ Phaser.Component.LifeSpan.prototype = { /** * A useful flag to control if the Game Object is alive or dead. - * + * * This is set automatically by the Health components `damage` method should the object run out of health. * Or you can toggle it via your game code. - * + * * This property is mostly just provided to be used by your game - it doesn't effect rendering or logic updates. * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. * @property {boolean} alive @@ -49019,12 +44896,12 @@ Phaser.Component.LifeSpan.prototype = { /** * The lifespan allows you to give a Game Object a lifespan in milliseconds. - * + * * Once the Game Object is 'born' you can set this to a positive value. - * + * * It is automatically decremented by the millisecond equivalent of `game.time.physicsElapsed` each frame. * When it reaches zero it will call the `kill` method. - * + * * Very handy for particles, bullets, collectibles, or any other short-lived entity. * * @property {number} lifespan @@ -49034,9 +44911,9 @@ Phaser.Component.LifeSpan.prototype = { /** * Brings a 'dead' Game Object back to life, optionally resetting its health value in the process. - * + * * A resurrected Game Object has its `alive`, `exists` and `visible` properties all set to true. - * + * * It will dispatch the `onRevived` event. Listen to `events.onRevived` for the signal. * * @method @@ -49050,10 +44927,10 @@ Phaser.Component.LifeSpan.prototype = { this.alive = true; this.exists = true; this.visible = true; - - if (typeof this.health === 'number') + + if (typeof this.heal === 'function') { - this.health = health; + this.heal(health); } if (this.events) @@ -49067,12 +44944,12 @@ Phaser.Component.LifeSpan.prototype = { /** * Kills a Game Object. A killed Game Object has its `alive`, `exists` and `visible` properties all set to false. - * + * * It will dispatch the `onKilled` event. You can listen to `events.onKilled` for the signal. - * - * Note that killing a Game Object is a way for you to quickly recycle it in an object pool, + * + * Note that killing a Game Object is a way for you to quickly recycle it in an object pool, * it doesn't destroy the object or free it up from memory. - * + * * If you don't need this Game Object any more you should call `destroy` instead. * * @method @@ -49616,7 +45493,7 @@ Phaser.Component.ScaleMinMax.prototype = { * The callback that will apply any scale limiting to the worldTransform. * @property {function} transformCallback */ - transformCallback: this.checkTransform, + transformCallback: null, /** * The context under which `transformCallback` is called. @@ -49752,6 +45629,16 @@ Phaser.Component.ScaleMinMax.prototype = { } } + if (this.scaleMin === null) + { + this.transformCallback = null; + } + else + { + this.transformCallback = this.checkTransform; + this.transformCallbackContext = this; + } + } }; @@ -49975,7 +45862,7 @@ Phaser.GameObjectFactory.prototype = { * are automatically given a physics body. * * @method Phaser.GameObjectFactory#physicsGroup - * @param {number} [physicsBodyType=Phaser.Physics.ARCADE] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, etc. + * @param {number} [physicsBodyType=Phaser.Physics.ARCADE] - If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2JS, Phaser.Physics.NINJA, etc. * @param {any} [parent] - The parent Group or DisplayObjectContainer that will hold this group, if any. If set to null the Group won't be added to the display list. If undefined it will be added to World by default. * @param {string} [name='group'] - A name for this Group. Not used internally but useful for debugging. * @param {boolean} [addToStage=false] - If set to true this Group will be added directly to the Game.Stage instead of Game.World. @@ -50342,7 +46229,7 @@ Phaser.GameObjectFactory.prototype = { */ filter: function (filter) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var filter = new Phaser.Filter[filter](this.game); @@ -50788,7 +46675,7 @@ Phaser.GameObjectCreator.prototype = { */ filter: function (filter) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var filter = new Phaser.Filter[filter](this.game); @@ -51018,450 +46905,6 @@ Phaser.Image.prototype.preUpdate = function() { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* A TileSprite is a Sprite that has a repeating texture. The texture can be scrolled and scaled independently of the TileSprite itself. -* Textures will automatically wrap and are designed so that you can create game backdrops using seamless textures as a source. -* -* TileSprites have no input handler or physics bodies by default, both need enabling in the same way as for normal Sprites. -* -* You shouldn't ever create a TileSprite any larger than your actual screen size. If you want to create a large repeating background -* that scrolls across the whole map of your game, then you create a TileSprite that fits the screen size and then use the `tilePosition` -* property to scroll the texture as the player moves. If you create a TileSprite that is thousands of pixels in size then it will -* consume huge amounts of memory and cause performance issues. Remember: use `tilePosition` to scroll your texture and `tileScale` to -* adjust the scale of the texture - don't resize the sprite itself or make it larger than it needs. -* -* An important note about texture dimensions: -* -* When running under Canvas a TileSprite can use any texture size without issue. When running under WebGL the texture should ideally be -* a power of two in size (i.e. 4, 8, 16, 32, 64, 128, 256, 512, etch pixels width by height). If the texture isn't a power of two -* it will be rendered to a blank canvas that is the correct size, which means you may have 'blank' areas appearing to the right and -* bottom of your frame. To avoid this ensure your textures are perfect powers of two. -* -* TileSprites support animations in the same way that Sprites do. You add and play animations using the AnimationManager. However -* if your game is running under WebGL please note that each frame of the animation must be a power of two in size, or it will receive -* additional padding to enforce it to be so. -* -* @class Phaser.TileSprite -* @constructor -* @extends PIXI.TilingSprite -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.Health -* @extends Phaser.Component.InCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the TileSprite at. -* @param {number} y - The y coordinate (in world space) to position the TileSprite at. -* @param {number} width - The width of the TileSprite. -* @param {number} height - The height of the TileSprite. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the TileSprite during rendering. It can be a string which is a reference to the Phaser Image Cache entry, or an instance of a RenderTexture, PIXI.Texture or BitmapData. -* @param {string|number} frame - If this TileSprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.TileSprite = function (game, x, y, width, height, key, frame) { - - x = x || 0; - y = y || 0; - width = width || 256; - height = height || 256; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.TILESPRITE; - - /** - * @property {number} physicsType - The const physics body type of this object. - * @readonly - */ - this.physicsType = Phaser.SPRITE; - - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - - var def = game.cache.getImage('__default', true); - - PIXI.TilingSprite.call(this, new PIXI.Texture(def.base), width, height); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.TileSprite.prototype = Object.create(PIXI.TilingSprite.prototype); -Phaser.TileSprite.prototype.constructor = Phaser.TileSprite; - -Phaser.Component.Core.install.call(Phaser.TileSprite.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Destroy', - 'FixedToCamera', - 'Health', - 'InCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'Smoothed' -]); - -Phaser.TileSprite.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.TileSprite.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.TileSprite.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.TileSprite.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.TileSprite#preUpdate -* @memberof Phaser.TileSprite -*/ -Phaser.TileSprite.prototype.preUpdate = function() { - - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Sets this TileSprite to automatically scroll in the given direction until stopped via TileSprite.stopScroll(). -* The scroll speed is specified in pixels per second. -* A negative x value will scroll to the left. A positive x value will scroll to the right. -* A negative y value will scroll up. A positive y value will scroll down. -* -* @method Phaser.TileSprite#autoScroll -* @memberof Phaser.TileSprite -* @param {number} x - Horizontal scroll speed in pixels per second. -* @param {number} y - Vertical scroll speed in pixels per second. -*/ -Phaser.TileSprite.prototype.autoScroll = function(x, y) { - - this._scroll.set(x, y); - -}; - -/** -* Stops an automatically scrolling TileSprite. -* -* @method Phaser.TileSprite#stopScroll -* @memberof Phaser.TileSprite -*/ -Phaser.TileSprite.prototype.stopScroll = function() { - - this._scroll.set(0, 0); - -}; - -/** -* Destroys the TileSprite. This removes it from its parent group, destroys the event and animation handlers if present -* and nulls its reference to game, freeing it up for garbage collection. -* -* @method Phaser.TileSprite#destroy -* @memberof Phaser.TileSprite -* @param {boolean} [destroyChildren=true] - Should every child of this object have its destroy method called? -*/ -Phaser.TileSprite.prototype.destroy = function(destroyChildren) { - - Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren); - - PIXI.TilingSprite.prototype.destroy.call(this); - -}; - -/** -* Resets the TileSprite. This places the TileSprite at the given x/y world coordinates, resets the tilePosition and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. -* If the TileSprite has a physics body that too is reset. -* -* @method Phaser.TileSprite#reset -* @memberof Phaser.TileSprite -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @return (Phaser.TileSprite) This instance. -*/ -Phaser.TileSprite.prototype.reset = function(x, y) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y); - - this.tilePosition.x = 0; - this.tilePosition.y = 0; - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd, Richard Davey -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* A Rope is a Sprite that has a repeating texture. The texture can be scrolled and scaled and will automatically wrap on the edges as it does so. -* Please note that Ropes, as with normal Sprites, have no input handler or physics bodies by default. Both need enabling. -* Example usage: https://github.com/codevinsky/phaser-rope-demo/blob/master/dist/demo.js -* -* @class Phaser.Rope -* @constructor -* @extends PIXI.Rope -* @extends Phaser.Component.Core -* @extends Phaser.Component.Angle -* @extends Phaser.Component.Animation -* @extends Phaser.Component.AutoCull -* @extends Phaser.Component.Bounds -* @extends Phaser.Component.BringToTop -* @extends Phaser.Component.Crop -* @extends Phaser.Component.Delta -* @extends Phaser.Component.Destroy -* @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InputEnabled -* @extends Phaser.Component.InWorld -* @extends Phaser.Component.LifeSpan -* @extends Phaser.Component.LoadTexture -* @extends Phaser.Component.Overlap -* @extends Phaser.Component.PhysicsBody -* @extends Phaser.Component.Reset -* @extends Phaser.Component.ScaleMinMax -* @extends Phaser.Component.Smoothed -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Rope at. -* @param {number} y - The y coordinate (in world space) to position the Rope at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Rope during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Rope is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -* @param {Array} points - An array of {Phaser.Point}. -*/ -Phaser.Rope = function (game, x, y, key, frame, points) { - - this.points = []; - this.points = points; - this._hasUpdateAnimation = false; - this._updateAnimationCallback = null; - x = x || 0; - y = y || 0; - key = key || null; - frame = frame || null; - - /** - * @property {number} type - The const type of this object. - * @readonly - */ - this.type = Phaser.ROPE; - - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); - - Phaser.Component.Core.init.call(this, game, x, y, key, frame); - -}; - -Phaser.Rope.prototype = Object.create(PIXI.Rope.prototype); -Phaser.Rope.prototype.constructor = Phaser.Rope; - -Phaser.Component.Core.install.call(Phaser.Rope.prototype, [ - 'Angle', - 'Animation', - 'AutoCull', - 'Bounds', - 'BringToTop', - 'Crop', - 'Delta', - 'Destroy', - 'FixedToCamera', - 'InputEnabled', - 'InWorld', - 'LifeSpan', - 'LoadTexture', - 'Overlap', - 'PhysicsBody', - 'Reset', - 'ScaleMinMax', - 'Smoothed' -]); - -Phaser.Rope.prototype.preUpdatePhysics = Phaser.Component.PhysicsBody.preUpdate; -Phaser.Rope.prototype.preUpdateLifeSpan = Phaser.Component.LifeSpan.preUpdate; -Phaser.Rope.prototype.preUpdateInWorld = Phaser.Component.InWorld.preUpdate; -Phaser.Rope.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; - -/** -* Automatically called by World.preUpdate. -* -* @method Phaser.Rope#preUpdate -* @memberof Phaser.Rope -*/ -Phaser.Rope.prototype.preUpdate = function() { - - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) - { - return false; - } - - return this.preUpdateCore(); - -}; - -/** -* Override and use this function in your own custom objects to handle any update requirements you may have. -* -* @method Phaser.Rope#update -* @memberof Phaser.Rope -*/ -Phaser.Rope.prototype.update = function() { - - if (this._hasUpdateAnimation) - { - this.updateAnimation.call(this); - } - -}; - -/** -* Resets the Rope. This places the Rope at the given x/y world coordinates, resets the tilePosition and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. -* If the Rope has a physics body that too is reset. -* -* @method Phaser.Rope#reset -* @memberof Phaser.Rope -* @param {number} x - The x coordinate (in world space) to position the Sprite at. -* @param {number} y - The y coordinate (in world space) to position the Sprite at. -* @return (Phaser.Rope) This instance. -*/ -Phaser.Rope.prototype.reset = function(x, y) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y); - - this.tilePosition.x = 0; - this.tilePosition.y = 0; - - return this; - -}; - -/** -* A Rope will call it's updateAnimation function on each update loop if it has one -* -* @name Phaser.Rope#updateAnimation -* @property {function} updateAnimation - Set to a function if you'd like the rope to animate during the update phase. Set to false or null to remove it. -*/ -Object.defineProperty(Phaser.Rope.prototype, "updateAnimation", { - - get: function () { - - return this._updateAnimation; - - }, - - set: function (value) { - - if (value && typeof value === 'function') - { - this._hasUpdateAnimation = true; - this._updateAnimation = value; - } - else - { - this._hasUpdateAnimation = false; - this._updateAnimation = null; - } - - } - -}); - -/** -* The segments that make up the rope body as an array of Phaser.Rectangles -* -* @name Phaser.Rope#segments -* @property {Phaser.Rectangles[]} updateAnimation - Returns an array of Phaser.Rectangles that represent the segments of the given rope -*/ -Object.defineProperty(Phaser.Rope.prototype, "segments", { - - get: function() { - - var segments = []; - var index, x1, y1, x2, y2, width, height, rect; - - for (var i = 0; i < this.points.length; i++) - { - index = i * 4; - - x1 = this.vertices[index] * this.scale.x; - y1 = this.vertices[index + 1] * this.scale.y; - x2 = this.vertices[index + 4] * this.scale.x; - y2 = this.vertices[index + 3] * this.scale.y; - - width = Phaser.Math.difference(x1, x2); - height = Phaser.Math.difference(y1, y2); - - x1 += this.world.x; - y1 += this.world.y; - rect = new Phaser.Rectangle(x1, y1, width, height); - segments.push(rect); - } - - return segments; - } - -}); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * Create a new `Button` object. A Button is a special type of Sprite that is set-up to handle Pointer events automatically. * @@ -51624,10 +47067,20 @@ Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame, /** * If true then onOver events (such as onOverSound) will only be triggered if the Pointer object causing them was the Mouse Pointer. * The frame will still be changed as applicable. + * * @property {boolean} onOverMouseOnly * @default */ - this.onOverMouseOnly = false; + this.onOverMouseOnly = true; + + /** + * Suppresse the over event if a pointer was just released and it matches the given {@link Phaser.PointerModer pointer mode bitmask}. + * + * This behavior was introduced in Phaser 2.3.1; this property is a soft-revert of the change. + * + * @property {Phaser.PointerMode?} justReleasedPreventsOver=ACTIVE_CURSOR + */ + this.justReleasedPreventsOver = Phaser.PointerMode.TOUCH; /** * When true the the texture frame will not be automatically switched on up/down/over/out events. @@ -51638,7 +47091,10 @@ Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame, /** * When the Button is touched / clicked and then released you can force it to enter a state of "out" instead of "up". - * @property {boolean} forceOut + * + * This can also accept a {@link Phaser.PointerModer pointer mode bitmask} for more refined control. + * + * @property {boolean|Phaser.PointerMode} forceOut=false * @default */ this.forceOut = false; @@ -51930,9 +47386,10 @@ Phaser.Button.prototype.setUpSound = function (sound, marker) { */ Phaser.Button.prototype.onInputOverHandler = function (sprite, pointer) { - // If the Pointer was only just released then we don't fire an over event - if (pointer.justReleased()) + if (pointer.justReleased() && + (this.justReleasedPreventsOver & pointer.pointerMode) === pointer.pointerMode) { + // If the Pointer was only just released then we don't fire an over event return; } @@ -52015,7 +47472,7 @@ Phaser.Button.prototype.onInputUpHandler = function (sprite, pointer, isOver) { return; } - if (this.forceOut) + if (this.forceOut === true || (this.forceOut & pointer.pointerMode) === pointer.pointerMode) { this.changeStateFrame(STATE_OUT); } @@ -52086,172 +47543,6 @@ Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* Create a new `Particle` object. Particles are extended Sprites that are emitted by a particle emitter such as Phaser.Particles.Arcade.Emitter. -* -* @class Phaser.Particle -* @constructor -* @extends Phaser.Sprite -* @param {Phaser.Game} game - A reference to the currently running game. -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. -* @param {string|number} frame - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. -*/ -Phaser.Particle = function (game, x, y, key, frame) { - - Phaser.Sprite.call(this, game, x, y, key, frame); - - /** - * @property {boolean} autoScale - If this Particle automatically scales this is set to true by Particle.setScaleData. - * @protected - */ - this.autoScale = false; - - /** - * @property {array} scaleData - A reference to the scaleData array owned by the Emitter that emitted this Particle. - * @protected - */ - this.scaleData = null; - - /** - * @property {number} _s - Internal cache var for tracking auto scale. - * @private - */ - this._s = 0; - - /** - * @property {boolean} autoAlpha - If this Particle automatically changes alpha this is set to true by Particle.setAlphaData. - * @protected - */ - this.autoAlpha = false; - - /** - * @property {array} alphaData - A reference to the alphaData array owned by the Emitter that emitted this Particle. - * @protected - */ - this.alphaData = null; - - /** - * @property {number} _a - Internal cache var for tracking auto alpha. - * @private - */ - this._a = 0; - -}; - -Phaser.Particle.prototype = Object.create(Phaser.Sprite.prototype); -Phaser.Particle.prototype.constructor = Phaser.Particle; - -/** -* Updates the Particle scale or alpha if autoScale and autoAlpha are set. -* -* @method Phaser.Particle#update -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.update = function() { - - if (this.autoScale) - { - this._s--; - - if (this._s) - { - this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); - } - else - { - this.autoScale = false; - } - } - - if (this.autoAlpha) - { - this._a--; - - if (this._a) - { - this.alpha = this.alphaData[this._a].v; - } - else - { - this.autoAlpha = false; - } - } - -}; - -/** -* Called by the Emitter when this particle is emitted. Left empty for you to over-ride as required. -* -* @method Phaser.Particle#onEmit -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.onEmit = function() { -}; - -/** -* Called by the Emitter if autoAlpha has been enabled. Passes over the alpha ease data and resets the alpha counter. -* -* @method Phaser.Particle#setAlphaData -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.setAlphaData = function(data) { - - this.alphaData = data; - this._a = data.length - 1; - this.alpha = this.alphaData[this._a].v; - this.autoAlpha = true; - -}; - -/** -* Called by the Emitter if autoScale has been enabled. Passes over the scale ease data and resets the scale counter. -* -* @method Phaser.Particle#setScaleData -* @memberof Phaser.Particle -*/ -Phaser.Particle.prototype.setScaleData = function(data) { - - this.scaleData = data; - this._s = data.length - 1; - this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); - this.autoScale = true; - -}; - -/** -* Resets the Particle. This places the Particle at the given x/y world coordinates and then -* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state and health values. -* If the Particle has a physics body that too is reset. -* -* @method Phaser.Particle#reset -* @memberof Phaser.Particle -* @param {number} x - The x coordinate (in world space) to position the Particle at. -* @param {number} y - The y coordinate (in world space) to position the Particle at. -* @param {number} [health=1] - The health to give the Particle. -* @return (Phaser.Particle) This instance. -*/ -Phaser.Particle.prototype.reset = function(x, y, health) { - - Phaser.Component.Reset.prototype.reset.call(this, x, y, health); - - this.alpha = 1; - this.scale.set(1); - - this.autoScale = false; - this.autoAlpha = false; - - return this; - -}; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * A BitmapData object contains a Canvas element to which you can draw anything you like via normal Canvas context operations. * A single BitmapData can be used as the texture for one or many Images/Sprites. @@ -52473,23 +47764,24 @@ Phaser.BitmapData.prototype = { /** * Shifts the contents of this BitmapData by the distances given. * - * The image will wrap-around the edges on all sides. + * The image will wrap-around the edges on all sides if the wrap argument is true (the default). * * @method Phaser.BitmapData#move * @param {integer} x - The amount of pixels to horizontally shift the canvas by. Use a negative value to shift to the left, positive to the right. * @param {integer} y - The amount of pixels to vertically shift the canvas by. Use a negative value to shift up, positive to shift down. + * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. * @return {Phaser.BitmapData} This BitmapData object for method chaining. */ - move: function (x, y) { + move: function (x, y, wrap) { if (x !== 0) { - this.moveH(x); + this.moveH(x, wrap); } if (y !== 0) { - this.moveV(y); + this.moveV(y, wrap); } return this; @@ -52499,13 +47791,16 @@ Phaser.BitmapData.prototype = { /** * Shifts the contents of this BitmapData horizontally. * - * The image will wrap-around the sides. + * The image will wrap-around the sides if the wrap argument is true (the default). * * @method Phaser.BitmapData#moveH * @param {integer} distance - The amount of pixels to horizontally shift the canvas by. Use a negative value to shift to the left, positive to the right. + * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. * @return {Phaser.BitmapData} This BitmapData object for method chaining. */ - moveH: function (distance) { + moveH: function (distance, wrap) { + + if (wrap === undefined) { wrap = true; } var c = this._swapCanvas; var ctx = c.getContext('2d'); @@ -52522,7 +47817,10 @@ Phaser.BitmapData.prototype = { var w = this.width - distance; // Left-hand chunk - ctx.drawImage(src, 0, 0, distance, h, w, 0, distance, h); + if (wrap) + { + ctx.drawImage(src, 0, 0, distance, h, w, 0, distance, h); + } // Rest of the image ctx.drawImage(src, distance, 0, w, h, 0, 0, w, h); @@ -52533,7 +47831,10 @@ Phaser.BitmapData.prototype = { var w = this.width - distance; // Right-hand chunk - ctx.drawImage(src, w, 0, distance, h, 0, 0, distance, h); + if (wrap) + { + ctx.drawImage(src, w, 0, distance, h, 0, 0, distance, h); + } // Rest of the image ctx.drawImage(src, 0, 0, w, h, distance, 0, w, h); @@ -52548,13 +47849,16 @@ Phaser.BitmapData.prototype = { /** * Shifts the contents of this BitmapData vertically. * - * The image will wrap-around the sides. + * The image will wrap-around the sides if the wrap argument is true (the default). * * @method Phaser.BitmapData#moveV * @param {integer} distance - The amount of pixels to vertically shift the canvas by. Use a negative value to shift up, positive to shift down. + * @param {boolean} [wrap=true] - Wrap the content of the BitmapData. * @return {Phaser.BitmapData} This BitmapData object for method chaining. */ - moveV: function (distance) { + moveV: function (distance, wrap) { + + if (wrap === undefined) { wrap = true; } var c = this._swapCanvas; var ctx = c.getContext('2d'); @@ -52571,7 +47875,10 @@ Phaser.BitmapData.prototype = { var h = this.height - distance; // Top chunk - ctx.drawImage(src, 0, 0, w, distance, 0, h, w, distance); + if (wrap) + { + ctx.drawImage(src, 0, 0, w, distance, 0, h, w, distance); + } // Rest of the image ctx.drawImage(src, 0, distance, w, h, 0, 0, w, h); @@ -52582,7 +47889,10 @@ Phaser.BitmapData.prototype = { var h = this.height - distance; // Bottom chunk - ctx.drawImage(src, 0, h, w, distance, 0, 0, w, distance); + if (wrap) + { + ctx.drawImage(src, 0, h, w, distance, 0, 0, w, distance); + } // Rest of the image ctx.drawImage(src, 0, 0, w, h, 0, distance, w, h); @@ -52686,6 +47996,8 @@ Phaser.BitmapData.prototype = { this.context.clearRect(x, y, width, height); + this.update(); + this.dirty = true; return this; @@ -55105,6 +50417,8 @@ PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode) canvasBuffer.context.scale(resolution, resolution); canvasBuffer.context.translate(-bounds.x, -bounds.y); + + // Call here PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); @@ -55222,6 +50536,7 @@ PIXI.Graphics.prototype._renderCanvas = function(renderSession) } this._cachedSprite.alpha = this.alpha; + PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); return; @@ -55762,6 +51077,1405 @@ PIXI.GraphicsData.prototype.clone = function() { ); }; +/* + PolyK library + url: http://polyk.ivank.net + Released under MIT licence. + + Copyright (c) 2012 Ivan Kuckir + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + This is an amazing lib! + + Slightly modified by Mat Groves (matgroves.com); +*/ + +/** + * Based on the Polyk library http://polyk.ivank.net released under MIT licence. + * This is an amazing lib! + * Slightly modified by Mat Groves (matgroves.com); + * @class PolyK + */ +PIXI.PolyK = {}; + +/** + * Triangulates shapes for webGL graphic fills. + * + * @method Triangulate + */ +PIXI.PolyK.Triangulate = function(p) +{ + var sign = true; + + var n = p.length >> 1; + if(n < 3) return []; + + var tgs = []; + var avl = []; + for(var i = 0; i < n; i++) avl.push(i); + + i = 0; + var al = n; + while(al > 3) + { + var i0 = avl[(i+0)%al]; + var i1 = avl[(i+1)%al]; + var i2 = avl[(i+2)%al]; + + var ax = p[2*i0], ay = p[2*i0+1]; + var bx = p[2*i1], by = p[2*i1+1]; + var cx = p[2*i2], cy = p[2*i2+1]; + + var earFound = false; + if(PIXI.PolyK._convex(ax, ay, bx, by, cx, cy, sign)) + { + earFound = true; + for(var j = 0; j < al; j++) + { + var vi = avl[j]; + if(vi === i0 || vi === i1 || vi === i2) continue; + + if(PIXI.PolyK._PointInTriangle(p[2*vi], p[2*vi+1], ax, ay, bx, by, cx, cy)) { + earFound = false; + break; + } + } + } + + if(earFound) + { + tgs.push(i0, i1, i2); + avl.splice((i+1)%al, 1); + al--; + i = 0; + } + else if(i++ > 3*al) + { + // need to flip flip reverse it! + // reset! + if(sign) + { + tgs = []; + avl = []; + for(i = 0; i < n; i++) avl.push(i); + + i = 0; + al = n; + + sign = false; + } + else + { + // window.console.log("PIXI Warning: shape too complex to fill"); + return null; + } + } + } + + tgs.push(avl[0], avl[1], avl[2]); + return tgs; +}; + +/** + * Checks whether a point is within a triangle + * + * @method _PointInTriangle + * @param px {Number} x coordinate of the point to test + * @param py {Number} y coordinate of the point to test + * @param ax {Number} x coordinate of the a point of the triangle + * @param ay {Number} y coordinate of the a point of the triangle + * @param bx {Number} x coordinate of the b point of the triangle + * @param by {Number} y coordinate of the b point of the triangle + * @param cx {Number} x coordinate of the c point of the triangle + * @param cy {Number} y coordinate of the c point of the triangle + * @private + * @return {Boolean} + */ +PIXI.PolyK._PointInTriangle = function(px, py, ax, ay, bx, by, cx, cy) +{ + var v0x = cx-ax; + var v0y = cy-ay; + var v1x = bx-ax; + var v1y = by-ay; + var v2x = px-ax; + var v2y = py-ay; + + var dot00 = v0x*v0x+v0y*v0y; + var dot01 = v0x*v1x+v0y*v1y; + var dot02 = v0x*v2x+v0y*v2y; + var dot11 = v1x*v1x+v1y*v1y; + var dot12 = v1x*v2x+v1y*v2y; + + var invDenom = 1 / (dot00 * dot11 - dot01 * dot01); + var u = (dot11 * dot02 - dot01 * dot12) * invDenom; + var v = (dot00 * dot12 - dot01 * dot02) * invDenom; + + // Check if point is in triangle + return (u >= 0) && (v >= 0) && (u + v < 1); +}; + +/** + * Checks whether a shape is convex + * + * @method _convex + * @private + * @return {Boolean} + */ +PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) +{ + return ((ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0) === sign; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * A set of functions used by the webGL renderer to draw the primitive graphics data + * + * @class WebGLGraphics + * @private + * @static + */ +PIXI.WebGLGraphics = function() +{ +}; + +/** + * Renders the graphics object + * + * @static + * @private + * @method renderGraphics + * @param graphics {Graphics} + * @param renderSession {Object} + */ +PIXI.WebGLGraphics.renderGraphics = function(graphics, renderSession)//projection, offset) +{ + var gl = renderSession.gl; + var projection = renderSession.projection, + offset = renderSession.offset, + shader = renderSession.shaderManager.primitiveShader, + webGLData; + + if(graphics.dirty) + { + PIXI.WebGLGraphics.updateGraphics(graphics, gl); + } + + var webGL = graphics._webGL[gl.id]; + + // This could be speeded up for sure! + + for (var i = 0; i < webGL.data.length; i++) + { + if(webGL.data[i].mode === 1) + { + webGLData = webGL.data[i]; + + renderSession.stencilManager.pushStencil(graphics, webGLData, renderSession); + + // render quad.. + gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); + + renderSession.stencilManager.popStencil(graphics, webGLData, renderSession); + } + else + { + webGLData = webGL.data[i]; + + + renderSession.shaderManager.setShader( shader );//activatePrimitiveShader(); + shader = renderSession.shaderManager.primitiveShader; + gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); + + gl.uniform1f(shader.flipY, 1); + + gl.uniform2f(shader.projectionVector, projection.x, -projection.y); + gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); + + gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); + + gl.uniform1f(shader.alpha, graphics.worldAlpha); + + + gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); + + gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); + gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); + + // set the index buffer! + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); + gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); + } + } +}; + +/** + * Updates the graphics object + * + * @static + * @private + * @method updateGraphics + * @param graphicsData {Graphics} The graphics object to update + * @param gl {WebGLContext} the current WebGL drawing context + */ +PIXI.WebGLGraphics.updateGraphics = function(graphics, gl) +{ + // get the contexts graphics object + var webGL = graphics._webGL[gl.id]; + // if the graphics object does not exist in the webGL context time to create it! + if(!webGL)webGL = graphics._webGL[gl.id] = {lastIndex:0, data:[], gl:gl}; + + // flag the graphics as not dirty as we are about to update it... + graphics.dirty = false; + + var i; + + // if the user cleared the graphics object we will need to clear every object + if(graphics.clearDirty) + { + graphics.clearDirty = false; + + // lop through and return all the webGLDatas to the object pool so than can be reused later on + for (i = 0; i < webGL.data.length; i++) + { + var graphicsData = webGL.data[i]; + graphicsData.reset(); + PIXI.WebGLGraphics.graphicsDataPool.push( graphicsData ); + } + + // clear the array and reset the index.. + webGL.data = []; + webGL.lastIndex = 0; + } + + var webGLData; + + // loop through the graphics datas and construct each one.. + // if the object is a complex fill then the new stencil buffer technique will be used + // other wise graphics objects will be pushed into a batch.. + for (i = webGL.lastIndex; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + + if(data.type === PIXI.Graphics.POLY) + { + // need to add the points the the graphics object.. + data.points = data.shape.points.slice(); + if(data.shape.closed) + { + // close the poly if the value is true! + if(data.points[0] !== data.points[data.points.length-2] || data.points[1] !== data.points[data.points.length-1]) + { + data.points.push(data.points[0], data.points[1]); + } + } + + // MAKE SURE WE HAVE THE CORRECT TYPE.. + if(data.fill) + { + if(data.points.length >= 6) + { + if(data.points.length < 6 * 2) + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); + + var canDrawUsingSimple = PIXI.WebGLGraphics.buildPoly(data, webGLData); + // console.log(canDrawUsingSimple); + + if(!canDrawUsingSimple) + { + // console.log("<>>>") + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); + PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); + } + + } + else + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 1); + PIXI.WebGLGraphics.buildComplexPoly(data, webGLData); + } + } + } + + if(data.lineWidth > 0) + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); + PIXI.WebGLGraphics.buildLine(data, webGLData); + + } + } + else + { + webGLData = PIXI.WebGLGraphics.switchMode(webGL, 0); + + if(data.type === PIXI.Graphics.RECT) + { + PIXI.WebGLGraphics.buildRectangle(data, webGLData); + } + else if(data.type === PIXI.Graphics.CIRC || data.type === PIXI.Graphics.ELIP) + { + PIXI.WebGLGraphics.buildCircle(data, webGLData); + } + else if(data.type === PIXI.Graphics.RREC) + { + PIXI.WebGLGraphics.buildRoundedRectangle(data, webGLData); + } + } + + webGL.lastIndex++; + } + + // upload all the dirty data... + for (i = 0; i < webGL.data.length; i++) + { + webGLData = webGL.data[i]; + if(webGLData.dirty)webGLData.upload(); + } +}; + +/** + * @static + * @private + * @method switchMode + * @param webGL {WebGLContext} + * @param type {Number} + */ +PIXI.WebGLGraphics.switchMode = function(webGL, type) +{ + var webGLData; + + if(!webGL.data.length) + { + webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); + webGLData.mode = type; + webGL.data.push(webGLData); + } + else + { + webGLData = webGL.data[webGL.data.length-1]; + + if(webGLData.mode !== type || type === 1) + { + webGLData = PIXI.WebGLGraphics.graphicsDataPool.pop() || new PIXI.WebGLGraphicsData(webGL.gl); + webGLData.mode = type; + webGL.data.push(webGLData); + } + } + + webGLData.dirty = true; + + return webGLData; +}; + +/** + * Builds a rectangle to draw + * + * @static + * @private + * @method buildRectangle + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.shape; + var x = rectData.x; + var y = rectData.y; + var width = rectData.width; + var height = rectData.height; + + if(graphicsData.fill) + { + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + var indices = webGLData.indices; + + var vertPos = verts.length/6; + + // start + verts.push(x, y); + verts.push(r, g, b, alpha); + + verts.push(x + width, y); + verts.push(r, g, b, alpha); + + verts.push(x , y + height); + verts.push(r, g, b, alpha); + + verts.push(x + width, y + height); + verts.push(r, g, b, alpha); + + // insert 2 dead triangles.. + indices.push(vertPos, vertPos, vertPos+1, vertPos+2, vertPos+3, vertPos+3); + } + + if(graphicsData.lineWidth) + { + var tempPoints = graphicsData.points; + + graphicsData.points = [x, y, + x + width, y, + x + width, y + height, + x, y + height, + x, y]; + + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + + graphicsData.points = tempPoints; + } +}; + +/** + * Builds a rounded rectangle to draw + * + * @static + * @private + * @method buildRoundedRectangle + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildRoundedRectangle = function(graphicsData, webGLData) +{ + var rrectData = graphicsData.shape; + var x = rrectData.x; + var y = rrectData.y; + var width = rrectData.width; + var height = rrectData.height; + + var radius = rrectData.radius; + + var recPoints = []; + recPoints.push(x, y + radius); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x, y + height - radius, x, y + height, x + radius, y + height)); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width - radius, y + height, x + width, y + height, x + width, y + height - radius)); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + width, y + radius, x + width, y, x + width - radius, y)); + recPoints = recPoints.concat(PIXI.WebGLGraphics.quadraticBezierCurve(x + radius, y, x, y, x, y + radius)); + + if (graphicsData.fill) { + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + var indices = webGLData.indices; + + var vecPos = verts.length/6; + + var triangles = PIXI.PolyK.Triangulate(recPoints); + + // + + var i = 0; + for (i = 0; i < triangles.length; i+=3) + { + indices.push(triangles[i] + vecPos); + indices.push(triangles[i] + vecPos); + indices.push(triangles[i+1] + vecPos); + indices.push(triangles[i+2] + vecPos); + indices.push(triangles[i+2] + vecPos); + } + + + for (i = 0; i < recPoints.length; i++) + { + verts.push(recPoints[i], recPoints[++i], r, g, b, alpha); + } + } + + if (graphicsData.lineWidth) { + var tempPoints = graphicsData.points; + + graphicsData.points = recPoints; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + + graphicsData.points = tempPoints; + } +}; + +/** + * Calculate the points for a quadratic bezier curve. (helper function..) + * Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier-curve-in-c + * + * @static + * @private + * @method quadraticBezierCurve + * @param fromX {Number} Origin point x + * @param fromY {Number} Origin point x + * @param cpX {Number} Control point x + * @param cpY {Number} Control point y + * @param toX {Number} Destination point x + * @param toY {Number} Destination point y + * @return {Array(Number)} + */ +PIXI.WebGLGraphics.quadraticBezierCurve = function(fromX, fromY, cpX, cpY, toX, toY) { + + var xa, + ya, + xb, + yb, + x, + y, + n = 20, + points = []; + + function getPt(n1 , n2, perc) { + var diff = n2 - n1; + + return n1 + ( diff * perc ); + } + + var j = 0; + for (var i = 0; i <= n; i++ ) + { + j = i / n; + + // The Green Line + xa = getPt( fromX , cpX , j ); + ya = getPt( fromY , cpY , j ); + xb = getPt( cpX , toX , j ); + yb = getPt( cpY , toY , j ); + + // The Black Dot + x = getPt( xa , xb , j ); + y = getPt( ya , yb , j ); + + points.push(x, y); + } + return points; +}; + +/** + * Builds a circle to draw + * + * @static + * @private + * @method buildCircle + * @param graphicsData {Graphics} The graphics object to draw + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) +{ + // need to convert points to a nice regular data + var circleData = graphicsData.shape; + var x = circleData.x; + var y = circleData.y; + var width; + var height; + + // TODO - bit hacky?? + if(graphicsData.type === PIXI.Graphics.CIRC) + { + width = circleData.radius; + height = circleData.radius; + } + else + { + width = circleData.width; + height = circleData.height; + } + + var totalSegs = 40; + var seg = (Math.PI * 2) / totalSegs ; + + var i = 0; + + if(graphicsData.fill) + { + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + var indices = webGLData.indices; + + var vecPos = verts.length/6; + + indices.push(vecPos); + + for (i = 0; i < totalSegs + 1 ; i++) + { + verts.push(x,y, r, g, b, alpha); + + verts.push(x + Math.sin(seg * i) * width, + y + Math.cos(seg * i) * height, + r, g, b, alpha); + + indices.push(vecPos++, vecPos++); + } + + indices.push(vecPos-1); + } + + if(graphicsData.lineWidth) + { + var tempPoints = graphicsData.points; + + graphicsData.points = []; + + for (i = 0; i < totalSegs + 1; i++) + { + graphicsData.points.push(x + Math.sin(seg * i) * width, + y + Math.cos(seg * i) * height); + } + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + + graphicsData.points = tempPoints; + } +}; + +/** + * Builds a line to draw + * + * @static + * @private + * @method buildLine + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) +{ + // TODO OPTIMISE! + var i = 0; + var points = graphicsData.points; + if(points.length === 0)return; + + // if the line width is an odd number add 0.5 to align to a whole pixel + if(graphicsData.lineWidth%2) + { + for (i = 0; i < points.length; i++) { + points[i] += 0.5; + } + } + + // get first and last point.. figure out the middle! + var firstPoint = new PIXI.Point( points[0], points[1] ); + var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + // if the first point is the last point - gonna have issues :) + if(firstPoint.x === lastPoint.x && firstPoint.y === lastPoint.y) + { + // need to clone as we are going to slightly modify the shape.. + points = points.slice(); + + points.pop(); + points.pop(); + + lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; + var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; + + points.unshift(midPointX, midPointY); + points.push(midPointX, midPointY); + } + + var verts = webGLData.points; + var indices = webGLData.indices; + var length = points.length / 2; + var indexCount = points.length; + var indexStart = verts.length/6; + + // DRAW the Line + var width = graphicsData.lineWidth / 2; + + // sort color + var color = PIXI.hex2rgb(graphicsData.lineColor); + var alpha = graphicsData.lineAlpha; + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var px, py, p1x, p1y, p2x, p2y, p3x, p3y; + var perpx, perpy, perp2x, perp2y, perp3x, perp3y; + var a1, b1, c1, a2, b2, c2; + var denom, pdist, dist; + + p1x = points[0]; + p1y = points[1]; + + p2x = points[2]; + p2y = points[3]; + + perpx = -(p1y - p2y); + perpy = p1x - p2x; + + dist = Math.sqrt(perpx*perpx + perpy*perpy); + + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + + // start + verts.push(p1x - perpx , p1y - perpy, + r, g, b, alpha); + + verts.push(p1x + perpx , p1y + perpy, + r, g, b, alpha); + + for (i = 1; i < length-1; i++) + { + p1x = points[(i-1)*2]; + p1y = points[(i-1)*2 + 1]; + + p2x = points[(i)*2]; + p2y = points[(i)*2 + 1]; + + p3x = points[(i+1)*2]; + p3y = points[(i+1)*2 + 1]; + + perpx = -(p1y - p2y); + perpy = p1x - p2x; + + dist = Math.sqrt(perpx*perpx + perpy*perpy); + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + + perp2x = -(p2y - p3y); + perp2y = p2x - p3x; + + dist = Math.sqrt(perp2x*perp2x + perp2y*perp2y); + perp2x /= dist; + perp2y /= dist; + perp2x *= width; + perp2y *= width; + + a1 = (-perpy + p1y) - (-perpy + p2y); + b1 = (-perpx + p2x) - (-perpx + p1x); + c1 = (-perpx + p1x) * (-perpy + p2y) - (-perpx + p2x) * (-perpy + p1y); + a2 = (-perp2y + p3y) - (-perp2y + p2y); + b2 = (-perp2x + p2x) - (-perp2x + p3x); + c2 = (-perp2x + p3x) * (-perp2y + p2y) - (-perp2x + p2x) * (-perp2y + p3y); + + denom = a1*b2 - a2*b1; + + if(Math.abs(denom) < 0.1 ) + { + + denom+=10.1; + verts.push(p2x - perpx , p2y - perpy, + r, g, b, alpha); + + verts.push(p2x + perpx , p2y + perpy, + r, g, b, alpha); + + continue; + } + + px = (b1*c2 - b2*c1)/denom; + py = (a2*c1 - a1*c2)/denom; + + + pdist = (px -p2x) * (px -p2x) + (py -p2y) + (py -p2y); + + + if(pdist > 140 * 140) + { + perp3x = perpx - perp2x; + perp3y = perpy - perp2y; + + dist = Math.sqrt(perp3x*perp3x + perp3y*perp3y); + perp3x /= dist; + perp3y /= dist; + perp3x *= width; + perp3y *= width; + + verts.push(p2x - perp3x, p2y -perp3y); + verts.push(r, g, b, alpha); + + verts.push(p2x + perp3x, p2y +perp3y); + verts.push(r, g, b, alpha); + + verts.push(p2x - perp3x, p2y -perp3y); + verts.push(r, g, b, alpha); + + indexCount++; + } + else + { + + verts.push(px , py); + verts.push(r, g, b, alpha); + + verts.push(p2x - (px-p2x), p2y - (py - p2y)); + verts.push(r, g, b, alpha); + } + } + + p1x = points[(length-2)*2]; + p1y = points[(length-2)*2 + 1]; + + p2x = points[(length-1)*2]; + p2y = points[(length-1)*2 + 1]; + + perpx = -(p1y - p2y); + perpy = p1x - p2x; + + dist = Math.sqrt(perpx*perpx + perpy*perpy); + perpx /= dist; + perpy /= dist; + perpx *= width; + perpy *= width; + + verts.push(p2x - perpx , p2y - perpy); + verts.push(r, g, b, alpha); + + verts.push(p2x + perpx , p2y + perpy); + verts.push(r, g, b, alpha); + + indices.push(indexStart); + + for (i = 0; i < indexCount; i++) + { + indices.push(indexStart++); + } + + indices.push(indexStart-1); +}; + +/** + * Builds a complex polygon to draw + * + * @static + * @private + * @method buildComplexPoly + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildComplexPoly = function(graphicsData, webGLData) +{ + //TODO - no need to copy this as it gets turned into a FLoat32Array anyways.. + var points = graphicsData.points.slice(); + if(points.length < 6)return; + + // get first and last point.. figure out the middle! + var indices = webGLData.indices; + webGLData.points = points; + webGLData.alpha = graphicsData.fillAlpha; + webGLData.color = PIXI.hex2rgb(graphicsData.fillColor); + + /* + calclate the bounds.. + */ + var minX = Infinity; + var maxX = -Infinity; + + var minY = Infinity; + var maxY = -Infinity; + + var x,y; + + // get size.. + for (var i = 0; i < points.length; i+=2) + { + x = points[i]; + y = points[i+1]; + + minX = x < minX ? x : minX; + maxX = x > maxX ? x : maxX; + + minY = y < minY ? y : minY; + maxY = y > maxY ? y : maxY; + } + + // add a quad to the end cos there is no point making another buffer! + points.push(minX, minY, + maxX, minY, + maxX, maxY, + minX, maxY); + + // push a quad onto the end.. + + //TODO - this aint needed! + var length = points.length / 2; + for (i = 0; i < length; i++) + { + indices.push( i ); + } + +}; + +/** + * Builds a polygon to draw + * + * @static + * @private + * @method buildPoly + * @param graphicsData {Graphics} The graphics object containing all the necessary properties + * @param webGLData {Object} + */ +PIXI.WebGLGraphics.buildPoly = function(graphicsData, webGLData) +{ + var points = graphicsData.points; + + if(points.length < 6)return; + // get first and last point.. figure out the middle! + var verts = webGLData.points; + var indices = webGLData.indices; + + var length = points.length / 2; + + // sort color + var color = PIXI.hex2rgb(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var triangles = PIXI.PolyK.Triangulate(points); + + if(!triangles)return false; + + var vertPos = verts.length / 6; + + var i = 0; + + for (i = 0; i < triangles.length; i+=3) + { + indices.push(triangles[i] + vertPos); + indices.push(triangles[i] + vertPos); + indices.push(triangles[i+1] + vertPos); + indices.push(triangles[i+2] +vertPos); + indices.push(triangles[i+2] + vertPos); + } + + for (i = 0; i < length; i++) + { + verts.push(points[i * 2], points[i * 2 + 1], + r, g, b, alpha); + } + + return true; +}; + +PIXI.WebGLGraphics.graphicsDataPool = []; + +/** + * @class WebGLGraphicsData + * @private + * @static + */ +PIXI.WebGLGraphicsData = function(gl) +{ + this.gl = gl; + + //TODO does this need to be split before uploding?? + this.color = [0,0,0]; // color split! + this.points = []; + this.indices = []; + this.buffer = gl.createBuffer(); + this.indexBuffer = gl.createBuffer(); + this.mode = 1; + this.alpha = 1; + this.dirty = true; +}; + +/** + * @method reset + */ +PIXI.WebGLGraphicsData.prototype.reset = function() +{ + this.points = []; + this.indices = []; +}; + +/** + * @method upload + */ +PIXI.WebGLGraphicsData.prototype.upload = function() +{ + var gl = this.gl; + +// this.lastIndex = graphics.graphicsData.length; + this.glPoints = new PIXI.Float32Array(this.points); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); + gl.bufferData(gl.ARRAY_BUFFER, this.glPoints, gl.STATIC_DRAW); + + this.glIndicies = new PIXI.Uint16Array(this.indices); + + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.glIndicies, gl.STATIC_DRAW); + + this.dirty = false; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A set of functions used by the canvas renderer to draw the primitive graphics data. + * + * @class CanvasGraphics + * @static + */ +PIXI.CanvasGraphics = function() +{ +}; + +/* + * Renders a PIXI.Graphics object to a canvas. + * + * @method renderGraphics + * @static + * @param graphics {Graphics} the actual graphics object to render + * @param context {CanvasRenderingContext2D} the 2d drawing method of the canvas + */ +PIXI.CanvasGraphics.renderGraphics = function(graphics, context) +{ + var worldAlpha = graphics.worldAlpha; + + if (graphics.dirty) + { + this.updateGraphicsTint(graphics); + graphics.dirty = false; + } + + for (var i = 0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + var shape = data.shape; + + var fillColor = data._fillTint; + var lineColor = data._lineTint; + + context.lineWidth = data.lineWidth; + + if (data.type === PIXI.Graphics.POLY) + { + context.beginPath(); + + var points = shape.points; + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + if (shape.closed) + { + context.lineTo(points[0], points[1]); + } + + // if the first and last point are the same close the path - much neater :) + if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) + { + context.closePath(); + } + + if (data.fill) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + else if (data.type === PIXI.Graphics.RECT) + { + if (data.fillColor || data.fillColor === 0) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fillRect(shape.x, shape.y, shape.width, shape.height); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.strokeRect(shape.x, shape.y, shape.width, shape.height); + } + } + else if (data.type === PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.beginPath(); + context.arc(shape.x, shape.y, shape.radius,0,2*Math.PI); + context.closePath(); + + if (data.fill) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + else if (data.type === PIXI.Graphics.ELIP) + { + // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + + var w = shape.width * 2; + var h = shape.height * 2; + + var x = shape.x - w/2; + var y = shape.y - h/2; + + context.beginPath(); + + var kappa = 0.5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle + + context.moveTo(x, ym); + context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + + context.closePath(); + + if (data.fill) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + else if (data.type === PIXI.Graphics.RREC) + { + var rx = shape.x; + var ry = shape.y; + var width = shape.width; + var height = shape.height; + var radius = shape.radius; + + var maxRadius = Math.min(width, height) / 2 | 0; + radius = radius > maxRadius ? maxRadius : radius; + + context.beginPath(); + context.moveTo(rx, ry + radius); + context.lineTo(rx, ry + height - radius); + context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); + context.lineTo(rx + width - radius, ry + height); + context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); + context.lineTo(rx + width, ry + radius); + context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); + context.lineTo(rx + radius, ry); + context.quadraticCurveTo(rx, ry, rx, ry + radius); + context.closePath(); + + if (data.fillColor || data.fillColor === 0) + { + context.globalAlpha = data.fillAlpha * worldAlpha; + context.fillStyle = '#' + ('00000' + ( fillColor | 0).toString(16)).substr(-6); + context.fill(); + } + + if (data.lineWidth) + { + context.globalAlpha = data.lineAlpha * worldAlpha; + context.strokeStyle = '#' + ('00000' + ( lineColor | 0).toString(16)).substr(-6); + context.stroke(); + } + } + } + +}; + +/* + * Renders a graphics mask + * + * @static + * @private + * @method renderGraphicsMask + * @param graphics {Graphics} the graphics which will be used as a mask + * @param context {CanvasRenderingContext2D} the context 2d method of the canvas + */ +PIXI.CanvasGraphics.renderGraphicsMask = function(graphics, context) +{ + var len = graphics.graphicsData.length; + + if (len === 0) + { + return; + } + + context.beginPath(); + + for (var i = 0; i < len; i++) + { + var data = graphics.graphicsData[i]; + var shape = data.shape; + + if (data.type === PIXI.Graphics.POLY) + { + + var points = shape.points; + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + // if the first and last point are the same close the path - much neater :) + if (points[0] === points[points.length-2] && points[1] === points[points.length-1]) + { + context.closePath(); + } + + } + else if (data.type === PIXI.Graphics.RECT) + { + context.rect(shape.x, shape.y, shape.width, shape.height); + context.closePath(); + } + else if (data.type === PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.arc(shape.x, shape.y, shape.radius, 0, 2 * Math.PI); + context.closePath(); + } + else if (data.type === PIXI.Graphics.ELIP) + { + + // ellipse code taken from: http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + + var w = shape.width * 2; + var h = shape.height * 2; + + var x = shape.x - w/2; + var y = shape.y - h/2; + + var kappa = 0.5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle + + context.moveTo(x, ym); + context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + context.closePath(); + } + else if (data.type === PIXI.Graphics.RREC) + { + + var rx = shape.x; + var ry = shape.y; + var width = shape.width; + var height = shape.height; + var radius = shape.radius; + + var maxRadius = Math.min(width, height) / 2 | 0; + radius = radius > maxRadius ? maxRadius : radius; + + context.moveTo(rx, ry + radius); + context.lineTo(rx, ry + height - radius); + context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height); + context.lineTo(rx + width - radius, ry + height); + context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius); + context.lineTo(rx + width, ry + radius); + context.quadraticCurveTo(rx + width, ry, rx + width - radius, ry); + context.lineTo(rx + radius, ry); + context.quadraticCurveTo(rx, ry, rx, ry + radius); + context.closePath(); + } + } +}; + +PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) +{ + if (graphics.tint === 0xFFFFFF) + { + return; + } + + var tintR = (graphics.tint >> 16 & 0xFF) / 255; + var tintG = (graphics.tint >> 8 & 0xFF) / 255; + var tintB = (graphics.tint & 0xFF)/ 255; + + for (var i = 0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + + var fillColor = data.fillColor | 0; + var lineColor = data.lineColor | 0; + + data._fillTint = (((fillColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((fillColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (fillColor & 0xFF) / 255 * tintB*255); + data._lineTint = (((lineColor >> 16 & 0xFF) / 255 * tintR*255 << 16) + ((lineColor >> 8 & 0xFF) / 255 * tintG*255 << 8) + (lineColor & 0xFF) / 255 * tintB*255); + + } + +}; + /** * @author Richard Davey * @copyright 2015 Photon Storm Ltd. @@ -56340,16 +53054,6 @@ Phaser.Text.prototype.destroy = function (destroyChildren) { PIXI.CanvasPool.remove(this); - // if (this.canvas && this.canvas.parentNode) - // { - // this.canvas.parentNode.removeChild(this.canvas); - // } - // else - // { - // this.canvas = null; - // this.context = null; - // } - Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren); }; @@ -56502,6 +53206,12 @@ Phaser.Text.prototype.updateText = function () { { // Simple layout (no tabs) var lineWidth = this.context.measureText(lines[i]).width + this.style.strokeThickness + this.padding.x; + + // Adjust for wrapped text + if (this.style.wordWrap) + { + lineWidth -= this.context.measureText(' ').width; + } } else { @@ -56543,9 +53253,7 @@ Phaser.Text.prototype.updateText = function () { maxLineWidth = Math.max(maxLineWidth, lineWidths[i]); } - var width = maxLineWidth + this.style.strokeThickness; - - this.canvas.width = width * this._res; + this.canvas.width = maxLineWidth * this._res; // Calculate text height var lineHeight = fontProperties.fontSize + this.style.strokeThickness + this.padding.y; @@ -59375,9 +56083,11 @@ Object.defineProperty(Phaser.RetroFont.prototype, "smoothed", { */ /** -* A Rope is a Sprite that has a repeating texture. The texture can be scrolled and scaled and will automatically wrap on the edges as it does so. -* Please note that Ropes, as with normal Sprites, have no input handler or physics bodies by default. Both need enabling. -* Example usage: https://github.com/codevinsky/phaser-rope-demo/blob/master/dist/demo.js +* A Rope is a Sprite that has a repeating texture. +* +* The texture will automatically wrap on the edges as it moves. +* +* Please note that Ropes cannot have an input handler. * * @class Phaser.Rope * @constructor @@ -59392,7 +56102,6 @@ Object.defineProperty(Phaser.RetroFont.prototype, "smoothed", { * @extends Phaser.Component.Delta * @extends Phaser.Component.Destroy * @extends Phaser.Component.FixedToCamera -* @extends Phaser.Component.InputEnabled * @extends Phaser.Component.InWorld * @extends Phaser.Component.LifeSpan * @extends Phaser.Component.LoadTexture @@ -59425,12 +56134,6 @@ Phaser.Rope = function (game, x, y, key, frame, points) { */ this.type = Phaser.ROPE; - /** - * @property {Phaser.Point} _scroll - Internal cache var. - * @private - */ - this._scroll = new Phaser.Point(); - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -59450,7 +56153,6 @@ Phaser.Component.Core.install.call(Phaser.Rope.prototype, [ 'Delta', 'Destroy', 'FixedToCamera', - 'InputEnabled', 'InWorld', 'LifeSpan', 'LoadTexture', @@ -59474,16 +56176,6 @@ Phaser.Rope.prototype.preUpdateCore = Phaser.Component.Core.preUpdate; */ Phaser.Rope.prototype.preUpdate = function() { - if (this._scroll.x !== 0) - { - this.tilePosition.x += this._scroll.x * this.game.time.physicsElapsed; - } - - if (this._scroll.y !== 0) - { - this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; - } - if (!this.preUpdatePhysics() || !this.preUpdateLifeSpan() || !this.preUpdateInWorld()) { return false; @@ -59509,7 +56201,7 @@ Phaser.Rope.prototype.update = function() { }; /** -* Resets the Rope. This places the Rope at the given x/y world coordinates, resets the tilePosition and then +* Resets the Rope. This places the Rope at the given x/y world coordinates and then * sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. * If the Rope has a physics body that too is reset. * @@ -59523,15 +56215,12 @@ Phaser.Rope.prototype.reset = function(x, y) { Phaser.Component.Reset.prototype.reset.call(this, x, y); - this.tilePosition.x = 0; - this.tilePosition.y = 0; - return this; }; /** -* A Rope will call it's updateAnimation function on each update loop if it has one +* A Rope will call its updateAnimation function on each update loop if it has one. * * @name Phaser.Rope#updateAnimation * @property {function} updateAnimation - Set to a function if you'd like the rope to animate during the update phase. Set to false or null to remove it. @@ -59871,6 +56560,12 @@ Phaser.Device = function () { */ this.iOS = false; + /** + * @property {number} iOSVersion - If running in iOS this will contain the major version number. + * @default + */ + this.iOSVersion = 0; + /** * @property {boolean} cocoonJS - Is the game running under CocoonJS? * @default @@ -60472,6 +57167,8 @@ Phaser.Device._initialize = function () { else if (/iP[ao]d|iPhone/i.test(ua)) { device.iOS = true; + (navigator.appVersion).match(/OS (\d+)/); + device.iOSVersion = parseInt(RegExp.$1, 10); } else if (/Linux/.test(ua)) { @@ -61135,439 +57832,6 @@ Phaser.Device.isAndroidStockBrowser = function () { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* DOM utility class. -* -* Provides a useful Window and Element functions as well as cross-browser compatibility buffer. -* -* Some code originally derived from {@link https://github.com/ryanve/verge verge}. -* Some parts were inspired by the research of Ryan Van Etten, released under MIT License 2013. -* -* @class Phaser.DOM -* @static -*/ -Phaser.DOM = { - - /** - * Get the [absolute] position of the element relative to the Document. - * - * The value may vary slightly as the page is scrolled due to rounding errors. - * - * @method Phaser.DOM.getOffset - * @param {DOMElement} element - The targeted element that we want to retrieve the offset. - * @param {Phaser.Point} [point] - The point we want to take the x/y values of the offset. - * @return {Phaser.Point} - A point objet with the offsetX and Y as its properties. - */ - getOffset: function (element, point) { - - point = point || new Phaser.Point(); - - var box = element.getBoundingClientRect(); - - var scrollTop = Phaser.DOM.scrollY; - var scrollLeft = Phaser.DOM.scrollX; - var clientTop = document.documentElement.clientTop; - var clientLeft = document.documentElement.clientLeft; - - point.x = box.left + scrollLeft - clientLeft; - point.y = box.top + scrollTop - clientTop; - - return point; - - }, - - /** - * A cross-browser element.getBoundingClientRect method with optional cushion. - * - * Returns a plain object containing the properties `top/bottom/left/right/width/height` with respect to the top-left corner of the current viewport. - * Its properties match the native rectangle. - * The cushion parameter is an amount of pixels (+/-) to cushion the element. - * It adjusts the measurements such that it is possible to detect when an element is near the viewport. - * - * @method Phaser.DOM.getBounds - * @param {DOMElement|Object} element - The element or stack (uses first item) to get the bounds for. - * @param {number} [cushion] - A +/- pixel adjustment amount. - * @return {Object|boolean} A plain object containing the properties `top/bottom/left/right/width/height` or `false` if a non-valid element is given. - */ - getBounds: function (element, cushion) { - - if (cushion === undefined) { cushion = 0; } - - element = element && !element.nodeType ? element[0] : element; - - if (!element || element.nodeType !== 1) - { - return false; - } - else - { - return this.calibrate(element.getBoundingClientRect(), cushion); - } - - }, - - /** - * Calibrates element coordinates for `inLayoutViewport` checks. - * - * @method Phaser.DOM.calibrate - * @private - * @param {object} coords - An object containing the following properties: `{top: number, right: number, bottom: number, left: number}` - * @param {number} [cushion] - A value to adjust the coordinates by. - * @return {object} The calibrated element coordinates - */ - calibrate: function (coords, cushion) { - - cushion = +cushion || 0; - - var output = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }; - - output.width = (output.right = coords.right + cushion) - (output.left = coords.left - cushion); - output.height = (output.bottom = coords.bottom + cushion) - (output.top = coords.top - cushion); - - return output; - - }, - - /** - * Get the Visual viewport aspect ratio (or the aspect ratio of an object or element) - * - * @method Phaser.DOM.getAspectRatio - * @param {(DOMElement|Object)} [object=(visualViewport)] - The object to determine the aspect ratio for. Must have public `width` and `height` properties or methods. - * @return {number} The aspect ratio. - */ - getAspectRatio: function (object) { - - object = null == object ? this.visualBounds : 1 === object.nodeType ? this.getBounds(object) : object; - - var w = object['width']; - var h = object['height']; - - if (typeof w === 'function') - { - w = w.call(object); - } - - if (typeof h === 'function') - { - h = h.call(object); - } - - return w / h; - - }, - - /** - * Tests if the given DOM element is within the Layout viewport. - * - * The optional cushion parameter allows you to specify a distance. - * - * inLayoutViewport(element, 100) is `true` if the element is in the viewport or 100px near it. - * inLayoutViewport(element, -100) is `true` if the element is in the viewport or at least 100px near it. - * - * @method Phaser.DOM.inLayoutViewport - * @param {DOMElement|Object} element - The DOM element to check. If no element is given it defaults to the Phaser game canvas. - * @param {number} [cushion] - The cushion allows you to specify a distance within which the element must be within the viewport. - * @return {boolean} True if the element is within the viewport, or within `cushion` distance from it. - */ - inLayoutViewport: function (element, cushion) { - - var r = this.getBounds(element, cushion); - - return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= this.layoutBounds.width && r.left <= this.layoutBounds.height; - - }, - - /** - * Returns the device screen orientation. - * - * Orientation values: 'portrait-primary', 'landscape-primary', 'portrait-secondary', 'landscape-secondary'. - * - * Order of resolving: - * - Screen Orientation API, or variation of - Future track. Most desktop and mobile browsers. - * - Screen size ratio check - If fallback is 'screen', suited for desktops. - * - Viewport size ratio check - If fallback is 'viewport', suited for mobile. - * - window.orientation - If fallback is 'window.orientation', works iOS and probably most Android; non-recommended track. - * - Media query - * - Viewport size ratio check (probably only IE9 and legacy mobile gets here..) - * - * See - * - https://w3c.github.io/screen-orientation/ (conflicts with mozOrientation/msOrientation) - * - https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation (mozOrientation) - * - http://msdn.microsoft.com/en-us/library/ie/dn342934(v=vs.85).aspx - * - https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries - * - http://stackoverflow.com/questions/4917664/detect-viewport-orientation - * - http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation - * - * @method Phaser.DOM.getScreenOrientation - * @protected - * @param {string} [primaryFallback=(none)] - Specify 'screen', 'viewport', or 'window.orientation'. - */ - getScreenOrientation: function (primaryFallback) { - - var screen = window.screen; - var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation; - - if (orientation && typeof orientation.type === 'string') - { - // Screen Orientation API specification - return orientation.type; - } - else if (typeof orientation === 'string') - { - // moz/ms-orientation are strings - return orientation; - } - - var PORTRAIT = 'portrait-primary'; - var LANDSCAPE = 'landscape-primary'; - - if (primaryFallback === 'screen') - { - return (screen.height > screen.width) ? PORTRAIT : LANDSCAPE; - } - else if (primaryFallback === 'viewport') - { - return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; - } - else if (primaryFallback === 'window.orientation' && typeof window.orientation === 'number') - { - // This may change by device based on "natural" orientation. - return (window.orientation === 0 || window.orientation === 180) ? PORTRAIT : LANDSCAPE; - } - else if (window.matchMedia) - { - if (window.matchMedia("(orientation: portrait)").matches) - { - return PORTRAIT; - } - else if (window.matchMedia("(orientation: landscape)").matches) - { - return LANDSCAPE; - } - } - - return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; - - }, - - /** - * The bounds of the Visual viewport, as discussed in - * {@link http://www.quirksmode.org/mobile/viewports.html A tale of two viewports — part one} - * with one difference: the viewport size _excludes_ scrollbars, as found on some desktop browsers. - * - * Supported mobile: - * iOS/Safari, Android 4, IE10, Firefox OS (maybe not Firefox Android), Opera Mobile 16 - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} x - Scroll, left offset - eg. "scrollX" - * @property {number} y - Scroll, top offset - eg. "scrollY" - * @property {number} width - Viewport width in pixels. - * @property {number} height - Viewport height in pixels. - * @readonly - */ - visualBounds: new Phaser.Rectangle(), - - /** - * The bounds of the Layout viewport, as discussed in - * {@link http://www.quirksmode.org/mobile/viewports2.html A tale of two viewports — part two}; - * but honoring the constraints as specified applicable viewport meta-tag. - * - * The bounds returned are not guaranteed to be fully aligned with CSS media queries (see - * {@link http://www.matanich.com/2013/01/07/viewport-size/ What size is my viewport?}). - * - * This is _not_ representative of the Visual bounds: in particular the non-primary axis will - * generally be significantly larger than the screen height on mobile devices when running with a - * constrained viewport. - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} width - Viewport width in pixels. - * @property {number} height - Viewport height in pixels. - * @readonly - */ - layoutBounds: new Phaser.Rectangle(), - - /** - * The size of the document / Layout viewport. - * - * This incorrectly reports the dimensions in IE. - * - * The properties change dynamically. - * - * @type {Phaser.Rectangle} - * @property {number} width - Document width in pixels. - * @property {number} height - Document height in pixels. - * @readonly - */ - documentBounds: new Phaser.Rectangle() - -}; - -Phaser.Device.whenReady(function (device) { - - // All target browsers should support page[XY]Offset. - var scrollX = window && ('pageXOffset' in window) ? - function () { return window.pageXOffset; } : - function () { return document.documentElement.scrollLeft; }; - - var scrollY = window && ('pageYOffset' in window) ? - function () { return window.pageYOffset; } : - function () { return document.documentElement.scrollTop; }; - - /** - * A cross-browser window.scrollX. - * - * @name Phaser.DOM.scrollX - * @property {number} scrollX - * @readonly - * @protected - */ - Object.defineProperty(Phaser.DOM, "scrollX", { - get: scrollX - }); - - /** - * A cross-browser window.scrollY. - * - * @name Phaser.DOM.scrollY - * @property {number} scrollY - * @readonly - * @protected - */ - Object.defineProperty(Phaser.DOM, "scrollY", { - get: scrollY - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "x", { - get: scrollX - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "y", { - get: scrollY - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "x", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "y", { - value: 0 - }); - - var treatAsDesktop = device.desktop && - (document.documentElement.clientWidth <= window.innerWidth) && - (document.documentElement.clientHeight <= window.innerHeight); - - // Desktop browsers align the layout viewport with the visual viewport. - // This differs from mobile browsers with their zooming design. - // Ref. http://quirksmode.org/mobile/tableViewport.html - if (treatAsDesktop) - { - - // PST- When scrollbars are not included this causes upstream issues in ScaleManager. - // So reverted to the old "include scrollbars." - var clientWidth = function () { - return Math.max(window.innerWidth, document.documentElement.clientWidth); - }; - var clientHeight = function () { - return Math.max(window.innerHeight, document.documentElement.clientHeight); - }; - - // Interested in area sans-scrollbar - Object.defineProperty(Phaser.DOM.visualBounds, "width", { - get: clientWidth - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "height", { - get: clientHeight - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "width", { - get: clientWidth - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "height", { - get: clientHeight - }); - - } else { - - Object.defineProperty(Phaser.DOM.visualBounds, "width", { - get: function () { - return window.innerWidth; - } - }); - - Object.defineProperty(Phaser.DOM.visualBounds, "height", { - get: function () { - return window.innerHeight; - } - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "width", { - - get: function () { - var a = document.documentElement.clientWidth; - var b = window.innerWidth; - - return a < b ? b : a; // max - } - - }); - - Object.defineProperty(Phaser.DOM.layoutBounds, "height", { - - get: function () { - var a = document.documentElement.clientHeight; - var b = window.innerHeight; - - return a < b ? b : a; // max - } - - }); - - } - - // For Phaser.DOM.documentBounds - // Ref. http://www.quirksmode.org/mobile/tableViewport_desktop.html - - Object.defineProperty(Phaser.DOM.documentBounds, "x", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "y", { - value: 0 - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "width", { - - get: function () { - var d = document.documentElement; - return Math.max(d.clientWidth, d.offsetWidth, d.scrollWidth); - } - - }); - - Object.defineProperty(Phaser.DOM.documentBounds, "height", { - - get: function () { - var d = document.documentElement; - return Math.max(d.clientHeight, d.offsetHeight, d.scrollHeight); - } - - }); - -}, null, true); - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * The Canvas class handles everything related to creating the `canvas` DOM tag that Phaser will use, * including styles, offset and aspect ratio. @@ -61620,7 +57884,7 @@ Phaser.Canvas = { * * @method Phaser.Canvas.setBackgroundColor * @param {HTMLCanvasElement} canvas - The canvas to set the background color on. - * @param {string} [color] - The color to set. Can be in the format 'rgb(r,g,b)', or '#RRGGBB' or any valid CSS color. + * @param {string} [color='rgb(0,0,0)'] - The color to set. Can be in the format 'rgb(r,g,b)', or '#RRGGBB' or any valid CSS color. * @return {HTMLCanvasElement} Returns the source canvas. */ setBackgroundColor: function (canvas, color) { @@ -61774,7 +58038,27 @@ Phaser.Canvas = { */ setSmoothingEnabled: function (context, value) { - var vendor = [ 'i', 'mozI', 'oI', 'webkitI', 'msI' ]; + var s = Phaser.Canvas.getSmoothingPrefix(context); + + if (s) + { + context[s] = value; + } + + return context; + + }, + + /** + * Gets the Smoothing Enabled vendor prefix being used on the given context, or null if not set. + * + * @method Phaser.Canvas.getSmoothingPrefix + * @param {CanvasRenderingContext2D} context - The context to enable or disable the image smoothing on. + * @return {string|null} Returns the smoothingEnabled vendor prefix, or null if not set on the context. + */ + getSmoothingPrefix: function (context) { + + var vendor = [ 'i', 'webkitI', 'msI', 'mozI', 'oI' ]; for (var prefix in vendor) { @@ -61782,12 +58066,11 @@ Phaser.Canvas = { if (s in context) { - context[s] = value; - return context; + return s; } } - return context; + return null; }, @@ -61800,7 +58083,12 @@ Phaser.Canvas = { */ getSmoothingEnabled: function (context) { - return (context['imageSmoothingEnabled'] || context['mozImageSmoothingEnabled'] || context['oImageSmoothingEnabled'] || context['webkitImageSmoothingEnabled'] || context['msImageSmoothingEnabled']); + var s = Phaser.Canvas.getSmoothingPrefix(context); + + if (s) + { + return context[s]; + } }, @@ -61814,12 +58102,13 @@ Phaser.Canvas = { */ setImageRenderingCrisp: function (canvas) { - canvas.style['image-rendering'] = 'optimizeSpeed'; - canvas.style['image-rendering'] = 'crisp-edges'; - canvas.style['image-rendering'] = '-moz-crisp-edges'; - canvas.style['image-rendering'] = '-webkit-optimize-contrast'; - canvas.style['image-rendering'] = 'optimize-contrast'; - canvas.style['image-rendering'] = 'pixelated'; + var types = [ 'optimizeSpeed', 'crisp-edges', '-moz-crisp-edges', '-webkit-optimize-contrast', 'optimize-contrast', 'pixelated' ]; + + for (var i = 0; i < types.length; i++) + { + canvas.style['image-rendering'] = types[i]; + } + canvas.style.msInterpolationMode = 'nearest-neighbor'; return canvas; @@ -62043,66 +58332,83 @@ Phaser.Math = { * Two number are fuzzyEqual if their difference is less than epsilon. * * @method Phaser.Math#fuzzyEqual - * @param {number} a - * @param {number} b - * @param {number} [epsilon=(small value)] + * @param {number} a - The first number to compare. + * @param {number} b - The second number to compare. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) * @return {boolean} True if |a-b|b+epsilon */ fuzzyGreaterThan: function (a, b, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return a > b - epsilon; + }, /** + * Applies a fuzzy ceil to the given value. + * * @method Phaser.Math#fuzzyCeil - * - * @param {number} val - * @param {number} [epsilon=(small value)] - * @return {boolean} ceiling(val-epsilon) + * @param {number} val - The value to ceil. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) + * @return {number} ceiling(val-epsilon) */ fuzzyCeil: function (val, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return Math.ceil(val - epsilon); + }, /** + * Applies a fuzzy floor to the given value. + * * @method Phaser.Math#fuzzyFloor - * - * @param {number} val - * @param {number} [epsilon=(small value)] - * @return {boolean} floor(val-epsilon) + * @param {number} val - The value to floor. + * @param {number} [epsilon=0.0001] - The epsilon (a small value used in the calculation) + * @return {number} floor(val+epsilon) */ fuzzyFloor: function (val, epsilon) { + if (epsilon === undefined) { epsilon = 0.0001; } + return Math.floor(val + epsilon); + }, /** @@ -62115,12 +58421,14 @@ Phaser.Math = { average: function () { var sum = 0; + var len = arguments.length; - for (var i = 0; i < arguments.length; i++) { + for (var i = 0; i < len; i++) + { sum += (+arguments[i]); } - return sum / arguments.length; + return sum / len; }, @@ -62162,7 +58470,7 @@ Phaser.Math = { /** * Snap a value to nearest grid slice, using floor. * - * Example: if you have an interval gap of 5 and a position of 12... you will snap to 10. + * Example: if you have an interval gap of 5 and a position of 12... you will snap to 10. * As will 14 snap to 10... but 16 will snap to 15. * * @method Phaser.Math#snapToFloor @@ -63063,7 +59371,7 @@ Phaser.Math.radToDeg = function radToDeg (radians) { * * @class Phaser.RandomDataGenerator * @constructor -* @param {any[]} [seeds] - An array of values to use as the seed. +* @param {any[]|string} [seeds] - An array of values to use as the seed, or a generator state (from {#state}). */ Phaser.RandomDataGenerator = function (seeds) { @@ -63093,7 +59401,14 @@ Phaser.RandomDataGenerator = function (seeds) { */ this.s2 = 0; - this.sow(seeds); + if (typeof seeds === 'string') + { + this.state(seeds); + } + else + { + this.sow(seeds); + } }; @@ -63343,6 +59658,39 @@ Phaser.RandomDataGenerator.prototype = { return this.integerInRange(-180, 180); + }, + + /** + * Gets or Sets the state of the generator. This allows you to retain the values + * that the generator is using between games, i.e. in a game save file. + * + * To seed this generator with a previously saved state you can pass it as the + * `seed` value in your game config, or call this method directly after Phaser has booted. + * + * Call this method with no parameters to return the current state. + * + * If providing a state it should match the same format that this method + * returns, which is a string with a header `!rnd` followed by the `c`, + * `s0`, `s1` and `s2` values respectively, each comma-delimited. + * + * @method Phaser.RandomDataGenerator#state + * @param {string} [state] - Generator state to be set. + * @return {string} The current state of the generator. + */ + state: function (state) { + + if (typeof state === 'string' && state.match(/^!rnd/)) + { + state = state.split(','); + + this.c = parseFloat(state[1]); + this.s0 = parseFloat(state[2]); + this.s1 = parseFloat(state[3]); + this.s2 = parseFloat(state[4]); + } + + return ['!rnd', this.c, this.s0, this.s1, this.s2].join(','); + } }; @@ -66300,6 +62648,25 @@ Phaser.Easing.Power4 = Phaser.Easing.Quintic.Out; * * To create a general timed event, use the master {@link Phaser.Timer} accessible through {@link Phaser.Time.events events}. * +* There are different *types* of time in Phaser: +* +* - ***Game time*** always runs at the speed of time in real life. +* +* Unlike wall-clock time, *game time stops when Phaser is paused*. +* +* Game time is used for {@link Phaser.Timer timer events}. +* +* - ***Physics time*** represents the amount of time given to physics calculations. +* +* *When {@link #slowMotion} is in effect physics time runs slower than game time.* +* Like game time, physics time stops when Phaser is paused. +* +* Physics time is used for physics calculations and {@link Phaser.Tween tweens}. +* +* - {@link https://en.wikipedia.org/wiki/Wall-clock_time ***Wall-clock time***} represents the duration between two events in real life time. +* +* This time is independent of Phaser and always progresses, regardless of if Phaser is paused. +* * @class Phaser.Time * @constructor * @param {Phaser.Game} game A reference to the currently running game. @@ -66378,35 +62745,44 @@ Phaser.Time = function (game) { * * @property {number} physicsElapsed */ - this.physicsElapsed = 0; + this.physicsElapsed = 1 / 60; /** * The physics update delta, in milliseconds - equivalent to `physicsElapsed * 1000`. * * @property {number} physicsElapsedMS */ - this.physicsElapsedMS = 0; + this.physicsElapsedMS = (1 / 60) * 1000; + + /** + * The desiredFps multiplier as used by Game.update. + * @property {integer} desiredFpsMult + * @protected + */ + this.desiredFpsMult = 1.0 / 60; /** * The desired frame rate of the game. * * This is used is used to calculate the physic/logic multiplier and how to apply catch-up logic updates. * - * @property {number} desiredFps + * @property {number} _desiredFps + * @private * @default */ - this.desiredFps = 60; + this._desiredFps = 60; /** * The suggested frame rate for your game, based on an averaged real frame rate. * This value is only populated if `Time.advancedTiming` is enabled. * - * _Note:_ This is not available until after a few frames have passed; use it after a few seconds (eg. after the menus) + * _Note:_ This is not available until after a few frames have passed; until then + * it's set to the same value as desiredFps. * * @property {number} suggestedFps * @default */ - this.suggestedFps = null; + this.suggestedFps = this.desiredFps; /** * Scaling factor to make the game move smoothly in slow motion @@ -66616,6 +62992,24 @@ Phaser.Time.prototype = { }, + /** + * Refreshes the Time.time and Time.elapsedMS properties from the system clock. + * + * @method Phaser.Time#refresh + */ + refresh: function () { + + // Set to the old Date.now value + var previousDateNow = this.time; + + // this.time always holds a Date.now value + this.time = Date.now(); + + // Adjust accordingly. + this.elapsedMS = this.time - previousDateNow; + + }, + /** * Updates the game clock and if enabled the advanced timing data. This is called automatically by Phaser.Game. * @@ -66625,13 +63019,32 @@ Phaser.Time.prototype = { */ update: function (time) { + // Set to the old Date.now value + var previousDateNow = this.time; + + // this.time always holds a Date.now value + this.time = Date.now(); + + // Adjust accordingly. + this.elapsedMS = this.time - previousDateNow; + + // 'now' is currently still holding the time of the last call, move it into prevTime + this.prevTime = this.now; + + // update 'now' to hold the current time + // this.now may hold the RAF high resolution time value if RAF is available (otherwise it also holds Date.now) + this.now = time; + + // elapsed time between previous call and now - this could be a high resolution value + this.elapsed = this.now - this.prevTime; + if (this.game.raf._isSetTimeOut) { - this.updateSetTimeout(time); - } - else - { - this.updateRAF(time); + // time to call this function again in ms in case we're using timers instead of RequestAnimationFrame to update the game + this.timeToCall = Math.floor(Math.max(0, (1000.0 / this._desiredFps) - (this.timeExpected - time))); + + // time when the next call is expected if using timers + this.timeExpected = time + this.timeToCall; } if (this.advancedTiming) @@ -66653,82 +63066,6 @@ Phaser.Time.prototype = { }, - /** - * setTimeOut specific time update handler. - * Called automatically by Time.update. - * - * @method Phaser.Time#updateSetTimeout - * @private - * @param {number} time - The current relative timestamp; see {@link Phaser.Time#now now}. - */ - updateSetTimeout: function (time) { - - // Set to the old Date.now value - var previousDateNow = this.time; - - // With SetTimeout the time value is always the same as Date.now, so no need to get it again - this.time = time; - - // Adjust accordingly. - this.elapsedMS = this.time - previousDateNow; - - // 'now' is currently still holding the time of the last call, move it into prevTime - this.prevTime = this.now; - - // update 'now' to hold the current time - this.now = time; - - // elapsed time between previous call and now - this.elapsed = this.now - this.prevTime; - - // time to call this function again in ms in case we're using timers instead of RequestAnimationFrame to update the game - this.timeToCall = Math.floor(Math.max(0, (1000.0 / this.desiredFps) - (this.timeCallExpected - time))); - - // time when the next call is expected if using timers - this.timeCallExpected = time + this.timeToCall; - - // Set the physics elapsed time... this will always be 1 / this.desiredFps because we're using fixed time steps in game.update now - this.physicsElapsed = 1 / this.desiredFps; - - this.physicsElapsedMS = this.physicsElapsed * 1000; - - }, - - /** - * raf specific time update handler. - * Called automatically by Time.update. - * - * @method Phaser.Time#updateRAF - * @private - * @param {number} time - The current relative timestamp; see {@link Phaser.Time#now now}. - */ - updateRAF: function (time) { - - // Set to the old Date.now value - var previousDateNow = this.time; - - // this.time always holds Date.now, this.now may hold the RAF high resolution time value if RAF is available (otherwise it also holds Date.now) - this.time = Date.now(); - - // Adjust accordingly. - this.elapsedMS = this.time - previousDateNow; - - // 'now' is currently still holding the time of the last call, move it into prevTime - this.prevTime = this.now; - - // update 'now' to hold the current time - this.now = time; - - // elapsed time between previous call and now - this.elapsed = this.now - this.prevTime; - - // Set the physics elapsed time... this will always be 1 / this.desiredFps because we're using fixed time steps in game.update now - this.physicsElapsed = 1 / this.desiredFps; - - this.physicsElapsedMS = this.physicsElapsed * 1000; - - }, - /** * Handles the updating of the Phaser.Timers (if any) * Called automatically by Time.update. @@ -66772,7 +63109,7 @@ Phaser.Time.prototype = { this._elapsedAccumulator += this.elapsed; // occasionally recalculate the suggestedFps based on the accumulated elapsed time - if (this._frameCount >= this.desiredFps * 2) + if (this._frameCount >= this._desiredFps * 2) { // this formula calculates suggestedFps in multiples of 5 fps this.suggestedFps = Math.floor(200 / (this._elapsedAccumulator / this._frameCount)) * 5; @@ -66887,6 +63224,38 @@ Phaser.Time.prototype = { }; +/** +* The desired frame rate of the game. +* +* This is used is used to calculate the physic / logic multiplier and how to apply catch-up logic updates. +* +* @name Phaser.Time#desiredFps +* @property {integer} desiredFps - The desired frame rate of the game. Defaults to 60. +*/ +Object.defineProperty(Phaser.Time.prototype, "desiredFps", { + + get: function () { + + return this._desiredFps; + + }, + + set: function (value) { + + this._desiredFps = value; + + // Set the physics elapsed time... this will always be 1 / this.desiredFps + // because we're using fixed time steps in game.update + this.physicsElapsed = 1 / value; + + this.physicsElapsedMS = this.physicsElapsed * 1000; + + this.desiredFpsMult = 1.0 / value; + + } + +}); + Phaser.Time.prototype.constructor = Phaser.Time; /** @@ -66896,13 +63265,13 @@ Phaser.Time.prototype.constructor = Phaser.Time; */ /** -* A Timer is a way to create small re-usable (or disposable) objects that wait for a specific moment in time, -* and then run the specified callbacks. +* A Timer is a way to create and manage {@link Phaser.TimerEvent timer events} that wait for a specific duration and then run a callback. +* Many different timer events, with individual delays, can be added to the same Timer. * -* You can add many events to a Timer, each with their own delays. A Timer uses milliseconds as its unit of time (there are 1000 ms in 1 second). -* So a delay to 250 would fire the event every quarter of a second. +* All Timer delays are in milliseconds (there are 1000 ms in 1 second); so a delay value of 250 represents a quarter of a second. * -* Timers are based on real-world (not physics) time, adjusted for game pause durations. +* Timers are based on real life time, adjusted for game pause durations. +* That is, *timer events are based on elapsed {@link Phaser.Time game time}* and do *not* take physics time or slow motion into account. * * @class Phaser.Timer * @constructor @@ -67081,10 +63450,10 @@ Phaser.Timer.prototype = { * * @method Phaser.Timer#create * @private - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. This value should be an integer, not a float. Math.round() is applied to it by this method. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. * @param {boolean} loop - Should the event loop or not? * @param {number} repeatCount - The number of times the event will repeat. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {any[]} arguments - The values to be sent to your callback function when it is called. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. @@ -67125,15 +63494,15 @@ Phaser.Timer.prototype = { * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#add - * @param {number} delay - The number of milliseconds that should elapse before the callback is invoked. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ add: function (delay, callback, callbackContext) { - return this.create(delay, false, 0, callback, callbackContext, Array.prototype.splice.call(arguments, 3)); + return this.create(delay, false, 0, callback, callbackContext, Array.prototype.slice.call(arguments, 3)); }, @@ -67141,21 +63510,22 @@ Phaser.Timer.prototype = { * Adds a new TimerEvent that will always play through once and then repeat for the given number of iterations. * * The event will fire after the given amount of `delay` in milliseconds has passed, once the Timer has started running. - * The delay is in relation to when the Timer starts, not the time it was added. If the Timer is already running the delay will be calculated based on the timers current time. + * The delay is in relation to when the Timer starts, not the time it was added. + * If the Timer is already running the delay will be calculated based on the timers current time. * * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#repeat - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. * @param {number} repeatCount - The number of times the event will repeat once is has finished playback. A repeatCount of 1 means it will repeat itself once, playing the event twice in total. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ repeat: function (delay, repeatCount, callback, callbackContext) { - return this.create(delay, false, repeatCount, callback, callbackContext, Array.prototype.splice.call(arguments, 4)); + return this.create(delay, false, repeatCount, callback, callbackContext, Array.prototype.slice.call(arguments, 4)); }, @@ -67168,22 +63538,22 @@ Phaser.Timer.prototype = { * Make sure to call {@link Phaser.Timer#start start} after adding all of the Events you require for this Timer. * * @method Phaser.Timer#loop - * @param {number} delay - The number of milliseconds that should elapse before the Timer will call the given callback. - * @param {function} callback - The callback that will be called when the Timer event occurs. + * @param {integer} delay - The number of milliseconds, in {@link Phaser.Time game time}, before the timer event occurs. + * @param {function} callback - The callback that will be called when the timer event occurs. * @param {object} callbackContext - The context in which the callback will be called. * @param {...*} arguments - Additional arguments that will be supplied to the callback. * @return {Phaser.TimerEvent} The Phaser.TimerEvent object that was created. */ loop: function (delay, callback, callbackContext) { - return this.create(delay, true, 0, callback, callbackContext, Array.prototype.splice.call(arguments, 3)); + return this.create(delay, true, 0, callback, callbackContext, Array.prototype.slice.call(arguments, 3)); }, /** * Starts this Timer running. * @method Phaser.Timer#start - * @param {number} [delay=0] - The number of milliseconds that should elapse before the Timer will start. + * @param {integer} [delay=0] - The number of milliseconds, in {@link Phaser.Time game time}, that should elapse before the Timer will start. */ start: function (delay) { @@ -68445,7 +64815,7 @@ Phaser.Animation = function (game, parent, name, frameData, frames, frameRate, l this.onUpdate = null; /** - * @property {Phaser.Signal} onComplete - This event is dispatched when this Animation completes playback. If the animation is set to loop this is never fired, listen for onAnimationLoop instead. + * @property {Phaser.Signal} onComplete - This event is dispatched when this Animation completes playback. If the animation is set to loop this is never fired, listen for onLoop instead. */ this.onComplete = new Phaser.Signal(); @@ -69071,7 +65441,7 @@ Object.defineProperty(Phaser.Animation.prototype, 'enableUpdate', { * @param {number} start - The number to start sequentially counting from. If your frames are named 'explosion_0001' to 'explosion_0034' the start is 1. * @param {number} stop - The number to count to. If your frames are named 'explosion_0001' to 'explosion_0034' the stop value is 34. * @param {string} [suffix=''] - The end of the filename. If the filename was 'explosion_0001-large' the prefix would be '-large'. -* @param {number} [zeroPad=0] - The number of zeroes to pad the min and max values with. If your frames are named 'explosion_0001' to 'explosion_0034' then the zeroPad is 4. +* @param {number} [zeroPad=0] - The number of zeros to pad the min and max values with. If your frames are named 'explosion_0001' to 'explosion_0034' then the zeroPad is 4. * @return {string[]} An array of framenames. */ Phaser.Animation.generateFrameNames = function (prefix, start, stop, suffix, zeroPad) { @@ -69768,6 +66138,62 @@ Phaser.AnimationParser = { }, + /** + * Parse the JSON data and extract the animation frame data from it. + * + * @method Phaser.AnimationParser.JSONDataPyxel + * @param {Phaser.Game} game - A reference to the currently running game. + * @param {object} json - The JSON data from the Texture Atlas. Must be in Pyxel JSON format. + * @return {Phaser.FrameData} A FrameData object containing the parsed frames. + */ + JSONDataPyxel: function (game, json) { + + // Malformed? There are a few keys to check here. + var signature = ['layers', 'tilewidth','tileheight','tileswide', 'tileshigh']; + + signature.forEach( function(key) { + if (!json[key]) + { + console.warn("Phaser.AnimationParser.JSONDataPyxel: Invalid Pyxel Tilemap JSON given, missing '" + key + "' key."); + console.log(json); + return; + } + }); + + // For this purpose, I only care about parsing tilemaps with a single layer. + if(json['layers'].length != 1) { + console.warn("Phaser.AnimationParser.JSONDataPyxel: Too many layers, this parser only supports flat Tilemaps."); + console.log(json); + return; + } + + var data = new Phaser.FrameData(); + + var tileheight = json['tileheight']; + var tilewidth = json['tilewidth']; + + var frames = json['layers'][0]['tiles']; + var newFrame; + + for (var i = 0; i < frames.length; i++) + { + newFrame = data.addFrame(new Phaser.Frame( + i, + frames[i].x, + frames[i].y, + tilewidth, + tileheight, + "frame_" + i // No names are included in pyxel tilemap data. + )); + + // No trim data is included. + newFrame.setTrim(false); + } + + return data; + + }, + /** * Parse the JSON data and extract the animation frame data from it. * @@ -69861,7 +66287,7 @@ Phaser.AnimationParser = { for (var i = 0; i < frames.length; i++) { frame = frames[i].attributes; - + name = frame.name.value; x = parseInt(frame.x.value, 10); y = parseInt(frame.y.value, 10); @@ -69902,12 +66328,12 @@ Phaser.AnimationParser = { /** * Phaser has one single cache in which it stores all assets. -* +* * The cache is split up into sections, such as images, sounds, video, json, etc. All assets are stored using * a unique string-based key as their identifier. Assets stored in different areas of the cache can have the * same key, for example 'playerWalking' could be used as the key for both a sprite sheet and an audio file, * because they are unique data types. -* +* * The cache is automatically populated by the Phaser.Loader. When you use the loader to pull in external assets * such as images they are automatically placed into their respective cache. Most common Game Objects, such as * Sprites and Videos automatically query the cache to extract the assets they need on instantiation. @@ -70335,6 +66761,7 @@ Phaser.Cache.prototype = { * @param {string} url - The URL the asset was loaded from. If the asset was not loaded externally set to `null`. * @param {object} data - Extra font data. * @param {object} atlasData - Texture atlas frames data. + * @param {string} [atlasType='xml'] - The format of the texture atlas ( 'json' or 'xml' ). * @param {number} [xSpacing=0] - If you'd like to add additional horizontal spacing between the characters then set the pixel value here. * @param {number} [ySpacing=0] - If you'd like to add additional vertical spacing between the lines then set the pixel value here. */ @@ -70346,7 +66773,10 @@ Phaser.Cache.prototype = { font: null, base: new PIXI.BaseTexture(data) }; - + + if (xSpacing === undefined) { xSpacing = 0; } + if (ySpacing === undefined) { ySpacing = 0; } + if (atlasType === 'json') { obj.font = Phaser.LoaderParser.jsonBitmapFont(atlasData, obj.base, xSpacing, ySpacing); @@ -70500,6 +66930,10 @@ Phaser.Cache.prototype = { { obj.frameData = Phaser.AnimationParser.XMLData(this.game, atlasData, key); } + else if (format === Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL) + { + obj.frameData = Phaser.AnimationParser.JSONDataPyxel(this.game, atlasData, key); + } else { // Let's just work it out from the frames array @@ -70882,7 +67316,7 @@ Phaser.Cache.prototype = { /** * Get an item from a cache based on the given key and property. - * + * * This method is mostly used internally by other Cache methods such as `getImage` but is exposed * publicly for your own use as well. * @@ -70913,16 +67347,16 @@ Phaser.Cache.prototype = { return this._cacheMap[cache][key][property]; } } - + return null; }, /** * Gets a Canvas object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getCanvas @@ -70937,13 +67371,13 @@ Phaser.Cache.prototype = { /** * Gets a Image object from the cache. This returns a DOM Image object, not a Phaser.Image object. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * Only the Image cache is searched, which covers images loaded via Loader.image, Sprite Sheets and Texture Atlases. - * + * * If you need the image used by a bitmap font or similar then please use those respective 'get' methods. * * @method Phaser.Cache#getImage @@ -70980,7 +67414,7 @@ Phaser.Cache.prototype = { /** * Get a single texture frame by key. - * + * * You'd only do this to get the default Frame created for a non-atlas / spritesheet image. * * @method Phaser.Cache#getTextureFrame @@ -70995,9 +67429,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.Sound object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getSound @@ -71012,9 +67446,9 @@ Phaser.Cache.prototype = { /** * Gets a raw Sound data object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getSoundData @@ -71029,9 +67463,9 @@ Phaser.Cache.prototype = { /** * Gets a Text object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getText @@ -71046,11 +67480,11 @@ Phaser.Cache.prototype = { /** * Gets a Physics Data object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * You can get either the entire data set, a single object or a single fixture of an object from it. * * @method Phaser.Cache#getPhysicsData @@ -71108,9 +67542,9 @@ Phaser.Cache.prototype = { /** * Gets a raw Tilemap data object from the cache. This will be in either CSV or JSON format. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getTilemapData @@ -71125,9 +67559,9 @@ Phaser.Cache.prototype = { /** * Gets a binary object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBinary @@ -71142,9 +67576,9 @@ Phaser.Cache.prototype = { /** * Gets a BitmapData object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBitmapData @@ -71159,9 +67593,9 @@ Phaser.Cache.prototype = { /** * Gets a Bitmap Font object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getBitmapFont @@ -71176,11 +67610,11 @@ Phaser.Cache.prototype = { /** * Gets a JSON object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. - * + * * You can either return the object by reference (the default), or return a clone * of it by setting the `clone` argument to `true`. * @@ -71213,9 +67647,9 @@ Phaser.Cache.prototype = { /** * Gets an XML object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getXML @@ -71230,9 +67664,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.Video object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getVideo @@ -71247,9 +67681,9 @@ Phaser.Cache.prototype = { /** * Gets a fragment shader object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getShader @@ -71264,9 +67698,9 @@ Phaser.Cache.prototype = { /** * Gets a RenderTexture object from the cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getRenderTexture @@ -71340,9 +67774,9 @@ Phaser.Cache.prototype = { /** * Gets a Phaser.FrameData object from the Image Cache. - * + * * The object is looked-up based on the key given. - * + * * Note: If the object cannot be found a `console.warn` message is displayed. * * @method Phaser.Cache#getFrameData @@ -71476,7 +67910,7 @@ Phaser.Cache.prototype = { /** * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * + * * If the texture isn't found in the cache, then it searches the Phaser Image Cache. * * @method Phaser.Cache#getPixiBaseTexture @@ -71580,7 +68014,7 @@ Phaser.Cache.prototype = { /** * Removes an image from the cache. - * + * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere @@ -71991,18 +68425,18 @@ Phaser.Loader = function (game) { /** * The value of `path`, if set, is placed before any _relative_ file path given. For example: - * + * * `load.path = "images/sprites/"; * load.image("ball", "ball.png"); * load.image("tree", "level1/oaktree.png"); * load.image("boom", "http://server.com/explode.png");` * - * Would load the `ball` file from `images/sprites/ball.png` and the tree from - * `images/sprites/level1/oaktree.png` but the file `boom` would load from the URL + * Would load the `ball` file from `images/sprites/ball.png` and the tree from + * `images/sprites/level1/oaktree.png` but the file `boom` would load from the URL * given as it's an absolute URL. * * Please note that the path is added before the filename but *after* the baseURL (if set.) - * + * * The string _must_ end with a "/". * * @property {string} path @@ -72053,11 +68487,11 @@ Phaser.Loader = function (game) { * progress, file key, success?, total loaded files, total files * * Where progress is a number between 1 and 100 (inclusive) representing the percentage of the load. - * + * * @property {Phaser.Signal} onFileComplete */ this.onFileComplete = new Phaser.Signal(); - + /** * This event is dispatched when a file (or pack) errors as a result of the load request. * @@ -72164,7 +68598,7 @@ Phaser.Loader = function (game) { * @private */ this._totalFileCount = 0; - + /** * Total packs loaded - adjusted just prior to `onPackComplete`. * @property {integer} _loadedPackCount @@ -72211,6 +68645,12 @@ Phaser.Loader.PHYSICS_LIME_CORONA_JSON = 3; */ Phaser.Loader.PHYSICS_PHASER_JSON = 4; +/** +* @constant +* @type {number} +*/ +Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL = 5; + Phaser.Loader.prototype = { /** @@ -72399,14 +68839,14 @@ Phaser.Loader.prototype = { * @param {string} key - The unique Cache ID key of this resource. * @param {string} [url] - The URL the asset will be loaded from. * @param {object} [properties=(none)] - Any additional properties needed to load the file. These are added directly to the added file object and overwrite any defaults. - * @param {boolean} [overwrite=false] - If true then this will overwrite a file asset of the same type/key. Otherwise it will will only add a new asset. If overwrite is true, and the asset is already being loaded (or has been loaded), then it is appended instead. + * @param {boolean} [overwrite=false] - If true then this will overwrite a file asset of the same type/key. Otherwise it will only add a new asset. If overwrite is true, and the asset is already being loaded (or has been loaded), then it is appended instead. * @param {string} [extension] - If no URL is given the Loader will sometimes auto-generate the URL based on the key, using this as the extension. * @return {Phaser.Loader} This instance of the Phaser Loader. */ addToFileList: function (type, key, url, properties, overwrite, extension) { if (overwrite === undefined) { overwrite = false; } - + if (key === undefined || key === '') { console.warn("Phaser.Loader: Invalid or no key given of type " + type); @@ -72447,7 +68887,7 @@ Phaser.Loader.prototype = { } var fileIndex = this.getAssetIndex(type, key); - + if (overwrite && fileIndex > -1) { var currentFile = this._fileList[fileIndex]; @@ -72495,10 +68935,10 @@ Phaser.Loader.prototype = { * Please see the example 'loader/asset pack' in the Phaser Examples repository. * * Packs are always put before the first non-pack file that is not loaded / loading. - * + * * This means that all packs added before any loading has started are added to the front * of the file queue, in the order added. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * The URL of the packfile can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. @@ -72543,13 +68983,13 @@ Phaser.Loader.prototype = { { data = JSON.parse(data); } - + pack.data = data || {}; // Already consider 'loaded' pack.loaded = true; } - + // Add before first non-pack/no-loaded ~ last pack from start prior to loading // (Read one past for splice-to-end) for (var i = 0; i < this._fileList.length + 1; i++) @@ -72570,17 +69010,17 @@ Phaser.Loader.prototype = { /** * Adds an Image to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * Phaser can load all common image types: png, jpg, gif and any other format the browser can natively handle. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the image via `Cache.getImage(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -72601,17 +69041,17 @@ Phaser.Loader.prototype = { * Adds an array of images to the current load queue. * * It works by passing each element of the array to the Loader.image method. - * + * * The files are **not** loaded immediately after calling this method. The files are added to the queue ready to be loaded when the loader starts. - * + * * Phaser can load all common image types: png, jpg, gif and any other format the browser can natively handle. - * + * * The keys must be unique Strings. They are used to add the files to the Phaser.Cache upon successful load. * * Retrieve the images via `Cache.getImage(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -72644,15 +69084,15 @@ Phaser.Loader.prototype = { /** * Adds a Text file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getText(key)` - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.txt". It will always add `.txt` as the extension. * If you do not desire this action then provide a URL. @@ -72671,16 +69111,16 @@ Phaser.Loader.prototype = { /** * Adds a JSON file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getJSON(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.json". It will always add `.json` as the extension. * If you do not desire this action then provide a URL. @@ -72699,15 +69139,15 @@ Phaser.Loader.prototype = { /** * Adds a fragment shader file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getShader(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "blur" * and no URL is given then the Loader will set the URL to be "blur.frag". It will always add `.frag` as the extension. * If you do not desire this action then provide a URL. @@ -72726,15 +69166,15 @@ Phaser.Loader.prototype = { /** * Adds an XML file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getXML(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.xml". It will always add `.xml` as the extension. * If you do not desire this action then provide a URL. @@ -72753,13 +69193,13 @@ Phaser.Loader.prototype = { /** * Adds a JavaScript file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.js". It will always add `.js` as the extension. * If you do not desire this action then provide a URL. @@ -72788,15 +69228,15 @@ Phaser.Loader.prototype = { /** * Adds a binary file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getBinary(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.bin". It will always add `.bin` as the extension. * If you do not desire this action then provide a URL. @@ -72826,22 +69266,22 @@ Phaser.Loader.prototype = { /** * Adds a Sprite Sheet to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. * * To clarify the terminology that Phaser uses: A Sprite Sheet is an image containing frames, usually of an animation, that are all equal - * dimensions and often in sequence. For example if the frame size is 32x32 then every frame in the sprite sheet will be that size. + * dimensions and often in sequence. For example if the frame size is 32x32 then every frame in the sprite sheet will be that size. * Sometimes (outside of Phaser) the term "sprite sheet" is used to refer to a texture atlas. * A Texture Atlas works by packing together images as best it can, using whatever frame sizes it likes, often with cropping and trimming * the frames in the process. Software such as Texture Packer, Flash CC or Shoebox all generate texture atlases, not sprite sheets. * If you've got an atlas then use `Loader.atlas` instead. - * + * * The key must be a unique String. It is used to add the image to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getImage(key)`. Sprite sheets, being image based, live in the same Cache as all other Images. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified the Loader will take the key and create a filename from that. For example if the key is "alien" * and no URL is given then the Loader will set the URL to be "alien.png". It will always add `.png` as the extension. * If you do not desire this action then provide a URL. @@ -72868,13 +69308,13 @@ Phaser.Loader.prototype = { /** * Adds an audio file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getSound(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * Mobile warning: There are some mobile devices (certain iPad 2 and iPad Mini revisions) that cannot play 48000 Hz audio. @@ -72911,17 +69351,17 @@ Phaser.Loader.prototype = { /** * Adds an audio sprite file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Audio Sprites are a combination of audio files and a JSON configuration. - * + * * The JSON follows the format of that created by https://github.com/tonistiigi/audiosprite - * + * * Retrieve the file via `Cache.getSoundData(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * @method Phaser.Loader#audiosprite @@ -72971,13 +69411,13 @@ Phaser.Loader.prototype = { /** * Adds a video file to the current load queue. - * + * * The file is **not** loaded immediately after calling this method. The file is added to the queue ready to be loaded when the loader starts. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getVideo(key)`. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. * * You don't need to preload a video in order to play it in your game. See `Video.createVideoFromURL` for details. @@ -73029,20 +69469,20 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `data` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If a URL is provided the file is **not** loaded immediately after calling this method, but is added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getTilemapData(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified and no data is given then the Loader will take the key and create a filename from that. * For example if the key is "level1" and no URL or data is given then the Loader will set the URL to be "level1.json". * If you set the format to be Tilemap.CSV it will set the URL to be "level1.csv" instead. - * + * * If you do not desire this action then provide a URL or data object. * * @method Phaser.Loader#tilemap @@ -73104,24 +69544,24 @@ Phaser.Loader.prototype = { * Adds a physics data file to the current load queue. * * The data must be in `Lime + Corona` JSON format. [Physics Editor](https://www.codeandweb.com) by code'n'web exports in this format natively. - * + * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `data` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If a URL is provided the file is **not** loaded immediately after calling this method, but is added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. * * Retrieve the file via `Cache.getJSON(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the text file as needed. - * + * * The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the URL isn't specified and no data is given then the Loader will take the key and create a filename from that. * For example if the key is "alien" and no URL or data is given then the Loader will set the URL to be "alien.json". * It will always use `.json` as the extension. - * + * * If you do not desire this action then provide a URL or data object. * * @method Phaser.Loader#physics @@ -73163,7 +69603,7 @@ Phaser.Loader.prototype = { /** * Adds Bitmap Font files to the current load queue. - * + * * To create the Bitmap Font files you can use: * * BMFont (Windows, free): http://www.angelcode.com/products/bmfont/ @@ -73173,27 +69613,27 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to an xml file. * Or you can pass in an XML object or String via the `xmlData` parameter. * If you pass a String the data is automatically run through `Loader.parseXML` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getBitmapFont(key)`. XML files are automatically parsed upon load. * If you need to control when the XML is parsed then use `Loader.text` instead and parse the XML file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "megaFont" and textureURL is null then the Loader will set the URL to be "megaFont.png". - * The same is true for the xmlURL. If xmlURL isn't specified and no xmlData has been provided then the Loader will - * set the xmlURL to be the key. For example if the key is "megaFont" the xmlURL will be set to "megaFont.xml". - * + * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will + * set the atlasURL to be the key. For example if the key is "megaFont" the atlasURL will be set to "megaFont.xml". + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#bitmapFont * @param {string} key - Unique asset key of the bitmap font. * @param {string} textureURL - URL of the Bitmap Font texture file. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "megaFont" then the URL will be "megaFont.png". - * @param {string} atlasURL - URL of the Bitmap Font atlas file (xml/json). + * @param {string} atlasURL - URL of the Bitmap Font atlas file (xml/json). If undefined or `null` AND `atlasData` is null, the url will be set to `.xml`, i.e. if `key` was "megaFont" then the URL will be "megaFont.xml". * @param {object} atlasData - An optional Bitmap Font atlas in string form (stringified xml/json). * @param {number} [xSpacing=0] - If you'd like to add additional horizontal spacing between the characters then set the pixel value here. * @param {number} [ySpacing=0] - If you'd like to add additional vertical spacing between the lines then set the pixel value here. @@ -73208,6 +69648,12 @@ Phaser.Loader.prototype = { if (atlasURL === undefined) { atlasURL = null; } if (atlasData === undefined) { atlasData = null; } + + if (atlasURL === null && atlasData === null) + { + atlasURL = key + '.xml'; + } + if (xSpacing === undefined) { xSpacing = 0; } if (ySpacing === undefined) { ySpacing = 0; } @@ -73243,39 +69689,40 @@ Phaser.Loader.prototype = { } return this; + }, /** * Adds a Texture Atlas file to the current load queue. * * Unlike `Loader.atlasJSONHash` this call expects the atlas data to be in a JSON Array format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) * [Shoebox](http://renderhjs.net/shoebox/) - * + * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasJSONArray @@ -73295,33 +69742,33 @@ Phaser.Loader.prototype = { * Adds a Texture Atlas file to the current load queue. * * Unlike `Loader.atlas` this call expects the atlas data to be in a JSON Hash format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) * [Shoebox](http://renderhjs.net/shoebox/) - * + * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. * * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasJSONHash @@ -73341,7 +69788,7 @@ Phaser.Loader.prototype = { * Adds a Texture Atlas file to the current load queue. * * This call expects the atlas data to be in the Starling XML data format. - * + * * To create the Texture Atlas you can use tools such as: * * [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) @@ -73349,25 +69796,25 @@ Phaser.Loader.prototype = { * * If using Texture Packer we recommend you enable "Trim sprite names". * If your atlas software has an option to "rotate" the resulting frames, you must disable it. - * + * * You can choose to either load the data externally, by providing a URL to an xml file. * Or you can pass in an XML object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `Loader.parseXML` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. XML files are automatically parsed upon load. * If you need to control when the XML is parsed then use `Loader.text` instead and parse the XML file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.xml". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlasXML @@ -73405,21 +69852,21 @@ Phaser.Loader.prototype = { * You can choose to either load the data externally, by providing a URL to a json file. * Or you can pass in a JSON object or String via the `atlasData` parameter. * If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache. - * + * * If URLs are provided the files are **not** loaded immediately after calling this method, but are added to the load queue. - * + * * The key must be a unique String. It is used to add the file to the Phaser.Cache upon successful load. - * + * * Retrieve the file via `Cache.getImage(key)`. JSON files are automatically parsed upon load. * If you need to control when the JSON is parsed then use `Loader.text` instead and parse the JSON file as needed. - * + * * The URLs can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it. - * + * * If the textureURL isn't specified then the Loader will take the key and create a filename from that. * For example if the key is "player" and textureURL is null then the Loader will set the URL to be "player.png". * The same is true for the atlasURL. If atlasURL isn't specified and no atlasData has been provided then the Loader will * set the atlasURL to be the key. For example if the key is "player" the atlasURL will be set to "player.json". - * + * * If you do not desire this action then provide URLs and / or a data object. * * @method Phaser.Loader#atlas @@ -73525,7 +69972,7 @@ Phaser.Loader.prototype = { /** * Add a synchronization point to a specific file/asset in the load queue. * - * This has no effect on already loaded assets. + * This has no effect on already loaded assets. * * @method Phaser.Loader#addSyncPoint * @param {string} type - The type of resource to turn into a sync point (image, audio, xml, etc). @@ -73629,7 +70076,7 @@ Phaser.Loader.prototype = { for (var i = 0; i < this._flightQueue.length; i++) { var file = this._flightQueue[i]; - + if (file.loaded || file.error) { this._flightQueue.splice(i, 1); @@ -73709,7 +70156,7 @@ Phaser.Loader.prototype = { this._flightQueue.push(file); file.loading = true; this.onFileStart.dispatch(this.progress, file.key, file.url); - + this.loadFile(file); } } @@ -73912,7 +70359,8 @@ Phaser.Loader.prototype = { /** * Transforms the asset URL. - * The default implementation prepends the baseURL if the url doesn't being with http or // + * + * The default implementation prepends the baseURL if the url doesn't begin with http or // * * @method Phaser.Loader#transformUrl * @protected @@ -73927,7 +70375,7 @@ Phaser.Loader.prototype = { return false; } - if (url.substr(0, 4) === 'http' || url.substr(0, 2) === '//') + if (url.match(/^(?:blob:|data:|http:\/\/|https:\/\/|\/\/)/)) { return url; } @@ -74059,7 +70507,7 @@ Phaser.Loader.prototype = { { file.data.crossOrigin = this.crossOrigin; } - + file.data.onload = function () { if (file.data.onload) { @@ -74079,7 +70527,7 @@ Phaser.Loader.prototype = { }; file.data.src = this.transformUrl(file.url, file); - + // Image is immediately-available/cached if (file.data.complete && file.data.width && file.data.height) { @@ -74102,7 +70550,7 @@ Phaser.Loader.prototype = { file.data.name = file.key; file.data.controls = false; file.data.autoplay = false; - + var videoLoadEvent = function () { file.data.removeEventListener(file.loadEvent, videoLoadEvent, false); @@ -74118,7 +70566,7 @@ Phaser.Loader.prototype = { file.data.canplay = false; _this.fileError(file); }; - + file.data.addEventListener(file.loadEvent, videoLoadEvent, false); file.data.src = this.transformUrl(file.url, file); @@ -74148,7 +70596,7 @@ Phaser.Loader.prototype = { { file.data = new Audio(); file.data.name = file.key; - + var playThroughEvent = function () { file.data.removeEventListener('canplaythrough', playThroughEvent, false); file.data.onerror = null; @@ -74256,7 +70704,7 @@ Phaser.Loader.prototype = { /** * Starts the xhr loader - using XDomainRequest. * This should _only_ be used with IE 9. Phaser does not support IE 8 and XDR is deprecated in IE 10. - * + * * This is designed specifically to use with asset file processing. * * @method Phaser.Loader#xhrLoad @@ -74477,7 +70925,7 @@ Phaser.Loader.prototype = { switch (file.type) { case 'packfile': - + // Pack data must never be false-ish after it is fetched without error var data = JSON.parse(xhr.responseText); file.data = data || {}; @@ -74504,7 +70952,7 @@ Phaser.Loader.prototype = { // Load the JSON or XML before carrying on with the next file loadNext = false; - if (file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_HASH) + if (file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_HASH || file.format == Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL) { this.xhrLoad(file, this.transformUrl(file.atlasURL, file), 'text', this.jsonLoadComplete); } @@ -74566,7 +71014,7 @@ Phaser.Loader.prototype = { throw new Error("Phaser.Loader. Unable to parse video file as Blob: " + file.key); } } - + this.cache.addVideo(file.key, file.url, file.data, file.asBlob); break; @@ -75586,6 +72034,7 @@ Phaser.Sound.prototype = { */ onEndedHandler: function () { + this._sound.onended = null; this.isPlaying = false; this.stop(); @@ -76607,7 +73056,15 @@ Phaser.SoundManager.prototype = { */ setTouchLock: function () { - this.game.input.touch.addTouchLockCallback(this.unlock, this); + if (this.game.device.iOSVersion > 8) + { + this.game.input.touch.addTouchLockCallback(this.unlock, this, true); + } + else + { + this.game.input.touch.addTouchLockCallback(this.unlock, this); + } + this.touchLocked = true; }, @@ -77168,6 +73625,2379 @@ Object.defineProperty(Phaser.SoundManager.prototype, "volume", { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* @classdesc +* The ScaleManager object handles the the scaling, resizing, and alignment of the +* Game size and the game Display canvas. +* +* The Game size is the logical size of the game; the Display canvas has size as an HTML element. +* +* The calculations of these are heavily influenced by the bounding Parent size which is the computed +* dimensions of the Display canvas's Parent container/element - the _effective CSS rules of the +* canvas's Parent element play an important role_ in the operation of the ScaleManager. +* +* The Display canvas - or Game size, depending {@link #scaleMode} - is updated to best utilize the Parent size. +* When in Fullscreen mode or with {@link #parentIsWindow} the Parent size is that of the visual viewport (see {@link Phaser.ScaleManager#getParentBounds getParentBounds}). +* +* Parent and Display canvas containment guidelines: +* +* - Style the Parent element (of the game canvas) to control the Parent size and +* thus the Display canvas's size and layout. +* +* - The Parent element's CSS styles should _effectively_ apply maximum (and minimum) bounding behavior. +* +* - The Parent element should _not_ apply a padding as this is not accounted for. +* If a padding is required apply it to the Parent's parent or apply a margin to the Parent. +* If you need to add a border, margin or any other CSS around your game container, then use a parent element and +* apply the CSS to this instead, otherwise you'll be constantly resizing the shape of the game container. +* +* - The Display canvas layout CSS styles (i.e. margins, size) should not be altered/specified as +* they may be updated by the ScaleManager. +* +* @description +* Create a new ScaleManager object - this is done automatically by {@link Phaser.Game} +* +* The `width` and `height` constructor parameters can either be a number which represents pixels or a string that represents a percentage: e.g. `800` (for 800 pixels) or `"80%"` for 80%. +* +* @class +* @param {Phaser.Game} game - A reference to the currently running game. +* @param {number|string} width - The width of the game. See above. +* @param {number|string} height - The height of the game. See above. +*/ +Phaser.ScaleManager = function (game, width, height) { + + /** + * A reference to the currently running game. + * @property {Phaser.Game} game + * @protected + * @readonly + */ + this.game = game; + + /** + * Provides access to some cross-device DOM functions. + * @property {Phaser.DOM} dom + * @protected + * @readonly + */ + this.dom = Phaser.DOM; + + /** + * _EXPERIMENTAL:_ A responsive grid on which you can align game objects. + * @property {Phaser.FlexGrid} grid + * @public + */ + this.grid = null; + + /** + * Target width (in pixels) of the Display canvas. + * @property {number} width + * @readonly + */ + this.width = 0; + + /** + * Target height (in pixels) of the Display canvas. + * @property {number} height + * @readonly + */ + this.height = 0; + + /** + * Minimum width the canvas should be scaled to (in pixels). + * Change with {@link #setMinMax}. + * @property {?number} minWidth + * @readonly + * @protected + */ + this.minWidth = null; + + /** + * Maximum width the canvas should be scaled to (in pixels). + * If null it will scale to whatever width the browser can handle. + * Change with {@link #setMinMax}. + * @property {?number} maxWidth + * @readonly + * @protected + */ + this.maxWidth = null; + + /** + * Minimum height the canvas should be scaled to (in pixels). + * Change with {@link #setMinMax}. + * @property {?number} minHeight + * @readonly + * @protected + */ + this.minHeight = null; + + /** + * Maximum height the canvas should be scaled to (in pixels). + * If null it will scale to whatever height the browser can handle. + * Change with {@link #setMinMax}. + * @property {?number} maxHeight + * @readonly + * @protected + */ + this.maxHeight = null; + + /** + * The offset coordinates of the Display canvas from the top-left of the browser window. + * The is used internally by Phaser.Pointer (for Input) and possibly other types. + * @property {Phaser.Point} offset + * @readonly + * @protected + */ + this.offset = new Phaser.Point(); + + /** + * If true, the game should only run in a landscape orientation. + * Change with {@link #forceOrientation}. + * @property {boolean} forceLandscape + * @readonly + * @default + * @protected + */ + this.forceLandscape = false; + + /** + * If true, the game should only run in a portrait + * Change with {@link #forceOrientation}. + * @property {boolean} forcePortrait + * @readonly + * @default + * @protected + */ + this.forcePortrait = false; + + /** + * True if {@link #forceLandscape} or {@link #forcePortrait} are set and do not agree with the browser orientation. + * + * This value is not updated immediately. + * + * @property {boolean} incorrectOrientation + * @readonly + * @protected + */ + this.incorrectOrientation = false; + + /** + * See {@link #pageAlignHorizontally}. + * @property {boolean} _pageAlignHorizontally + * @private + */ + this._pageAlignHorizontally = false; + + /** + * See {@link #pageAlignVertically}. + * @property {boolean} _pageAlignVertically + * @private + */ + this._pageAlignVertically = false; + + /** + * This signal is dispatched when the orientation changes _or_ the validity of the current orientation changes. + * + * The signal is supplied with the following arguments: + * - `scale` - the ScaleManager object + * - `prevOrientation`, a string - The previous orientation as per {@link Phaser.ScaleManager#screenOrientation screenOrientation}. + * - `wasIncorrect`, a boolean - True if the previous orientation was last determined to be incorrect. + * + * Access the current orientation and validity with `scale.screenOrientation` and `scale.incorrectOrientation`. + * Thus the following tests can be done: + * + * // The orientation itself changed: + * scale.screenOrientation !== prevOrientation + * // The orientation just became incorrect: + * scale.incorrectOrientation && !wasIncorrect + * + * It is possible that this signal is triggered after {@link #forceOrientation} so the orientation + * correctness changes even if the orientation itself does not change. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} onOrientationChange + * @public + */ + this.onOrientationChange = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser enters an incorrect orientation, as defined by {@link #forceOrientation}. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} enterIncorrectOrientation + * @public + */ + this.enterIncorrectOrientation = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser leaves an incorrect orientation, as defined by {@link #forceOrientation}. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} leaveIncorrectOrientation + * @public + */ + this.leaveIncorrectOrientation = new Phaser.Signal(); + + /** + * If specified, this is the DOM element on which the Fullscreen API enter request will be invoked. + * The target element must have the correct CSS styling and contain the Display canvas. + * + * The elements style will be modified (ie. the width and height might be set to 100%) + * but it will not be added to, removed from, or repositioned within the DOM. + * An attempt is made to restore relevant style changes when fullscreen mode is left. + * + * For pre-2.2.0 behavior set `game.scale.fullScreenTarget = game.canvas`. + * + * @property {?DOMElement} fullScreenTarget + * @default + */ + this.fullScreenTarget = null; + + /** + * The fullscreen target, as created by {@link #createFullScreenTarget}. + * This is not set if {@link #fullScreenTarget} is used and is cleared when fullscreen mode ends. + * @property {?DOMElement} _createdFullScreenTarget + * @private + */ + this._createdFullScreenTarget = null; + + /** + * This signal is dispatched when fullscreen mode is ready to be initialized but + * before the fullscreen request. + * + * The signal is passed two arguments: `scale` (the ScaleManager), and an object in the form `{targetElement: DOMElement}`. + * + * The `targetElement` is the {@link #fullScreenTarget} element, + * if such is assigned, or a new element created by {@link #createFullScreenTarget}. + * + * Custom CSS styling or resets can be applied to `targetElement` as required. + * + * If `targetElement` is _not_ the same element as {@link #fullScreenTarget}: + * - After initialization the Display canvas is moved onto the `targetElement` for + * the duration of the fullscreen mode, and restored to it's original DOM location when fullscreen is exited. + * - The `targetElement` is moved/re-parented within the DOM and may have its CSS styles updated. + * + * The behavior of a pre-assigned target element is covered in {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget}. + * + * @property {Phaser.Signal} onFullScreenInit + * @public + */ + this.onFullScreenInit = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser enters or leaves fullscreen mode, if supported. + * + * The signal is supplied with a single argument: `scale` (the ScaleManager). Use `scale.isFullScreen` to determine + * if currently running in Fullscreen mode. + * + * @property {Phaser.Signal} onFullScreenChange + * @public + */ + this.onFullScreenChange = new Phaser.Signal(); + + /** + * This signal is dispatched when the browser fails to enter fullscreen mode; + * or if the device does not support fullscreen mode and `startFullScreen` is invoked. + * + * The signal is supplied with a single argument: `scale` (the ScaleManager). + * + * @property {Phaser.Signal} onFullScreenError + * @public + */ + this.onFullScreenError = new Phaser.Signal(); + + /** + * The _last known_ orientation of the screen, as defined in the Window Screen Web API. + * See {@link Phaser.DOM.getScreenOrientation} for possible values. + * + * @property {string} screenOrientation + * @readonly + * @public + */ + this.screenOrientation = this.dom.getScreenOrientation(); + + /** + * The _current_ scale factor based on the game dimensions vs. the scaled dimensions. + * @property {Phaser.Point} scaleFactor + * @readonly + */ + this.scaleFactor = new Phaser.Point(1, 1); + + /** + * The _current_ inversed scale factor. The displayed dimensions divided by the game dimensions. + * @property {Phaser.Point} scaleFactorInversed + * @readonly + * @protected + */ + this.scaleFactorInversed = new Phaser.Point(1, 1); + + /** + * The Display canvas is aligned by adjusting the margins; the last margins are stored here. + * + * @property {Bounds-like} margin + * @readonly + * @protected + */ + this.margin = {left: 0, top: 0, right: 0, bottom: 0, x: 0, y: 0}; + + /** + * The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height. + * @property {Phaser.Rectangle} bounds + * @readonly + */ + this.bounds = new Phaser.Rectangle(); + + /** + * The aspect ratio of the scaled Display canvas. + * @property {number} aspectRatio + * @readonly + */ + this.aspectRatio = 0; + + /** + * The aspect ratio of the original game dimensions. + * @property {number} sourceAspectRatio + * @readonly + */ + this.sourceAspectRatio = 0; + + /** + * The native browser events from Fullscreen API changes. + * @property {any} event + * @readonly + * @private + */ + this.event = null; + + /** + * The edges on which to constrain the game Display/canvas in _addition_ to the restrictions of the parent container. + * + * The properties are strings and can be '', 'visual', 'layout', or 'layout-soft'. + * - If 'visual', the edge will be constrained to the Window / displayed screen area + * - If 'layout', the edge will be constrained to the CSS Layout bounds + * - An invalid value is treated as 'visual' + * + * @member + * @property {string} bottom + * @property {string} right + * @default + */ + this.windowConstraints = { + right: 'layout', + bottom: '' + }; + + /** + * Various compatibility settings. + * A value of "(auto)" indicates the setting is configured based on device and runtime information. + * + * A {@link #refresh} may need to be performed after making changes. + * + * @protected + * + * @property {boolean} [supportsFullscreen=(auto)] - True only if fullscreen support will be used. (Changing to fullscreen still might not work.) + * + * @property {boolean} [orientationFallback=(auto)] - See {@link Phaser.DOM.getScreenOrientation}. + * + * @property {boolean} [noMargins=false] - If true then the Display canvas's margins will not be updated anymore: existing margins must be manually cleared. Disabling margins prevents automatic canvas alignment/centering, possibly in fullscreen. + * + * @property {?Phaser.Point} [scrollTo=(auto)] - If specified the window will be scrolled to this position on every refresh. + * + * @property {boolean} [forceMinimumDocumentHeight=false] - If enabled the document elements minimum height is explicitly set on updates. + * The height set varies by device and may either be the height of the window or the viewport. + * + * @property {boolean} [canExpandParent=true] - If enabled then SHOW_ALL and USER_SCALE modes can try and expand the parent element. It may be necessary for the parent element to impose CSS width/height restrictions. + * + * @property {string} [clickTrampoline=(auto)] - On certain browsers (eg. IE) FullScreen events need to be triggered via 'click' events. + * A value of 'when-not-mouse' uses a click trampoline when a pointer that is not the primary mouse is used. + * Any other string value (including the empty string) prevents using click trampolines. + * For more details on click trampolines see {@link Phaser.Pointer#addClickTrampoline}. + */ + this.compatibility = { + supportsFullScreen: false, + orientationFallback: null, + noMargins: false, + scrollTo: null, + forceMinimumDocumentHeight: false, + canExpandParent: true, + clickTrampoline: '' + }; + + /** + * Scale mode to be used when not in fullscreen. + * @property {number} _scaleMode + * @private + */ + this._scaleMode = Phaser.ScaleManager.NO_SCALE; + + /* + * Scale mode to be used in fullscreen. + * @property {number} _fullScreenScaleMode + * @private + */ + this._fullScreenScaleMode = Phaser.ScaleManager.NO_SCALE; + + /** + * If the parent container of the Game canvas is the browser window itself (i.e. document.body), + * rather than another div, this should set to `true`. + * + * The {@link #parentNode} property is generally ignored while this is in effect. + * + * @property {boolean} parentIsWindow + */ + this.parentIsWindow = false; + + /** + * The _original_ DOM element for the parent of the Display canvas. + * This may be different in fullscreen - see {@link #createFullScreenTarget}. + * + * This should only be changed after moving the Game canvas to a different DOM parent. + * + * @property {?DOMElement} parentNode + */ + this.parentNode = null; + + /** + * The scale of the game in relation to its parent container. + * @property {Phaser.Point} parentScaleFactor + * @readonly + */ + this.parentScaleFactor = new Phaser.Point(1, 1); + + /** + * The maximum time (in ms) between dimension update checks for the Canvas's parent element (or window). + * Update checks normally happen quicker in response to other events. + * + * @property {integer} trackParentInterval + * @default + * @protected + * @see {@link Phaser.ScaleManager#refresh refresh} + */ + this.trackParentInterval = 2000; + + /** + * This signal is dispatched when the size of the Display canvas changes _or_ the size of the Game changes. + * When invoked this is done _after_ the Canvas size/position have been updated. + * + * This signal is _only_ called when a change occurs and a reflow may be required. + * For example, if the canvas does not change sizes because of CSS settings (such as min-width) + * then this signal will _not_ be triggered. + * + * Use this to handle responsive game layout options. + * + * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. + * + * @property {Phaser.Signal} onSizeChange + * @todo Formalize the arguments, if any, supplied to this signal. + */ + this.onSizeChange = new Phaser.Signal(); + + /** + * The callback that will be called each the parent container resizes. + * @property {function} onResize + * @private + */ + this.onResize = null; + + /** + * The context in which the {@link #onResize} callback will be called. + * @property {object} onResizeContext + * @private + */ + this.onResizeContext = null; + + /** + * @property {integer} _pendingScaleMode - Used to retain the scale mode if set from config before Boot. + * @private + */ + this._pendingScaleMode = null; + + /** + * Information saved when fullscreen mode is started. + * @property {?object} _fullScreenRestore + * @private + */ + this._fullScreenRestore = null; + + /** + * The _actual_ game dimensions, as initially set or set by {@link #setGameSize}. + * @property {Phaser.Rectangle} _gameSize + * @private + */ + this._gameSize = new Phaser.Rectangle(); + + /** + * The user-supplied scale factor, used with the USER_SCALE scaling mode. + * @property {Phaser.Point} _userScaleFactor + * @private + */ + this._userScaleFactor = new Phaser.Point(1, 1); + + /** + * The user-supplied scale trim, used with the USER_SCALE scaling mode. + * @property {Phaser.Point} _userScaleTrim + * @private + */ + this._userScaleTrim = new Phaser.Point(0, 0); + + /** + * The last time the bounds were checked in `preUpdate`. + * @property {number} _lastUpdate + * @private + */ + this._lastUpdate = 0; + + /** + * Size checks updates are delayed according to the throttle. + * The throttle increases to `trackParentInterval` over time and is used to more + * rapidly detect changes in certain browsers (eg. IE) while providing back-off safety. + * @property {integer} _updateThrottle + * @private + */ + this._updateThrottle = 0; + + /** + * The minimum throttle allowed until it has slowed down sufficiently. + * @property {integer} _updateThrottleReset + * @private + */ + this._updateThrottleReset = 100; + + /** + * The cached result of the parent (possibly window) bounds; used to invalidate sizing. + * @property {Phaser.Rectangle} _parentBounds + * @private + */ + this._parentBounds = new Phaser.Rectangle(); + + /** + * Temporary bounds used for internal work to cut down on new objects created. + * @property {Phaser.Rectangle} _parentBounds + * @private + */ + this._tempBounds = new Phaser.Rectangle(); + + /** + * The Canvas size at which the last onSizeChange signal was triggered. + * @property {Phaser.Rectangle} _lastReportedCanvasSize + * @private + */ + this._lastReportedCanvasSize = new Phaser.Rectangle(); + + /** + * The Game size at which the last onSizeChange signal was triggered. + * @property {Phaser.Rectangle} _lastReportedGameSize + * @private + */ + this._lastReportedGameSize = new Phaser.Rectangle(); + + /** + * @property {boolean} _booted - ScaleManager booted state. + * @private + */ + this._booted = false; + + if (game.config) + { + this.parseConfig(game.config); + } + + this.setupScale(width, height); + +}; + +/** +* A scale mode that stretches content to fill all available space - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.EXACT_FIT = 0; + +/** +* A scale mode that prevents any scaling - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.NO_SCALE = 1; + +/** +* A scale mode that shows the entire game while maintaining proportions - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.SHOW_ALL = 2; + +/** +* A scale mode that causes the Game size to change - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.RESIZE = 3; + +/** +* A scale mode that allows a custom scale factor - see {@link Phaser.ScaleManager#scaleMode scaleMode}. +* +* @constant +* @type {integer} +*/ +Phaser.ScaleManager.USER_SCALE = 4; + +Phaser.ScaleManager.prototype = { + + /** + * Start the ScaleManager. + * + * @method Phaser.ScaleManager#boot + * @protected + */ + boot: function () { + + // Configure device-dependent compatibility + + var compat = this.compatibility; + + compat.supportsFullScreen = this.game.device.fullscreen && !this.game.device.cocoonJS; + + // We can't do anything about the status bars in iPads, web apps or desktops + if (!this.game.device.iPad && !this.game.device.webApp && !this.game.device.desktop) + { + if (this.game.device.android && !this.game.device.chrome) + { + compat.scrollTo = new Phaser.Point(0, 1); + } + else + { + compat.scrollTo = new Phaser.Point(0, 0); + } + } + + if (this.game.device.desktop) + { + compat.orientationFallback = 'screen'; + compat.clickTrampoline = 'when-not-mouse'; + } + else + { + compat.orientationFallback = ''; + compat.clickTrampoline = ''; + } + + // Configure event listeners + + var _this = this; + + this._orientationChange = function(event) { + return _this.orientationChange(event); + }; + + this._windowResize = function(event) { + return _this.windowResize(event); + }; + + // This does not appear to be on the standards track + window.addEventListener('orientationchange', this._orientationChange, false); + window.addEventListener('resize', this._windowResize, false); + + if (this.compatibility.supportsFullScreen) + { + this._fullScreenChange = function(event) { + return _this.fullScreenChange(event); + }; + + this._fullScreenError = function(event) { + return _this.fullScreenError(event); + }; + + document.addEventListener('webkitfullscreenchange', this._fullScreenChange, false); + document.addEventListener('mozfullscreenchange', this._fullScreenChange, false); + document.addEventListener('MSFullscreenChange', this._fullScreenChange, false); + document.addEventListener('fullscreenchange', this._fullScreenChange, false); + + document.addEventListener('webkitfullscreenerror', this._fullScreenError, false); + document.addEventListener('mozfullscreenerror', this._fullScreenError, false); + document.addEventListener('MSFullscreenError', this._fullScreenError, false); + document.addEventListener('fullscreenerror', this._fullScreenError, false); + } + + this.game.onResume.add(this._gameResumed, this); + + // Initialize core bounds + + this.dom.getOffset(this.game.canvas, this.offset); + + this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); + + this.setGameSize(this.game.width, this.game.height); + + // Don't use updateOrientationState so events are not fired + this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); + + if (Phaser.FlexGrid) + { + this.grid = new Phaser.FlexGrid(this, this.width, this.height); + } + + this._booted = true; + + if (this._pendingScaleMode) + { + this.scaleMode = this._pendingScaleMode; + this._pendingScaleMode = null; + } + + }, + + /** + * Load configuration settings. + * + * @method Phaser.ScaleManager#parseConfig + * @protected + * @param {object} config - The game configuration object. + */ + parseConfig: function (config) { + + if (config['scaleMode']) + { + if (this._booted) + { + this.scaleMode = config['scaleMode']; + } + else + { + this._pendingScaleMode = config['scaleMode']; + } + } + + if (config['fullScreenScaleMode']) + { + this.fullScreenScaleMode = config['fullScreenScaleMode']; + } + + if (config['fullScreenTarget']) + { + this.fullScreenTarget = config['fullScreenTarget']; + } + + }, + + /** + * Calculates and sets the game dimensions based on the given width and height. + * + * This should _not_ be called when in fullscreen mode. + * + * @method Phaser.ScaleManager#setupScale + * @protected + * @param {number|string} width - The width of the game. + * @param {number|string} height - The height of the game. + */ + setupScale: function (width, height) { + + var target; + var rect = new Phaser.Rectangle(); + + if (this.game.parent !== '') + { + if (typeof this.game.parent === 'string') + { + // hopefully an element ID + target = document.getElementById(this.game.parent); + } + else if (this.game.parent && this.game.parent.nodeType === 1) + { + // quick test for a HTMLelement + target = this.game.parent; + } + } + + // Fallback, covers an invalid ID and a non HTMLelement object + if (!target) + { + // Use the full window + this.parentNode = null; + this.parentIsWindow = true; + + rect.width = this.dom.visualBounds.width; + rect.height = this.dom.visualBounds.height; + + this.offset.set(0, 0); + } + else + { + this.parentNode = target; + this.parentIsWindow = false; + + this.getParentBounds(this._parentBounds); + + rect.width = this._parentBounds.width; + rect.height = this._parentBounds.height; + + this.offset.set(this._parentBounds.x, this._parentBounds.y); + } + + var newWidth = 0; + var newHeight = 0; + + if (typeof width === 'number') + { + newWidth = width; + } + else + { + // Percentage based + this.parentScaleFactor.x = parseInt(width, 10) / 100; + newWidth = rect.width * this.parentScaleFactor.x; + } + + if (typeof height === 'number') + { + newHeight = height; + } + else + { + // Percentage based + this.parentScaleFactor.y = parseInt(height, 10) / 100; + newHeight = rect.height * this.parentScaleFactor.y; + } + + this._gameSize.setTo(0, 0, newWidth, newHeight); + + this.updateDimensions(newWidth, newHeight, false); + + }, + + /** + * Invoked when the game is resumed. + * + * @method Phaser.ScaleManager#_gameResumed + * @private + */ + _gameResumed: function () { + + this.queueUpdate(true); + + }, + + /** + * Set the actual Game size. + * Use this instead of directly changing `game.width` or `game.height`. + * + * The actual physical display (Canvas element size) depends on various settings including + * - Scale mode + * - Scaling factor + * - Size of Canvas's parent element or CSS rules such as min-height/max-height; + * - The size of the Window + * + * @method Phaser.ScaleManager#setGameSize + * @public + * @param {integer} width - _Game width_, in pixels. + * @param {integer} height - _Game height_, in pixels. + */ + setGameSize: function (width, height) { + + this._gameSize.setTo(0, 0, width, height); + + if (this.currentScaleMode !== Phaser.ScaleManager.RESIZE) + { + this.updateDimensions(width, height, true); + } + + this.queueUpdate(true); + + }, + + /** + * Set a User scaling factor used in the USER_SCALE scaling mode. + * + * The target canvas size is computed by: + * + * canvas.width = (game.width * hScale) - hTrim + * canvas.height = (game.height * vScale) - vTrim + * + * This method can be used in the {@link Phaser.ScaleManager#setResizeCallback resize callback}. + * + * @method Phaser.ScaleManager#setUserScale + * @param {number} hScale - Horizontal scaling factor. + * @param {numer} vScale - Vertical scaling factor. + * @param {integer} [hTrim=0] - Horizontal trim, applied after scaling. + * @param {integer} [vTrim=0] - Vertical trim, applied after scaling. + */ + setUserScale: function (hScale, vScale, hTrim, vTrim) { + + this._userScaleFactor.setTo(hScale, vScale); + this._userScaleTrim.setTo(hTrim | 0, vTrim | 0); + this.queueUpdate(true); + + }, + + /** + * Sets the callback that will be invoked before sizing calculations. + * + * This is the appropriate place to call {@link #setUserScale} if needing custom dynamic scaling. + * + * The callback is supplied with two arguments `scale` and `parentBounds` where `scale` is the ScaleManager + * and `parentBounds`, a Phaser.Rectangle, is the size of the Parent element. + * + * This callback + * - May be invoked even though the parent container or canvas sizes have not changed + * - Unlike {@link #onSizeChange}, it runs _before_ the canvas is guaranteed to be updated + * - Will be invoked from `preUpdate`, _even when_ the game is paused + * + * See {@link #onSizeChange} for a better way of reacting to layout updates. + * + * @method Phaser.ScaleManager#setResizeCallback + * @public + * @param {function} callback - The callback that will be called each time a window.resize event happens or if set, the parent container resizes. + * @param {object} context - The context in which the callback will be called. + */ + setResizeCallback: function (callback, context) { + + this.onResize = callback; + this.onResizeContext = context; + + }, + + /** + * Signals a resize - IF the canvas or Game size differs from the last signal. + * + * This also triggers updates on {@link #grid} (FlexGrid) and, if in a RESIZE mode, `game.state` (StateManager). + * + * @method Phaser.ScaleManager#signalSizeChange + * @private + */ + signalSizeChange: function () { + + if (!Phaser.Rectangle.sameDimensions(this, this._lastReportedCanvasSize) || + !Phaser.Rectangle.sameDimensions(this.game, this._lastReportedGameSize)) + { + var width = this.width; + var height = this.height; + + this._lastReportedCanvasSize.setTo(0, 0, width, height); + this._lastReportedGameSize.setTo(0, 0, this.game.width, this.game.height); + + if (this.grid) + { + this.grid.onResize(width, height); + } + + this.onSizeChange.dispatch(this, width, height); + + // Per StateManager#onResizeCallback, it only occurs when in RESIZE mode. + if (this.currentScaleMode === Phaser.ScaleManager.RESIZE) + { + this.game.state.resize(width, height); + this.game.load.resize(width, height); + } + } + + }, + + /** + * Set the min and max dimensions for the Display canvas. + * + * _Note:_ The min/max dimensions are only applied in some cases + * - When the device is not in an incorrect orientation; or + * - The scale mode is EXACT_FIT when not in fullscreen + * + * @method Phaser.ScaleManager#setMinMax + * @public + * @param {number} minWidth - The minimum width the game is allowed to scale down to. + * @param {number} minHeight - The minimum height the game is allowed to scale down to. + * @param {number} [maxWidth] - The maximum width the game is allowed to scale up to; only changed if specified. + * @param {number} [maxHeight] - The maximum height the game is allowed to scale up to; only changed if specified. + * @todo These values are only sometimes honored. + */ + setMinMax: function (minWidth, minHeight, maxWidth, maxHeight) { + + this.minWidth = minWidth; + this.minHeight = minHeight; + + if (typeof maxWidth !== 'undefined') + { + this.maxWidth = maxWidth; + } + + if (typeof maxHeight !== 'undefined') + { + this.maxHeight = maxHeight; + } + + }, + + /** + * The ScaleManager.preUpdate is called automatically by the core Game loop. + * + * @method Phaser.ScaleManager#preUpdate + * @protected + */ + preUpdate: function () { + + if (this.game.time.time < (this._lastUpdate + this._updateThrottle)) + { + return; + } + + var prevThrottle = this._updateThrottle; + this._updateThrottleReset = prevThrottle >= 400 ? 0 : 100; + + this.dom.getOffset(this.game.canvas, this.offset); + + var prevWidth = this._parentBounds.width; + var prevHeight = this._parentBounds.height; + var bounds = this.getParentBounds(this._parentBounds); + + var boundsChanged = bounds.width !== prevWidth || bounds.height !== prevHeight; + + // Always invalidate on a newly detected orientation change + var orientationChanged = this.updateOrientationState(); + + if (boundsChanged || orientationChanged) + { + if (this.onResize) + { + this.onResize.call(this.onResizeContext, this, bounds); + } + + this.updateLayout(); + + this.signalSizeChange(); + } + + // Next throttle, eg. 25, 50, 100, 200.. + var throttle = this._updateThrottle * 2; + + // Don't let an update be too eager about resetting the throttle. + if (this._updateThrottle < prevThrottle) + { + throttle = Math.min(prevThrottle, this._updateThrottleReset); + } + + this._updateThrottle = Phaser.Math.clamp(throttle, 25, this.trackParentInterval); + this._lastUpdate = this.game.time.time; + + }, + + /** + * Update method while paused. + * + * @method Phaser.ScaleManager#pauseUpdate + * @private + */ + pauseUpdate: function () { + + this.preUpdate(); + + // Updates at slowest. + this._updateThrottle = this.trackParentInterval; + + }, + + /** + * Update the dimensions taking the parent scaling factor into account. + * + * @method Phaser.ScaleManager#updateDimensions + * @private + * @param {number} width - The new width of the parent container. + * @param {number} height - The new height of the parent container. + * @param {boolean} resize - True if the renderer should be resized, otherwise false to just update the internal vars. + */ + updateDimensions: function (width, height, resize) { + + this.width = width * this.parentScaleFactor.x; + this.height = height * this.parentScaleFactor.y; + + this.game.width = this.width; + this.game.height = this.height; + + this.sourceAspectRatio = this.width / this.height; + this.updateScalingAndBounds(); + + if (resize) + { + // Resize the renderer (which in turn resizes the Display canvas!) + this.game.renderer.resize(this.width, this.height); + + // The Camera can never be smaller than the Game size + this.game.camera.setSize(this.width, this.height); + + // This should only happen if the world is smaller than the new canvas size + this.game.world.resize(this.width, this.height); + } + + }, + + /** + * Update relevant scaling values based on the ScaleManager dimension and game dimensions, + * which should already be set. This does not change {@link #sourceAspectRatio}. + * + * @method Phaser.ScaleManager#updateScalingAndBounds + * @private + */ + updateScalingAndBounds: function () { + + this.scaleFactor.x = this.game.width / this.width; + this.scaleFactor.y = this.game.height / this.height; + + this.scaleFactorInversed.x = this.width / this.game.width; + this.scaleFactorInversed.y = this.height / this.game.height; + + this.aspectRatio = this.width / this.height; + + // This can be invoked in boot pre-canvas + if (this.game.canvas) + { + this.dom.getOffset(this.game.canvas, this.offset); + } + + this.bounds.setTo(this.offset.x, this.offset.y, this.width, this.height); + + // Can be invoked in boot pre-input + if (this.game.input && this.game.input.scale) + { + this.game.input.scale.setTo(this.scaleFactor.x, this.scaleFactor.y); + } + + }, + + /** + * Force the game to run in only one orientation. + * + * This enables generation of incorrect orientation signals and affects resizing but does not otherwise rotate or lock the orientation. + * + * Orientation checks are performed via the Screen Orientation API, if available in browser. This means it will check your monitor + * orientation on desktop, or your device orientation on mobile, rather than comparing actual game dimensions. If you need to check the + * viewport dimensions instead and bypass the Screen Orientation API then set: `ScaleManager.compatibility.orientationFallback = 'viewport'` + * + * @method Phaser.ScaleManager#forceOrientation + * @public + * @param {boolean} forceLandscape - true if the game should run in landscape mode only. + * @param {boolean} [forcePortrait=false] - true if the game should run in portrait mode only. + */ + forceOrientation: function (forceLandscape, forcePortrait) { + + if (forcePortrait === undefined) { forcePortrait = false; } + + this.forceLandscape = forceLandscape; + this.forcePortrait = forcePortrait; + + this.queueUpdate(true); + + }, + + /** + * Classify the orientation, per `getScreenOrientation`. + * + * @method Phaser.ScaleManager#classifyOrientation + * @private + * @param {string} orientation - The orientation string, e.g. 'portrait-primary'. + * @return {?string} The classified orientation: 'portrait', 'landscape`, or null. + */ + classifyOrientation: function (orientation) { + + if (orientation === 'portrait-primary' || orientation === 'portrait-secondary') + { + return 'portrait'; + } + else if (orientation === 'landscape-primary' || orientation === 'landscape-secondary') + { + return 'landscape'; + } + else + { + return null; + } + + }, + + /** + * Updates the current orientation and dispatches orientation change events. + * + * @method Phaser.ScaleManager#updateOrientationState + * @private + * @return {boolean} True if the orientation state changed which means a forced update is likely required. + */ + updateOrientationState: function () { + + var previousOrientation = this.screenOrientation; + var previouslyIncorrect = this.incorrectOrientation; + + this.screenOrientation = this.dom.getScreenOrientation(this.compatibility.orientationFallback); + + this.incorrectOrientation = (this.forceLandscape && !this.isLandscape) || + (this.forcePortrait && !this.isPortrait); + + var changed = previousOrientation !== this.screenOrientation; + var correctnessChanged = previouslyIncorrect !== this.incorrectOrientation; + + if (correctnessChanged) + { + if (this.incorrectOrientation) + { + this.enterIncorrectOrientation.dispatch(); + } + else + { + this.leaveIncorrectOrientation.dispatch(); + } + } + + if (changed || correctnessChanged) + { + this.onOrientationChange.dispatch(this, previousOrientation, previouslyIncorrect); + } + + return changed || correctnessChanged; + + }, + + /** + * window.orientationchange event handler. + * + * @method Phaser.ScaleManager#orientationChange + * @private + * @param {Event} event - The orientationchange event data. + */ + orientationChange: function (event) { + + this.event = event; + + this.queueUpdate(true); + + }, + + /** + * window.resize event handler. + * + * @method Phaser.ScaleManager#windowResize + * @private + * @param {Event} event - The resize event data. + */ + windowResize: function (event) { + + this.event = event; + + this.queueUpdate(true); + + }, + + /** + * Scroll to the top - in some environments. See `compatibility.scrollTo`. + * + * @method Phaser.ScaleManager#scrollTop + * @private + */ + scrollTop: function () { + + var scrollTo = this.compatibility.scrollTo; + + if (scrollTo) + { + window.scrollTo(scrollTo.x, scrollTo.y); + } + + }, + + /** + * The "refresh" methods informs the ScaleManager that a layout refresh is required. + * + * The ScaleManager automatically queues a layout refresh (eg. updates the Game size or Display canvas layout) + * when the browser is resized, the orientation changes, or when there is a detected change + * of the Parent size. Refreshing is also done automatically when public properties, + * such as {@link #scaleMode}, are updated or state-changing methods are invoked. + * + * The "refresh" method _may_ need to be used in a few (rare) situtations when + * + * - a device change event is not correctly detected; or + * - the Parent size changes (and an immediate reflow is desired); or + * - the ScaleManager state is updated by non-standard means; or + * - certain {@link #compatibility} properties are manually changed. + * + * The queued layout refresh is not immediate but will run promptly in an upcoming `preRender`. + * + * @method Phaser.ScaleManager#refresh + * @public + */ + refresh: function () { + + this.scrollTop(); + this.queueUpdate(true); + + }, + + /** + * Updates the game / canvas position and size. + * + * @method Phaser.ScaleManager#updateLayout + * @private + */ + updateLayout: function () { + + var scaleMode = this.currentScaleMode; + + if (scaleMode === Phaser.ScaleManager.RESIZE) + { + this.reflowGame(); + return; + } + + this.scrollTop(); + + if (this.compatibility.forceMinimumDocumentHeight) + { + // (This came from older code, by why is it here?) + // Set minimum height of content to new window height + document.documentElement.style.minHeight = window.innerHeight + 'px'; + } + + if (this.incorrectOrientation) + { + this.setMaximum(); + } + else + { + if (scaleMode === Phaser.ScaleManager.EXACT_FIT) + { + this.setExactFit(); + } + else if (scaleMode === Phaser.ScaleManager.SHOW_ALL) + { + if (!this.isFullScreen && this.boundingParent && + this.compatibility.canExpandParent) + { + // Try to expand parent out, but choosing maximizing dimensions. + // Then select minimize dimensions which should then honor parent + // maximum bound applications. + this.setShowAll(true); + this.resetCanvas(); + this.setShowAll(); + } + else + { + this.setShowAll(); + } + } + else if (scaleMode === Phaser.ScaleManager.NO_SCALE) + { + this.width = this.game.width; + this.height = this.game.height; + } + else if (scaleMode === Phaser.ScaleManager.USER_SCALE) + { + this.width = (this.game.width * this._userScaleFactor.x) - this._userScaleTrim.x; + this.height = (this.game.height * this._userScaleFactor.y) - this._userScaleTrim.y; + } + } + + if (!this.compatibility.canExpandParent && + (scaleMode === Phaser.ScaleManager.SHOW_ALL || scaleMode === Phaser.ScaleManager.USER_SCALE)) + { + var bounds = this.getParentBounds(this._tempBounds); + this.width = Math.min(this.width, bounds.width); + this.height = Math.min(this.height, bounds.height); + } + + // Always truncate / force to integer + this.width = this.width | 0; + this.height = this.height | 0; + + this.reflowCanvas(); + + }, + + /** + * Returns the computed Parent size/bounds that the Display canvas is allowed/expected to fill. + * + * If in fullscreen mode or without parent (see {@link #parentIsWindow}), + * this will be the bounds of the visual viewport itself. + * + * This function takes the {@link #windowConstraints} into consideration - if the parent is partially outside + * the viewport then this function may return a smaller than expected size. + * + * Values are rounded to the nearest pixel. + * + * @method Phaser.ScaleManager#getParentBounds + * @protected + * @param {Phaser.Rectangle} [target=(new Rectangle)] - The rectangle to update; a new one is created as needed. + * @return {Phaser.Rectangle} The established parent bounds. + */ + getParentBounds: function (target) { + + var bounds = target || new Phaser.Rectangle(); + var parentNode = this.boundingParent; + var visualBounds = this.dom.visualBounds; + var layoutBounds = this.dom.layoutBounds; + + if (!parentNode) + { + bounds.setTo(0, 0, visualBounds.width, visualBounds.height); + } + else + { + // Ref. http://msdn.microsoft.com/en-us/library/hh781509(v=vs.85).aspx for getBoundingClientRect + var clientRect = parentNode.getBoundingClientRect(); + var parentRect = (parentNode.offsetParent) ? parentNode.offsetParent.getBoundingClientRect() : parentNode.getBoundingClientRect(); + + bounds.setTo(clientRect.left - parentRect.left, clientRect.top - parentRect.top, clientRect.width, clientRect.height); + + var wc = this.windowConstraints; + + if (wc.right) + { + var windowBounds = wc.right === 'layout' ? layoutBounds : visualBounds; + bounds.right = Math.min(bounds.right, windowBounds.width); + } + + if (wc.bottom) + { + var windowBounds = wc.bottom === 'layout' ? layoutBounds : visualBounds; + bounds.bottom = Math.min(bounds.bottom, windowBounds.height); + } + } + + bounds.setTo( + Math.round(bounds.x), Math.round(bounds.y), + Math.round(bounds.width), Math.round(bounds.height)); + + return bounds; + + }, + + /** + * Update the canvas position/margins - for alignment within the parent container. + * + * The canvas margins _must_ be reset/cleared prior to invoking this. + * + * @method Phaser.ScaleManager#alignCanvas + * @private + * @param {boolean} horizontal - Align horizontally? + * @param {boolean} vertical - Align vertically? + */ + alignCanvas: function (horizontal, vertical) { + + var parentBounds = this.getParentBounds(this._tempBounds); + var canvas = this.game.canvas; + var margin = this.margin; + + if (horizontal) + { + margin.left = margin.right = 0; + + var canvasBounds = canvas.getBoundingClientRect(); + + if (this.width < parentBounds.width && !this.incorrectOrientation) + { + var currentEdge = canvasBounds.left - parentBounds.x; + var targetEdge = (parentBounds.width / 2) - (this.width / 2); + + targetEdge = Math.max(targetEdge, 0); + + var offset = targetEdge - currentEdge; + + margin.left = Math.round(offset); + } + + canvas.style.marginLeft = margin.left + 'px'; + + if (margin.left !== 0) + { + margin.right = -(parentBounds.width - canvasBounds.width - margin.left); + canvas.style.marginRight = margin.right + 'px'; + } + } + + if (vertical) + { + margin.top = margin.bottom = 0; + + var canvasBounds = canvas.getBoundingClientRect(); + + if (this.height < parentBounds.height && !this.incorrectOrientation) + { + var currentEdge = canvasBounds.top - parentBounds.y; + var targetEdge = (parentBounds.height / 2) - (this.height / 2); + + targetEdge = Math.max(targetEdge, 0); + + var offset = targetEdge - currentEdge; + margin.top = Math.round(offset); + } + + canvas.style.marginTop = margin.top + 'px'; + + if (margin.top !== 0) + { + margin.bottom = -(parentBounds.height - canvasBounds.height - margin.top); + canvas.style.marginBottom = margin.bottom + 'px'; + } + } + + // Silly backwards compatibility.. + margin.x = margin.left; + margin.y = margin.top; + + }, + + /** + * Updates the Game state / size. + * + * The canvas margins may always be adjusted, even if alignment is not in effect. + * + * @method Phaser.ScaleManager#reflowGame + * @private + */ + reflowGame: function () { + + this.resetCanvas('', ''); + + var bounds = this.getParentBounds(this._tempBounds); + this.updateDimensions(bounds.width, bounds.height, true); + + }, + + /** + * Updates the Display canvas size. + * + * The canvas margins may always be adjusted, even alignment is not in effect. + * + * @method Phaser.ScaleManager#reflowCanvas + * @private + */ + reflowCanvas: function () { + + if (!this.incorrectOrientation) + { + this.width = Phaser.Math.clamp(this.width, this.minWidth || 0, this.maxWidth || this.width); + this.height = Phaser.Math.clamp(this.height, this.minHeight || 0, this.maxHeight || this.height); + } + + this.resetCanvas(); + + if (!this.compatibility.noMargins) + { + if (this.isFullScreen && this._createdFullScreenTarget) + { + this.alignCanvas(true, true); + } + else + { + this.alignCanvas(this.pageAlignHorizontally, this.pageAlignVertically); + } + } + + this.updateScalingAndBounds(); + + }, + + /** + * "Reset" the Display canvas and set the specified width/height. + * + * @method Phaser.ScaleManager#resetCanvas + * @private + * @param {string} [cssWidth=(current width)] - The css width to set. + * @param {string} [cssHeight=(current height)] - The css height to set. + */ + resetCanvas: function (cssWidth, cssHeight) { + + if (cssWidth === undefined) { cssWidth = this.width + 'px'; } + if (cssHeight === undefined) { cssHeight = this.height + 'px'; } + + var canvas = this.game.canvas; + + if (!this.compatibility.noMargins) + { + canvas.style.marginLeft = ''; + canvas.style.marginTop = ''; + canvas.style.marginRight = ''; + canvas.style.marginBottom = ''; + } + + canvas.style.width = cssWidth; + canvas.style.height = cssHeight; + + }, + + /** + * Queues/marks a size/bounds check as needing to occur (from `preUpdate`). + * + * @method Phaser.ScaleManager#queueUpdate + * @private + * @param {boolean} force - If true resets the parent bounds to ensure the check is dirty. + */ + queueUpdate: function (force) { + + if (force) + { + this._parentBounds.width = 0; + this._parentBounds.height = 0; + } + + this._updateThrottle = this._updateThrottleReset; + + }, + + /** + * Reset internal data/state. + * + * @method Phaser.ScaleManager#reset + * @private + */ + reset: function (clearWorld) { + + if (clearWorld && this.grid) + { + this.grid.reset(); + } + + }, + + /** + * Updates the width/height to that of the window. + * + * @method Phaser.ScaleManager#setMaximum + * @private + */ + setMaximum: function () { + + this.width = this.dom.visualBounds.width; + this.height = this.dom.visualBounds.height; + + }, + + /** + * Updates the width/height such that the game is scaled proportionally. + * + * @method Phaser.ScaleManager#setShowAll + * @private + * @param {boolean} expanding - If true then the maximizing dimension is chosen. + */ + setShowAll: function (expanding) { + + var bounds = this.getParentBounds(this._tempBounds); + var width = bounds.width; + var height = bounds.height; + + var multiplier; + + if (expanding) + { + multiplier = Math.max((height / this.game.height), (width / this.game.width)); + } + else + { + multiplier = Math.min((height / this.game.height), (width / this.game.width)); + } + + this.width = Math.round(this.game.width * multiplier); + this.height = Math.round(this.game.height * multiplier); + + }, + + /** + * Updates the width/height such that the game is stretched to the available size. + * Honors {@link #maxWidth} and {@link #maxHeight} when _not_ in fullscreen. + * + * @method Phaser.ScaleManager#setExactFit + * @private + */ + setExactFit: function () { + + var bounds = this.getParentBounds(this._tempBounds); + + this.width = bounds.width; + this.height = bounds.height; + + if (this.isFullScreen) + { + // Max/min not honored fullscreen + return; + } + + if (this.maxWidth) + { + this.width = Math.min(this.width, this.maxWidth); + } + + if (this.maxHeight) + { + this.height = Math.min(this.height, this.maxHeight); + } + + }, + + /** + * Creates a fullscreen target. This is called automatically as as needed when entering + * fullscreen mode and the resulting element is supplied to {@link #onFullScreenInit}. + * + * Use {@link #onFullScreenInit} to customize the created object. + * + * @method Phaser.ScaleManager#createFullScreenTarget + * @protected + */ + createFullScreenTarget: function () { + + var fsTarget = document.createElement('div'); + + fsTarget.style.margin = '0'; + fsTarget.style.padding = '0'; + fsTarget.style.background = '#000'; + + return fsTarget; + + }, + + /** + * Start the browsers fullscreen mode - this _must_ be called from a user input Pointer or Mouse event. + * + * The Fullscreen API must be supported by the browser for this to work - it is not the same as setting + * the game size to fill the browser window. See {@link Phaser.ScaleManager#compatibility compatibility.supportsFullScreen} to check if the current + * device is reported to support fullscreen mode. + * + * The {@link #fullScreenFailed} signal will be dispatched if the fullscreen change request failed or the game does not support the Fullscreen API. + * + * @method Phaser.ScaleManager#startFullScreen + * @public + * @param {boolean} [antialias] - Changes the anti-alias feature of the canvas before jumping in to fullscreen (false = retain pixel art, true = smooth art). If not specified then no change is made. Only works in CANVAS mode. + * @param {boolean} [allowTrampoline=undefined] - Internal argument. If `false` click trampolining is suppressed. + * @return {boolean} Returns true if the device supports fullscreen mode and fullscreen mode was attempted to be started. (It might not actually start, wait for the signals.) + */ + startFullScreen: function (antialias, allowTrampoline) { + + if (this.isFullScreen) + { + return false; + } + + if (!this.compatibility.supportsFullScreen) + { + // Error is called in timeout to emulate the real fullscreenerror event better + var _this = this; + setTimeout(function () { + _this.fullScreenError(); + }, 10); + return; + } + + if (this.compatibility.clickTrampoline === 'when-not-mouse') + { + var input = this.game.input; + + if (input.activePointer && + input.activePointer !== input.mousePointer && + (allowTrampoline || allowTrampoline !== false)) + { + input.activePointer.addClickTrampoline("startFullScreen", this.startFullScreen, this, [antialias, false]); + return; + } + } + + if (typeof antialias !== 'undefined' && this.game.renderType === Phaser.CANVAS) + { + this.game.stage.smoothed = antialias; + } + + var fsTarget = this.fullScreenTarget; + + if (!fsTarget) + { + this.cleanupCreatedTarget(); + + this._createdFullScreenTarget = this.createFullScreenTarget(); + fsTarget = this._createdFullScreenTarget; + } + + var initData = { + targetElement: fsTarget + }; + + this.onFullScreenInit.dispatch(this, initData); + + if (this._createdFullScreenTarget) + { + // Move the Display canvas inside of the target and add the target to the DOM + // (The target has to be added for the Fullscreen API to work.) + var canvas = this.game.canvas; + var parent = canvas.parentNode; + parent.insertBefore(fsTarget, canvas); + fsTarget.appendChild(canvas); + } + + if (this.game.device.fullscreenKeyboard) + { + fsTarget[this.game.device.requestFullscreen](Element.ALLOW_KEYBOARD_INPUT); + } + else + { + fsTarget[this.game.device.requestFullscreen](); + } + + return true; + + }, + + /** + * Stops / exits fullscreen mode, if active. + * + * @method Phaser.ScaleManager#stopFullScreen + * @public + * @return {boolean} Returns true if the browser supports fullscreen mode and fullscreen mode will be exited. + */ + stopFullScreen: function () { + + if (!this.isFullScreen || !this.compatibility.supportsFullScreen) + { + return false; + } + + document[this.game.device.cancelFullscreen](); + + return true; + + }, + + /** + * Cleans up the previous fullscreen target, if such was automatically created. + * This ensures the canvas is restored to its former parent, assuming the target didn't move. + * + * @method Phaser.ScaleManager#cleanupCreatedTarget + * @private + */ + cleanupCreatedTarget: function () { + + var fsTarget = this._createdFullScreenTarget; + + if (fsTarget && fsTarget.parentNode) + { + // Make sure to cleanup synthetic target for sure; + // swap the canvas back to the parent. + var parent = fsTarget.parentNode; + parent.insertBefore(this.game.canvas, fsTarget); + parent.removeChild(fsTarget); + } + + this._createdFullScreenTarget = null; + + }, + + /** + * Used to prepare/restore extra fullscreen mode settings. + * (This does move any elements within the DOM tree.) + * + * @method Phaser.ScaleManager#prepScreenMode + * @private + * @param {boolean} enteringFullscreen - True if _entering_ fullscreen, false if _leaving_. + */ + prepScreenMode: function (enteringFullscreen) { + + var createdTarget = !!this._createdFullScreenTarget; + var fsTarget = this._createdFullScreenTarget || this.fullScreenTarget; + + if (enteringFullscreen) + { + if (createdTarget || this.fullScreenScaleMode === Phaser.ScaleManager.EXACT_FIT) + { + // Resize target, as long as it's not the canvas + if (fsTarget !== this.game.canvas) + { + this._fullScreenRestore = { + targetWidth: fsTarget.style.width, + targetHeight: fsTarget.style.height + }; + + fsTarget.style.width = '100%'; + fsTarget.style.height = '100%'; + } + } + } + else + { + // Have restore information + if (this._fullScreenRestore) + { + fsTarget.style.width = this._fullScreenRestore.targetWidth; + fsTarget.style.height = this._fullScreenRestore.targetHeight; + + this._fullScreenRestore = null; + } + + // Always reset to game size + this.updateDimensions(this._gameSize.width, this._gameSize.height, true); + this.resetCanvas(); + } + + }, + + /** + * Called automatically when the browser enters of leaves fullscreen mode. + * + * @method Phaser.ScaleManager#fullScreenChange + * @private + * @param {Event} [event=undefined] - The fullscreenchange event + */ + fullScreenChange: function (event) { + + this.event = event; + + if (this.isFullScreen) + { + this.prepScreenMode(true); + + this.updateLayout(); + this.queueUpdate(true); + } + else + { + this.prepScreenMode(false); + + this.cleanupCreatedTarget(); + + this.updateLayout(); + this.queueUpdate(true); + } + + this.onFullScreenChange.dispatch(this, this.width, this.height); + + }, + + /** + * Called automatically when the browser fullscreen request fails; + * or called when a fullscreen request is made on a device for which it is not supported. + * + * @method Phaser.ScaleManager#fullScreenError + * @private + * @param {Event} [event=undefined] - The fullscreenerror event; undefined if invoked on a device that does not support the Fullscreen API. + */ + fullScreenError: function (event) { + + this.event = event; + + this.cleanupCreatedTarget(); + + console.warn('Phaser.ScaleManager: requestFullscreen failed or device does not support the Fullscreen API'); + + this.onFullScreenError.dispatch(this); + + }, + + /** + * Takes a Sprite or Image object and scales it to fit the given dimensions. + * Scaling happens proportionally without distortion to the sprites texture. + * The letterBox parameter controls if scaling will produce a letter-box effect or zoom the + * sprite until it fills the given values. Note that with letterBox set to false the scaled sprite may spill out over either + * the horizontal or vertical sides of the target dimensions. If you wish to stop this you can crop the Sprite. + * + * @method Phaser.ScaleManager#scaleSprite + * @protected + * @param {Phaser.Sprite|Phaser.Image} sprite - The sprite we want to scale. + * @param {integer} [width] - The target width that we want to fit the sprite in to. If not given it defaults to ScaleManager.width. + * @param {integer} [height] - The target height that we want to fit the sprite in to. If not given it defaults to ScaleManager.height. + * @param {boolean} [letterBox=false] - True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. + * @return {Phaser.Sprite|Phaser.Image} The scaled sprite. + */ + scaleSprite: function (sprite, width, height, letterBox) { + + if (width === undefined) { width = this.width; } + if (height === undefined) { height = this.height; } + if (letterBox === undefined) { letterBox = false; } + + if (!sprite || !sprite['scale']) + { + return sprite; + } + + sprite.scale.x = 1; + sprite.scale.y = 1; + + if ((sprite.width <= 0) || (sprite.height <= 0) || (width <= 0) || (height <= 0)) + { + return sprite; + } + + var scaleX1 = width; + var scaleY1 = (sprite.height * width) / sprite.width; + + var scaleX2 = (sprite.width * height) / sprite.height; + var scaleY2 = height; + + var scaleOnWidth = (scaleX2 > width); + + if (scaleOnWidth) + { + scaleOnWidth = letterBox; + } + else + { + scaleOnWidth = !letterBox; + } + + if (scaleOnWidth) + { + sprite.width = Math.floor(scaleX1); + sprite.height = Math.floor(scaleY1); + } + else + { + sprite.width = Math.floor(scaleX2); + sprite.height = Math.floor(scaleY2); + } + + // Enable at some point? + // sprite.x = Math.floor((width - sprite.width) / 2); + // sprite.y = Math.floor((height - sprite.height) / 2); + + return sprite; + + }, + + /** + * Destroys the ScaleManager and removes any event listeners. + * This should probably only be called when the game is destroyed. + * + * @method Phaser.ScaleManager#destroy + * @protected + */ + destroy: function () { + + this.game.onResume.remove(this._gameResumed, this); + + window.removeEventListener('orientationchange', this._orientationChange, false); + window.removeEventListener('resize', this._windowResize, false); + + if (this.compatibility.supportsFullScreen) + { + document.removeEventListener('webkitfullscreenchange', this._fullScreenChange, false); + document.removeEventListener('mozfullscreenchange', this._fullScreenChange, false); + document.removeEventListener('MSFullscreenChange', this._fullScreenChange, false); + document.removeEventListener('fullscreenchange', this._fullScreenChange, false); + + document.removeEventListener('webkitfullscreenerror', this._fullScreenError, false); + document.removeEventListener('mozfullscreenerror', this._fullScreenError, false); + document.removeEventListener('MSFullscreenError', this._fullScreenError, false); + document.removeEventListener('fullscreenerror', this._fullScreenError, false); + } + + } + +}; + +Phaser.ScaleManager.prototype.constructor = Phaser.ScaleManager; + +/** +* The DOM element that is considered the Parent bounding element, if any. +* +* This `null` if {@link #parentIsWindow} is true or if fullscreen mode is entered and {@link #fullScreenTarget} is specified. +* It will also be null if there is no game canvas or if the game canvas has no parent. +* +* @name Phaser.ScaleManager#boundingParent +* @property {?DOMElement} boundingParent +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "boundingParent", { + + get: function () { + if (this.parentIsWindow || + (this.isFullScreen && !this._createdFullScreenTarget)) + { + return null; + } + + var parentNode = this.game.canvas && this.game.canvas.parentNode; + return parentNode || null; + } + +}); + +/** +* The scaling method used by the ScaleManager when not in fullscreen. +* +*
+*
{@link Phaser.ScaleManager.NO_SCALE}
+*
+* The Game display area will not be scaled - even if it is too large for the canvas/screen. +* This mode _ignores_ any applied scaling factor and displays the canvas at the Game size. +*
+*
{@link Phaser.ScaleManager.EXACT_FIT}
+*
+* The Game display area will be _stretched_ to fill the entire size of the canvas's parent element and/or screen. +* Proportions are not maintained. +*
+*
{@link Phaser.ScaleManager.SHOW_ALL}
+*
+* Show the entire game display area while _maintaining_ the original aspect ratio. +*
+*
{@link Phaser.ScaleManager.RESIZE}
+*
+* The dimensions of the game display area are changed to match the size of the parent container. +* That is, this mode _changes the Game size_ to match the display size. +*

+* Any manually set Game size (see {@link #setGameSize}) is ignored while in effect. +*

+*
{@link Phaser.ScaleManager.USER_SCALE}
+*
+* The game Display is scaled according to the user-specified scale set by {@link Phaser.ScaleManager#setUserScale setUserScale}. +*

+* This scale can be adjusted in the {@link Phaser.ScaleManager#setResizeCallback resize callback} +* for flexible custom-sizing needs. +*

+*
+* +* @name Phaser.ScaleManager#scaleMode +* @property {integer} scaleMode +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "scaleMode", { + + get: function () { + + return this._scaleMode; + + }, + + set: function (value) { + + if (value !== this._scaleMode) + { + if (!this.isFullScreen) + { + this.updateDimensions(this._gameSize.width, this._gameSize.height, true); + this.queueUpdate(true); + } + + this._scaleMode = value; + } + + return this._scaleMode; + + } + +}); + +/** +* The scaling method used by the ScaleManager when in fullscreen. +* +* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. +* +* @name Phaser.ScaleManager#fullScreenScaleMode +* @property {integer} fullScreenScaleMode +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "fullScreenScaleMode", { + + get: function () { + + return this._fullScreenScaleMode; + + }, + + set: function (value) { + + if (value !== this._fullScreenScaleMode) + { + // If in fullscreen then need a wee bit more work + if (this.isFullScreen) + { + this.prepScreenMode(false); + this._fullScreenScaleMode = value; + this.prepScreenMode(true); + + this.queueUpdate(true); + } + else + { + this._fullScreenScaleMode = value; + } + } + + return this._fullScreenScaleMode; + + } + +}); + +/** +* Returns the current scale mode - for normal or fullscreen operation. +* +* See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. +* +* @name Phaser.ScaleManager#currentScaleMode +* @property {number} currentScaleMode +* @protected +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "currentScaleMode", { + + get: function () { + + return this.isFullScreen ? this._fullScreenScaleMode : this._scaleMode; + + } + +}); + +/** +* When enabled the Display canvas will be horizontally-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). +* +* To align horizontally across the page the Display canvas should be added directly to page; +* or the parent container should itself be horizontally aligned. +* +* Horizontal alignment is not applicable with the {@link .RESIZE} scaling mode. +* +* @name Phaser.ScaleManager#pageAlignHorizontally +* @property {boolean} pageAlignHorizontally +* @default false +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignHorizontally", { + + get: function () { + + return this._pageAlignHorizontally; + + }, + + set: function (value) { + + if (value !== this._pageAlignHorizontally) + { + this._pageAlignHorizontally = value; + this.queueUpdate(true); + } + + } + +}); + +/** +* When enabled the Display canvas will be vertically-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). +* +* To align vertically the Parent element should have a _non-collapsible_ height, such that it will maintain +* a height _larger_ than the height of the contained Game canvas - the game canvas will then be scaled vertically +* _within_ the remaining available height dictated by the Parent element. +* +* One way to prevent the parent from collapsing is to add an absolute "min-height" CSS property to the parent element. +* If specifying a relative "min-height/height" or adjusting margins, the Parent height must still be non-collapsible (see note). +* +* _Note_: In version 2.2 the minimum document height is _not_ automatically set to the viewport/window height. +* To automatically update the minimum document height set {@link Phaser.ScaleManager#compatibility compatibility.forceMinimumDocumentHeight} to true. +* +* Vertical alignment is not applicable with the {@link .RESIZE} scaling mode. +* +* @name Phaser.ScaleManager#pageAlignVertically +* @property {boolean} pageAlignVertically +* @default false +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "pageAlignVertically", { + + get: function () { + + return this._pageAlignVertically; + + }, + + set: function (value) { + + if (value !== this._pageAlignVertically) + { + this._pageAlignVertically = value; + this.queueUpdate(true); + } + + } + +}); + +/** +* Returns true if the browser is in fullscreen mode, otherwise false. +* @name Phaser.ScaleManager#isFullScreen +* @property {boolean} isFullScreen +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isFullScreen", { + + get: function () { + return !!(document['fullscreenElement'] || + document['webkitFullscreenElement'] || + document['mozFullScreenElement'] || + document['msFullscreenElement']); + } + +}); + +/** +* Returns true if the screen orientation is in portrait mode. +* +* @name Phaser.ScaleManager#isPortrait +* @property {boolean} isPortrait +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isPortrait", { + + get: function () { + return this.classifyOrientation(this.screenOrientation) === 'portrait'; + } + +}); + +/** +* Returns true if the screen orientation is in landscape mode. +* +* @name Phaser.ScaleManager#isLandscape +* @property {boolean} isLandscape +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isLandscape", { + + get: function () { + return this.classifyOrientation(this.screenOrientation) === 'landscape'; + } + +}); + +/** +* Returns true if the game dimensions are portrait (height > width). +* This is especially useful to check when using the RESIZE scale mode +* but wanting to maintain game orientation on desktop browsers, +* where typically the screen orientation will always be landscape regardless of the browser viewport. +* +* @name Phaser.ScaleManager#isGamePortrait +* @property {boolean} isGamePortrait +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isGamePortrait", { + + get: function () { + return (this.height > this.width); + } + +}); + +/** +* Returns true if the game dimensions are landscape (width > height). +* This is especially useful to check when using the RESIZE scale mode +* but wanting to maintain game orientation on desktop browsers, +* where typically the screen orientation will always be landscape regardless of the browser viewport. +* +* @name Phaser.ScaleManager#isGameLandscape +* @property {boolean} isGameLandscape +* @readonly +*/ +Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { + + get: function () { + return (this.width > this.height); + } + +}); + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * A collection of methods for displaying debug information about game objects. * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture @@ -77999,6 +76829,439 @@ Phaser.Utils.Debug.prototype.constructor = Phaser.Utils.Debug; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* DOM utility class. +* +* Provides a useful Window and Element functions as well as cross-browser compatibility buffer. +* +* Some code originally derived from {@link https://github.com/ryanve/verge verge}. +* Some parts were inspired by the research of Ryan Van Etten, released under MIT License 2013. +* +* @class Phaser.DOM +* @static +*/ +Phaser.DOM = { + + /** + * Get the [absolute] position of the element relative to the Document. + * + * The value may vary slightly as the page is scrolled due to rounding errors. + * + * @method Phaser.DOM.getOffset + * @param {DOMElement} element - The targeted element that we want to retrieve the offset. + * @param {Phaser.Point} [point] - The point we want to take the x/y values of the offset. + * @return {Phaser.Point} - A point objet with the offsetX and Y as its properties. + */ + getOffset: function (element, point) { + + point = point || new Phaser.Point(); + + var box = element.getBoundingClientRect(); + + var scrollTop = Phaser.DOM.scrollY; + var scrollLeft = Phaser.DOM.scrollX; + var clientTop = document.documentElement.clientTop; + var clientLeft = document.documentElement.clientLeft; + + point.x = box.left + scrollLeft - clientLeft; + point.y = box.top + scrollTop - clientTop; + + return point; + + }, + + /** + * A cross-browser element.getBoundingClientRect method with optional cushion. + * + * Returns a plain object containing the properties `top/bottom/left/right/width/height` with respect to the top-left corner of the current viewport. + * Its properties match the native rectangle. + * The cushion parameter is an amount of pixels (+/-) to cushion the element. + * It adjusts the measurements such that it is possible to detect when an element is near the viewport. + * + * @method Phaser.DOM.getBounds + * @param {DOMElement|Object} element - The element or stack (uses first item) to get the bounds for. + * @param {number} [cushion] - A +/- pixel adjustment amount. + * @return {Object|boolean} A plain object containing the properties `top/bottom/left/right/width/height` or `false` if a non-valid element is given. + */ + getBounds: function (element, cushion) { + + if (cushion === undefined) { cushion = 0; } + + element = element && !element.nodeType ? element[0] : element; + + if (!element || element.nodeType !== 1) + { + return false; + } + else + { + return this.calibrate(element.getBoundingClientRect(), cushion); + } + + }, + + /** + * Calibrates element coordinates for `inLayoutViewport` checks. + * + * @method Phaser.DOM.calibrate + * @private + * @param {object} coords - An object containing the following properties: `{top: number, right: number, bottom: number, left: number}` + * @param {number} [cushion] - A value to adjust the coordinates by. + * @return {object} The calibrated element coordinates + */ + calibrate: function (coords, cushion) { + + cushion = +cushion || 0; + + var output = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0 }; + + output.width = (output.right = coords.right + cushion) - (output.left = coords.left - cushion); + output.height = (output.bottom = coords.bottom + cushion) - (output.top = coords.top - cushion); + + return output; + + }, + + /** + * Get the Visual viewport aspect ratio (or the aspect ratio of an object or element) + * + * @method Phaser.DOM.getAspectRatio + * @param {(DOMElement|Object)} [object=(visualViewport)] - The object to determine the aspect ratio for. Must have public `width` and `height` properties or methods. + * @return {number} The aspect ratio. + */ + getAspectRatio: function (object) { + + object = null == object ? this.visualBounds : 1 === object.nodeType ? this.getBounds(object) : object; + + var w = object['width']; + var h = object['height']; + + if (typeof w === 'function') + { + w = w.call(object); + } + + if (typeof h === 'function') + { + h = h.call(object); + } + + return w / h; + + }, + + /** + * Tests if the given DOM element is within the Layout viewport. + * + * The optional cushion parameter allows you to specify a distance. + * + * inLayoutViewport(element, 100) is `true` if the element is in the viewport or 100px near it. + * inLayoutViewport(element, -100) is `true` if the element is in the viewport or at least 100px near it. + * + * @method Phaser.DOM.inLayoutViewport + * @param {DOMElement|Object} element - The DOM element to check. If no element is given it defaults to the Phaser game canvas. + * @param {number} [cushion] - The cushion allows you to specify a distance within which the element must be within the viewport. + * @return {boolean} True if the element is within the viewport, or within `cushion` distance from it. + */ + inLayoutViewport: function (element, cushion) { + + var r = this.getBounds(element, cushion); + + return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= this.layoutBounds.width && r.left <= this.layoutBounds.height; + + }, + + /** + * Returns the device screen orientation. + * + * Orientation values: 'portrait-primary', 'landscape-primary', 'portrait-secondary', 'landscape-secondary'. + * + * Order of resolving: + * - Screen Orientation API, or variation of - Future track. Most desktop and mobile browsers. + * - Screen size ratio check - If fallback is 'screen', suited for desktops. + * - Viewport size ratio check - If fallback is 'viewport', suited for mobile. + * - window.orientation - If fallback is 'window.orientation', works iOS and probably most Android; non-recommended track. + * - Media query + * - Viewport size ratio check (probably only IE9 and legacy mobile gets here..) + * + * See + * - https://w3c.github.io/screen-orientation/ (conflicts with mozOrientation/msOrientation) + * - https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation (mozOrientation) + * - http://msdn.microsoft.com/en-us/library/ie/dn342934(v=vs.85).aspx + * - https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries + * - http://stackoverflow.com/questions/4917664/detect-viewport-orientation + * - http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation + * + * @method Phaser.DOM.getScreenOrientation + * @protected + * @param {string} [primaryFallback=(none)] - Specify 'screen', 'viewport', or 'window.orientation'. + */ + getScreenOrientation: function (primaryFallback) { + + var screen = window.screen; + var orientation = screen.orientation || screen.mozOrientation || screen.msOrientation; + + if (orientation && typeof orientation.type === 'string') + { + // Screen Orientation API specification + return orientation.type; + } + else if (typeof orientation === 'string') + { + // moz/ms-orientation are strings + return orientation; + } + + var PORTRAIT = 'portrait-primary'; + var LANDSCAPE = 'landscape-primary'; + + if (primaryFallback === 'screen') + { + return (screen.height > screen.width) ? PORTRAIT : LANDSCAPE; + } + else if (primaryFallback === 'viewport') + { + return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; + } + else if (primaryFallback === 'window.orientation' && typeof window.orientation === 'number') + { + // This may change by device based on "natural" orientation. + return (window.orientation === 0 || window.orientation === 180) ? PORTRAIT : LANDSCAPE; + } + else if (window.matchMedia) + { + if (window.matchMedia("(orientation: portrait)").matches) + { + return PORTRAIT; + } + else if (window.matchMedia("(orientation: landscape)").matches) + { + return LANDSCAPE; + } + } + + return (this.visualBounds.height > this.visualBounds.width) ? PORTRAIT : LANDSCAPE; + + }, + + /** + * The bounds of the Visual viewport, as discussed in + * {@link http://www.quirksmode.org/mobile/viewports.html A tale of two viewports — part one} + * with one difference: the viewport size _excludes_ scrollbars, as found on some desktop browsers. + * + * Supported mobile: + * iOS/Safari, Android 4, IE10, Firefox OS (maybe not Firefox Android), Opera Mobile 16 + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} x - Scroll, left offset - eg. "scrollX" + * @property {number} y - Scroll, top offset - eg. "scrollY" + * @property {number} width - Viewport width in pixels. + * @property {number} height - Viewport height in pixels. + * @readonly + */ + visualBounds: new Phaser.Rectangle(), + + /** + * The bounds of the Layout viewport, as discussed in + * {@link http://www.quirksmode.org/mobile/viewports2.html A tale of two viewports — part two}; + * but honoring the constraints as specified applicable viewport meta-tag. + * + * The bounds returned are not guaranteed to be fully aligned with CSS media queries (see + * {@link http://www.matanich.com/2013/01/07/viewport-size/ What size is my viewport?}). + * + * This is _not_ representative of the Visual bounds: in particular the non-primary axis will + * generally be significantly larger than the screen height on mobile devices when running with a + * constrained viewport. + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} width - Viewport width in pixels. + * @property {number} height - Viewport height in pixels. + * @readonly + */ + layoutBounds: new Phaser.Rectangle(), + + /** + * The size of the document / Layout viewport. + * + * This incorrectly reports the dimensions in IE. + * + * The properties change dynamically. + * + * @type {Phaser.Rectangle} + * @property {number} width - Document width in pixels. + * @property {number} height - Document height in pixels. + * @readonly + */ + documentBounds: new Phaser.Rectangle() + +}; + +Phaser.Device.whenReady(function (device) { + + // All target browsers should support page[XY]Offset. + var scrollX = window && ('pageXOffset' in window) ? + function () { return window.pageXOffset; } : + function () { return document.documentElement.scrollLeft; }; + + var scrollY = window && ('pageYOffset' in window) ? + function () { return window.pageYOffset; } : + function () { return document.documentElement.scrollTop; }; + + /** + * A cross-browser window.scrollX. + * + * @name Phaser.DOM.scrollX + * @property {number} scrollX + * @readonly + * @protected + */ + Object.defineProperty(Phaser.DOM, "scrollX", { + get: scrollX + }); + + /** + * A cross-browser window.scrollY. + * + * @name Phaser.DOM.scrollY + * @property {number} scrollY + * @readonly + * @protected + */ + Object.defineProperty(Phaser.DOM, "scrollY", { + get: scrollY + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "x", { + get: scrollX + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "y", { + get: scrollY + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "x", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "y", { + value: 0 + }); + + var treatAsDesktop = device.desktop && + (document.documentElement.clientWidth <= window.innerWidth) && + (document.documentElement.clientHeight <= window.innerHeight); + + // Desktop browsers align the layout viewport with the visual viewport. + // This differs from mobile browsers with their zooming design. + // Ref. http://quirksmode.org/mobile/tableViewport.html + if (treatAsDesktop) + { + + // PST- When scrollbars are not included this causes upstream issues in ScaleManager. + // So reverted to the old "include scrollbars." + var clientWidth = function () { + return Math.max(window.innerWidth, document.documentElement.clientWidth); + }; + var clientHeight = function () { + return Math.max(window.innerHeight, document.documentElement.clientHeight); + }; + + // Interested in area sans-scrollbar + Object.defineProperty(Phaser.DOM.visualBounds, "width", { + get: clientWidth + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "height", { + get: clientHeight + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "width", { + get: clientWidth + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "height", { + get: clientHeight + }); + + } else { + + Object.defineProperty(Phaser.DOM.visualBounds, "width", { + get: function () { + return window.innerWidth; + } + }); + + Object.defineProperty(Phaser.DOM.visualBounds, "height", { + get: function () { + return window.innerHeight; + } + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "width", { + + get: function () { + var a = document.documentElement.clientWidth; + var b = window.innerWidth; + + return a < b ? b : a; // max + } + + }); + + Object.defineProperty(Phaser.DOM.layoutBounds, "height", { + + get: function () { + var a = document.documentElement.clientHeight; + var b = window.innerHeight; + + return a < b ? b : a; // max + } + + }); + + } + + // For Phaser.DOM.documentBounds + // Ref. http://www.quirksmode.org/mobile/tableViewport_desktop.html + + Object.defineProperty(Phaser.DOM.documentBounds, "x", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "y", { + value: 0 + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "width", { + + get: function () { + var d = document.documentElement; + return Math.max(d.clientWidth, d.offsetWidth, d.scrollWidth); + } + + }); + + Object.defineProperty(Phaser.DOM.documentBounds, "height", { + + get: function () { + var d = document.documentElement; + return Math.max(d.clientHeight, d.offsetHeight, d.scrollHeight); + } + + }); + +}, null, true); + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * ArraySet is a Set data structure (items must be unique within the set) that also maintains order. * This allows specific items to be easily added or removed from the Set. @@ -78163,7 +77426,7 @@ Phaser.ArraySet.prototype = { */ callAll: function (key) { - var args = Array.prototype.splice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); var i = this.list.length; @@ -78574,6 +77837,844 @@ Phaser.ArrayUtils = { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* A basic Linked List data structure. +* +* This implementation _modifies_ the `prev` and `next` properties of each item added: +* - The `prev` and `next` properties must be writable and should not be used for any other purpose. +* - Items _cannot_ be added to multiple LinkedLists at the same time. +* - Only objects can be added. +* +* @class Phaser.LinkedList +* @constructor +*/ +Phaser.LinkedList = function () { + + /** + * Next element in the list. + * @property {object} next + * @default + */ + this.next = null; + + /** + * Previous element in the list. + * @property {object} prev + * @default + */ + this.prev = null; + + /** + * First element in the list. + * @property {object} first + * @default + */ + this.first = null; + + /** + * Last element in the list. + * @property {object} last + * @default + */ + this.last = null; + + /** + * Number of elements in the list. + * @property {integer} total + * @default + */ + this.total = 0; + +}; + +Phaser.LinkedList.prototype = { + + /** + * Adds a new element to this linked list. + * + * @method Phaser.LinkedList#add + * @param {object} item - The element to add to this list. Can be a Phaser.Sprite or any other object you need to quickly iterate through. + * @return {object} The item that was added. + */ + add: function (item) { + + // If the list is empty + if (this.total === 0 && this.first === null && this.last === null) + { + this.first = item; + this.last = item; + this.next = item; + item.prev = this; + this.total++; + return item; + } + + // Gets appended to the end of the list, regardless of anything, and it won't have any children of its own (non-nested list) + this.last.next = item; + + item.prev = this.last; + + this.last = item; + + this.total++; + + return item; + + }, + + /** + * Resets the first, last, next and previous node pointers in this list. + * + * @method Phaser.LinkedList#reset + */ + reset: function () { + + this.first = null; + this.last = null; + this.next = null; + this.prev = null; + this.total = 0; + + }, + + /** + * Removes the given element from this linked list if it exists. + * + * @method Phaser.LinkedList#remove + * @param {object} item - The item to be removed from the list. + */ + remove: function (item) { + + if (this.total === 1) + { + this.reset(); + item.next = item.prev = null; + return; + } + + if (item === this.first) + { + // It was 'first', make 'first' point to first.next + this.first = this.first.next; + } + else if (item === this.last) + { + // It was 'last', make 'last' point to last.prev + this.last = this.last.prev; + } + + if (item.prev) + { + // make item.prev.next point to childs.next instead of item + item.prev.next = item.next; + } + + if (item.next) + { + // make item.next.prev point to item.prev instead of item + item.next.prev = item.prev; + } + + item.next = item.prev = null; + + if (this.first === null ) + { + this.last = null; + } + + this.total--; + + }, + + /** + * Calls a function on all members of this list, using the member as the context for the callback. + * The function must exist on the member. + * + * @method Phaser.LinkedList#callAll + * @param {function} callback - The function to call. + */ + callAll: function (callback) { + + if (!this.first || !this.last) + { + return; + } + + var entity = this.first; + + do + { + if (entity && entity[callback]) + { + entity[callback].call(entity); + } + + entity = entity.next; + + } + while(entity != this.last.next); + + } + +}; + +Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content +* quickly and easily, without the need for any external files. You can create textures for sprites and in +* coming releases we'll add dynamic sound effect generation support as well (like sfxr). +* +* Access this via `State.create` (or `this.create` from within a State object) +* +* @class Phaser.Create +* @constructor +* @param {Phaser.Game} game - Game reference to the currently running game. + */ +Phaser.Create = function (game) { + + /** + * @property {Phaser.Game} game - A reference to the currently running Game. + */ + this.game = game; + + /** + * @property {Phaser.BitmapData} bmd - The internal BitmapData Create uses to generate textures from. + */ + this.bmd = null; + + /** + * @property {HTMLCanvasElement} canvas - The canvas the BitmapData uses. + */ + this.canvas = null; + + /** + * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. + */ + this.ctx = null; + + /** + * @property {array} palettes - A range of 16 color palettes for use with sprite generation. + */ + this.palettes = [ + { 0: '#000', 1: '#9D9D9D', 2: '#FFF', 3: '#BE2633', 4: '#E06F8B', 5: '#493C2B', 6: '#A46422', 7: '#EB8931', 8: '#F7E26B', 9: '#2F484E', A: '#44891A', B: '#A3CE27', C: '#1B2632', D: '#005784', E: '#31A2F2', F: '#B2DCEF' }, + { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#f5f4eb' }, + { 0: '#000', 1: '#2234d1', 2: '#0c7e45', 3: '#44aacc', 4: '#8a3622', 5: '#5c2e78', 6: '#aa5c3d', 7: '#b5b5b5', 8: '#5e606e', 9: '#4c81fb', A: '#6cd947', B: '#7be2f9', C: '#eb8a60', D: '#e23d69', E: '#ffd93f', F: '#fff' }, + { 0: '#000', 1: '#fff', 2: '#8b4131', 3: '#7bbdc5', 4: '#8b41ac', 5: '#6aac41', 6: '#3931a4', 7: '#d5de73', 8: '#945a20', 9: '#5a4100', A: '#bd736a', B: '#525252', C: '#838383', D: '#acee8b', E: '#7b73de', F: '#acacac' }, + { 0: '#000', 1: '#191028', 2: '#46af45', 3: '#a1d685', 4: '#453e78', 5: '#7664fe', 6: '#833129', 7: '#9ec2e8', 8: '#dc534b', 9: '#e18d79', A: '#d6b97b', B: '#e9d8a1', C: '#216c4b', D: '#d365c8', E: '#afaab9', F: '#fff' } + ]; + +}; + +/** +* A 16 color palette by [Arne](http://androidarts.com/palette/16pal.htm) +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_ARNE = 0; + +/** +* A 16 color JMP inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_JMP = 1; + +/** +* A 16 color CGA inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_CGA = 2; + +/** +* A 16 color C64 inspired palette. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_C64 = 3; + +/** +* A 16 color palette inspired by Japanese computers like the MSX. +* @constant +* @type {number} +*/ +Phaser.Create.PALETTE_JAPANESE_MACHINE = 4; + +Phaser.Create.prototype = { + + /** + * Generates a new PIXI.Texture from the given data, which can be applied to a Sprite. + * + * This allows you to create game graphics quickly and easily, with no external files but that use actual proper images + * rather than Phaser.Graphics objects, which are expensive to render and limited in scope. + * + * Each element of the array is a string holding the pixel color values, as mapped to one of the Phaser.Create PALETTE consts. + * + * For example: + * + * `var data = [ + * ' 333 ', + * ' 777 ', + * 'E333E', + * ' 333 ', + * ' 3 3 ' + * ];` + * + * `game.create.texture('bob', data);` + * + * The above will create a new texture called `bob`, which will look like a little man wearing a hat. You can then use it + * for sprites the same way you use any other texture: `game.add.sprite(0, 0, 'bob');` + * + * @method Phaser.Create#texture + * @param {string} key - The key used to store this texture in the Phaser Cache. + * @param {array} data - An array of pixel data. + * @param {integer} [pixelWidth=8] - The width of each pixel. + * @param {integer} [pixelHeight=8] - The height of each pixel. + * @param {integer} [palette=0] - The palette to use when rendering the texture. One of the Phaser.Create.PALETTE consts. + * @return {PIXI.Texture} The newly generated texture. + */ + texture: function (key, data, pixelWidth, pixelHeight, palette) { + + if (pixelWidth === undefined) { pixelWidth = 8; } + if (pixelHeight === undefined) { pixelHeight = pixelWidth; } + if (palette === undefined) { palette = 0; } + + var w = data[0].length * pixelWidth; + var h = data.length * pixelHeight; + + // No bmd? Let's make one + if (this.bmd === null) + { + this.bmd = this.game.make.bitmapData(); + this.canvas = this.bmd.canvas; + this.ctx = this.bmd.context; + } + + this.bmd.resize(w, h); + this.bmd.clear(); + + // Draw it + for (var y = 0; y < data.length; y++) + { + var row = data[y]; + + for (var x = 0; x < row.length; x++) + { + var d = row[x]; + + if (d !== '.' && d !== ' ') + { + this.ctx.fillStyle = this.palettes[palette][d]; + this.ctx.fillRect(x * pixelWidth, y * pixelHeight, pixelWidth, pixelHeight); + } + } + } + + return this.bmd.generateTexture(key); + + }, + + /** + * Creates a grid texture based on the given dimensions. + * + * @method Phaser.Create#grid + * @param {string} key - The key used to store this texture in the Phaser Cache. + * @param {integer} width - The width of the grid in pixels. + * @param {integer} height - The height of the grid in pixels. + * @param {integer} cellWidth - The width of the grid cells in pixels. + * @param {integer} cellHeight - The height of the grid cells in pixels. + * @param {string} color - The color to draw the grid lines in. Should be a Canvas supported color string like `#ff5500` or `rgba(200,50,3,0.5)`. + * @return {PIXI.Texture} The newly generated texture. + */ + grid: function (key, width, height, cellWidth, cellHeight, color) { + + // No bmd? Let's make one + if (this.bmd === null) + { + this.bmd = this.game.make.bitmapData(); + this.canvas = this.bmd.canvas; + this.ctx = this.bmd.context; + } + + this.bmd.resize(width, height); + + this.ctx.fillStyle = color; + + for (var y = 0; y < height; y += cellHeight) + { + this.ctx.fillRect(0, y, width, 1); + } + + for (var x = 0; x < width; x += cellWidth) + { + this.ctx.fillRect(x, 0, 1, height); + } + + return this.bmd.generateTexture(key); + + } + +}; + +Phaser.Create.prototype.constructor = Phaser.Create; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. +* Please try to avoid using in production games with a long time to build. +* This is also why the documentation is incomplete. +* +* FlexGrid is a a responsive grid manager that works in conjunction with the ScaleManager RESIZE scaling mode and FlexLayers +* to provide for game object positioning in a responsive manner. +* +* @class Phaser.FlexGrid +* @constructor +* @param {Phaser.ScaleManager} manager - The ScaleManager. +* @param {number} width - The width of the game. +* @param {number} height - The height of the game. +*/ +Phaser.FlexGrid = function (manager, width, height) { + + /** + * @property {Phaser.Game} game - A reference to the currently running Game. + */ + this.game = manager.game; + + /** + * @property {Phaser.ScaleManager} manager - A reference to the ScaleManager. + */ + this.manager = manager; + + // The perfect dimensions on which everything else is based + this.width = width; + this.height = height; + + this.boundsCustom = new Phaser.Rectangle(0, 0, width, height); + this.boundsFluid = new Phaser.Rectangle(0, 0, width, height); + this.boundsFull = new Phaser.Rectangle(0, 0, width, height); + this.boundsNone = new Phaser.Rectangle(0, 0, width, height); + + /** + * @property {Phaser.Point} position - + * @readonly + */ + this.positionCustom = new Phaser.Point(0, 0); + this.positionFluid = new Phaser.Point(0, 0); + this.positionFull = new Phaser.Point(0, 0); + this.positionNone = new Phaser.Point(0, 0); + + /** + * @property {Phaser.Point} scaleFactor - The scale factor based on the game dimensions vs. the scaled dimensions. + * @readonly + */ + this.scaleCustom = new Phaser.Point(1, 1); + this.scaleFluid = new Phaser.Point(1, 1); + this.scaleFluidInversed = new Phaser.Point(1, 1); + this.scaleFull = new Phaser.Point(1, 1); + this.scaleNone = new Phaser.Point(1, 1); + + this.customWidth = 0; + this.customHeight = 0; + this.customOffsetX = 0; + this.customOffsetY = 0; + + this.ratioH = width / height; + this.ratioV = height / width; + + this.multiplier = 0; + + this.layers = []; + +}; + +Phaser.FlexGrid.prototype = { + + /** + * Sets the core game size. This resets the w/h parameters and bounds. + * + * @method Phaser.FlexGrid#setSize + * @param {number} width - The new dimensions. + * @param {number} height - The new dimensions. + */ + setSize: function (width, height) { + + // These are locked and don't change until setSize is called again + this.width = width; + this.height = height; + + this.ratioH = width / height; + this.ratioV = height / width; + + this.scaleNone = new Phaser.Point(1, 1); + + this.boundsNone.width = this.width; + this.boundsNone.height = this.height; + + this.refresh(); + + }, + + // Need ability to create your own layers with custom scaling, etc. + + /** + * A custom layer is centered on the game and maintains its aspect ratio as it scales up and down. + * + * @method Phaser.FlexGrid#createCustomLayer + * @param {number} width - Width of this layer in pixels. + * @param {number} height - Height of this layer in pixels. + * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createCustomLayer: function (width, height, children, addToWorld) { + + if (addToWorld === undefined) { addToWorld = true; } + + this.customWidth = width; + this.customHeight = height; + + this.boundsCustom.width = width; + this.boundsCustom.height = height; + + var layer = new Phaser.FlexLayer(this, this.positionCustom, this.boundsCustom, this.scaleCustom); + + if (addToWorld) + { + this.game.world.add(layer); + } + + this.layers.push(layer); + + if (typeof children !== 'undefined' && typeof children !== null) + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A fluid layer is centered on the game and maintains its aspect ratio as it scales up and down. + * + * @method Phaser.FlexGrid#createFluidLayer + * @param {array} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFluidLayer: function (children, addToWorld) { + + if (addToWorld === undefined) { addToWorld = true; } + + var layer = new Phaser.FlexLayer(this, this.positionFluid, this.boundsFluid, this.scaleFluid); + + if (addToWorld) + { + this.game.world.add(layer); + } + + this.layers.push(layer); + + if (typeof children !== 'undefined' && typeof children !== null) + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A full layer is placed at 0,0 and extends to the full size of the game. Children are scaled according to the fluid ratios. + * + * @method Phaser.FlexGrid#createFullLayer + * @param {array} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFullLayer: function (children) { + + var layer = new Phaser.FlexLayer(this, this.positionFull, this.boundsFull, this.scaleFluid); + + this.game.world.add(layer); + + this.layers.push(layer); + + if (typeof children !== 'undefined') + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * A fixed layer is centered on the game and is the size of the required dimensions and is never scaled. + * + * @method Phaser.FlexGrid#createFixedLayer + * @param {PIXI.DisplayObject[]} [children] - An array of children that are used to populate the FlexLayer. + * @return {Phaser.FlexLayer} The Layer object. + */ + createFixedLayer: function (children) { + + var layer = new Phaser.FlexLayer(this, this.positionNone, this.boundsNone, this.scaleNone); + + this.game.world.add(layer); + + this.layers.push(layer); + + if (typeof children !== 'undefined') + { + layer.addMultiple(children); + } + + return layer; + + }, + + /** + * Resets the layer children references + * + * @method Phaser.FlexGrid#reset + */ + reset: function () { + + var i = this.layers.length; + + while (i--) + { + if (!this.layers[i].persist) + { + // Remove references to this class + this.layers[i].position = null; + this.layers[i].scale = null; + this.layers.slice(i, 1); + } + } + + }, + + /** + * Called when the game container changes dimensions. + * + * @method Phaser.FlexGrid#onResize + * @param {number} width - The new width of the game container. + * @param {number} height - The new height of the game container. + */ + onResize: function (width, height) { + + this.ratioH = width / height; + this.ratioV = height / width; + + this.refresh(width, height); + + }, + + /** + * Updates all internal vars such as the bounds and scale values. + * + * @method Phaser.FlexGrid#refresh + */ + refresh: function () { + + this.multiplier = Math.min((this.manager.height / this.height), (this.manager.width / this.width)); + + this.boundsFluid.width = Math.round(this.width * this.multiplier); + this.boundsFluid.height = Math.round(this.height * this.multiplier); + + this.scaleFluid.set(this.boundsFluid.width / this.width, this.boundsFluid.height / this.height); + this.scaleFluidInversed.set(this.width / this.boundsFluid.width, this.height / this.boundsFluid.height); + + this.scaleFull.set(this.boundsFull.width / this.width, this.boundsFull.height / this.height); + + this.boundsFull.width = Math.round(this.manager.width * this.scaleFluidInversed.x); + this.boundsFull.height = Math.round(this.manager.height * this.scaleFluidInversed.y); + + this.boundsFluid.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); + this.boundsNone.centerOn(this.manager.bounds.centerX, this.manager.bounds.centerY); + + this.positionFluid.set(this.boundsFluid.x, this.boundsFluid.y); + this.positionNone.set(this.boundsNone.x, this.boundsNone.y); + + }, + + /** + * Fits a sprites width to the bounds. + * + * @method Phaser.FlexGrid#fitSprite + * @param {Phaser.Sprite} sprite - The Sprite to fit. + */ + fitSprite: function (sprite) { + + this.manager.scaleSprite(sprite); + + sprite.x = this.manager.bounds.centerX; + sprite.y = this.manager.bounds.centerY; + + }, + + /** + * Call in the render function to output the bounds rects. + * + * @method Phaser.FlexGrid#debug + */ + debug: function () { + + // for (var i = 0; i < this.layers.length; i++) + // { + // this.layers[i].debug(); + // } + + // this.game.debug.text(this.boundsFull.width + ' x ' + this.boundsFull.height, this.boundsFull.x + 4, this.boundsFull.y + 16); + // this.game.debug.geom(this.boundsFull, 'rgba(0,0,255,0.9', false); + + this.game.debug.text(this.boundsFluid.width + ' x ' + this.boundsFluid.height, this.boundsFluid.x + 4, this.boundsFluid.y + 16); + this.game.debug.geom(this.boundsFluid, 'rgba(255,0,0,0.9', false); + + // this.game.debug.text(this.boundsNone.width + ' x ' + this.boundsNone.height, this.boundsNone.x + 4, this.boundsNone.y + 16); + // this.game.debug.geom(this.boundsNone, 'rgba(0,255,0,0.9', false); + + // this.game.debug.text(this.boundsCustom.width + ' x ' + this.boundsCustom.height, this.boundsCustom.x + 4, this.boundsCustom.y + 16); + // this.game.debug.geom(this.boundsCustom, 'rgba(255,255,0,0.9', false); + + } + +}; + +Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. +* Please try to avoid using in production games with a long time to build. +* This is also why the documentation is incomplete. +* +* A responsive grid layer. +* +* @class Phaser.FlexLayer +* @extends Phaser.Group +* @constructor +* @param {Phaser.FlexGrid} manager - The FlexGrid that owns this FlexLayer. +* @param {Phaser.Point} position - A reference to the Point object used for positioning. +* @param {Phaser.Rectangle} bounds - A reference to the Rectangle used for the layer bounds. +* @param {Phaser.Point} scale - A reference to the Point object used for layer scaling. +*/ +Phaser.FlexLayer = function (manager, position, bounds, scale) { + + Phaser.Group.call(this, manager.game, null, '__flexLayer' + manager.game.rnd.uuid(), false); + + /** + * @property {Phaser.ScaleManager} scale - A reference to the ScaleManager. + */ + this.manager = manager.manager; + + /** + * @property {Phaser.FlexGrid} grid - A reference to the FlexGrid that owns this layer. + */ + this.grid = manager; + + /** + * Should the FlexLayer remain through a State swap? + * + * @type {boolean} + */ + this.persist = false; + + /** + * @property {Phaser.Point} position + */ + this.position = position; + + /** + * @property {Phaser.Rectangle} bounds + */ + this.bounds = bounds; + + /** + * @property {Phaser.Point} scale + */ + this.scale = scale; + + /** + * @property {Phaser.Point} topLeft + */ + this.topLeft = bounds.topLeft; + + /** + * @property {Phaser.Point} topMiddle + */ + this.topMiddle = new Phaser.Point(bounds.halfWidth, 0); + + /** + * @property {Phaser.Point} topRight + */ + this.topRight = bounds.topRight; + + /** + * @property {Phaser.Point} bottomLeft + */ + this.bottomLeft = bounds.bottomLeft; + + /** + * @property {Phaser.Point} bottomMiddle + */ + this.bottomMiddle = new Phaser.Point(bounds.halfWidth, bounds.bottom); + + /** + * @property {Phaser.Point} bottomRight + */ + this.bottomRight = bounds.bottomRight; + +}; + +Phaser.FlexLayer.prototype = Object.create(Phaser.Group.prototype); +Phaser.FlexLayer.prototype.constructor = Phaser.FlexLayer; + +/** + * Resize. + * + * @method Phaser.FlexLayer#resize + */ +Phaser.FlexLayer.prototype.resize = function () { +}; + +/** + * Debug. + * + * @method Phaser.FlexLayer#debug + */ +Phaser.FlexLayer.prototype.debug = function () { + + this.game.debug.text(this.bounds.width + ' x ' + this.bounds.height, this.bounds.x + 4, this.bounds.y + 16); + this.game.debug.geom(this.bounds, 'rgba(0,0,255,0.9', false); + + this.game.debug.geom(this.topLeft, 'rgba(255,255,255,0.9'); + this.game.debug.geom(this.topMiddle, 'rgba(255,255,255,0.9'); + this.game.debug.geom(this.topRight, 'rgba(255,255,255,0.9'); + +}; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * The Phaser.Color class is a set of static methods that assist in color manipulation and conversion. * @@ -79390,9 +79491,9 @@ Phaser.Color = { * * @method Phaser.Color.getRandomColor * @static - * @param {number} min - The lowest value to use for the color. - * @param {number} max - The highest value to use for the color. - * @param {number} alpha - The alpha value of the returning color (default 255 = fully opaque). + * @param {number} [min=0] - The lowest value to use for the color. + * @param {number} [max=255] - The highest value to use for the color. + * @param {number} [alpha=255] - The alpha value of the returning color (default 255 = fully opaque). * @returns {number} 32-bit color value with alpha. */ getRandomColor: function (min, max, alpha) { @@ -79914,195 +80015,6 @@ Phaser.Color = { * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -/** -* A basic Linked List data structure. -* -* This implementation _modifies_ the `prev` and `next` properties of each item added: -* - The `prev` and `next` properties must be writable and should not be used for any other purpose. -* - Items _cannot_ be added to multiple LinkedLists at the same time. -* - Only objects can be added. -* -* @class Phaser.LinkedList -* @constructor -*/ -Phaser.LinkedList = function () { - - /** - * Next element in the list. - * @property {object} next - * @default - */ - this.next = null; - - /** - * Previous element in the list. - * @property {object} prev - * @default - */ - this.prev = null; - - /** - * First element in the list. - * @property {object} first - * @default - */ - this.first = null; - - /** - * Last element in the list. - * @property {object} last - * @default - */ - this.last = null; - - /** - * Number of elements in the list. - * @property {integer} total - * @default - */ - this.total = 0; - -}; - -Phaser.LinkedList.prototype = { - - /** - * Adds a new element to this linked list. - * - * @method Phaser.LinkedList#add - * @param {object} item - The element to add to this list. Can be a Phaser.Sprite or any other object you need to quickly iterate through. - * @return {object} The item that was added. - */ - add: function (item) { - - // If the list is empty - if (this.total === 0 && this.first === null && this.last === null) - { - this.first = item; - this.last = item; - this.next = item; - item.prev = this; - this.total++; - return item; - } - - // Gets appended to the end of the list, regardless of anything, and it won't have any children of its own (non-nested list) - this.last.next = item; - - item.prev = this.last; - - this.last = item; - - this.total++; - - return item; - - }, - - /** - * Resets the first, last, next and previous node pointers in this list. - * - * @method Phaser.LinkedList#reset - */ - reset: function () { - - this.first = null; - this.last = null; - this.next = null; - this.prev = null; - this.total = 0; - - }, - - /** - * Removes the given element from this linked list if it exists. - * - * @method Phaser.LinkedList#remove - * @param {object} item - The item to be removed from the list. - */ - remove: function (item) { - - if (this.total === 1) - { - this.reset(); - item.next = item.prev = null; - return; - } - - if (item === this.first) - { - // It was 'first', make 'first' point to first.next - this.first = this.first.next; - } - else if (item === this.last) - { - // It was 'last', make 'last' point to last.prev - this.last = this.last.prev; - } - - if (item.prev) - { - // make item.prev.next point to childs.next instead of item - item.prev.next = item.next; - } - - if (item.next) - { - // make item.next.prev point to item.prev instead of item - item.next.prev = item.prev; - } - - item.next = item.prev = null; - - if (this.first === null ) - { - this.last = null; - } - - this.total--; - - }, - - /** - * Calls a function on all members of this list, using the member as the context for the callback. - * The function must exist on the member. - * - * @method Phaser.LinkedList#callAll - * @param {function} callback - The function to call. - */ - callAll: function (callback) { - - if (!this.first || !this.last) - { - return; - } - - var entity = this.first; - - do - { - if (entity && entity[callback]) - { - entity[callback].call(entity); - } - - entity = entity.next; - - } - while(entity != this.last.next); - - } - -}; - -Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; - -/** -* @author Richard Davey -* @copyright 2015 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - /** * The Physics Manager is responsible for looking after all of the running physics systems. * Phaser supports 4 physics systems: Arcade Physics, P2, Ninja Physics and Box2D via a commercial plugin. @@ -83114,17 +83026,14 @@ Phaser.Physics.Arcade.Body.prototype.constructor = Phaser.Physics.Arcade.Body; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ -Phaser.Physics.Arcade.TilemapCollision = function () { - -}; - /** -* The Arcade Physics tilemap collision methods. +* The Arcade Physics Tile map collision methods. * * @class Phaser.Physics.Arcade.TilemapCollision * @constructor -* @param {Phaser.Game} game - reference to the current game instance. */ +Phaser.Physics.Arcade.TilemapCollision = function () {}; + Phaser.Physics.Arcade.TilemapCollision.prototype = { /** @@ -86393,6 +86302,70 @@ Phaser.Physics.P2.Body.prototype = { }, + /** + * Removes the given CollisionGroup, or array of CollisionGroups, from the list of groups that this body will collide with and updates the collision masks. + * + * @method Phaser.Physics.P2.Body#removeCollisionGroup + * @param {Phaser.Physics.CollisionGroup|array} group - The Collision Group or Array of Collision Groups that this Bodies shapes should not collide with anymore. + * @param {boolean} [clearCallback=true] - Clear the callback that will be triggered when this Body impacts with the given Group? + * @param {p2.Shape} [shape] - An optional Shape. If not provided the updated collision mask will be added to all Shapes in this Body. + */ + removeCollisionGroup: function (group, clearCallback, shape) { + + if (clearCallback === undefined) { clearCallback = true; } + + var index; + + if (Array.isArray(group)) + { + for (var i = 0; i < group.length; i++) + { + index = this.collidesWith.indexOf(group[i]); + + if (index > -1) + { + this.collidesWith.splice(index, 1); + + if (clearCallback) + { + delete (this._groupCallbacks[group.mask]); + delete (this._groupCallbackContext[group.mask]); + } + } + } + } + else + { + index = this.collidesWith.indexOf(group); + + if (index > -1) + { + this.collidesWith.splice(index, 1); + + if (clearCallback) + { + delete (this._groupCallbacks[group.mask]); + delete (this._groupCallbackContext[group.mask]); + } + } + } + + var mask = this.getCollisionMask(); + + if (shape === undefined) + { + for (var i = this.data.shapes.length - 1; i >= 0; i--) + { + this.data.shapes[i].collisionMask = mask; + } + } + else + { + shape.collisionMask = mask; + } + + }, + /** * Adds the given CollisionGroup, or array of CollisionGroups, to the list of groups that this body will collide with and updates the collision masks. * @@ -87236,11 +87209,14 @@ Phaser.Physics.P2.Body.prototype = { /** * Reads the shape data from a physics data file stored in the Game.Cache and adds it as a polygon to this Body. - * The shape data format is based on the custom phaser export in. + * The shape data format is based on the output of the + * {@link https://github.com/photonstorm/phaser/tree/master/resources/PhysicsEditor%20Exporter|custom phaser exporter} for + * {@link https://www.codeandweb.com/physicseditor|PhysicsEditor} * * @method Phaser.Physics.P2.Body#addPhaserPolygon * @param {string} key - The key of the Physics Data file as stored in Game.Cache. * @param {string} object - The key of the object within the Physics data file that you wish to load the shape data from. + * @returns {Array} A list of created fixtures to be used with Phaser.Physics.P2.FixtureList */ addPhaserPolygon: function (key, object) { @@ -88578,19 +88554,19 @@ Phaser.Physics.P2.ContactMaterial = function (materialA, materialB, options) { */ /** - * @property {number} [stiffness=1e7] - Stiffness of the resulting ContactEquation that this ContactMaterial generate. + * @property {number} [stiffness=1e7] - Stiffness of the resulting ContactEquation that this ContactMaterial generates. */ /** - * @property {number} [relaxation=3] - Relaxation of the resulting ContactEquation that this ContactMaterial generate. + * @property {number} [relaxation=3] - Relaxation of the resulting ContactEquation that this ContactMaterial generates. */ /** - * @property {number} [frictionStiffness=1e7] - Stiffness of the resulting FrictionEquation that this ContactMaterial generate. + * @property {number} [frictionStiffness=1e7] - Stiffness of the resulting FrictionEquation that this ContactMaterial generates. */ /** - * @property {number} [frictionRelaxation=3] - Relaxation of the resulting FrictionEquation that this ContactMaterial generate. + * @property {number} [frictionRelaxation=3] - Relaxation of the resulting FrictionEquation that this ContactMaterial generates. */ /** @@ -92647,6 +92623,7 @@ Phaser.TilemapParser = { * However if your map is small, or you need to update the tiles (perhaps the map dynamically changes * during the game) then leave the default value set. * + * @constant * @type {boolean} */ INSERT_NULL: false, @@ -92858,6 +92835,24 @@ Phaser.TilemapParser = { } var curl = json.layers[i]; + + // Base64 decode data if necessary + // NOTE: uncompressed base64 only. + if (!curl.compression && curl.encoding && curl.encoding === "base64") { + var binaryString = window.atob(curl.data); + var len = binaryString.length; + var bytes = new Array( len ); + // Interpret binaryString as an array of bytes representing + // little-endian encoded uint32 values. + for (var i = 0; i < len; i+=4) { + bytes[i/4] = (binaryString.charCodeAt(i) | + binaryString.charCodeAt(i+1) << 8 | + binaryString.charCodeAt(i+2) << 16 | + binaryString.charCodeAt(i+3) << 24) >>> 0; + } + curl.data = bytes; + } + var layer = { @@ -93557,6 +93552,172 @@ Phaser.Tileset.prototype.constructor = Phaser.Tileset; * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ +/** +* Create a new `Particle` object. Particles are extended Sprites that are emitted by a particle emitter such as Phaser.Particles.Arcade.Emitter. +* +* @class Phaser.Particle +* @constructor +* @extends Phaser.Sprite +* @param {Phaser.Game} game - A reference to the currently running game. +* @param {number} x - The x coordinate (in world space) to position the Particle at. +* @param {number} y - The y coordinate (in world space) to position the Particle at. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. +* @param {string|number} frame - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. +*/ +Phaser.Particle = function (game, x, y, key, frame) { + + Phaser.Sprite.call(this, game, x, y, key, frame); + + /** + * @property {boolean} autoScale - If this Particle automatically scales this is set to true by Particle.setScaleData. + * @protected + */ + this.autoScale = false; + + /** + * @property {array} scaleData - A reference to the scaleData array owned by the Emitter that emitted this Particle. + * @protected + */ + this.scaleData = null; + + /** + * @property {number} _s - Internal cache var for tracking auto scale. + * @private + */ + this._s = 0; + + /** + * @property {boolean} autoAlpha - If this Particle automatically changes alpha this is set to true by Particle.setAlphaData. + * @protected + */ + this.autoAlpha = false; + + /** + * @property {array} alphaData - A reference to the alphaData array owned by the Emitter that emitted this Particle. + * @protected + */ + this.alphaData = null; + + /** + * @property {number} _a - Internal cache var for tracking auto alpha. + * @private + */ + this._a = 0; + +}; + +Phaser.Particle.prototype = Object.create(Phaser.Sprite.prototype); +Phaser.Particle.prototype.constructor = Phaser.Particle; + +/** +* Updates the Particle scale or alpha if autoScale and autoAlpha are set. +* +* @method Phaser.Particle#update +* @memberof Phaser.Particle +*/ +Phaser.Particle.prototype.update = function() { + + if (this.autoScale) + { + this._s--; + + if (this._s) + { + this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); + } + else + { + this.autoScale = false; + } + } + + if (this.autoAlpha) + { + this._a--; + + if (this._a) + { + this.alpha = this.alphaData[this._a].v; + } + else + { + this.autoAlpha = false; + } + } + +}; + +/** +* Called by the Emitter when this particle is emitted. Left empty for you to over-ride as required. +* +* @method Phaser.Particle#onEmit +* @memberof Phaser.Particle +*/ +Phaser.Particle.prototype.onEmit = function() { +}; + +/** +* Called by the Emitter if autoAlpha has been enabled. Passes over the alpha ease data and resets the alpha counter. +* +* @method Phaser.Particle#setAlphaData +* @memberof Phaser.Particle +*/ +Phaser.Particle.prototype.setAlphaData = function(data) { + + this.alphaData = data; + this._a = data.length - 1; + this.alpha = this.alphaData[this._a].v; + this.autoAlpha = true; + +}; + +/** +* Called by the Emitter if autoScale has been enabled. Passes over the scale ease data and resets the scale counter. +* +* @method Phaser.Particle#setScaleData +* @memberof Phaser.Particle +*/ +Phaser.Particle.prototype.setScaleData = function(data) { + + this.scaleData = data; + this._s = data.length - 1; + this.scale.set(this.scaleData[this._s].x, this.scaleData[this._s].y); + this.autoScale = true; + +}; + +/** +* Resets the Particle. This places the Particle at the given x/y world coordinates and then +* sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state and health values. +* If the Particle has a physics body that too is reset. +* +* @method Phaser.Particle#reset +* @memberof Phaser.Particle +* @param {number} x - The x coordinate (in world space) to position the Particle at. +* @param {number} y - The y coordinate (in world space) to position the Particle at. +* @param {number} [health=1] - The health to give the Particle. +* @return (Phaser.Particle) This instance. +*/ +Phaser.Particle.prototype.reset = function(x, y, health) { + + Phaser.Component.Reset.prototype.reset.call(this, x, y, health); + + this.alpha = 1; + this.scale.set(1); + + this.autoScale = false; + this.autoAlpha = false; + + return this; + +}; + +/** +* @author Richard Davey +* @copyright 2015 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + /** * Phaser.Particles is the Particle Manager for the game. It is called during the game update loop and in turn updates any Emitters attached to it. * @@ -94182,12 +94343,23 @@ Phaser.Particles.Arcade.Emitter.prototype.start = function (explode, lifespan, f }; /** -* This function can be used both internally and externally to emit the next particle in the queue. +* This function is used internally to emit the next particle in the queue. +* +* However it can also be called externally to emit a particle. +* +* When called externally you can use the arguments to override any defaults the Emitter has set. * * @method Phaser.Particles.Arcade.Emitter#emitParticle +* @param {number} [x] - The x coordinate to emit the particle from. If `null` or `undefined` it will use `Emitter.emitX` or if the Emitter has a width > 1 a random value between `Emitter.left` and `Emitter.right`. +* @param {number} [y] - The y coordinate to emit the particle from. If `null` or `undefined` it will use `Emitter.emitY` or if the Emitter has a height > 1 a random value between `Emitter.top` and `Emitter.bottom`. +* @param {string|Phaser.RenderTexture|Phaser.BitmapData|Phaser.Video|PIXI.Texture} [key] - This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache Image entry, or an instance of a RenderTexture, BitmapData, Video or PIXI.Texture. +* @param {string|number} [frame] - If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @return {boolean} True if a particle was emitted, otherwise false. */ -Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function () { +Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function (x, y, key, frame) { + + if (x === undefined) { x = null; } + if (y === undefined) { y = null; } var particle = this.getFirstExists(false); @@ -94196,15 +94368,40 @@ Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function () { return false; } - if (this.width > 1 || this.height > 1) + var rnd = this.game.rnd; + + if (key !== undefined && frame !== undefined) { - particle.reset(this.game.rnd.integerInRange(this.left, this.right), this.game.rnd.integerInRange(this.top, this.bottom)); + particle.loadTexture(key, frame); } - else + else if (key !== undefined) { - particle.reset(this.emitX, this.emitY); + particle.loadTexture(key); } + var emitX = this.emitX; + var emitY = this.emitY; + + if (x !== null) + { + emitX = x; + } + else if (this.width > 1) + { + emitX = rnd.between(this.left, this.right); + } + + if (y !== null) + { + emitY = y; + } + else if (this.height > 1) + { + emitY = rnd.between(this.top, this.bottom); + } + + particle.reset(emitX, emitY); + particle.angle = 0; particle.lifespan = this.lifespan; @@ -94223,20 +94420,23 @@ Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function () { } else if (this.minParticleScale !== 1 || this.maxParticleScale !== 1) { - particle.scale.set(this.game.rnd.realInRange(this.minParticleScale, this.maxParticleScale)); + particle.scale.set(rnd.realInRange(this.minParticleScale, this.maxParticleScale)); } else if ((this._minParticleScale.x !== this._maxParticleScale.x) || (this._minParticleScale.y !== this._maxParticleScale.y)) { - particle.scale.set(this.game.rnd.realInRange(this._minParticleScale.x, this._maxParticleScale.x), this.game.rnd.realInRange(this._minParticleScale.y, this._maxParticleScale.y)); + particle.scale.set(rnd.realInRange(this._minParticleScale.x, this._maxParticleScale.x), rnd.realInRange(this._minParticleScale.y, this._maxParticleScale.y)); } - if (Array.isArray(this._frames === 'object')) + if (frame === undefined) { - particle.frame = this.game.rnd.pick(this._frames); - } - else - { - particle.frame = this._frames; + if (Array.isArray(this._frames)) + { + particle.frame = this.game.rnd.pick(this._frames); + } + else + { + particle.frame = this._frames; + } } if (this.autoAlpha) @@ -94245,25 +94445,24 @@ Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function () { } else { - particle.alpha = this.game.rnd.realInRange(this.minParticleAlpha, this.maxParticleAlpha); + particle.alpha = rnd.realInRange(this.minParticleAlpha, this.maxParticleAlpha); } particle.blendMode = this.blendMode; - particle.body.updateBounds(); + var body = particle.body; - particle.body.bounce.setTo(this.bounce.x, this.bounce.y); + body.updateBounds(); - particle.body.velocity.x = this.game.rnd.between(this.minParticleSpeed.x, this.maxParticleSpeed.x); - particle.body.velocity.y = this.game.rnd.between(this.minParticleSpeed.y, this.maxParticleSpeed.y); - particle.body.angularVelocity = this.game.rnd.between(this.minRotation, this.maxRotation); + body.bounce.copyFrom(this.bounce); + body.drag.copyFrom(this.particleDrag); - particle.body.gravity.y = this.gravity; + body.velocity.x = rnd.between(this.minParticleSpeed.x, this.maxParticleSpeed.x); + body.velocity.y = rnd.between(this.minParticleSpeed.y, this.maxParticleSpeed.y); + body.angularVelocity = rnd.between(this.minRotation, this.maxRotation); - particle.body.drag.x = this.particleDrag.x; - particle.body.drag.y = this.particleDrag.y; - - particle.body.angularDrag = this.angularDrag; + body.gravity.y = this.gravity; + body.angularDrag = this.angularDrag; particle.onEmit(); @@ -95983,7 +96182,7 @@ if (PIXI.RenderTexture.tempMatrix === undefined) PIXI.RenderTexture.tempMatrix = new PIXI.Matrix(); } -if (PIXI.Graphics.POLY === undefined) +if (PIXI.Graphics && PIXI.Graphics.POLY === undefined) { PIXI.Graphics.POLY = Phaser.POLYGON; PIXI.Graphics.RECT = Phaser.RECTANGLE; diff --git a/build/phaser.map b/build/phaser.map index 75211ed49..5c04837c3 100644 --- a/build/phaser.map +++ b/build/phaser.map @@ -1 +1 @@ -{"version":3,"file":"phaser.min.js","sources":["phaser.js"],"names":["e","exports","module","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length",1,"_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar",2,"Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist",3,"Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point",4,"abs",5,"./Polygon",6,"name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp",7,"AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils",8,"Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body",9,"NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape",10,"Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary",11,"Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult",12,"RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray",13,"SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList",14,"Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation",15,"DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint",16,"GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation",17,"LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis",18,"PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation",19,"RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation",20,"./Equation",21,"computeB","h","GW","Gq","GiMf","computeGiMf","B",22,"ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps",23,"FrictionEquation","getSlipForce",24,"worldVectorA","worldVectorB",25,26,"EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target",27,"ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material",28,29,"PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom",30,"crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y",31,"_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter",32,"LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring",33,"RotationalSpring","restAngle",34,35,"TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint",36,"Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World",37,"arguments","axes","updateArea","./Convex","./Shape",38,"intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1",39,"Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint",40,"isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk",41,"key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo",42,"raycast_normal","raycast_l0","raycast_l1","raycast_unit_y",43,44,"intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir",45,"material","sensor",46,"GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver",47,"equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND",48,"destroy","equation","./Pool",49,50,"IslandNodePool","IslandNode","../world/IslandNode",51,"IslandPool","Island","../world/Island",52,"OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils",53,"OverlapKeeperRecord",54,"record",55,"objects","resize","object",56,"getKey","dict",57,"howmany","P2_ARRAY_TYPE","Float32Array",58,"bodyIds",59,"IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode",60,61,"springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager","PIXI","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Uint16Array","Uint32Array","ArrayBuffer","PI_2","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","defaultRenderOptions","view","transparent","antialias","preserveDrawingBuffer","resolution","clearBeforeRender","autoResize","DisplayObject","transformCallback","transformCallbackContext","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","children","_destroyCachedSprite","item","isMask","_filters","passes","filterPasses","_filterBlock","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","game","tx","ty","pt","wt","rotationCache","atan2","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","scaleMode","renderer","bounds","renderTexture","RenderTexture","_tempMatrix","render","updateCache","toGlobal","toLocal","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","tempFilters","filters","anchor","DisplayObjectContainer","_width","_height","addChild","addChildAt","removeChild","swapChildren","child2","index1","getChildIndex","index2","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","removeChildren","beginIndex","endIndex","begin","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","maskManager","pushMask","mask","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","valid","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","trim","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","Stage","backgroundColor","setBackgroundColor","backgroundColorSplit","hex2rgb","hex","toString","substr","backgroundColorString","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","remove","getNextPowerOfTwo","number","isPowerOfTwo","sign","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","WebGLGraphics","renderGraphics","graphics","webGLData","projection","primitiveShader","updateGraphics","webGL","_webGL","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","toArray","uniform1f","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","buffer","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","clearDirty","graphicsData","graphicsDataPool","Graphics","POLY","closed","fill","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","lineWidth","buildLine","RECT","buildRectangle","CIRC","ELIP","buildCircle","RREC","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","fillColor","fillAlpha","vertPos","tempPoints","rrectData","recPoints","concat","quadraticBezierCurve","vecPos","fromX","fromY","cpX","cpY","toX","toY","getPt","n1","n2","perc","diff","xa","ya","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","lineColor","lineAlpha","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","glContexts","WebGLRenderer","defaultRenderer","_contextOptions","premultipliedAlpha","stencil","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","__stage","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","stencilStack","count","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","EQUAL","DECR","INCR","_currentGraphics","complexPrimitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","numVerts","numIndices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","navigator","isCocoonJS","screencanvas","removeView","updateGraphicsTint","_fillTint","_lineTint","beginPath","moveTo","lineTo","closePath","strokeStyle","stroke","strokeRect","arc","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","rx","ry","maxRadius","quadraticCurveTo","tintR","tintG","tintB","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","Phaser","updateBase","identity","translate","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","v2","paddingX","paddingY","centerX","centerY","normX","normY","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","updateFrame","rawX","rawY","Rope","amount","total","nextPoint","perp","perpLength","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","RECTANGLE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","trunc","Function","bind","thisArg","bound","args","boundArgs","TypeError","F","proto","arg","forEach","fun","CheapArray","assert","getProperty","obj","prop","parts","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","parseInt","innerWidth","innerHeight","pad","dir","padlen","isPlainObject","nodeType","hasOwnProperty","copyIsArray","deep","mixinPrototype","mixin","replace","mixinKeys","childNodes","cloneNode","diameter","_diameter","_radius","circumference","setTo","copyFrom","copyTo","dest","round","output","contains","circumferencePoint","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotateAround","line","asSegment","intersectsPoints","midPoint","centerOn","pointOnLine","pointOnSegment","xMin","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","uc","ua","ub","normalAngle","fromArray","newPos","tx1","invert","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","isZero","rperp","normalRightHand","negative","multiplyAdd","interpolate","project","amt","projectUnit","pointslength","parse","xProp","yProp","_points","toNumberArray","flatten","inside","ix","iy","jx","jy","calculateArea","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","union","randomX","randomY","empty","inflatePoint","containsRaw","rw","rh","volume","sameDimensions","MIN_VALUE","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","_targetPosition","_edge","_position","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","unfollow","focusOn","setPosition","focusOnXY","updateTarget","checkBounds","setBoundsToWorld","setSize","Create","bmd","make","bitmapData","ctx","palettes","A","C","D","E","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","row","grid","cellWidth","cellHeight","State","camera","cache","input","load","math","sound","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","Signal","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","state","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","dispatch","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","disableVisibilityChange","exists","currentRenderOrderID","_hiddenVar","_onChange","_backgroundColor","config","parseConfig","DOM","getOffset","Canvas","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","getColor","RGBtoString","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","addToHash","events","onAddedToGroup$dispatch","removeFromHash","addMultiple","moveAll","addAt","updateZ","getAt","createMultiple","quantity","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","getFirstAlive","getFirstDead","getTop","getBottom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","removeBetween","destroyChildren","soft","_definedSize","stateChange","setBounds","useBounds","horizontal","vertical","between","FlexGrid","manager","boundsCustom","boundsFluid","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFluidInversed","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","onResize","fitSprite","scaleSprite","text","geom","uuid","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","ScaleManager","dom","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","margin","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentNode","parentScaleFactor","trackParentInterval","onSizeChange","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","fullscreen","cocoonJS","iPad","webApp","desktop","android","chrome","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","fullScreenScaleMode","getElementById","getParentBounds","visualBounds","newWidth","newHeight","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","documentElement","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","setTimeout","activePointer","mousePointer","addClickTrampoline","smoothed","cleanupCreatedTarget","initData","targetElement","insertBefore","appendChild","fullscreenKeyboard","requestFullscreen","Element","ALLOW_KEYBOARD_INPUT","stopFullScreen","cancelFullscreen","prepScreenMode","enteringFullscreen","createdTarget","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","Game","physicsConfig","isRunning","raf","net","Device","lockRender","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","webAudio","contextRestored","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFps","updateRender","slowMotion","slowStep","elapsed","enableStep","disableStep","removeFromDOM","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","pollRate","multiInputOverride","MOUSE_TOUCH_COMBINE","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","addMoveCallback","deleteMoveCallback","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","worldVisible","TileSprite","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","duration","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","leftButton","middleButton","rightButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","removeTouchLockCallback","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","scaleLayer","dragOffset","dragFromCenter","dragStartPoint","snapPoint","_dragPoint","_dragPhase","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","_draggedPointerID","updateDrag","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","startDrag","onInputUp$dispatch","stopDrag","globalToLocalX","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","singlePad","validConnections","rawIndices","padIndices","connected","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_rawPad","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","processAxisChange","triggerCallback","disconnectingIndex","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","processKeyPress","clearCaptures","String","fromCharCode","charCode","charCodeAt","H","J","K","L","M","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","BringToTop","Core","install","components","Events","PhysicsBody","AnimationManager","LoadTexture","loadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","heal","InCamera","InputEnabled","inputEnabled","InWorld","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","img","base","frameData","frameName","Overlap","_reset","Reset","ScaleMinMax","checkTransform","scaleMin","scaleMax","setScaleMinMax","Smoothed","existing","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","Tilemap","addToCache","addRenderTexture","video","addBitmapData","Tween","align","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_scroll","def","physicsElapsed","autoScroll","stopScroll","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","segments","difference","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","imageData","textureFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","g1","g2","region","packPixel","setHSL","HSLtoRGB","shiftHSL","limitValue","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","anchorX","anchorY","op","copyRect","drawGroup","drawFull","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","drawShape","cpX2","cpY2","dt2","dt3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","beginFill","endFill","drawRect","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","updateCachedSpriteTexture","_prevTint","updateLocalBounds","tempPoint","cachedSprite","destroyCachedSprite","GraphicsData","drawTriangle","cull","triangle","cameraToFace","cb","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","spaceLeft","words","wordWidth","wordWidthWithSpace","updateFont","match","fontFamily","setText","parseList","list","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","exec","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","prevCharCode","test","charAt","charData","kerning","xAdvance","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","FrameData","currentX","currentY","addFrame","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","deviceReadyAt","initialized","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","silk","audioData","ogg","opus","mp3","wav","m4a","webm","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","pixelRatio","littleEndian","support32bit","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","_initialize","_checkOS","vita","kindle","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","_checkBrowser","RegExp","$1","$3","process","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","PORTRAIT","LANDSCAPE","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","skipPool","display","msTouchAction","overflowHidden","overflow","vendor","prefix","setImageRenderingCrisp","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","factorial","res","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","frac","integerInRange","realInRange","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","re","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","removeFrom","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","elapsedMS","fps","blob","reversed","asin","prevTime","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","updateAdvancedTiming","updateTimers","previousDateNow","timeCallExpected","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","spacing","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","audiosprite","jsonURL","jsonData","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","Blob","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","onFadeComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","onended","noteGrainOn","muted","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","mute","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","columnWidth","renderShadow","currentAlpha","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","segment","spriteInfo","spriteCoords","lineInfo","forceType","quadTree","quadtree","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","POSITIVE_INFINITY","numberArray","numberArrayStep","rgba","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","q","hueToColor","updateColor","HSVtoRGB","color32","getColor32","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","LinkedList","entity","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularAcceleration","angularDrag","maxAngular","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","group1","group2","body1","body2","separateX","separateY","immovable","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","customSeparateX","bounce","moves","nv1","nv2","avg","deltaAbsY","overlapY","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","allowRotation","preRotation","newVelocity","deltaMax","facing","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","_sx","_sy","updateBounds","asx","asy","check","onFloor","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","setImpactEvents","impactHandler","setPostBroadphaseCallback","postBroadphaseHandler","_bodyCallbacks","_bodyCallbackContext","_groupCallbacks","_groupCallbackContext","setCollisionGroup","setWorldMaterial","updateBoundsCollisionGroup","fixedStepTime","impactCallback","createDistanceConstraint","getBody","createGearConstraint","createRevoluteConstraint","createLockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","setMaterial","createMaterial","createContactMaterial","getSprings","getConstraints","filterStatic","physicsPosition","query","toJSON","createCollisionGroup","bitmask","createSpring","worldA","worldB","localA","localB","createRotationalSpring","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","shapeChanged","impulse","localX","localY","setZeroRotation","setZeroVelocity","setZeroDamping","rotateLeft","rotateRight","moveForward","moveBackward","thrust","moveLeft","moveRight","updateSpriteTransform","resetDamping","resetMass","clearShapes","addCircle","addPlane","addParticle","addLine","addCapsule","setCircle","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","generatedShapes","categoryBits","maskBits","isSensor","polygons","loadPolygon","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","columns","rows","createFromObjects","CustomClass","adjustY","createFromTiles","replacements","customClass","lh","createLayer","getLayerIndex","TilemapLayer","indexes","getImageIndex","getObjectIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","tileColor","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","tilewidth","tileheight","curl","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","curo","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"phaser.min.js","sources":["phaser.js"],"names":["e","exports","module","define","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length",1,"_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar",2,"Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist",3,"Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point",4,"abs",5,"./Polygon",6,"name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp",7,"AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils",8,"Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body",9,"NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape",10,"Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary",11,"Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult",12,"RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray",13,"SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList",14,"Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation",15,"DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint",16,"GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation",17,"LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis",18,"PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation",19,"RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation",20,"./Equation",21,"computeB","h","GW","Gq","GiMf","computeGiMf","B",22,"ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps",23,"FrictionEquation","getSlipForce",24,"worldVectorA","worldVectorB",25,26,"EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target",27,"ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material",28,29,"PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom",30,"crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y",31,"_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter",32,"LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring",33,"RotationalSpring","restAngle",34,35,"TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint",36,"Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World",37,"arguments","axes","updateArea","./Convex","./Shape",38,"intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1",39,"Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint",40,"isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk",41,"key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo",42,"raycast_normal","raycast_l0","raycast_l1","raycast_unit_y",43,44,"intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir",45,"material","sensor",46,"GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver",47,"equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND",48,"destroy","equation","./Pool",49,50,"IslandNodePool","IslandNode","../world/IslandNode",51,"IslandPool","Island","../world/Island",52,"OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils",53,"OverlapKeeperRecord",54,"record",55,"objects","resize","object",56,"getKey","dict",57,"howmany","P2_ARRAY_TYPE","Float32Array",58,"bodyIds",59,"IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode",60,61,"springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Uint16Array","Uint32Array","ArrayBuffer","PI_2","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","children","_destroyCachedSprite","item","isMask","_filters","passes","filterPasses","_filterBlock","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","tx","ty","pt","wt","rotationCache","atan2","transformCallback","transformCallbackContext","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","renderTexture","RenderTexture","_tempMatrix","render","updateCache","toGlobal","toLocal","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","tempFilters","filters","anchor","DisplayObjectContainer","_width","_height","addChild","addChildAt","removeChild","swapChildren","child2","index1","getChildIndex","index2","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","removeChildren","beginIndex","endIndex","begin","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","maskManager","pushMask","mask","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","valid","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","trim","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","remove","getNextPowerOfTwo","number","isPowerOfTwo","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","COLOR_BUFFER_BIT","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","numVerts","numIndices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","v2","paddingX","paddingY","centerX","centerY","normX","normY","beginPath","moveTo","lineTo","closePath","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","rawX","rawY","Rope","lastPoint","amount","total","nextPoint","perp","perpLength","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","RECTANGLE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","trunc","Function","bind","thisArg","bound","args","boundArgs","concat","TypeError","F","proto","arg","forEach","fun","CheapArray","assert","getProperty","obj","prop","parts","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","parseInt","innerWidth","innerHeight","pad","dir","padlen","isPlainObject","nodeType","hasOwnProperty","copyIsArray","deep","mixinPrototype","mixin","replace","mixinKeys","childNodes","cloneNode","diameter","_diameter","_radius","circumference","setTo","copyFrom","copyTo","dest","round","output","contains","circumferencePoint","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotateAround","line","asSegment","intersectsPoints","midPoint","centerOn","pointOnLine","pointOnSegment","xMin","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","uc","ua","ub","normalAngle","fromArray","newPos","tx1","invert","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","isZero","rperp","normalRightHand","negative","multiplyAdd","interpolate","project","amt","projectUnit","pointslength","parse","xProp","yProp","_points","closed","toNumberArray","flatten","inside","ix","iy","jx","jy","calculateArea","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","union","randomX","randomY","empty","inflatePoint","containsRaw","rx","ry","rw","rh","volume","sameDimensions","MIN_VALUE","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","_targetPosition","_edge","_position","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","follow","helper","unfollow","focusOn","setPosition","focusOnXY","updateTarget","checkBounds","setBoundsToWorld","setSize","State","make","camera","cache","input","load","math","sound","tweens","particles","physics","rnd","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","Signal","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","boot","onPause","pause","onResume","resume","state","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","dispatch","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","exists","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","addToHash","events","onAddedToGroup$dispatch","removeFromHash","addMultiple","moveAll","addAt","updateZ","getAt","createMultiple","quantity","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","removeBetween","destroyChildren","soft","_definedSize","stateChange","setBounds","useBounds","horizontal","vertical","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","enableStep","disableStep","removeFromDOM","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","pollRate","multiInputOverride","MOUSE_TOUCH_COMBINE","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","worldVisible","TileSprite","Graphics","graphicsData","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","duration","justReleased","pointerMode","CONTACT","leftButton","middleButton","rightButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","consumePointerEvent","scaleLayer","dragOffset","dragFromCenter","dragStartPoint","snapPoint","_dragPoint","_dragPhase","_wasEnabled","_tempPoint","_pointerData","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","_draggedPointerID","updateDrag","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","startDrag","onInputUp$dispatch","stopDrag","globalToLocalX","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","singlePad","validConnections","rawIndices","padIndices","connected","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_rawPad","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","processAxisChange","triggerCallback","disconnectingIndex","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","C","D","E","H","J","K","L","M","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","BringToTop","Core","install","components","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","heal","InCamera","InputEnabled","inputEnabled","InWorld","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","img","base","frameData","frameName","Overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","Tilemap","addToCache","uuid","addRenderTexture","video","bitmapData","addBitmapData","Tween","align","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","ctx","imageData","textureFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","g1","g2","region","packPixel","setHSL","HSLtoRGB","shiftHSL","limitValue","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyRect","drawGroup","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt2","dt3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","beginFill","fillColor","endFill","drawRect","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","clearDirty","updateCachedSpriteTexture","_prevTint","updateLocalBounds","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","sign","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","spaceLeft","words","wordWidth","wordWidthWithSpace","updateFont","fontFamily","setText","parseList","list","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","exec","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","FrameData","currentX","currentY","addFrame","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","segments","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","linear","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","factorial","res","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","frac","integerInRange","realInRange","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","re","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","removeFrom","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","elapsedMS","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","audiosprite","jsonURL","jsonData","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","Blob","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","onFadeComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","mute","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","PORTRAIT","LANDSCAPE","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","POSITIVE_INFINITY","numberArray","numberArrayStep","LinkedList","entity","palettes","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","cellWidth","cellHeight","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","q","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularAcceleration","angularDrag","maxAngular","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","group1","group2","body1","body2","separateX","separateY","immovable","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","customSeparateX","bounce","moves","nv1","nv2","avg","deltaAbsY","overlapY","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","allowRotation","preRotation","newVelocity","deltaMax","facing","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","_sx","_sy","updateBounds","asx","asy","check","onFloor","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","setImpactEvents","impactHandler","setPostBroadphaseCallback","postBroadphaseHandler","_bodyCallbacks","_bodyCallbackContext","_groupCallbacks","_groupCallbackContext","setCollisionGroup","setWorldMaterial","updateBoundsCollisionGroup","fixedStepTime","impactCallback","createDistanceConstraint","getBody","createGearConstraint","createRevoluteConstraint","createLockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","setMaterial","createMaterial","createContactMaterial","getSprings","getConstraints","filterStatic","physicsPosition","query","toJSON","createCollisionGroup","bitmask","createSpring","worldA","worldB","localA","localB","createRotationalSpring","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","shapeChanged","impulse","localX","localY","setZeroRotation","setZeroVelocity","setZeroDamping","rotateLeft","rotateRight","moveForward","moveBackward","thrust","moveLeft","moveRight","updateSpriteTransform","resetDamping","resetMass","clearShapes","addCircle","addPlane","addParticle","addLine","addCapsule","setCircle","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","generatedShapes","categoryBits","maskBits","isSensor","polygons","loadPolygon","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","columns","rows","createFromObjects","CustomClass","adjustY","createFromTiles","replacements","customClass","lh","createLayer","getLayerIndex","TilemapLayer","indexes","getImageIndex","getObjectIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","tileColor","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","curo","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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"} \ No newline at end of file diff --git a/build/phaser.min.js b/build/phaser.min.js index 7372677eb..1ec4c849d 100644 --- a/build/phaser.min.js +++ b/build/phaser.min.js @@ -1,27 +1,27 @@ -/* Phaser v2.4.3 - http://phaser.io - @photonstorm - (c) 2015 Photon Storm Ltd. */ +/* Phaser v2.4.4 - http://phaser.io - @photonstorm - (c) 2015 Photon Storm Ltd. */ -!function(a){if("object"==typeof exports)module.exports=a();else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.p2=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b){function c(){}b.exports=c,c.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},c.left=function(a,b,d){return c.area(a,b,d)>0},c.leftOn=function(a,b,d){return c.area(a,b,d)>=0},c.right=function(a,b,d){return c.area(a,b,d)<0},c.rightOn=function(a,b,d){return c.area(a,b,d)<=0};var d=[],e=[];c.collinear=function(a,b,f,g){if(g){var h=d,i=e;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=f[0]-b[0],i[1]=f[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==c.area(a,b,f)},c.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b){function c(){this.vertices=[]}function d(a,b,c,d,e){e=e||0;var f=b[1]-a[1],h=a[0]-b[0],i=f*a[0]+h*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*h;return g.eq(m,0,e)?[0,0]:[(k*i-h*l)/m,(f*l-j*i)/m]}var e=a("./Line"),f=a("./Point"),g=a("./Scalar");b.exports=c,c.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},c.prototype.first=function(){return this.vertices[0]},c.prototype.last=function(){return this.vertices[this.vertices.length-1]},c.prototype.clear=function(){this.vertices.length=0},c.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},c.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);f.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},c.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},c.prototype.isReflex=function(a){return f.right(this.at(a-1),this.at(a),this.at(a+1))};var h=[],i=[];c.prototype.canSee=function(a,b){var c,d,g=h,j=i;if(f.leftOn(this.at(a+1),this.at(a),this.at(b))&&f.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=f.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&f.leftOn(this.at(a),this.at(b),this.at(k+1))&&f.rightOn(this.at(a),this.at(b),this.at(k))&&(g[0]=this.at(a),g[1]=this.at(b),j[0]=this.at(k),j[1]=this.at(k+1),c=e.lineInt(g,j),f.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},c.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(e.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),f.left(v.at(x+1),v.at(x),v.at(y+1))&&f.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=d(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),f.left(v.at(x-1),v.at(x),l)&&(o=f.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,e.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)f.leftOn(v.at(x-1),v.at(x),v.at(y))&&f.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=f.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)f.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b){function c(){}b.exports=c,c.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b){function c(a){this.lowerBound=d.create(),a&&a.lowerBound&&d.copy(this.lowerBound,a.lowerBound),this.upperBound=d.create(),a&&a.upperBound&&d.copy(this.upperBound,a.upperBound)}{var d=a("../math/vec2");a("../utils/Utils")}b.exports=c;var e=d.create();c.prototype.setFromPoints=function(a,b,c,f){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?d.rotate(g,a[0],c):d.copy(g,a[0]),d.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b){function c(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=c.AABB}var d=a("../math/vec2"),e=a("../objects/Body");b.exports=c,c.AABB=1,c.BOUNDING_CIRCLE=2,c.prototype.setWorld=function(a){this.world=a},c.prototype.getCollisionPairs=function(){};var f=d.create();c.boundingRadiusCheck=function(a,b){d.sub(f,a.position,b.position);var c=d.squaredLength(f),e=a.boundingRadius+b.boundingRadius;return e*e>=c},c.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},c.prototype.boundingVolumeCheck=function(a,b){var d;switch(this.boundingVolumeType){case c.BOUNDING_CIRCLE:d=c.boundingRadiusCheck(a,b);break;case c.AABB:d=c.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return d},c.canCollide=function(a,b){var c=e.KINEMATIC,d=e.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===e.SLEEPING&&b.sleepState===e.SLEEPING?!1:a.sleepState===e.SLEEPING&&b.type===d||b.sleepState===e.SLEEPING&&a.type===d?!1:!0},c.NAIVE=1,c.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b){function c(){d.call(this,d.NAIVE)}{var d=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var e=0,f=b.length;e!==f;e++)for(var g=b[e],h=0;e>h;h++){var i=b[h];d.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},c.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var f=a("../math/vec2"),g=f.sub,h=f.add,i=f.dot,j=(a("../utils/Utils"),a("../utils/ContactEquationPool")),k=a("../utils/FrictionEquationPool"),l=a("../utils/TupleDictionary"),m=a("../equations/Equation"),n=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),o=a("../shapes/Convex"),p=a("../shapes/Shape"),q=(a("../objects/Body"),a("../shapes/Box"));b.exports=c;var r=f.fromValues(0,1),s=f.fromValues(0,0),t=f.fromValues(0,0),u=f.fromValues(0,0),v=f.fromValues(0,0),w=f.fromValues(0,0),x=f.fromValues(0,0),y=f.fromValues(0,0),z=f.fromValues(0,0),A=f.fromValues(0,0),B=f.fromValues(0,0),C=f.fromValues(0,0),D=f.fromValues(0,0),E=f.fromValues(0,0),F=f.fromValues(0,0),G=f.fromValues(0,0),H=f.fromValues(0,0),I=f.fromValues(0,0),J=f.fromValues(0,0),K=[],L=f.create(),M=f.create();c.prototype.bodiesOverlap=function(a,b){for(var c=L,d=M,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},c.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},c.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){f.set(m,(0===p?-1:1)*b.length/2,0),f.rotate(m,m,e),f.add(m,m,c);for(var q=0;2>q;q++){f.set(n,(0===q?-1:1)*h.length/2,0),f.rotate(n,n,j),f.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,e,g,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=R;d(s,b);var t=this.convexCapsule(a,s,c,e,g,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}d(s,h);var u=this.convexCapsule(g,s,i,j,a,b,c,e,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},c.prototype[p.LINE|p.LINE]=c.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},c.prototype[p.PLANE|p.LINE]=c.prototype.planeLine=function(a,b,c,d,e,j,k,l,m){var n=s,o=t,p=u,q=v,B=w,C=x,D=y,E=z,F=A,G=K,H=0;f.set(n,-j.length/2,0),f.set(o,j.length/2,0),f.rotate(p,n,l),f.rotate(q,o,l),h(p,p,k),h(q,q,k),f.copy(n,p),f.copy(o,q),g(B,o,n),f.normalize(C,B),f.rotate90cw(F,C),f.rotate(E,r,d),G[0]=n,G[1]=o;for(var I=0;IL){if(m)return!0;var M=this.createContactEquation(a,e,b,j);H++,f.copy(M.normalA,E),f.normalize(M.normalA,M.normalA),f.scale(D,E,L),g(M.contactPointA,J,D),g(M.contactPointA,M.contactPointA,a.position),g(M.contactPointB,J,k),h(M.contactPointB,M.contactPointB,k),g(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},c.prototype[p.PARTICLE|p.CAPSULE]=c.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},c.prototype[p.CIRCLE|p.LINE]=c.prototype.circleLine=function(a,b,c,d,e,j,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=s,q=t,r=u,G=v,H=w,I=x,J=y,L=z,M=A,N=B,O=C,P=D,Q=E,R=F,S=K;f.set(L,-j.length/2,0),f.set(M,j.length/2,0),f.rotate(N,L,l),f.rotate(O,M,l),h(N,N,k),h(O,O,k),f.copy(L,N),f.copy(M,O),g(I,M,L),f.normalize(J,I),f.rotate90cw(H,J),g(P,c,L);var T=i(P,H);g(G,L,k),g(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,j);return f.scale(Y.normalA,p,-1),f.normalize(Y.normalA,Y.normalA),f.scale(Y.contactPointA,Y.normalA,o),h(Y.contactPointA,Y.contactPointA,c),g(Y.contactPointA,Y.contactPointA,a.position),g(Y.contactPointB,r,k),h(Y.contactPointB,Y.contactPointB,k),g(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=L,S[1]=M;for(var Z=0;ZQ&&(f.copy(J,D),L=Q,f.scale(A,x,Q),f.add(A,A,D),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,i,b,j);return f.sub(R.normalA,J,c),f.normalize(R.normalA,R.normalA),f.scale(R.contactPointA,R.normalA,n),h(R.contactPointA,R.contactPointA,c),g(R.contactPointA,R.contactPointA,a.position),g(R.contactPointB,A,k),h(R.contactPointB,R.contactPointB,k),g(R.contactPointB,R.contactPointB,i.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(K=Q,f.scale(F,z,Q),f.add(F,F,c),f.copy(H,z),L=!0)}if(L){var R=this.createContactEquation(a,j,b,k);return f.scale(R.normalA,H,-1),f.normalize(R.normalA,R.normalA),f.set(R.contactPointA,0,0),h(R.contactPointA,R.contactPointA,c),g(R.contactPointA,R.contactPointA,a.position),g(R.contactPointB,F,l),h(R.contactPointB,R.contactPointB,l),g(R.contactPointB,R.contactPointB,j.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},c.prototype[p.CIRCLE]=c.prototype.circleCircle=function(a,b,c,d,e,i,j,k,l,m,n){var o=s,m=m||b.radius,n=n||i.radius;g(o,c,j);var p=m+n;if(f.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,i);return g(q.normalA,j,c),f.normalize(q.normalA,q.normalA),f.scale(q.contactPointA,q.normalA,m),f.scale(q.contactPointB,q.normalA,-n),h(q.contactPointA,q.contactPointA,c),g(q.contactPointA,q.contactPointA,a.position),h(q.contactPointB,q.contactPointB,j),g(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},c.prototype[p.PLANE|p.CONVEX]=c.prototype[p.PLANE|p.BOX]=c.prototype.planeConvex=function(a,b,c,d,e,j,k,l,m){var n=s,o=t,p=u,q=0;f.rotate(o,r,d);for(var v=0;v!==j.vertices.length;v++){var w=j.vertices[v];if(f.rotate(n,w,l),h(n,n,k),g(p,n,c),i(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,j);g(p,n,c),f.copy(x.normalA,o);var y=i(p,x.normalA);f.scale(p,x.normalA,y),g(x.contactPointB,n,e.position),g(x.contactPointA,n,p),g(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},c.prototype[p.PARTICLE|p.PLANE]=c.prototype.particlePlane=function(a,b,c,d,e,h,j,k,l){var m=s,n=t;k=k||0,g(m,c,j),f.rotate(n,r,k);var o=i(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,h,b);return f.copy(p.normalA,n),f.scale(m,p.normalA,o),g(p.contactPointA,c,m),g(p.contactPointA,p.contactPointA,e.position),g(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},c.prototype[p.CIRCLE|p.PARTICLE]=c.prototype.circleParticle=function(a,b,c,d,e,i,j,k,l){var m=s;if(g(m,j,c),f.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,i);return f.copy(n.normalA,m),f.normalize(n.normalA,n.normalA),f.scale(n.contactPointA,n.normalA,b.radius),h(n.contactPointA,n.contactPointA,c),g(n.contactPointA,n.contactPointA,a.position),g(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};{var W=new n({radius:1}),X=f.create(),Y=f.create();f.create()}c.prototype[p.PLANE|p.CAPSULE]=c.prototype.planeCapsule=function(a,b,c,d,e,g,i,j,k){var l=X,m=Y,n=W;f.set(l,-g.length/2,0),f.rotate(l,l,j),h(l,l,i),f.set(m,g.length/2,0),f.rotate(m,m,j),h(m,m,i),n.radius=g.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},c.prototype[p.CIRCLE|p.PLANE]=c.prototype.circlePlane=function(a,b,c,d,e,j,k,l,m){var n=a,o=b,p=c,q=e,v=k,w=l;w=w||0;var x=s,y=t,z=u;g(x,p,v),f.rotate(y,r,w);var A=i(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,j,b);return f.copy(B.normalA,y),f.scale(B.contactPointB,B.normalA,-o.radius),h(B.contactPointB,B.contactPointB,p),g(B.contactPointB,B.contactPointB,n.position),f.scale(z,B.normalA,A),g(B.contactPointA,x,z),h(B.contactPointA,B.contactPointA,v),g(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},c.prototype[p.CONVEX]=c.prototype[p.CONVEX|p.BOX]=c.prototype[p.BOX]=c.prototype.convexConvex=function(a,b,d,e,j,k,l,m,n,o){var p=s,q=t,r=u,x=v,B=w,C=y,D=z,E=A,F=0,o="number"==typeof o?o:0,G=c.findSeparatingAxis(b,d,e,k,l,m,p);if(!G)return 0;g(D,l,d),i(p,D)>0&&f.scale(p,p,-1);var H=c.getClosestEdge(b,e,p,!0),I=c.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=d,P=l,Q=e,R=m,S=a,T=j;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];f.rotate(q,W,R),h(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];f.rotate(r,Z,Q),f.rotate(x,$,Q),h(r,r,O),h(x,x,O),g(B,x,r),f.rotate90cw(E,B),f.normalize(E,E),g(D,q,r);var _=i(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var ab=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];f.rotate(r,Z,Q),f.rotate(x,$,Q),h(r,r,O),h(x,x,O),g(B,x,r),f.rotate90cw(ab.normalA,B),f.normalize(ab.normalA,ab.normalA),g(D,q,r);var _=i(ab.normalA,D);f.scale(C,ab.normalA,_),g(ab.contactPointA,q,O),g(ab.contactPointA,ab.contactPointA,C),h(ab.contactPointA,ab.contactPointA,O),g(ab.contactPointA,ab.contactPointA,S.position),g(ab.contactPointB,q,P),h(ab.contactPointB,ab.contactPointB,P),g(ab.contactPointB,ab.contactPointB,T.position),this.contactEquations.push(ab),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(ab))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var Z=f.fromValues(0,0);c.projectConvexOntoAxis=function(a,b,c,d,e){var g,h,j=null,k=null,l=Z;f.rotate(l,d,-c);for(var m=0;mj)&&(j=h),(null===k||k>h)&&(k=h);if(k>j){var n=k;k=j,j=n}var o=i(b,d);f.set(e,k+o,j+o)};var $=f.fromValues(0,0),_=f.fromValues(0,0),ab=f.fromValues(0,0),bb=f.fromValues(0,0),cb=f.fromValues(0,0),db=f.fromValues(0,0);c.findSeparatingAxis=function(a,b,d,e,h,i,j){var k=null,l=!1,m=!1,n=$,o=_,p=ab,r=bb,s=cb,t=db;if(a instanceof q&&e instanceof q)for(var u=0;2!==u;u++){var v=a,w=d;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?f.set(r,0,1):1===x&&f.set(r,1,0),0!==w&&f.rotate(r,r,w),c.projectConvexOntoAxis(a,b,d,r,s),c.projectConvexOntoAxis(e,h,i,r,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(f.copy(j,r),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=d;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){f.rotate(o,v.vertices[x],w),f.rotate(p,v.vertices[(x+1)%v.vertices.length],w),g(n,p,o),f.rotate90cw(r,n),f.normalize(r,r),c.projectConvexOntoAxis(a,b,d,r,s),c.projectConvexOntoAxis(e,h,i,r,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(f.copy(j,r),k=B,m=l)}}return m};var eb=f.fromValues(0,0),fb=f.fromValues(0,0),gb=f.fromValues(0,0);c.getClosestEdge=function(a,b,c,d){var e=eb,h=fb,j=gb;f.rotate(e,c,-b),d&&f.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){g(h,a.vertices[(n+1)%l],a.vertices[n%l]),f.rotate90cw(j,h),f.normalize(j,j);var o=i(j,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var hb=f.create(),ib=f.create(),jb=f.create(),kb=f.create(),lb=f.create(),mb=f.create(),nb=f.create();c.prototype[p.CIRCLE|p.HEIGHTFIELD]=c.prototype.circleHeightfield=function(a,b,c,d,e,i,j,k,l,m){var n=i.heights,m=m||b.radius,o=i.elementWidth,p=ib,q=hb,r=lb,s=nb,t=mb,u=jb,v=kb,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){f.set(u,A*o,n[A]),f.set(v,(A+1)*o,n[A+1]),f.add(u,u,j),f.add(v,v,j),f.sub(t,v,u),f.rotate(t,t,Math.PI/2),f.normalize(t,t),f.scale(q,t,-m),f.add(q,q,c),f.sub(p,q,u);var C=f.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,f.scale(p,t,-C),f.add(r,q,p),f.copy(s,t);var D=this.createContactEquation(e,a,i,b);f.copy(D.normalA,s),f.scale(D.contactPointB,D.normalA,-m),h(D.contactPointB,D.contactPointB,c),g(D.contactPointB,D.contactPointB,a.position),f.copy(D.contactPointA,r),f.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(f.set(u,A*o,n[A]),f.add(u,u,j),f.sub(p,c,u),f.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){f.set(m,u*l,k[u]),f.set(n,(u+1)*l,k[u+1]),f.add(m,m,h),f.add(n,n,h);var w=100;f.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),f.sub(p.vertices[0],n,o),f.sub(p.vertices[1],m,o),f.copy(p.vertices[2],p.vertices[1]),f.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b){function c(a){a=a||{},this.from=a.from?e.fromValues(a.from[0],a.from[1]):e.create(),this.to=a.to?e.fromValues(a.to[0],a.to[1]):e.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:c.ANY,this.callback=a.callback||function(){},this.direction=e.create(),this.length=1,this.update()}function d(a,b,c){e.sub(g,c,a);var d=e.dot(g,b);return e.scale(h,b,d),e.add(h,h,a),e.squaredDistance(c,h)}b.exports=c;{var e=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB")}c.prototype.constructor=c,c.CLOSEST=1,c.ANY=2,c.ALL=4,c.prototype.update=function(){var a=this.direction;e.sub(a,this.to,this.from),this.length=e.length(a),e.normalize(a,a)},c.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var f=e.create();c.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=f,g=0,h=b.shapes.length;h>g;g++){var i=b.shapes[g];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){e.rotate(d,i.position,b.angle),e.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},c.prototype.intersectShape=function(a,b,c,e,f){var g=this.from,h=d(g,this.direction,e);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,e,c),this._currentBody=this._currentShape=null)},c.prototype.getAABB=function(a){var b=this.to,c=this.from;e.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),e.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};e.create();c.prototype.reportIntersection=function(a,b,d,f){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&e.dot(d,this.direction)>0))switch(this.mode){case c.ALL:a.set(d,g,h,b,f),this.callback(a);break;case c.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},c.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;c.sortAxisList(a,b)},c.prototype.getCollisionPairs=function(){var a=this.axisList,b=this.result,c=this.axisIndex;b.length=0;for(var d=a.length;d--;){var f=a[d];f.aabbNeedsUpdate&&f.updateAABB()}this.sortList();for(var g=0,h=0|a.length;g!==h;g++)for(var i=a[g],j=g+1;h>j;j++){var k=a[j],l=k.aabb.lowerBound[c]<=i.aabb.upperBound[c];if(!l)break;e.canCollide(i,k)&&this.boundingVolumeCheck(i,k)&&b.push(i,k)}return b},c.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(g.maxForce=0,g.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)g.scale(e.normalA,i,-1),g.sub(e.contactPointA,j,h.position),g.sub(e.contactPointB,k,o.position),g.scale(n,i,c),g.add(e.contactPointA,e.contactPointA,n),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)g.scale(f.normalA,i,1),g.sub(f.contactPointA,j,h.position),g.sub(f.contactPointB,k,o.position),g.scale(n,i,d),g.sub(f.contactPointB,f.contactPointB,n),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},c.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},c.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},c.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,d.REVOLUTE,c);var n=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=h.create(),this.pivotB=h.create(),c.worldPivot?(h.sub(this.pivotA,c.worldPivot,a.position),h.sub(this.pivotB,c.worldPivot,b.position),h.rotate(this.pivotA,this.pivotA,-a.angle),h.rotate(this.pivotB,this.pivotB,-b.angle)):(h.copy(this.pivotA,c.localPivotA),h.copy(this.pivotB,c.localPivotB));var o=this.equations=[new e(a,b,-n,n),new e(a,b,-n,n)],p=o[0],q=o[1],r=this;p.computeGq=function(){return h.rotate(i,r.pivotA,a.angle),h.rotate(j,r.pivotB,b.angle),h.add(m,b.position,j),h.sub(m,m,a.position),h.sub(m,m,i),h.dot(m,k)},q.computeGq=function(){return h.rotate(i,r.pivotA,a.angle),h.rotate(j,r.pivotB,b.angle),h.add(m,b.position,j),h.sub(m,m,a.position),h.sub(m,m,i),h.dot(m,l)},q.minForce=p.minForce=-n,q.maxForce=p.maxForce=n,this.motorEquation=new f(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new g(a,b),this.lowerLimitEquation=new g(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var d=a("./Constraint"),e=a("../equations/Equation"),f=a("../equations/RotationalVelocityEquation"),g=a("../equations/RotationalLockEquation"),h=a("../math/vec2");b.exports=c;var i=h.create(),j=h.create(),k=h.fromValues(1,0),l=h.fromValues(0,1),m=h.create();c.prototype=new d,c.prototype.constructor=c,c.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},c.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],m=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>m)o.angle=m,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}h.rotate(i,c,a.angle),h.rotate(j,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-h.crossLength(i,k),f.G[3]=1,f.G[4]=0,f.G[5]=h.crossLength(j,k),g.G[0]=0,g.G[1]=-1,g.G[2]=-h.crossLength(i,l),g.G[3]=0,g.G[4]=1,g.G[5]=h.crossLength(j,l)},c.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},c.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},c.prototype.motorIsEnabled=function(){return!!this.motorEnabled},c.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},c.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}{var d=a("./Equation");a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},c.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},c.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b){function c(a,b){d.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=e.create(),this.penetrationVec=e.create(),this.contactPointB=e.create(),this.normalA=e.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var d=a("./Equation"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeB=function(a,b,c){var d=this.bodyA,f=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=f.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=e.crossLength(g,l),o=e.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,e.add(k,j,h),e.sub(k,k,i),e.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=e.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b){function c(a,b,d,f){this.minForce="undefined"==typeof d?-Number.MAX_VALUE:d,this.maxForce="undefined"==typeof f?Number.MAX_VALUE:f,this.bodyA=a,this.bodyB=b,this.stiffness=c.DEFAULT_STIFFNESS,this.relaxation=c.DEFAULT_RELAXATION,this.G=new e.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=c;{var d=a("../math/vec2"),e=a("../utils/Utils");a("../objects/Body")}c.prototype.constructor=c,c.DEFAULT_STIFFNESS=1e6,c.DEFAULT_RELAXATION=4,c.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},c.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},c.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var f=d.create(),g=d.create();c.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,f,d,g,e)+this.offset},c.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},c.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var h=d.create(),i=d.create();c.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,e=a.angularForce,f=b.force,g=b.angularForce,j=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return d.scale(h,c,j),d.multiply(h,a.massMultiplier,h),d.scale(i,f,k),d.multiply(i,b.massMultiplier,i),this.gmult(n,h,e*l,i,g*m)},c.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};{var j=d.create(),k=d.create(),l=d.create();d.create(),d.create(),d.create()}c.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,e=j,f=k,g=l,h=b.invMassSolve,i=c.invMassSolve,m=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],d.scale(e,f,h*a),d.multiply(e,e,b.massMultiplier),d.add(b.vlambda,b.vlambda,e),b.wlambda+=m*o[2]*a,d.scale(e,g,i*a),d.multiply(e,e,c.massMultiplier),d.add(c.vlambda,c.vlambda,e),c.wlambda+=n*o[5]*a},c.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b){function c(a,b,c){e.call(this,a,b,-c,c),this.contactPointA=d.create(),this.contactPointB=d.create(),this.t=d.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}{var d=a("../math/vec2"),e=a("./Equation");a("../utils/Utils")}b.exports=c,c.prototype=new e,c.prototype.constructor=c,c.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},c.prototype.getSlipForce=function(){return this.maxForce},c.prototype.computeB=function(a,b,c){var e=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-d.crossLength(e,g),h[3]=g[0],h[4]=g[1],h[5]=d.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b){function c(a,b,c){c=c||{},d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var e=this.G;e[2]=1,e[5]=-1}var d=a("./Equation"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c;var f=e.create(),g=e.create(),h=e.fromValues(1,0),i=e.fromValues(0,1);c.prototype.computeGq=function(){return e.rotate(f,h,this.bodyA.angle+this.angle),e.rotate(g,i,this.bodyB.angle),e.dot(f,g)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b){function c(a,b){d.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}{var d=a("./Equation");a("../math/vec2")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b){var c=function(){};b.exports=c,c.prototype={constructor:c,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b){function c(a,b,f){if(f=f||{},!(a instanceof d&&b instanceof d))throw new Error("First two arguments must be Material instances.");this.id=c.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof f.friction?Number(f.friction):.3,this.restitution="undefined"!=typeof f.restitution?Number(f.restitution):0,this.stiffness="undefined"!=typeof f.stiffness?Number(f.stiffness):e.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof f.relaxation?Number(f.relaxation):e.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof f.frictionStiffness?Number(f.frictionStiffness):e.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof f.frictionRelaxation?Number(f.frictionRelaxation):e.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof f.surfaceVelocity?Number(f.surfaceVelocity):0,this.contactSkinSize=.005}var d=a("./Material"),e=a("../equations/Equation");b.exports=c,c.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b){function c(a){this.id=a||c.idCounter++}b.exports=c,c.idCounter=0},{}],29:[function(a,b){var c={};c.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},c.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var d=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(c._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&c._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return d.push(e[0],e[1],e[2]),d},c._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},c._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=c},{}],30:[function(a,b){var c=b.exports={},d=a("../utils/Utils");c.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},c.crossVZ=function(a,b,d){return c.rotate(a,b,-Math.PI/2),c.scale(a,a,d),a},c.crossZV=function(a,b,d){return c.rotate(a,d,Math.PI/2),c.scale(a,a,b),a},c.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},c.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},c.toLocalFrame=function(a,b,d,e){c.copy(a,b),c.sub(a,a,d),c.rotate(a,a,-e)},c.toGlobalFrame=function(a,b,d,e){c.copy(a,b),c.rotate(a,a,e),c.add(a,a,d)},c.vectorToLocalFrame=function(a,b,d){c.rotate(a,b,-d)},c.vectorToGlobalFrame=function(a,b,d){c.rotate(a,b,d)},c.centroid=function(a,b,d,e){return c.add(a,b,d),c.add(a,a,e),c.scale(a,a,1/3),a},c.create=function(){var a=new d.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},c.clone=function(a){var b=new d.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},c.fromValues=function(a,b){var c=new d.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},c.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},c.set=function(a,b,c){return a[0]=b,a[1]=c,a},c.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},c.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},c.sub=c.subtract,c.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},c.mul=c.multiply,c.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},c.div=c.divide,c.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},c.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},c.dist=c.distance,c.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},c.sqrDist=c.squaredDistance,c.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},c.len=c.length,c.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},c.sqrLen=c.squaredLength,c.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},c.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},c.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},c.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},c.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},c.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},c.getLineSegmentsIntersection=function(a,b,d,e,f){var g=c.getLineSegmentsIntersectionFraction(b,d,e,f);return 0>g?!1:(a[0]=b[0]+g*(d[0]-b[0]),a[1]=b[1]+g*(d[1]-b[1]),!0)},c.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b){function c(a){a=a||{},j.call(this),this.id=a.id||++c._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=d.create(),this.position=d.fromValues(0,0),a.position&&d.copy(this.position,a.position),this.interpolatedPosition=d.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=d.fromValues(0,0),this.previousAngle=0,this.velocity=d.fromValues(0,0),a.velocity&&d.copy(this.velocity,a.velocity),this.vlambda=d.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=d.create(),a.force&&d.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=c.STATIC,this.type="undefined"!=typeof a.type?a.type:a.mass?c.DYNAMIC:c.STATIC,this.boundingRadius=0,this.aabb=new i,this.aabbNeedsUpdate=!0,this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0,this.wantsToSleep=!1,this.sleepState=c.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties() -}var d=a("../math/vec2"),e=a("poly-decomp"),f=a("../shapes/Convex"),g=a("../collision/RaycastResult"),h=a("../collision/Ray"),i=a("../collision/AABB"),j=a("../events/EventEmitter");b.exports=c,c.prototype=new j,c.prototype.constructor=c,c._idCounter=0,c.prototype.updateSolveMassProperties=function(){this.sleepState===c.SLEEPING||this.type===c.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},c.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},c.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},c.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?d.copy(a.position,b):d.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},c.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},c.prototype.updateMassProperties=function(){if(this.type===c.STATIC||this.type===c.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,e=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=d.squaredLength(h.position),j=h.computeMomentOfInertia(e);f+=j+e*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,d.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};d.create();c.prototype.applyForce=function(a,b){if(d.add(this.force,this.force,a),b){var c=d.crossLength(b,a);this.angularForce+=c}};var m=d.create(),n=d.create(),o=d.create();c.prototype.applyForceLocal=function(a,b){b=b||o;var c=m,d=n;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var p=d.create();c.prototype.applyImpulse=function(a,b){if(this.type===c.DYNAMIC){var e=p;if(d.scale(e,a,this.invMass),d.multiply(e,this.massMultiplier,e),d.add(this.velocity,e,this.velocity),b){var f=d.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var q=d.create(),r=d.create(),s=d.create();c.prototype.applyImpulseLocal=function(a,b){b=b||s;var c=q,d=r;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},c.prototype.toLocalFrame=function(a,b){d.toLocalFrame(a,b,this.position,this.angle)},c.prototype.toWorldFrame=function(a,b){d.toGlobalFrame(a,b,this.position,this.angle)},c.prototype.vectorToLocalFrame=function(a,b){d.vectorToLocalFrame(a,b,this.angle)},c.prototype.vectorToWorldFrame=function(a,b){d.vectorToGlobalFrame(a,b,this.angle)},c.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var g=new e.Polygon;if(g.vertices=a,g.makeCCW(),"number"==typeof b.removeCollinearPoints&&g.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!g.isSimple())return!1;this.concavePath=g.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=c.AWAKE):(this.idleTime+=e,this.sleepState=c.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},c.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var w=d.create(),x=d.create();c.prototype.integrate=function(a){var b=this.invMass,c=this.force,e=this.position,f=this.velocity;d.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),d.scale(w,c,a*b),d.multiply(w,this.massMultiplier,w),d.add(f,w,f),this.integrateToTimeOfImpact(a)||(d.scale(x,f,a),d.add(e,e,x),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var y=new g,z=new h({mode:h.ALL}),A=d.create(),B=d.create(),C=d.create(),D=d.create();c.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||d.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);e.set(o,-q,s),e.set(p,q,s),e.toGlobalFrame(o,o,c,d),e.toGlobalFrame(p,p,c,d);var t=e.getLineSegmentsIntersectionFraction(f,l,o,p);if(t>=0&&(e.rotate(n,k,d),e.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){e.set(o,q*(2*r-1),0),e.toGlobalFrame(o,o,c,d);var v=Math.pow(l[0]-f[0],2)+Math.pow(l[1]-f[1],2),w=2*((l[0]-f[0])*(f[0]-o[0])+(l[1]-f[1])*(f[1]-o[1])),x=Math.pow(f[0]-o[0],2)+Math.pow(f[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(e.lerp(m,f,l,t),e.squaredDistance(m,c)>u&&(e.sub(n,m,o),e.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(e.lerp(m,f,l,A),e.squaredDistance(m,c)>u&&(e.sub(n,m,o),e.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(e.lerp(m,f,l,B),e.squaredDistance(m,c)>u&&(e.sub(n,m,o),e.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b){function c(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=d.CIRCLE,d.call(this,a)}var d=a("./Shape"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},c.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},c.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},c.prototype.computeAABB=function(a,b){var c=this.radius;e.set(a.upperBound,c,c),e.set(a.lowerBound,-c,-c),b&&(e.add(a.lowerBound,a.lowerBound,b),e.add(a.upperBound,a.upperBound,b))};var f=e.create(),g=e.create();c.prototype.raycast=function(a,b,c){var d=b.from,h=b.to,i=this.radius,j=Math.pow(h[0]-d[0],2)+Math.pow(h[1]-d[1],2),k=2*((h[0]-d[0])*(d[0]-c[0])+(h[1]-d[1])*(d[1]-c[1])),l=Math.pow(d[0]-c[0],2)+Math.pow(d[1]-c[1],2)-Math.pow(i,2),m=Math.pow(k,2)-4*j*l,n=f,o=g;if(!(0>m))if(0===m)e.lerp(n,d,h,m),e.sub(o,n,c),e.normalize(o,o),b.reportIntersection(a,m,o,-1);else{var p=Math.sqrt(m),q=1/(2*j),r=(-k-p)*q,s=(-k+p)*q;if(r>=0&&1>=r&&(e.lerp(n,d,h,r),e.sub(o,n,c),e.normalize(o,o),b.reportIntersection(a,r,o,-1),a.shouldStop(b)))return;s>=0&&1>=s&&(e.lerp(n,d,h,s),e.sub(o,n,c),e.normalize(o,o),b.reportIntersection(a,s,o,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b){function c(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;cf)&&(f=d),(null===h||h>d)&&(h=d);if(h>f){var j=h;h=f,f=j}e.set(b,h,f)},c.prototype.projectOntoWorldAxis=function(a,b,c,d){var f=h;this.projectOntoLocalAxis(a,d),0!==c?e.rotate(f,a,c):f=a;var g=e.dot(b,f);e.set(d,d[0]+g,d[1]+g)},c.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;f=g,g++){var h=this.vertices[f],i=this.vertices[g],j=Math.abs(e.crossLength(h,i)),k=e.dot(i,i)+e.dot(i,h)+e.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},c.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=e.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},c.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},c.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,d=0;d!==a.length;d++){var e=a[d],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=c.triangleArea(f,g,h);this.area+=i}},c.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var n=e.create(),o=e.create(),p=e.create();c.prototype.raycast=function(a,b,c,d){var f=n,g=o,h=p,i=this.vertices;e.toLocalFrame(f,b.from,c,d),e.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],q=e.getLineSegmentsIntersectionFraction(f,g,l,m);q>=0&&(e.sub(h,m,l),e.rotate(h,h,-Math.PI/2+d),e.normalize(h,h),b.reportIntersection(a,q,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b){function c(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,(void 0===a.maxValue||void 0===a.minValue)&&this.updateMaxMinValues(),a.type=d.HEIGHTFIELD,d.call(this,a)}{var d=a("./Shape"),e=a("../math/vec2");a("../utils/Utils")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},c.prototype.computeMomentOfInertia=function(){return Number.MAX_VALUE},c.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},c.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(e.sub(m,o,n),e.rotate(m,m,d+Math.PI/2),e.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b){function c(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=d.LINE,d.call(this,a)}var d=a("./Shape"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},c.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var f=[e.create(),e.create()];c.prototype.computeAABB=function(a,b,c){var d=this.length/2;e.set(f[0],-d,0),e.set(f[1],d,0),a.setFromPoints(f,b,c,0)};var g=(e.create(),e.create()),h=e.create(),i=e.create(),j=e.fromValues(0,1);c.prototype.raycast=function(a,b,c,d){var f=b.from,k=b.to,l=h,m=i,n=this.length/2;e.set(l,-n,0),e.set(m,n,0),e.toGlobalFrame(l,l,c,d),e.toGlobalFrame(m,m,c,d);var o=e.getLineSegmentsIntersectionFraction(l,m,f,k);if(o>=0){var p=g;e.rotate(p,j,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b){function c(a){a=a||{},a.type=d.PARTICLE,d.call(this,a)}var d=a("./Shape"),e=a("../math/vec2");b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeMomentOfInertia=function(){return 0},c.prototype.updateBoundingRadius=function(){this.boundingRadius=0},c.prototype.computeAABB=function(a,b){e.copy(a.lowerBound,b),e.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b){function c(a){a=a||{},a.type=d.PLANE,d.call(this,a)}{var d=a("./Shape"),e=a("../math/vec2");a("../utils/Utils")}b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.computeMomentOfInertia=function(){return 0},c.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},c.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),f=e.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(f(h,-g,-g),f(i,g,0)):d===Math.PI/2?(f(h,0,-g),f(i,g,g)):d===Math.PI?(f(h,-g,0),f(i,g,g)):d===3*Math.PI/2?(f(h,-g,-g),f(i,0,g)):(f(h,-g,-g),f(i,g,g)),e.add(h,h,b),e.add(i,i,b)},c.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var f=e.create(),g=(e.create(),e.create(),e.create()),h=e.create();c.prototype.raycast=function(a,b,c,d){var i=b.from,j=b.to,k=b.direction,l=f,m=g,n=h;e.set(m,0,1),e.rotate(m,m,d),e.sub(n,i,c);var o=e.dot(n,m);e.sub(n,j,c);var p=e.dot(n,m);if(!(o*p>0||e.squaredDistance(i,j)=w*w)break}for(c.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof h){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(f=0;f!==i;f++){for(w=0,x=0;x!==l;x++){v=k[x];var y=c.iterateEquation(x,v,v.epsilon,u,t,q,p,a,f);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();c.updateMultipliers(k,q,1/a)}},c.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},c.iterateEquation=function(a,b,c,d,e,f,g,h){var i=d[a],j=e[a],k=f[a],l=b.computeGWlambda(),m=b.maxForce,n=b.minForce;g&&(i=0);var o=j*(i-l-c*k),p=k+o;return n*h>p?o=n*h-k:p>m*h&&(o=m*h-k),f[a]+=o,b.addToWlambda(o),o}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b){function c(a,b){a=a||{},d.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var d=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=c,c.prototype=new d,c.prototype.constructor=c,c.prototype.solve=function(){throw new Error("Solver.solve should be implemented by subclasses!")};var e={bodies:[]};c.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),e.bodies.length=0,b.getBodies(e.bodies),e.bodies.length&&this.solve(a,e))},c.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},c.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},c.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},c.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},c.prototype.removeAllEquations=function(){this.equations.length=0},c.GS=1,c.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b){function c(){e.apply(this,arguments)}var d=a("../equations/ContactEquation"),e=a("./Pool");b.exports=c,c.prototype=new e,c.prototype.constructor=c,c.prototype.create=function(){return new d},c.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b){function c(){e.apply(this,arguments)}var d=a("../equations/FrictionEquation"),e=a("./Pool");b.exports=c,c.prototype=new e,c.prototype.constructor=c,c.prototype.create=function(){return new d},c.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b){function c(){e.apply(this,arguments)}var d=a("../world/IslandNode"),e=a("./Pool");b.exports=c,c.prototype=new e,c.prototype.constructor=c,c.prototype.create=function(){return new d},c.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b){function c(){e.apply(this,arguments)}var d=a("../world/Island"),e=a("./Pool");b.exports=c,c.prototype=new e,c.prototype.constructor=c,c.prototype.create=function(){return new d},c.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b){function c(){this.overlappingShapesLastState=new d,this.overlappingShapesCurrentState=new d,this.recordPool=new e({size:16}),this.tmpDict=new d,this.tmpArray1=[]}{var d=a("./TupleDictionary"),e=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils")}b.exports=c,c.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){{var d=a.keys[c],e=a.getByKey(d);b.getByKey(d)}e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},c.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},c.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},c.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},c.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},c.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},c.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},c.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},c.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},c.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b){function c(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=c,c.prototype.set=function(a,b,d,e){c.call(this,a,b,d,e)}},{}],54:[function(a,b){function c(){e.apply(this,arguments)}var d=a("./OverlapKeeperRecord"),e=a("./Pool");b.exports=c,c.prototype=new e,c.prototype.constructor=c,c.prototype.create=function(){return new d},c.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b){function c(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=c,c.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},c.prototype.getByKey=function(a){return a=0|a,this.data[a]},c.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},c.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},c.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},c.prototype.copy=function(a){this.reset(),d.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b){function c(){}b.exports=c,c.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},c.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},c.ARRAY_TYPE="undefined"!=typeof P2_ARRAY_TYPE?P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?Float32Array:Array,c.extend=function(a,b){for(var c in b)a[c]=b[c]},c.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b){function c(){this.equations=[],this.bodies=[]}var d=a("../objects/Body");b.exports=c,c.prototype.reset=function(){this.equations.length=this.bodies.length=0};var e=[];c.prototype.getBodies=function(a){var b=a||[],c=this.equations;e.length=0;for(var d=0;d!==c.length;d++){var f=c[d];-1===e.indexOf(f.bodyA.id)&&(b.push(f.bodyA),e.push(f.bodyA.id)),-1===e.indexOf(f.bodyB.id)&&(b.push(f.bodyB),e.push(f.bodyB.id))}return b},c.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var f=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];e.lerp(h.interpolatedPosition,h.previousPosition,h.position,f),h.interpolatedAngle=h.previousAngle+f*(h.angle-h.previousAngle)}}};var x=[];c.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,d=this.springs,f=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,m=this.constraints,n=u,o=(e.scale,e.add),p=(e.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=e.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var s=0;s!==i;s++){var t=f[s],v=t.force;t.type===l.DYNAMIC&&t.sleepState!==l.SLEEPING&&(e.scale(n,g,t.mass*t.gravityScale),o(v,v,n))}if(this.applySpringForces)for(var s=0;s!==b;s++){var w=d[s];w.applyForce()}if(this.applyDamping)for(var s=0;s!==i;s++){var t=f[s];t.type===l.DYNAMIC&&t.applyDamping(a)}for(var y=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,s=z.length-2;s>=0;s-=2)for(var A=y.length-2;A>=0;A-=2)(z[s]===y[A]&&z[s+1]===y[A+1]||z[s+1]===y[A]&&z[s]===y[A+1])&&y.splice(A,2);var B=m.length;for(s=0;s!==B;s++){var C=m[s];if(!C.collideConnected)for(var A=y.length-2;A>=0;A-=2)(C.bodyA===y[A]&&C.bodyB===y[A+1]||C.bodyB===y[A]&&C.bodyA===y[A+1])&&y.splice(A,2)}this.postBroadphaseEvent.pairs=y,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var s=0,D=y.length;s!==D;s+=2)for(var E=y[s],F=y[s+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var s=0;s!==i;s++){var S=f[s];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(x);for(var T=this.endContactEvent,L=x.length;L--;){var U=x[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}x.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=m.length;for(s=0;s!==B;s++)m[s].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,r.appendArray(p.equations,k.contactEquations),r.appendArray(p.equations,k.frictionEquations),s=0;s!==B;s++)r.appendArray(p.equations,m[s].equations);p.split(this);for(var s=0;s!==p.islands.length;s++){var W=p.islands[s];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),s=0;s!==B;s++)h.addEquations(m[s].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var s=0;s!==i;s++){var S=f[s];S.integrate(a)}for(var s=0;s!==i;s++)f[s].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,s=0;s!==k.contactEquations.length;s++){var Y=k.contactEquations[s];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===c.BODY_SLEEPING)for(s=0;s!==i;s++)f[s].sleepTick(this.time,!1,a);else if(this.sleepMode===c.ISLAND_SLEEPING&&this.islandSplit){for(s=0;s!==i;s++)f[s].sleepTick(this.time,!0,a);for(var s=0;s0,a.frictionCoefficient=k.friction;var p;p=b.type===l.STATIC||b.type===l.KINEMATIC?g.mass:g.type===l.STATIC||g.type===l.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*m*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===l.DYNAMIC&&g.sleepState===l.SLEEPING&&b.sleepState===l.AWAKE&&b.type!==l.STATIC){var z=e.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var d=this.bodies,b=d.length-1;b>=0;b--)this.removeBody(d[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);c.apply(this)};var y=e.create(),z=(e.fromValues(0,0),e.fromValues(0,0));c.prototype.hitTest=function(a,b,c){c=c||0;var d=new l({position:a}),k=new j,m=a,n=0,o=y,p=z;d.addShape(k);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];e.rotate(o,x.position,u.angle),e.add(o,o,u.position);var A=x.angle+u.angle;(x instanceof f&&q.circleParticle(u,x,o,A,d,k,m,n,!0)||x instanceof g&&q.particleConvex(d,k,m,n,u,x,o,A,!0)||x instanceof h&&q.particlePlane(d,k,m,n,u,x,o,A,!0)||x instanceof i&&q.particleCapsule(d,k,m,n,u,x,o,A,!0)||x instanceof j&&e.squaredLength(e.sub(p,o,a))=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller"); -return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gj;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a;for(var b=0;bi&&(i*=-1),0>l&&(l*=-1),q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n;else{var s=i*e+k*g+m,t=l*g+j*e+n,u=i*d+k*g+m,v=l*g+j*d+n,w=i*d+k*f+m,x=l*f+j*d+n,y=i*e+k*f+m,z=l*f+j*e+n;q=q>s?s:q,q=q>u?u:q,q=q>w?w:q,q=q>y?y:q,r=r>t?t:r,r=r>v?v:r,r=r>x?x:r,r=r>z?z:r,o=s>o?s:o,o=u>o?u:o,o=w>o?w:o,o=y>o?y:o,p=t>p?t:p,p=v>p?v:p,p=x>p?x:p,p=z>p?z:p}var A=this._bounds;return A.x=q,A.width=o-q,A.y=r,A.height=p-r,this._currentBounds=A,A},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.PolyK={},b.PolyK.Triangulate=function(a){var c=!0,d=a.length>>1;if(3>d)return[];for(var e=[],f=[],g=0;d>g;g++)f.push(g);g=0;for(var h=d;h>3;){var i=f[(g+0)%h],j=f[(g+1)%h],k=f[(g+2)%h],l=a[2*i],m=a[2*i+1],n=a[2*j],o=a[2*j+1],p=a[2*k],q=a[2*k+1],r=!1;if(b.PolyK._convex(l,m,n,o,p,q,c)){r=!0;for(var s=0;h>s;s++){var t=f[s];if(t!==i&&t!==j&&t!==k&&b.PolyK._PointInTriangle(a[2*t],a[2*t+1],l,m,n,o,p,q)){r=!1;break}}}if(r)e.push(i,j,k),f.splice((g+1)%h,1),h--,g=0;else if(g++>3*h){if(!c)return null;for(e=[],f=[],g=0;d>g;g++)f.push(g);g=0,h=d,c=!1}}return e.push(f[0],f[1],f[2]),e},b.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},b.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;c=6)if(h.points.length<12){g=b.WebGLGraphics.switchMode(d,0);var i=b.WebGLGraphics.buildPoly(h,g);i||(g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g))}else g=b.WebGLGraphics.switchMode(d,1),b.WebGLGraphics.buildComplexPoly(h,g);h.lineWidth>0&&(g=b.WebGLGraphics.switchMode(d,0),b.WebGLGraphics.buildLine(h,g))}else g=b.WebGLGraphics.switchMode(d,0),h.type===b.Graphics.RECT?b.WebGLGraphics.buildRectangle(h,g):h.type===b.Graphics.CIRC||h.type===b.Graphics.ELIP?b.WebGLGraphics.buildCircle(h,g):h.type===b.Graphics.RREC&&b.WebGLGraphics.buildRoundedRectangle(h,g);d.lastIndex++}for(e=0;e=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},b.WebGLGraphics.buildCircle=function(a,c){var d,e,f=a.shape,g=f.x,h=f.y;a.type===b.Graphics.CIRC?(d=f.radius,e=f.radius):(d=f.width,e=f.height);var i=40,j=2*Math.PI/i,k=0;if(a.fill){var l=b.hex2rgb(a.fillColor),m=a.fillAlpha,n=l[0]*m,o=l[1]*m,p=l[2]*m,q=c.points,r=c.indices,s=q.length/6;for(r.push(s),k=0;i+1>k;k++)q.push(g,h,n,o,p,m),q.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e,n,o,p,m),r.push(s++,s++);r.push(s-1)}if(a.lineWidth){var t=a.points;for(a.points=[],k=0;i+1>k;k++)a.points.push(g+Math.sin(j*k)*d,h+Math.cos(j*k)*e);b.WebGLGraphics.buildLine(a,c),a.points=t}},b.WebGLGraphics.buildLine=function(a,c){var d=0,e=a.points;if(0!==e.length){if(a.lineWidth%2)for(d=0;dd;d++)l=e[2*(d-1)],m=e[2*(d-1)+1],n=e[2*d],o=e[2*d+1],p=e[2*(d+1)],q=e[2*(d+1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,t=-(o-q),u=n-p,F=Math.sqrt(t*t+u*u),t/=F,u/=F,t*=L,u*=L,x=-s+m-(-s+o),y=-r+n-(-r+l),z=(-r+l)*(-s+o)-(-r+n)*(-s+m),A=-u+q-(-u+o),B=-t+n-(-t+p),C=(-t+p)*(-u+o)-(-t+n)*(-u+q),D=x*B-A*y,Math.abs(D)<.1?(D+=10.1,G.push(n-r,o-s,O,P,Q,N),G.push(n+r,o+s,O,P,Q,N)):(j=(y*C-B*z)/D,k=(A*z-x*C)/D,E=(j-n)*(j-n)+(k-o)+(k-o),E>19600?(v=r-t,w=s-u,F=Math.sqrt(v*v+w*w),v/=F,w/=F,v*=L,w*=L,G.push(n-v,o-w),G.push(O,P,Q,N),G.push(n+v,o+w),G.push(O,P,Q,N),G.push(n-v,o-w),G.push(O,P,Q,N),J++):(G.push(j,k),G.push(O,P,Q,N),G.push(n-(j-n),o-(k-o)),G.push(O,P,Q,N)));for(l=e[2*(I-2)],m=e[2*(I-2)+1],n=e[2*(I-1)],o=e[2*(I-1)+1],r=-(m-o),s=l-n,F=Math.sqrt(r*r+s*s),r/=F,s/=F,r*=L,s*=L,G.push(n-r,o-s),G.push(O,P,Q,N),G.push(n+r,o+s),G.push(O,P,Q,N),H.push(K),d=0;J>d;d++)H.push(K++);H.push(K-1)}},b.WebGLGraphics.buildComplexPoly=function(a,c){var d=a.points.slice();if(!(d.length<6)){var e=c.indices;c.points=d,c.alpha=a.fillAlpha,c.color=b.hex2rgb(a.fillColor);for(var f,g,h=1/0,i=-1/0,j=1/0,k=-1/0,l=0;lf?f:h,i=f>i?f:i,j=j>g?g:j,k=g>k?g:k;d.push(h,j,i,j,i,k,h,k);var m=d.length/2;for(l=0;m>l;l++)e.push(l)}},b.WebGLGraphics.buildPoly=function(a,c){var d=a.points;if(!(d.length<6)){var e=c.points,f=c.indices,g=d.length/2,h=b.hex2rgb(a.fillColor),i=a.fillAlpha,j=h[0]*i,k=h[1]*i,l=h[2]*i,m=b.PolyK.Triangulate(d);if(!m)return!1;var n=e.length/6,o=0;for(o=0;oo;o++)e.push(d[2*o],d[2*o+1],j,k,l,i);return!0}},b.WebGLGraphics.graphicsDataPool=[],b.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},b.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},b.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new b.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new b.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1 -},b.glContexts=[],b.instances=[],b.WebGLRenderer=function(a,c,d){if(d)for(var e in b.defaultRenderOptions)void 0===d[e]&&(d[e]=b.defaultRenderOptions[e]);else d=b.defaultRenderOptions;b.defaultRenderer||(b.defaultRenderer=this),this.type=b.WEBGL_RENDERER,this.resolution=d.resolution,this.transparent=d.transparent,this.autoResize=d.autoResize||!1,this.preserveDrawingBuffer=d.preserveDrawingBuffer,this.clearBeforeRender=d.clearBeforeRender,this.width=a||800,this.height=c||600,this.view=d.view||document.createElement("canvas"),this._contextOptions={alpha:this.transparent,antialias:d.antialias,premultipliedAlpha:this.transparent&&"notMultiplied"!==this.transparent,stencil:!0,preserveDrawingBuffer:d.preserveDrawingBuffer},this.projection=new b.Point,this.offset=new b.Point(0,0),this.shaderManager=new b.WebGLShaderManager,this.spriteBatch=new b.WebGLSpriteBatch,this.maskManager=new b.WebGLMaskManager,this.filterManager=new b.WebGLFilterManager,this.stencilManager=new b.WebGLStencilManager,this.blendModeManager=new b.WebGLBlendModeManager,this.renderSession={},this.renderSession.gl=this.gl,this.renderSession.drawCount=0,this.renderSession.shaderManager=this.shaderManager,this.renderSession.maskManager=this.maskManager,this.renderSession.filterManager=this.filterManager,this.renderSession.blendModeManager=this.blendModeManager,this.renderSession.spriteBatch=this.spriteBatch,this.renderSession.stencilManager=this.stencilManager,this.renderSession.renderer=this,this.renderSession.resolution=this.resolution,this.initContext(),this.mapBlendModes()},b.WebGLRenderer.prototype.constructor=b.WebGLRenderer,b.WebGLRenderer.prototype.initContext=function(){var a=this.view.getContext("webgl",this._contextOptions)||this.view.getContext("experimental-webgl",this._contextOptions);if(this.gl=a,!a)throw new Error("This browser does not support webGL. Try using the canvas renderer");this.glContextId=a.id=b.WebGLRenderer.glContextId++,b.glContexts[this.glContextId]=a,b.instances[this.glContextId]=this,a.disable(a.DEPTH_TEST),a.disable(a.CULL_FACE),a.enable(a.BLEND),this.shaderManager.setContext(a),this.spriteBatch.setContext(a),this.maskManager.setContext(a),this.filterManager.setContext(a),this.blendModeManager.setContext(a),this.stencilManager.setContext(a),this.renderSession.gl=this.gl,this.resize(this.width,this.height)},b.WebGLRenderer.prototype.render=function(a){if(!this.contextLost){this.__stage!==a&&(this.__stage=a),a.updateTransform();var b=this.gl;b.viewport(0,0,this.width,this.height),b.bindFramebuffer(b.FRAMEBUFFER,null),this.clearBeforeRender&&(this.transparent?b.clearColor(0,0,0,0):b.clearColor(a.backgroundColorSplit[0],a.backgroundColorSplit[1],a.backgroundColorSplit[2],1),b.clear(b.COLOR_BUFFER_BIT)),this.renderDisplayObject(a,this.projection)}},b.WebGLRenderer.prototype.renderDisplayObject=function(a,c,d,e){this.renderSession.blendModeManager.setBlendMode(b.blendModes.NORMAL),this.renderSession.drawCount=0,this.renderSession.flipY=d?-1:1,this.renderSession.projection=c,this.renderSession.offset=this.offset,this.spriteBatch.begin(this.renderSession),this.filterManager.begin(this.renderSession,d),a._renderWebGL(this.renderSession,e),this.spriteBatch.end()},b.WebGLRenderer.prototype.resize=function(a,b){this.width=a*this.resolution,this.height=b*this.resolution,this.view.width=this.width,this.view.height=this.height,this.autoResize&&(this.view.style.width=this.width/this.resolution+"px",this.view.style.height=this.height/this.resolution+"px"),this.gl.viewport(0,0,this.width,this.height),this.projection.x=this.width/2/this.resolution,this.projection.y=-this.height/2/this.resolution},b.WebGLRenderer.prototype.updateTexture=function(a){if(a.hasLoaded){var c=this.gl;return a._glTextures[c.id]||(a._glTextures[c.id]=c.createTexture()),c.bindTexture(c.TEXTURE_2D,a._glTextures[c.id]),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultipliedAlpha),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,a.source),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a.mipmap&&b.isPowerOfTwo(a.width,a.height)?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR_MIPMAP_LINEAR:c.NEAREST_MIPMAP_NEAREST),c.generateMipmap(c.TEXTURE_2D)):c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,a.scaleMode===b.scaleModes.LINEAR?c.LINEAR:c.NEAREST),a._powerOf2?(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.REPEAT),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.REPEAT)):(c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE)),a._dirty[c.id]=!1,a._glTextures[c.id]}},b.WebGLRenderer.prototype.destroy=function(){b.glContexts[this.glContextId]=null,this.projection=null,this.offset=null,this.shaderManager.destroy(),this.spriteBatch.destroy(),this.maskManager.destroy(),this.filterManager.destroy(),this.shaderManager=null,this.spriteBatch=null,this.maskManager=null,this.filterManager=null,this.gl=null,this.renderSession=null,b.CanvasPool.remove(this),b.instances[this.glContextId]=null,b.WebGLRenderer.glContextId--},b.WebGLRenderer.prototype.mapBlendModes=function(){var a=this.gl;b.blendModesWebGL||(b.blendModesWebGL=[],b.blendModesWebGL[b.blendModes.NORMAL]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.ADD]=[a.SRC_ALPHA,a.DST_ALPHA],b.blendModesWebGL[b.blendModes.MULTIPLY]=[a.DST_COLOR,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SCREEN]=[a.SRC_ALPHA,a.ONE],b.blendModesWebGL[b.blendModes.OVERLAY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DARKEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LIGHTEN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_DODGE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR_BURN]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HARD_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SOFT_LIGHT]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.DIFFERENCE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.EXCLUSION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.HUE]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.SATURATION]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.COLOR]=[a.ONE,a.ONE_MINUS_SRC_ALPHA],b.blendModesWebGL[b.blendModes.LUMINOSITY]=[a.ONE,a.ONE_MINUS_SRC_ALPHA])},b.WebGLRenderer.glContextId=0,b.WebGLBlendModeManager=function(){this.currentBlendMode=99999},b.WebGLBlendModeManager.prototype.constructor=b.WebGLBlendModeManager,b.WebGLBlendModeManager.prototype.setContext=function(a){this.gl=a},b.WebGLBlendModeManager.prototype.setBlendMode=function(a){if(this.currentBlendMode===a)return!1;this.currentBlendMode=a;var c=b.blendModesWebGL[this.currentBlendMode];return this.gl.blendFunc(c[0],c[1]),!0},b.WebGLBlendModeManager.prototype.destroy=function(){this.gl=null},b.WebGLMaskManager=function(){},b.WebGLMaskManager.prototype.constructor=b.WebGLMaskManager,b.WebGLMaskManager.prototype.setContext=function(a){this.gl=a},b.WebGLMaskManager.prototype.pushMask=function(a,c){var d=c.gl;a.dirty&&b.WebGLGraphics.updateGraphics(a,d),a._webGL[d.id].data.length&&c.stencilManager.pushStencil(a,a._webGL[d.id].data[0],c)},b.WebGLMaskManager.prototype.popMask=function(a,b){var c=this.gl;b.stencilManager.popStencil(a,a._webGL[c.id].data[0],b)},b.WebGLMaskManager.prototype.destroy=function(){this.gl=null},b.WebGLStencilManager=function(){this.stencilStack=[],this.reverse=!0,this.count=0},b.WebGLStencilManager.prototype.setContext=function(a){this.gl=a},b.WebGLStencilManager.prototype.pushStencil=function(a,b,c){var d=this.gl;this.bindGraphics(a,b,c),0===this.stencilStack.length&&(d.enable(d.STENCIL_TEST),d.clear(d.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(b);var e=this.count;d.colorMask(!1,!1,!1,!1),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),1===b.mode?(d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),this.reverse?d.stencilFunc(d.EQUAL,255-(e+1),255):d.stencilFunc(d.EQUAL,e+1,255),this.reverse=!this.reverse):(this.reverse?(d.stencilFunc(d.EQUAL,e,255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,255-e,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e+1,255):d.stencilFunc(d.EQUAL,255-(e+1),255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),this.count++},b.WebGLStencilManager.prototype.bindGraphics=function(a,c,d){this._currentGraphics=a;var e,f=this.gl,g=d.projection,h=d.offset;1===c.mode?(e=d.shaderManager.complexPrimitiveShader,d.shaderManager.setShader(e),f.uniform1f(e.flipY,d.flipY),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform3fv(e.color,c.color),f.uniform1f(e.alpha,a.worldAlpha*c.alpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,8,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer)):(e=d.shaderManager.primitiveShader,d.shaderManager.setShader(e),f.uniformMatrix3fv(e.translationMatrix,!1,a.worldTransform.toArray(!0)),f.uniform1f(e.flipY,d.flipY),f.uniform2f(e.projectionVector,g.x,-g.y),f.uniform2f(e.offsetVector,-h.x,-h.y),f.uniform3fv(e.tintColor,b.hex2rgb(a.tint)),f.uniform1f(e.alpha,a.worldAlpha),f.bindBuffer(f.ARRAY_BUFFER,c.buffer),f.vertexAttribPointer(e.aVertexPosition,2,f.FLOAT,!1,24,0),f.vertexAttribPointer(e.colorAttribute,4,f.FLOAT,!1,24,8),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,c.indexBuffer))},b.WebGLStencilManager.prototype.popStencil=function(a,b,c){var d=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)d.disable(d.STENCIL_TEST);else{var e=this.count;this.bindGraphics(a,b,c),d.colorMask(!1,!1,!1,!1),1===b.mode?(this.reverse=!this.reverse,this.reverse?(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)):(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)),d.drawElements(d.TRIANGLE_FAN,4,d.UNSIGNED_SHORT,2*(b.indices.length-4)),d.stencilFunc(d.ALWAYS,0,255),d.stencilOp(d.KEEP,d.KEEP,d.INVERT),d.drawElements(d.TRIANGLE_FAN,b.indices.length-4,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)):(this.reverse?(d.stencilFunc(d.EQUAL,e+1,255),d.stencilOp(d.KEEP,d.KEEP,d.DECR)):(d.stencilFunc(d.EQUAL,255-(e+1),255),d.stencilOp(d.KEEP,d.KEEP,d.INCR)),d.drawElements(d.TRIANGLE_STRIP,b.indices.length,d.UNSIGNED_SHORT,0),this.reverse?d.stencilFunc(d.EQUAL,e,255):d.stencilFunc(d.EQUAL,255-e,255)),d.colorMask(!0,!0,!0,!0),d.stencilOp(d.KEEP,d.KEEP,d.KEEP)}},b.WebGLStencilManager.prototype.destroy=function(){this.stencilStack=null,this.gl=null},b.WebGLShaderManager=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var a=0;ad;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;a._dirty[d.id]?this.renderSession.renderer.updateTexture(a):d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]),d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;jB?B:A,c.beginPath(),c.moveTo(w,x+A),c.lineTo(w,x+z-A),c.quadraticCurveTo(w,x+z,w+A,x+z),c.lineTo(w+y-A,x+z),c.quadraticCurveTo(w+y,x+z,w+y,x+z-A),c.lineTo(w+y,x+A),c.quadraticCurveTo(w+y,x,w+y-A,x),c.lineTo(w+A,x),c.quadraticCurveTo(w,x,w,x+A),c.closePath(),(f.fillColor||0===f.fillColor)&&(c.globalAlpha=f.fillAlpha*d,c.fillStyle="#"+("00000"+(0|h).toString(16)).substr(-6),c.fill()),f.lineWidth&&(c.globalAlpha=f.lineAlpha*d,c.strokeStyle="#"+("00000"+(0|i).toString(16)).substr(-6),c.stroke())}}},b.CanvasGraphics.renderGraphicsMask=function(a,c){var d=a.graphicsData.length;if(0!==d){c.beginPath();for(var e=0;d>e;e++){var f=a.graphicsData[e],g=f.shape;if(f.type===b.Graphics.POLY){var h=g.points;c.moveTo(h[0],h[1]);for(var i=1;iz?z:y,c.moveTo(u,v+y),c.lineTo(u,v+x-y),c.quadraticCurveTo(u,v+x,u+y,v+x),c.lineTo(u+w-y,v+x),c.quadraticCurveTo(u+w,v+x,u+w,v+x-y),c.lineTo(u+w,v+y),c.quadraticCurveTo(u+w,v,u+w-y,v),c.lineTo(u+y,v),c.quadraticCurveTo(u,v,u,v+y),c.closePath()}}}},b.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},b.BaseTextureCache={},b.BaseTextureCacheIdGenerator=0,b.BaseTexture=function(a,c){this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this._UID=b._UID++,this.premultipliedAlpha=!0,this._glTextures=[],this.mipmap=!1,this._dirty=[!0,!0,!0,!0],a&&((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height&&(this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty()),this.imageUrl=null,this._powerOf2=!1)},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.forceLoaded=function(a,b){this.hasLoaded=!0,this.width=a,this.height=b,this.dirty()},b.BaseTexture.prototype.destroy=function(){this.imageUrl?(delete b.BaseTextureCache[this.imageUrl],delete b.TextureCache[this.imageUrl],this.imageUrl=null,navigator.isCocoonJS||(this.source.src="")):this.source&&this.source._pixiId&&(b.CanvasPool.removeByCanvas(this.source),delete b.BaseTextureCache[this.source._pixiId]),this.source=null,this.unloadFromGPU()},b.BaseTexture.prototype.updateSourceImage=function(a){this.hasLoaded=!1,this.source.src=null,this.source.src=a},b.BaseTexture.prototype.dirty=function(){for(var a=0;a=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|d.tx,0|d.ty):c.setTransform(d.a,d.b,d.c,d.d,d.tx,d.ty),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-1/0,k=-1/0,l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-1/0||1/0===k)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){this.canvasBuffer.destroy(),b.Sprite.prototype.destroy.call(this),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}.call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.4.3",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError; -for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*Math.PI*this._radius},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},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){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.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(c.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(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,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},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){a=a||1,b=b||0,d=d||0,e=e||1,f=f||0,g=g||0,this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return 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},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.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},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,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)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(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 c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){this.height=a<=this.y?0:a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.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(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){this.width=a<=this.x?0:a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.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(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.prototype={preUpdate:function(){this.totalInView=0},follow:function(a,b){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(b){case c.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new c.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case c.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=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.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target),this.target.parent&&this._targetPosition.multiply(this.target.parent.worldTransform.a,this.target.parent.worldTransform.d),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),c.Create=function(a){this.game=a,this.bmd=a.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}] -},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.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.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.splice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},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.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);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){if(!this._bindings)return-1;void 0===b&&(b=null);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){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e){void 0===e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.events&&f.events.onAddedToGroup$dispatch(f,this),null===this.cursor&&(this.cursor=f),f},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.resetCursor=function(a){return void 0===a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.replace=function(a,b){var d=this.getIndex(a);return-1!==d?(b.parent&&(b.parent instanceof c.Group?b.parent.remove(b):b.parent.removeChild(b)),this.remove(a),this.addAt(b,d),a):void 0},c.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},c.Group.prototype.setProperty=function(a,b,c,d,e){if(void 0===e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?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===f?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===f?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===f&&(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)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1; -c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b){if(void 0===a&&(a=!1),void 0===b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);this.removeFromHash(c),a&&c&&c.destroy(!0)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){a=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Game=function(a,b,d,e,f,g,h,i){return this.id=c.GAMES.push(this)-1,this.config=null,this.physicsConfig=i,this.parent="",this.width=800,this.height=600,this.resolution=1,this._width=800,this._height=600,this.transparent=!1,this.antialias=!0,this.preserveDrawingBuffer=!1,this.renderer=null,this.renderType=c.AUTO,this.state=null,this.isBooted=!1,this.isRunning=!1,this.raf=null,this.add=null,this.make=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.net=null,this.scale=null,this.sound=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.physics=null,this.plugins=null,this.rnd=null,this.device=c.Device,this.camera=null,this.canvas=null,this.context=null,this.debug=null,this.particles=null,this.create=null,this.lockRender=!1,this.stepping=!1,this.pendingStep=!1,this.stepCount=0,this.onPause=null,this.onResume=null,this.onBlur=null,this.onFocus=null,this._paused=!1,this._codePaused=!1,this.currentUpdateID=0,this.updatesThisFrame=1,this._deltaTime=0,this._lastCount=0,this._spiraling=0,this._kickstart=!0,this.fpsProblemNotifier=new c.Signal,this.forceSingleUpdate=!1,this._nextFpsNotification=0,1===arguments.length&&"object"==typeof arguments[0]?this.parseConfig(arguments[0]):(this.config={enableDebug:!0},"undefined"!=typeof a&&(this._width=a),"undefined"!=typeof b&&(this._height=b),"undefined"!=typeof d&&(this.renderType=d),"undefined"!=typeof e&&(this.parent=e),"undefined"!=typeof g&&(this.transparent=g),"undefined"!=typeof h&&(this.antialias=h),this.rnd=new c.RandomDataGenerator([(Date.now()*Math.random()).toString()]),this.state=new c.StateManager(this,f)),this.device.whenReady(this.boot,this),this},c.Game.prototype={parseConfig:function(a){this.config=a,void 0===a.enableDebug&&(this.config.enableDebug=!0),a.width&&(this._width=a.width),a.height&&(this._height=a.height),a.renderer&&(this.renderType=a.renderer),a.parent&&(this.parent=a.parent),a.transparent&&(this.transparent=a.transparent),a.antialias&&(this.antialias=a.antialias),a.resolution&&(this.resolution=a.resolution),a.preserveDrawingBuffer&&(this.preserveDrawingBuffer=a.preserveDrawingBuffer),a.physicsConfig&&(this.physicsConfig=a.physicsConfig);var b=[(Date.now()*Math.random()).toString()];a.seed&&(b=a.seed),this.rnd=new c.RandomDataGenerator(b);var d=null;a.state&&(d=a.state),this.state=new c.StateManager(this,d)},boot:function(){this.isBooted||(this.onPause=new c.Signal,this.onResume=new c.Signal,this.onBlur=new c.Signal,this.onFocus=new c.Signal,this.isBooted=!0,this.math=c.Math,this.scale=new c.ScaleManager(this,this._width,this._height),this.stage=new c.Stage(this),this.setUpRenderer(),this.world=new c.World(this),this.add=new c.GameObjectFactory(this),this.make=new c.GameObjectCreator(this),this.cache=new c.Cache(this),this.load=new c.Loader(this),this.time=new c.Time(this),this.tweens=new c.TweenManager(this),this.input=new c.Input(this),this.sound=new c.SoundManager(this),this.physics=new c.Physics(this,this.physicsConfig),this.particles=new c.Particles(this),this.create=new c.Create(this),this.plugins=new c.PluginManager(this),this.net=new c.Net(this),this.time.boot(),this.stage.boot(),this.world.boot(),this.scale.boot(),this.input.boot(),this.sound.boot(),this.state.boot(),this.config.enableDebug?(this.debug=new c.Utils.Debug(this),this.debug.boot()):this.debug={preUpdate:function(){},update:function(){},reset:function(){}},this.showDebugHeader(),this.isRunning=!0,this.raf=this.config&&this.config.forceSetTimeOut?new c.RequestAnimationFrame(this,this.config.forceSetTimeOut):new c.RequestAnimationFrame(this,!1),this._kickstart=!0,window.focus&&(!window.PhaserGlobal||window.PhaserGlobal&&!window.PhaserGlobal.stopFocus)&&window.focus(),this.raf.start())},showDebugHeader:function(){if(!window.PhaserGlobal||!window.PhaserGlobal.hideBanner){var a=c.VERSION,b="Canvas",d="HTML Audio",e=1;if(this.renderType===c.WEBGL?(b="WebGL",e++):this.renderType==c.HEADLESS&&(b="Headless"),this.device.webAudio&&(d="WebAudio",e++),this.device.chrome){for(var f=["%c %c %c Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" %c %c %c http://phaser.io %c♥%c♥%c♥","background: #9854d8","background: #6c2ca7","color: #ffffff; background: #450f78;","background: #6c2ca7","background: #9854d8","background: #ffffff"],g=0;3>g;g++)f.push(e>g?"color: #ff2424; background: #fff":"color: #959595; background: #fff"); -console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&this.device.webGL===!1){if(!this.device.canvas)throw new Error("Phaser.Game - cannot create Canvas or WebGL context, aborting.");this.renderType===c.AUTO&&(this.renderType=c.CANVAS),this.renderer=new PIXI.CanvasRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:this.resolution,clearBeforeRender:!0}),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this.width,this.height,{view:this.canvas,transparent:this.transparent,resolution:this.resolution,antialias:this.antialias,preserveDrawingBuffer:this.preserveDrawingBuffer}),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(1/this.time.desiredFps),this.stage.updateTransform(),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(1/this.time.desiredFps),this.stage.updateTransform(),c++,!this.forceSingleUpdate||1!==c););c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],b,d))return!0;return!1},onClickTrampoline:function(){this.activePointer.processClickTrampolines()}},c.Input.prototype.constructor=c.Input,Object.defineProperty(c.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.duration=0,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),a.ctrlKey&&this.leftButton.isDown&&this.rightButton.start(a),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&(this.game.input.x=this.x,this.game.input.y=this.y,this.game.input.position.setTo(this.x,this.y),this.game.input.onDown.dispatch(this,a),this.game.input.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){this.active&&(this.dirty&&(this.game.input.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=this.game.input.holdRate&&((this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&this.game.input.onHold.dispatch(this),this._holdSent=!0),this.game.input.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+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,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),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.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){for(var b=Number.MAX_VALUE,c=-1,d=null,e=this.game.input.interactiveItems.first;e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e)),e=this.game.input.interactiveItems.next;for(var e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e),e=this.game.input.interactiveItems.next;return null===d?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=d,d._pointerOverHandler(this)):this.targetObject===d?d.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=d,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(this.game.input.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||this.game.input.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||this.game.input.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===this.game.input.totalActivePointers)&&(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=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&this.game.input.currentPointers--,this.game.input.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this) -},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!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.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderIDb;b++)if(this._pointerData[b].isOver)return!0}return!1},pointerOut:function(a){if(this.enabled){if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0}return!1},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];(b.isOver===!1||a.dirty)&&(b.isOver=!0,b.isOut=!1,b.timeOver=this.game.time.time,b.x=a.x-this.sprite.x,b.y=a.y-this.sprite.y,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a))}},_pointerOutHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];b.isOver=!1,b.isOut=!0,b.timeOut=this.game.time.time,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut$dispatch(this.sprite,a)}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown$dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var c=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.sprite.events.onInputUp$dispatch(this.sprite,a,c),c&&(c=this.checkPointerOver(a))),b.isOver=c,!c&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y))):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))),this.sprite.events.onDragUpdate.dispatch(this.sprite,a,b,c,this.snapPoint),!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){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if((this.autoCull||this.checkWorldBounds)&&(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull&&(this.game.world.camera.view.intersects(this._bounds)?(this.renderable=!0,this.game.world.camera.totalInView++):this.renderable=!1),this.checkWorldBounds))if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1;return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,"number"==typeof this.health&&(this.health=a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),e.hasFrameData(a.key,c.Cache.BITMAPDATA)&&(f=!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b));else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:this.checkTransform,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.splice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.splice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.TileSprite=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||256,f=f||256,g=g||null,h=h||null,this.type=c.TILESPRITE,this.physicsType=c.SPRITE,this._scroll=new c.Point;var i=a.cache.getImage("__default",!0);PIXI.TilingSprite.call(this,new PIXI.Texture(i.base),e,f),c.Component.Core.init.call(this,a,b,d,g,h)},c.TileSprite.prototype=Object.create(PIXI.TilingSprite.prototype),c.TileSprite.prototype.constructor=c.TileSprite,c.Component.Core.install.call(c.TileSprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","Smoothed"]),c.TileSprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.TileSprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.TileSprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.TileSprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TileSprite.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.TileSprite.prototype.autoScroll=function(a,b){this._scroll.set(a,b)},c.TileSprite.prototype.stopScroll=function(){this._scroll.set(0,0)},c.TileSprite.prototype.destroy=function(a){c.Component.Destroy.prototype.destroy.call(this,a),PIXI.TilingSprite.prototype.destroy.call(this)},c.TileSprite.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,this._scroll=new c.Point,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;ka){a=Math.abs(a);var f=this.width-a;c.drawImage(e,0,0,a,d,f,0,a,d),c.drawImage(e,a,0,f,d,0,0,f,d)}else{var f=this.width-a;c.drawImage(e,f,0,a,d,0,0,a,d),c.drawImage(e,0,0,f,d,a,0,f,d)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a){var b=this._swapCanvas,c=b.getContext("2d"),d=this.width,e=this.canvas;if(c.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var f=this.height-a;c.drawImage(e,0,0,d,a,0,f,d,a),c.drawImage(e,0,a,d,f,0,0,d,f)}else{var f=this.height-a;c.drawImage(e,0,f,d,a,0,0,d,a),c.drawImage(e,0,0,d,f,0,a,d,f)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){if((void 0===a||null===a)&&(a=!1),(void 0===b||null===b)&&(b=!1),(void 0===d||null===d)&&(d=!1),a||b||d){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var f=c.Color.createColor(),g=e.y;g=0&&a<=this.width&&b>=0&&b<=this.height&&(this.pixels[b*this.width+a]=c.Device.LITTLE_ENDIAN?g<<24|f<<16|e<<8|d:d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.copy,this,null,null,null,null,null,null,null,null,null,null,null,null,null,null,b,c),this},drawFull:function(a,b,d){if(a.worldVisible===!1||0===a.worldAlpha||a.hasOwnProperty("exists")&&a.exists===!1)return this;if(a.type!==c.GROUP&&a.type!==c.EMITTER&&a.type!==c.BITMAPTEXT)if(a.type===c.GRAPHICS){var e=a.getBounds();this.ctx.save(),this.ctx.translate(e.x,e.y),PIXI.CanvasGraphics.renderGraphics(a,this.ctx),this.ctx.restore()}else this.copy(a,null,null,null,null,a.worldPosition.x,a.worldPosition.y,null,null,a.worldRotation,null,null,a.worldScale.x,a.worldScale.y,a.worldAlpha,b,d);if(a.children)for(var f=0;fb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){if(d===e)return this;void 0===f&&(f=!1),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var g=f?-1*(d-e):e-d,h=40*Math.ceil(Math.abs(g)/(2*Math.PI));if(0===g)return this;var i=a+Math.cos(d)*c,j=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(i,j);for(var k=this.currentPath.shape.points,l=g/(2*h),m=2*l,n=Math.cos(l),o=Math.sin(l),p=h-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);k.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():(this.destroyCachedSprite(),this.dirty=!0)}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1); -var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&(j+=c[k-1]),h=j+l}else for(var k=0;kq&&Math.abs(q)>o&&(q=-o),0!==q){var m=q*(b.length-1);p+=m}this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,g=0;g0&&(s+=q*g),"right"===this.style.align?r+=e-d[g]:"center"===this.style.align&&(r+=(e-d[g])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[g],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[g],r,s):this.renderTabLine(b[g],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[g],r,s):this.renderTabLine(b[g],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.runWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f,this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=null,h=this._maxWidth>0?this._maxWidth:null,i=[],j=0;j=h&&f>-1)return{width:e,text:c.substr(0,j-(j-f)),end:k,chars:i};e+=m.xAdvance*b,i.push(d+m.xOffset*b),d+=m.xAdvance*b,g=l}}return{width:e,text:c,end:k,chars:i}},c.BitmapText.prototype.updateText=function(){var a=this._data.font;if(a){var b=this.text,c=this._fontSize/a.size,d=[],e=0;this.textWidth=0;do{var f=this.scanLine(a,c,b);f.y=e,d.push(f),f.width>this.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){this._data.base.scaleMode=a?0:1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",this.autoUpperCase=f?!1:!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,this._scroll=new c.Point,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return 0!==this._scroll.x&&(this.tilePosition.x+=this._scroll.x*this.game.time.physicsElapsed),0!==this._scroll.y&&(this.tilePosition.y+=this._scroll.y*this.game.time.physicsElapsed),this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this.tilePosition.x=0,this.tilePosition.y=0,this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c0&&"none"!==a}var l=this;a(),g(),f(),e(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.DOM={getOffset:function(a,b){b=b||new c.Point;var d=a.getBoundingClientRect(),e=c.DOM.scrollY,f=c.DOM.scrollX,g=document.documentElement.clientTop,h=document.documentElement.clientLeft;return b.x=d.left+f-h,b.y=d.top+e-g,b},getBounds:function(a,b){return void 0===b&&(b=0),a=a&&!a.nodeType?a[0]:a,a&&1===a.nodeType?this.calibrate(a.getBoundingClientRect(),b):!1},calibrate:function(a,b){b=+b||0;var c={width:0,height:0,left:0,right:0,top:0,bottom:0};return c.width=(c.right=a.right+b)-(c.left=a.left-b),c.height=(c.bottom=a.bottom+b)-(c.top=a.top-b),c},getAspectRatio:function(a){a=null==a?this.visualBounds:1===a.nodeType?this.getBounds(a):a;var b=a.width,c=a.height;return"function"==typeof b&&(b=b.call(a)),"function"==typeof c&&(c=c.call(a)),b/c},inLayoutViewport:function(a,b){var c=this.getBounds(a,b);return!!c&&c.bottom>=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},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 void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var c=["i","mozI","oI","webkitI","msI"];for(var d in c){var e=c[d]+"mageSmoothingEnabled";if(e in a)return a[e]=b,a}return a},getSmoothingEnabled:function(a){return a.imageSmoothingEnabled||a.mozImageSmoothingEnabled||a.oImageSmoothingEnabled||a.webkitImageSmoothingEnabled||a.msImageSmoothingEnabled},setImageRenderingCrisp:function(a){return a.style["image-rendering"]="optimizeSpeed",a.style["image-rendering"]="crisp-edges",a.style["image-rendering"]="-moz-crisp-edges",a.style["image-rendering"]="-webkit-optimize-contrast",a.style["image-rendering"]="optimize-contrast",a.style["image-rendering"]="pixelated",a.style.msInterpolationMode="nearest-neighbor",a},setImageRenderingBicubic:function(a){return a.style["image-rendering"]="auto",a.style.msInterpolationMode="bicubic",a}},c.RequestAnimationFrame=function(a,b){void 0===b&&(b=!1),this.game=a,this.isRunning=!1,this.forceSetTimeOut=b;for(var c=["ms","moz","webkit","o"],d=0;da},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=0;b=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},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},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},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)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return 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)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===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}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,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 a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var j=Math.PI/180,k=180/Math.PI;return c.Math.degToRad=function(a){return a*j},c.Math.radToDeg=function(a){return a*k},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),a?this.repeatAll(-1):this.repeatCounter=0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?!1:!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];this.parent.target[d]=Array.isArray(f)?this.interpolationFunction.call(this.interpolationContext,f,this.value):e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.dt=this.parent.reverse?this.duration:0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];e[f]=Array.isArray(h)?this.interpolationFunction(h,this.value):g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter)return c.TweenData.COMPLETE;this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.dt=this.parent.reverse?this.duration:0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.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 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin(2*(a-b)*Math.PI/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*a*a*((b+1)*a-b):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.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*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=0,this.physicsElapsedMS=0,this.desiredFps=60,this.suggestedFps=null,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this.desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=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=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.splice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.splice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.splice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;this.nextTick=0>d?this._now:this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===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){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.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,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(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)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.reset(),this.game.state.loadComplete())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayVideo(c))return a[b]}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayAudio(c))return a[b]}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=new Blob([new Uint8Array(b.response)])}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.data=a.callback?a.callback.call(a.callbackContext,a.key,b.response):b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a) -},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio)if(this._sound.disconnect(this.externalNode?this.externalNode:this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._sound.volume=this._muted?0:this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=this.position+this.pausedPosition/1e3;this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this._sound.connect(this.externalNode?this.externalNode:this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if(this._sound.disconnect(this.externalNode?this.externalNode:this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.pendingPlayback=!1,this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(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(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,this.masterGain=void 0===this.context.createGain?this.context.createGainNode():this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.splice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d; -return e}},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.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 c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.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)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(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),void 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)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter&&this.matter.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body){var h;if(this.skipQuadTree||a.body.skipQuadTree){for(var i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,b.hash[i],d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var j=this.quadTree.retrieve(a),i=0;ij.body.right)continue;if(j.body.x>h.body.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.body.bottomj.body.bottom)continue;if(j.body.y>h.body.bottom)break}this.collideSpriteVsSprite(h,j,b,d,e,f)}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;h=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){if(a.immovable&&b.immovable)return!1;var d=0;if(this.intersects(a,b)){var e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;if(0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,0!==d){if(c||a.customSeparateX||b.customSeparateX)return!0;var f=a.velocity.x,g=b.velocity.x;if(a.immovable||b.immovable)a.immovable?b.immovable||(b.x+=d,b.velocity.x=f-g*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x=a.x-d,a.velocity.x=g-f*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x=a.x-d,b.x+=d;var h=Math.sqrt(g*g*b.mass/a.mass)*(g>0?1:-1),i=Math.sqrt(f*f*a.mass/b.mass)*(f>0?1:-1),j=.5*(h+i);h-=j,i-=j,a.velocity.x=j+h*a.bounce.x,b.velocity.x=j+i*b.bounce.x}return!0}}return!1},separateY:function(a,b,c){if(a.immovable&&b.immovable)return!1;var d=0;if(this.intersects(a,b)){var e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;if(0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,0!==d){if(c||a.customSeparateY||b.customSeparateY)return!0;var f=a.velocity.y,g=b.velocity.y;if(a.immovable||b.immovable)a.immovable?b.immovable||(b.y+=d,b.velocity.y=f-g*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y=a.y-d,a.velocity.y=g-f*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y=a.y-d,b.y+=d;var h=Math.sqrt(g*g*b.mass/a.mass)*(g>0?1:-1),i=Math.sqrt(f*f*a.mass/b.mass)*(f>0?1:-1),j=.5*(h+i);h-=j,i-=j,a.velocity.y=j+h*a.bounce.y,b.velocity.y=j+i*b.bounce.y}return!0}}return!1},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)},distanceToXY:function(a,b,c){var d=a.x-b,e=a.y-c;return Math.sqrt(d*d+e*e)},distanceToPointer:function(a,b){b=b||this.game.input.activePointer;var c=a.x-b.worldX,d=a.y-b.worldY;return Math.sqrt(c*c+d*d)},angleBetween:function(a,b){var c=b.x-a.x,d=b.y-a.y;return Math.atan2(d,c)},angleToXY:function(a,b,c){var d=b-a.x,e=c-a.y;return Math.atan2(e,d)},angleToPointer:function(a,b){b=b||this.game.input.activePointer;var c=b.worldX-a.x,d=b.worldY-a.y;return Math.atan2(d,c)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point(0,0),this.deltaMax=new c.Point(0,0),this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point(0,0),this.bounce=new c.Point,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),(a.width!==this.width||a.height!==this.height)&&(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);(b!==this._sx||c!==this._sy)&&(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&this.dirty&&(this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision;a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,b){return c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1); -if(0!==g.length)for(var h=0;hb.deltaAbsY()?g=-1:b.deltaAbsX()g){if((c.faceLeft||c.faceRight)&&(e=this.tileCheckX(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(f=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(f=this.tileCheckY(b,c),0!==f&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(e=this.tileCheckX(b,c))}return 0!==e||0!==f},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&(a.customSeparateX?a.overlapX=c:this.processTileSeparationX(a,c)),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&(a.customSeparateY?a.overlapY=c:this.processTileSeparationY(a,c)),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,a.velocity.x=0===a.bounce.x?0:-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,a.velocity.y=0===a.bounce.y?0:-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){var b=this.everythingCollisionGroup.mask;void 0===a&&(b=this.boundsCollisionGroup.mask),this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b)},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.walls.left&&this.world.removeBody(this.walls.left),this.walls.right&&this.world.removeBody(this.walls.right),this.walls.top&&this.world.removeBody(this.walls.top),this.walls.bottom&&this.world.removeBody(this.walls.bottom),e&&(this.walls.left=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:1.5707963267948966}),this.walls.left.addShape(new p2.Plane),i&&(this.walls.left.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.left)),f&&(this.walls.right=new p2.Body({mass:0,position:[this.pxmi(a+c),this.pxmi(b)],angle:-1.5707963267948966}),this.walls.right.addShape(new p2.Plane),i&&(this.walls.right.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.right)),g&&(this.walls.top=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:-3.141592653589793}),this.walls.top.addShape(new p2.Plane),i&&(this.walls.top.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.top)),h&&(this.walls.bottom=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b+d)]}),this.walls.bottom.addShape(new p2.Plane),i&&(this.walls.bottom.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.bottom)),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||this.world.step(this.useElapsedTime?this.game.time.physicsElapsed:this.frameRate)},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return this.world.addSpring(a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?a.data:a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return this.world.removeSpring(a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?a.data:a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0]),this.sprite.y=this.world.mpxi(this.data.position[1]),this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.len?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if((void 0===b||null===b)&&(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+b+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new c.TilemapLayer(this.game,this,f,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?"background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]:"background: #ffffff":"background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){c.Component.FixedToCamera.postUpdate.call(this);var a=this.game.camera;this.scrollX=a.x*this.scrollFactorX/this.scale.x,this.scrollY=a.y*this.scrollFactorY/this.scale.y,this.render()},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._scrollX+(a-this._scrollX/this.scrollFactorX) -},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(g.fillStyle=this.tileColor,q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,(f.renderWidth!==b||f.renderHeight!==c)&&(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kp;p++){if(i=0,j=!1,l=g.data[p],l>536870912)switch(k=0,l>2147483648&&(l-=2147483648,k+=4),l>1073741824&&(l-=1073741824,k+=2),l>536870912&&(l-=536870912,k+=1),k){case 5:i=Math.PI/2;break;case 6:i=Math.PI;break;case 3:i=3*Math.PI/2;break;case 4:i=0,j=!0;break;case 7:i=Math.PI/2,j=!0;break;case 2:i=Math.PI,j=!0;break;case 1:i=3*Math.PI/2,j=!0}l>0?(n.push(new c.Tile(h,l,m,o.length,a.tilewidth,a.tileheight)),n[n.length-1].rotation=i,n[n.length-1].flipped=j):n.push(c.TilemapParser.INSERT_NULL?null:new c.Tile(h,-1,m,o.length,a.tilewidth,a.tileheight)),m++,m===g.width&&(o.push(n),m=0,n=[])}h.data=o,e.push(h)}d.layers=e;for(var r=[],f=0;fC;C++)if(B.objects[C].gid){var D={gid:B.objects[C].gid,name:B.objects[C].name,type:B.objects[C].hasOwnProperty("type")?B.objects[C].type:"",x:B.objects[C].x,y:B.objects[C].y,visible:B.objects[C].visible,properties:B.objects[C].properties};B.objects[C].rotation&&(D.rotation=B.objects[C].rotation),z[B.name].push(D)}else if(B.objects[C].polyline){var D={name:B.objects[C].name,type:B.objects[C].type,x:B.objects[C].x,y:B.objects[C].y,width:B.objects[C].width,height:B.objects[C].height,visible:B.objects[C].visible,properties:B.objects[C].properties};B.objects[C].rotation&&(D.rotation=B.objects[C].rotation),D.polyline=[];for(var E=0;E=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},c.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){this._flowTotal=0,this.start(!0,a,0,b,!1)},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){(void 0===c||0===c)&&(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c)},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),(void 0===c||null===c)&&(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity+=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion},c.Particles.Arcade.Emitter.prototype.emitParticle=function(){var a=this.getFirstExists(!1);return null===a?!1:(this.width>1||this.height>1?a.reset(this.game.rnd.integerInRange(this.left,this.right),this.game.rnd.integerInRange(this.top,this.bottom)):a.reset(this.emitX,this.emitY),a.angle=0,a.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(a):this.particleSendToBack&&this.sendToBack(a),this.autoScale?a.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?a.scale.set(this.game.rnd.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&a.scale.set(this.game.rnd.realInRange(this._minParticleScale.x,this._maxParticleScale.x),this.game.rnd.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),a.frame=Array.isArray("object"===this._frames)?this.game.rnd.pick(this._frames):this._frames,this.autoAlpha?a.setAlphaData(this.alphaData):a.alpha=this.game.rnd.realInRange(this.minParticleAlpha,this.maxParticleAlpha),a.blendMode=this.blendMode,a.body.updateBounds(),a.body.bounce.setTo(this.bounce.x,this.bounce.y),a.body.velocity.x=this.game.rnd.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),a.body.velocity.y=this.game.rnd.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),a.body.angularVelocity=this.game.rnd.between(this.minRotation,this.maxRotation),a.body.gravity.y=this.gravity,a.body.drag.x=this.particleDrag.x,a.body.drag.y=this.particleDrag.y,a.body.angularDrag=this.angularDrag,a.onEmit(),!0)},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},c.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(PIXI.TextureCache.__default.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this.video.addEventListener("ended",this.complete.bind(this),!0),this.video.loop=a?"loop":"",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):this.video.addEventListener("playing",this.playHandler.bind(this),!0)),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this.playHandler.bind(this)),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this.complete.bind(this),!0),this.video.removeEventListener("playing",this.playHandler.bind(this),!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID) -}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +!function(a){if("object"==typeof exports)module.exports=a();else if("function"==typeof define,1){var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.p2=a()}else define(a)}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==d.area(a,b,c)},d.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b,c){function d(){this.vertices=[]}function e(a,b,c,d,e){e=e||0;var f=b[1]-a[1],g=a[0]-b[0],i=f*a[0]+g*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*g;return h.eq(m,0,e)?[0,0]:[(k*i-g*l)/m,(f*l-j*i)/m]}var f=a("./Line"),g=a("./Point"),h=a("./Scalar");b.exports=d,d.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},d.prototype.first=function(){return this.vertices[0]},d.prototype.last=function(){return this.vertices[this.vertices.length-1]},d.prototype.clear=function(){this.vertices.length=0},d.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},d.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(f.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),g.left(v.at(x+1),v.at(x),v.at(y+1))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=e(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),g.left(v.at(x-1),v.at(x),l)&&(o=g.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,c.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)g.leftOn(v.at(x-1),v.at(x),v.at(y))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=g.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return d*d>=c},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===f.SLEEPING&&b.sleepState===f.SLEEPING?!1:a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d?!1:!0},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;d>h;h++){var i=b[h];e.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=(a("../utils/Utils"),a("../utils/ContactEquationPool")),l=a("../utils/FrictionEquationPool"),m=a("../utils/TupleDictionary"),n=a("../equations/Equation"),o=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Box"));b.exports=d;var s=g.fromValues(0,1),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=g.fromValues(0,0),K=g.fromValues(0,0),L=[],M=g.create(),N=g.create();d.prototype.bodiesOverlap=function(a,b){for(var c=M,d=N,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},d.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},d.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){g.set(m,(0===p?-1:1)*b.length/2,0),g.rotate(m,m,d),g.add(m,m,c);for(var q=0;2>q;q++){g.set(n,(0===q?-1:1)*h.length/2,0),g.rotate(n,n,j),g.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,d,f,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=S;e(s,b);var t=this.convexCapsule(a,s,c,d,f,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}e(s,h);var u=this.convexCapsule(f,s,i,j,a,b,c,d,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},d.prototype[q.LINE|q.LINE]=d.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},d.prototype[q.PLANE|q.LINE]=d.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(q,o,l),i(p,p,k),i(q,q,k),g.copy(n,p),g.copy(o,q),h(r,o,n),g.normalize(C,r),g.rotate90cw(F,C),g.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,f);H++,g.copy(M.normalA,E),g.normalize(M.normalA,M.normalA),g.scale(D,E,K),h(M.contactPointA,J,D),h(M.contactPointA,M.contactPointA,a.position),h(M.contactPointB,J,k),i(M.contactPointB,M.contactPointB,k),h(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},d.prototype[q.PARTICLE|q.CAPSULE]=d.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},d.prototype[q.CIRCLE|q.LINE]=d.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;g.set(K,-f.length/2,0),g.set(M,f.length/2,0),g.rotate(N,K,l),g.rotate(O,M,l),i(N,N,k),i(O,O,k),g.copy(K,N),g.copy(M,O),h(I,M,K),g.normalize(J,I),g.rotate90cw(H,J),h(P,c,K);var T=j(P,H);h(s,K,k),h(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,f);return g.scale(Y.normalA,p,-1),g.normalize(Y.normalA,Y.normalA),g.scale(Y.contactPointA,Y.normalA,o),i(Y.contactPointA,Y.contactPointA,c),h(Y.contactPointA,Y.contactPointA,a.position),h(Y.contactPointB,r,k),i(Y.contactPointB,Y.contactPointB,k),h(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(g.copy(J,B),L=Q,g.scale(A,s,Q),g.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,e,b,j);return g.sub(R.normalA,J,c),g.normalize(R.normalA,R.normalA),g.scale(R.contactPointA,R.normalA,n),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,A,k),i(R.contactPointB,R.contactPointB,k),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,g.scale(E,s,Q),g.add(E,E,c),g.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,e,b,k);return g.scale(R.normalA,H,-1),g.normalize(R.normalA,R.normalA),g.set(R.contactPointA,0,0),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,E,l),i(R.contactPointB,R.contactPointB,l),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},d.prototype[q.CIRCLE]=d.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=t,m=m||b.radius,n=n||f.radius;h(o,c,j);var p=m+n;if(g.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(E,y),g.normalize(E,E),h(D,q,r);var _=j(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var C=g.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,g.scale(p,t,-C),g.add(r,q,p),g.copy(s,t);var D=this.createContactEquation(e,a,f,b);g.copy(D.normalA,s),g.scale(D.contactPointB,D.normalA,-m),i(D.contactPointB,D.contactPointB,c),h(D.contactPointB,D.contactPointB,a.position),g.copy(D.contactPointA,r),g.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){g.set(m,u*l,k[u]),g.set(n,(u+1)*l,k[u+1]),g.add(m,m,h),g.add(n,n,h);var w=100;g.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),g.sub(p.vertices[0],n,o),g.sub(p.vertices[1],m,o),g.copy(p.vertices[2],p.vertices[1]),g.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b,c){function d(a){a=a||{},this.from=a.from?f.fromValues(a.from[0],a.from[1]):f.create(),this.to=a.to?f.fromValues(a.to[0],a.to[1]):f.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:d.ANY,this.callback=a.callback||function(a){},this.direction=f.create(),this.length=1,this.update()}function e(a,b,c){f.sub(h,c,a);var d=f.dot(h,b);return f.scale(i,b,d),f.add(i,i,a),f.squaredDistance(c,i)}b.exports=d;var f=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB");d.prototype.constructor=d,d.CLOSEST=1,d.ANY=2,d.ALL=4,d.prototype.update=function(){var a=this.direction;f.sub(a,this.to,this.from),this.length=f.length(a),f.normalize(a,a)},d.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;h>e;e++){var i=b.shapes[e];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){f.rotate(d,i.position,b.angle),f.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},d.prototype.intersectShape=function(a,b,c,d,f){var g=this.from,h=e(g,this.direction,d);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;i>k;k++){var l=b[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;f.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&c.push(j,l)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)h.scale(f.normalA,j,1),h.sub(f.contactPointA,k,g.position),h.sub(f.contactPointB,l,i.position),h.scale(o,j,d),h.sub(f.contactPointB,f.contactPointB,o),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,e.REVOLUTE,c);var d=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=i.create(),this.pivotB=i.create(),c.worldPivot?(i.sub(this.pivotA,c.worldPivot,a.position),i.sub(this.pivotB,c.worldPivot,b.position),i.rotate(this.pivotA,this.pivotA,-a.angle),i.rotate(this.pivotB,this.pivotB,-b.angle)):(i.copy(this.pivotA,c.localPivotA),i.copy(this.pivotB,c.localPivotB));var o=this.equations=[new f(a,b,-d,d),new f(a,b,-d,d)],p=o[0],q=o[1],r=this;p.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,l)},q.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,m)},q.minForce=p.minForce=-d,q.maxForce=p.maxForce=d,this.motorEquation=new g(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new h(a,b),this.lowerLimitEquation=new h(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var e=a("./Constraint"),f=a("../equations/Equation"),g=a("../equations/RotationalVelocityEquation"),h=a("../equations/RotationalLockEquation"),i=a("../math/vec2");b.exports=d;var j=i.create(),k=i.create(),l=i.fromValues(1,0),m=i.fromValues(0,1),n=i.create();d.prototype=new e,d.prototype.constructor=d,d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},d.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],h=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>h)o.angle=h,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}i.rotate(j,c,a.angle),i.rotate(k,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-i.crossLength(j,l),f.G[3]=1,f.G[4]=0,f.G[5]=i.crossLength(k,l),g.G[0]=0,g.G[1]=-1,g.G[2]=-i.crossLength(j,m),g.G[3]=0,g.G[4]=1,g.G[5]=i.crossLength(k,m)},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.motorIsEnabled=function(){return!!this.motorEnabled},d.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},d.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},d.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},d.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b,c){function d(a,b){e.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=f.create(),this.penetrationVec=f.create(),this.contactPointB=f.create(),this.normalA=f.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.bodyA,e=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=e.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=f.crossLength(g,l),o=f.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,f.add(k,j,h),f.sub(k,k,i),f.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=f.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b,c){function d(a,b,c,e){this.minForce="undefined"==typeof c?-Number.MAX_VALUE:c,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=d.DEFAULT_STIFFNESS,this.relaxation=d.DEFAULT_RELAXATION,this.G=new f.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=d;var e=a("../math/vec2"),f=a("../utils/Utils");a("../objects/Body");d.prototype.constructor=d,d.DEFAULT_STIFFNESS=1e6,d.DEFAULT_RELAXATION=4,d.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},d.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},d.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var g=e.create(),h=e.create();d.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,g,d,h,e)+this.offset},d.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},d.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var i=e.create(),j=e.create();d.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,f=b.force,g=b.angularForce,h=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return e.scale(i,c,h),e.multiply(i,a.massMultiplier,i),e.scale(j,f,k),e.multiply(j,b.massMultiplier,j),this.gmult(n,i,d*l,j,g*m)},d.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};var k=e.create(),l=e.create(),m=e.create();e.create(),e.create(),e.create();d.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=k,f=l,g=m,h=b.invMassSolve,i=c.invMassSolve,j=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],e.scale(d,f,h*a),e.multiply(d,d,b.massMultiplier),e.add(b.vlambda,b.vlambda,d),b.wlambda+=j*o[2]*a,e.scale(d,g,i*a),e.multiply(d,d,c.massMultiplier),e.add(c.vlambda,c.vlambda,d),c.wlambda+=n*o[5]*a},d.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b,c){function d(a,b,c){f.call(this,a,b,-c,c),this.contactPointA=e.create(),this.contactPointB=e.create(),this.t=e.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}var e=a("../math/vec2"),f=a("./Equation");a("../utils/Utils");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},d.prototype.getSlipForce=function(){return this.maxForce},d.prototype.computeB=function(a,b,c){var d=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-e.crossLength(d,g),h[3]=g[0],h[4]=g[1],h[5]=e.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var d=this.G;d[2]=1,d[5]=-1}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d;var g=f.create(),h=f.create(),i=f.fromValues(1,0),j=f.fromValues(0,1);d.prototype.computeGq=function(){return f.rotate(g,i,this.bodyA.angle+this.angle),f.rotate(h,j,this.bodyB.angle),f.dot(g,h)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b,c){function d(a,b){e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b,c){var d=function(){};b.exports=d,d.prototype={constructor:d,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b,c){function d(a,b,c){if(c=c||{},!(a instanceof e&&b instanceof e))throw new Error("First two arguments must be Material instances.");this.id=d.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof c.friction?Number(c.friction):.3,this.restitution="undefined"!=typeof c.restitution?Number(c.restitution):0,this.stiffness="undefined"!=typeof c.stiffness?Number(c.stiffness):f.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof c.relaxation?Number(c.relaxation):f.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof c.frictionStiffness?Number(c.frictionStiffness):f.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof c.frictionRelaxation?Number(c.frictionRelaxation):f.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof c.surfaceVelocity?Number(c.surfaceVelocity):0,this.contactSkinSize=.005}var e=a("./Material"),f=a("../equations/Equation");b.exports=d,d.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b,c){function d(a){this.id=a||d.idCounter++}b.exports=d,d.idCounter=0},{}],29:[function(a,b,c){var d={};d.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},d.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var c=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&d._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)c.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return c.push(e[0],e[1],e[2]),c},d._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},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return 0>g?!1:(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0, +this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0,this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=e.squaredLength(h.position),j=h.computeMomentOfInertia(c);f+=j+c*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);f.set(o,-q,s),f.set(p,q,s),f.toGlobalFrame(o,o,c,d),f.toGlobalFrame(p,p,c,d);var t=f.getLineSegmentsIntersectionFraction(e,g,o,p);if(t>=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(0>n))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&1>=s&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&1>=t&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||g>d)&&(g=d);if(g>e){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;e=g,g++){var h=this.vertices[e],i=this.vertices[g],j=Math.abs(f.crossLength(h,i)),k=f.dot(i,i)+f.dot(i,h)+f.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},d.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=f.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],n=f.getLineSegmentsIntersectionFraction(e,g,l,m);n>=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,(void 0===a.maxValue||void 0===a.minValue)&&this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},d.prototype.computeMomentOfInertia=function(a){return Number.MAX_VALUE},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)=w*w)break}for(d.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof i){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(c=0;c!==g;c++){for(w=0,x=0;x!==l;x++){v=k[x];var y=d.iterateEquation(x,v,v.epsilon,u,t,q,p,a,c);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();d.updateMultipliers(k,q,1/a)}},d.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},d.iterateEquation=function(a,b,c,d,e,f,g,h,i){var j=d[a],k=e[a],l=f[a],m=b.computeGWlambda(),n=b.maxForce,o=b.minForce;g&&(j=0);var p=k*(j-m-c*l),q=l+p;return o*h>q?p=o*h-l:q>n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},"undefined"!=typeof P2_ARRAY_TYPE?d.ARRAY_TYPE=P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?d.ARRAY_TYPE=Float32Array:d.ARRAY_TYPE=Array,d.extend=function(a,b){for(var c in b)a[c]=b[c]},d.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b,c){function d(){this.equations=[],this.bodies=[]}var e=a("../objects/Body");b.exports=d,d.prototype.reset=function(){this.equations.length=this.bodies.length=0};var f=[];d.prototype.getBodies=function(a){var b=a||[],c=this.equations;f.length=0;for(var d=0;d!==c.length;d++){var e=c[d];-1===f.indexOf(e.bodyA.id)&&(b.push(e.bodyA),f.push(e.bodyA.id)),-1===f.indexOf(e.bodyB.id)&&(b.push(e.bodyB),f.push(e.bodyB.id))}return b},d.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var e=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];f.lerp(h.interpolatedPosition,h.previousPosition,h.position,e),h.interpolatedAngle=h.previousAngle+e*(h.angle-h.previousAngle)}}};var y=[];d.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,c=this.springs,e=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,l=this.constraints,n=v,o=(f.scale,f.add),p=(f.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=f.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var r=0;r!==i;r++){var t=e[r],u=t.force;t.type===m.DYNAMIC&&t.sleepState!==m.SLEEPING&&(f.scale(n,g,t.mass*t.gravityScale),o(u,u,n))}if(this.applySpringForces)for(var r=0;r!==b;r++){var w=c[r];w.applyForce()}if(this.applyDamping)for(var r=0;r!==i;r++){var t=e[r];t.type===m.DYNAMIC&&t.applyDamping(a)}for(var x=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,r=z.length-2;r>=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a))=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller"); +return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gj;j++){var l=this.children[j];l.visible&&(i=!0,a=this.children[j].getBounds(),e=ec?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var m=this._bounds;return m.x=e,m.y=f,m.width=g-e,m.height=h-f,m},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0,d=this.children.length;d>c;c++)this.children[c].updateTransform();var e=this.getBounds();return this.worldTransform=a,e},b.DisplayObjectContainer.prototype.setStageReference=function(a){this.stage=a;for(var b=0;bi){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){if(i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h,(l!==f||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var s=this.renderSession.projection;c.uniform2f(a.projectionVector,s.x,s.y);var t=this.renderSession.offset;c.uniform2f(a.offsetVector,t.x,t.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width,this.height):g=new b.FilterTexture(this.gl,this.width,this.height),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width,h.height),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width,d.height),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width,this.height)),i.resize(this.width,this.height),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)), +this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|d.tx,0|d.ty):c.setTransform(d.a,d.b,d.c,d.d,d.tx,d.ty),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible!==!1&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}.call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.4.4-RC1",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},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){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.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(c.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(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,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},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){a=a||1,b=b||0,d=d||0,e=e||1,f=f||0,g=g||0,this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a, +this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return 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},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.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},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,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)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(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 c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.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(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.prototype={preUpdate:function(){this.totalInView=0},follow:function(a,b){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),this.target=a;var d;switch(b){case c.Camera.FOLLOW_PLATFORMER:var e=this.width/8,f=this.height/3;this.deadzone=new c.Rectangle((this.width-e)/2,(this.height-f)/2-.25*f,e,f);break;case c.Camera.FOLLOW_TOPDOWN:d=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:d=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-d)/2,(this.height-d)/2,d,d);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=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.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateTarget:function(){this._targetPosition.copyFrom(this.target),this.target.parent&&this._targetPosition.multiply(this.target.parent.worldTransform.a,this.target.parent.worldTransform.d),this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this._targetPosition.x-this.deadzone.right),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this._targetPosition.y-this.deadzone.bottom)):(this.view.x=this._targetPosition.x-this.view.halfWidth,this.view.y=this._targetPosition.y-this.view.halfHeight)},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1,this.view.x<=this.bounds.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x),this.view.right>=this.bounds.right&&(this.atLimit.x=!0,this.view.x=this.bounds.right-this.width),this.view.y<=this.bounds.top&&(this.atLimit.y=!0,this.view.y=this.bounds.top),this.view.bottom>=this.bounds.bottom&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom-this.height)},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.centerX,this.view.centerY),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.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.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache===!0&&this.game.cache.destroy()))},checkState:function(a){if(this.states[a]){var b=!1;return(this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render)&&(b=!0),b===!1?(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):!0}return console.warn("Phaser.StateManager - No state found with the key: "+a),!1},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},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.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!0,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);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){if(!this._bindings)return-1;void 0===b&&(b=null);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){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e){void 0===e&&(e=!0);var f=new this.classType(this.game,a,b,c,d);return f.exists=e,f.visible=e,f.alive=e,this.addChild(f),f.z=this.children.length,this.enableBody&&this.game.physics.enable(f,this.physicsBodyType,this.enableBodyDebug),f.events&&f.events.onAddedToGroup$dispatch(f,this),null===this.cursor&&(this.cursor=f),f},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===d&&(d=!1);for(var e=0;a>e;e++)this.create(0,0,b,c,d)},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.resetCursor=function(a){return void 0===a&&(a=0),a>this.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.replace=function(a,b){var d=this.getIndex(a);return-1!==d?(b.parent&&(b.parent instanceof c.Group?b.parent.remove(b):b.parent.removeChild(b)),this.remove(a),this.addAt(b,d),a):void 0},c.Group.prototype.hasProperty=function(a,b){var c=b.length;return 1===c&&b[0]in a?!0:2===c&&b[0]in a&&b[1]in a[b[0]]?!0:3===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]?!0:4===c&&b[0]in a&&b[1]in a[b[0]]&&b[2]in a[b[0]][b[1]]&&b[3]in a[b[0]][b[1]][b[2]]?!0:!1},c.Group.prototype.setProperty=function(a,b,c,d,e){if(void 0===e&&(e=!1),d=d||0,!this.hasProperty(a,b)&&(!e||d>0))return!1;var f=b.length;return 1===f?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===f?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===f?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===f&&(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)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b){if(void 0===a&&(a=!1),void 0===b&&(b=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var c=this.removeChild(this.children[0]);this.removeFromHash(c),a&&c&&c.destroy(!0)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.camera.displayObject=this,this.camera.scale=this.scale,this.game.camera=this.camera,this.game.stage.addChild(this)},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.stage.updateTransform(),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),this.stage.updateTransform(),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.yi;i++)if(this.hitTest(a.children[i],b,d))return!0;return!1},onClickTrampoline:function(){this.activePointer.processClickTrampolines()}},c.Input.prototype.constructor=c.Input,Object.defineProperty(c.Input.prototype,"x",{get:function(){return this._x},set:function(a){this._x=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"y",{get:function(){return this._y},set:function(a){this._y=Math.floor(a)}}),Object.defineProperty(c.Input.prototype,"pollLocked",{get:function(){return this.pollRate>0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),a.ctrlKey&&this.leftButton.isDown&&this.rightButton.start(a),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),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.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){for(var b=Number.MAX_VALUE,c=-1,d=null,e=this.game.input.interactiveItems.first;e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e)),e=this.game.input.interactiveItems.next;for(var e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e),e=this.game.input.interactiveItems.next;return null===d?this.targetObject&&(this.targetObject._pointerOutHandler(this),this.targetObject=null):null===this.targetObject?(this.targetObject=d,d._pointerOverHandler(this)):this.targetObject===d?d.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this),this.targetObject=d,this.targetObject._pointerOverHandler(this)),null!==this.targetObject},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!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.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderIDb;b++)if(this._pointerData[b].isOver)return!0},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];(b.isOver===!1||a.dirty)&&(b.isOver=!0,b.isOut=!1,b.timeOver=this.game.time.time,b.x=a.x-this.sprite.x,b.y=a.y-this.sprite.y,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a))}},_pointerOutHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];b.isOver=!1,b.isOut=!0,b.timeOut=this.game.time.time,this.useHandCursor&&b.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.sprite&&this.sprite.events&&this.sprite.events.onInputOut$dispatch(this.sprite,a)}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.sprite&&this.sprite.events&&this.sprite.events.onInputDown$dispatch(this.sprite,a),a.dirty=!0,this.draggable&&this.isDragged===!1&&this.startDrag(a),this.bringToTop&&this.sprite.bringToTop()}return this.consumePointerEvent}},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var c=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.sprite.events.onInputUp$dispatch(this.sprite,a,c),c&&(c=this.checkPointerOver(a))),b.isOver=c,!c&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a){if(a.isUp)return this.stopDrag(a),!1;var b=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,c=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;return this.sprite.fixedToCamera?(this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=b),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y))):(this.allowHorizontalDrag&&(this.sprite.x=b),this.allowVerticalDrag&&(this.sprite.y=c),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))),this.sprite.events.onDragUpdate.dispatch(this.sprite,a,b,c,this.snapPoint),!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){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera)this.dragFromCenter?(this.sprite.centerOn(a.x,a.y),this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)):this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y);else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c)},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if((this.autoCull||this.checkWorldBounds)&&(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull&&(this.game.world.camera.view.intersects(this._bounds)?(this.renderable=!0,this.game.world.camera.totalInView++):this.renderable=!1),this.checkWorldBounds))if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1;return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=1),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.heal&&this.heal(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),e.hasFrameData(a.key,c.Cache.BITMAPDATA)&&(f=!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b));else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),(!this.onOverMouseOnly||b.isMouse)&&(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){(void 0===b||null===b)&&(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,c.Group.prototype,PIXI.SpriteBatch.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e){(void 0===d||0===d)&&(d=256),(void 0===e||0===e)&&(e=256),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=PIXI.CanvasPool.create(this,d,e),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,d,e,"bitmapData"),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=PIXI.CanvasPool.create(this,d,e)},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0);var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0);var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){if((void 0===a||null===a)&&(a=!1),(void 0===b||null===b)&&(b=!1),(void 0===d||null===d)&&(d=!1),a||b||d){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var f=c.Color.createColor(),g=e.y;g=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture);else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.copy,this,null,null,null,null,null,null,null,null,null,null,null,null,null,null,b,c),this},drawFull:function(a,b,d){if(a.worldVisible===!1||0===a.worldAlpha||a.hasOwnProperty("exists")&&a.exists===!1)return this;if(a.type!==c.GROUP&&a.type!==c.EMITTER&&a.type!==c.BITMAPTEXT)if(a.type===c.GRAPHICS){var e=a.getBounds();this.ctx.save(),this.ctx.translate(e.x,e.y),PIXI.CanvasGraphics.renderGraphics(a,this.ctx),this.ctx.restore()}else this.copy(a,null,null,null,null,a.worldPosition.x,a.worldPosition.y,null,null,a.worldRotation,null,null,a.worldScale.x,a.worldScale.y,a.worldAlpha,b,d);if(a.children)for(var f=0;fb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f){if(d===e)return this;void 0===f&&(f=!1),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var g=f?-1*(d-e):e-d,h=40*Math.ceil(Math.abs(g)/(2*Math.PI));if(0===g)return this;var i=a+Math.cos(d)*c,j=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(i,j);for(var k=this.currentPath.shape.points,l=g/(2*h),m=2*l,n=Math.cos(l),o=Math.sin(l),p=h-1,q=p%1/p,r=0;p>=r;r++){var s=r+q*r,t=l+d+m*s,u=Math.cos(t),v=-Math.sin(t);k.push((n*u+o*v)*c+a,(n*-v+o*u)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():(this.destroyCachedSprite(),this.dirty=!0)}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.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},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=6)if(g.points.length<12){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+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)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-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(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[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),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.PolyK.Triangulate(c);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&(j+=c[k-1]),h=j+l}else for(var k=0;kp&&Math.abs(p)>n&&(p=-n),0!==p){var m=p*(b.length-1);o+=m}this.canvas.height=o*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var q,r;for(this._charCount=0,g=0;g0&&(r+=p*g),"right"===this.style.align?q+=e-d[g]:"center"===this.style.align&&(q+=(e-d[g])/2),this.autoRound&&(q=Math.round(q),r=Math.round(r)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[g],q,r):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[g],q,r):this.renderTabLine(b[g],q,r,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[g],q,r):this.renderTabLine(b[g],q,r,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.runWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f,this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=null,h=this._maxWidth>0?this._maxWidth:null,i=[],j=0;j=h&&f>-1)return{width:e,text:c.substr(0,j-(j-f)),end:k,chars:i};e+=m.xAdvance*b,i.push(d+m.xOffset*b),d+=m.xAdvance*b,g=l}}return{width:e,text:c,end:k,chars:i}},c.BitmapText.prototype.updateText=function(){var a=this._data.font;if(a){var b=this.text,c=this._fontSize/a.size,d=[],e=0;this.textWidth=0;do{var f=this.scanLine(a,c,b);f.y=e,d.push(f),f.width>this.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c0&&"none"!==a}var l=this;a(),g(),f(),e(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},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 void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},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},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},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)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return 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)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===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}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,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 a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),a?this.repeatAll(-1):this.repeatCounter=0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter)return c.TweenData.COMPLETE;this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.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 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.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)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.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*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start()},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=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=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===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){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),"string"==typeof a?this._anims[a]&&(this.currentAnim=this._anims[a],this.currentAnim.stop(b)):this.currentAnim&&this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this._frameIndex+=this._frameSkip,this._frameIndex>=this._frames.length?this.loop?(this._frameIndex%=this._frames.length,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.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,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(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)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.reset(),this.game.state.loadComplete())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayVideo(c))return a[b]}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);c=e.toLowerCase()}if(this.game.device.canPlayAudio(c))return a[b]}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=new Blob([new Uint8Array(b.response)])}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript", +a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio)if(this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=b,this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this.onPause.dispatch(this),this.stop())},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.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio)if(this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode),void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);this.pendingPlayback=!1,this.isPlaying=!1;var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.paused||this.onStop.dispatch(this,b)},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(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(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=this.game.make.bitmapData(this.game.width,this.game.height),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.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)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(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),void 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)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d); +if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.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 c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter&&this.matter.enable(a)},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body){var h;if(this.skipQuadTree||a.body.skipQuadTree){for(var i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,b.hash[i],d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var j=this.quadTree.retrieve(a),i=0;ij.body.right)continue;if(j.body.x>h.body.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.body.bottomj.body.bottom)continue;if(j.body.y>h.body.bottom)break}this.collideSpriteVsSprite(h,j,b,d,e,f)}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;h=b.right?!1:a.position.y>=b.bottom?!1:!0},separateX:function(a,b,c){if(a.immovable&&b.immovable)return!1;var d=0;if(this.intersects(a,b)){var e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;if(0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,0!==d){if(c||a.customSeparateX||b.customSeparateX)return!0;var f=a.velocity.x,g=b.velocity.x;if(a.immovable||b.immovable)a.immovable?b.immovable||(b.x+=d,b.velocity.x=f-g*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x=a.x-d,a.velocity.x=g-f*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x=a.x-d,b.x+=d;var h=Math.sqrt(g*g*b.mass/a.mass)*(g>0?1:-1),i=Math.sqrt(f*f*a.mass/b.mass)*(f>0?1:-1),j=.5*(h+i);h-=j,i-=j,a.velocity.x=j+h*a.bounce.x,b.velocity.x=j+i*b.bounce.x}return!0}}return!1},separateY:function(a,b,c){if(a.immovable&&b.immovable)return!1;var d=0;if(this.intersects(a,b)){var e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;if(0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,0!==d){if(c||a.customSeparateY||b.customSeparateY)return!0;var f=a.velocity.y,g=b.velocity.y;if(a.immovable||b.immovable)a.immovable?b.immovable||(b.y+=d,b.velocity.y=f-g*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y=a.y-d,a.velocity.y=g-f*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y=a.y-d,b.y+=d;var h=Math.sqrt(g*g*b.mass/a.mass)*(g>0?1:-1),i=Math.sqrt(f*f*a.mass/b.mass)*(f>0?1:-1),j=.5*(h+i);h-=j,i-=j,a.velocity.y=j+h*a.bounce.y,b.velocity.y=j+i*b.bounce.y}return!0}}return!1},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)},distanceToXY:function(a,b,c){var d=a.x-b,e=a.y-c;return Math.sqrt(d*d+e*e)},distanceToPointer:function(a,b){b=b||this.game.input.activePointer;var c=a.x-b.worldX,d=a.y-b.worldY;return Math.sqrt(c*c+d*d)},angleBetween:function(a,b){var c=b.x-a.x,d=b.y-a.y;return Math.atan2(d,c)},angleToXY:function(a,b,c){var d=b-a.x,e=c-a.y;return Math.atan2(e,d)},angleToPointer:function(a,b){b=b||this.game.input.activePointer;var c=b.worldX-a.x,d=b.worldY-a.y;return Math.atan2(d,c)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point(0,0),this.deltaMax=new c.Point(0,0),this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point(0,0),this.bounce=new c.Point,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),(a.width!==this.width||a.height!==this.height)&&(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);(b!==this._sx||c!==this._sy)&&(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.height+this.offset.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},postUpdate:function(){this.enable&&this.dirty&&(this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision;a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=-this.bounce.x,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=-this.bounce.y,this.blocked.down=!0)},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.width+this.offset.x,this.position.y=b-this.sprite.anchor.y*this.height+this.offset.y,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,b){return c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?g=-1:b.deltaAbsX()g){if((c.faceLeft||c.faceRight)&&(e=this.tileCheckX(b,c),0!==e&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceTop||c.faceBottom)&&(f=this.tileCheckY(b,c))}else{if((c.faceTop||c.faceBottom)&&(f=this.tileCheckY(b,c),0!==f&&!c.intersects(b.position.x,b.position.y,b.right,b.bottom)))return!0;(c.faceLeft||c.faceRight)&&(e=this.tileCheckX(b,c))}return 0!==e||0!==f},tileCheckX:function(a,b){var c=0;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right>b.left&&(c=a.right-b.left,c>this.TILE_BIAS&&(c=0)),0!==c&&(a.customSeparateX?a.overlapX=c:this.processTileSeparationX(a,c)),c},tileCheckY:function(a,b){var c=0;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom>b.top&&(c=a.bottom-b.top,c>this.TILE_BIAS&&(c=0)),0!==c&&(a.customSeparateY?a.overlapY=c:this.processTileSeparationY(a,c)),c},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){var b=this.everythingCollisionGroup.mask;void 0===a&&(b=this.boundsCollisionGroup.mask),this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b)},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.walls.left&&this.world.removeBody(this.walls.left),this.walls.right&&this.world.removeBody(this.walls.right),this.walls.top&&this.world.removeBody(this.walls.top),this.walls.bottom&&this.world.removeBody(this.walls.bottom),e&&(this.walls.left=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:1.5707963267948966}),this.walls.left.addShape(new p2.Plane),i&&(this.walls.left.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.left)),f&&(this.walls.right=new p2.Body({mass:0,position:[this.pxmi(a+c),this.pxmi(b)],angle:-1.5707963267948966}),this.walls.right.addShape(new p2.Plane),i&&(this.walls.right.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.right)),g&&(this.walls.top=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b)],angle:-3.141592653589793}),this.walls.top.addShape(new p2.Plane),i&&(this.walls.top.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.top)),h&&(this.walls.bottom=new p2.Body({mass:0,position:[this.pxmi(a),this.pxmi(b+d)]}),this.walls.bottom.addShape(new p2.Plane),i&&(this.walls.bottom.shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls.bottom)),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0]),this.sprite.y=this.world.mpxi(this.data.position[1]),this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.len?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if((void 0===b||null===b)&&(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+b+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+f):e.add(new c.TilemapLayer(this.game,this,f,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,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.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){c.Component.FixedToCamera.postUpdate.call(this);var a=this.game.camera;this.scrollX=a.x*this.scrollFactorX/this.scale.x,this.scrollY=a.y*this.scrollFactorY/this.scale.y,this.render()},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 0>a&&(a=0),1===this.scrollFactorX?a:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 0>a&&(a=0),1===this.scrollFactorY?a:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(g.fillStyle=this.tileColor,q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,(f.renderWidth!==b||f.renderHeight!==c)&&(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kf;f+=4)j[f/4]=(h.charCodeAt(f)|h.charCodeAt(f+1)<<8|h.charCodeAt(f+2)<<16|h.charCodeAt(f+3)<<24)>>>0;g.data=j}var k={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(k.properties=g.properties);for(var l,m,n,o,p=0,q=[],r=[],s=0,i=g.data.length;i>s;s++){if(l=0,m=!1,o=g.data[s],o>536870912)switch(n=0,o>2147483648&&(o-=2147483648,n+=4),o>1073741824&&(o-=1073741824,n+=2),o>536870912&&(o-=536870912,n+=1),n){case 5:l=Math.PI/2;break;case 6:l=Math.PI;break;case 3:l=3*Math.PI/2;break;case 4:l=0,m=!0;break;case 7:l=Math.PI/2,m=!0;break;case 2:l=Math.PI,m=!0;break;case 1:l=3*Math.PI/2,m=!0}o>0?(q.push(new c.Tile(k,o,p,r.length,a.tilewidth,a.tileheight)),q[q.length-1].rotation=l,q[q.length-1].flipped=m):c.TilemapParser.INSERT_NULL?q.push(null):q.push(new c.Tile(k,-1,p,r.length,a.tilewidth,a.tileheight)),p++,p===g.width&&(r.push(q),p=0,q=[])}k.data=r,e.push(k)}d.layers=e;for(var t=[],f=0;fE;E++)if(D.objects[E].gid){var F={gid:D.objects[E].gid,name:D.objects[E].name,type:D.objects[E].hasOwnProperty("type")?D.objects[E].type:"",x:D.objects[E].x,y:D.objects[E].y,visible:D.objects[E].visible,properties:D.objects[E].properties};D.objects[E].rotation&&(F.rotation=D.objects[E].rotation),B[D.name].push(F)}else if(D.objects[E].polyline){var F={name:D.objects[E].name,type:D.objects[E].type,x:D.objects[E].x,y:D.objects[E].y,width:D.objects[E].width,height:D.objects[E].height,visible:D.objects[E].visible,properties:D.objects[E].properties};D.objects[E].rotation&&(F.rotation=D.objects[E].rotation),F.polyline=[];for(var G=0;G=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){this.on=!1,this.alive=!1,this.exists=!1},c.Particles.Arcade.Emitter.prototype.revive=function(){this.alive=!0,this.exists=!0},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){this._flowTotal=0,this.start(!0,a,0,b,!1)},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){(void 0===c||0===c)&&(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c)},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),(void 0===c||null===c)&&(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity+=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){this.area.width=a,this.area.height=b},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}},c.Particles.Arcade.Emitter.prototype.at=function(a){a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height)},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(PIXI.TextureCache.__default.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this.video.addEventListener("ended",this.complete.bind(this),!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):this.video.addEventListener("playing",this.playHandler.bind(this),!0)),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this.playHandler.bind(this)),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this.complete.bind(this),!0),this.video.removeEventListener("playing",this.playHandler.bind(this),!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot); +},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser.map \ No newline at end of file diff --git a/src/Phaser.js b/src/Phaser.js index 7dcb91e1a..78d63f75a 100644 --- a/src/Phaser.js +++ b/src/Phaser.js @@ -15,7 +15,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.4.4-dev', + VERSION: '2.4.4-RC1', /** * An array of Phaser game instances.